Wolfram Loop работает только один раз

Привет я пробую мягкую версию аналого-цифрового преобразователя (АЦП) на Wolfram Cloud. Код приведен ниже.

min =0.0;
max =15.0;
val=5.0;
avg =0.0;

ans= ConstantArray[0.0,8];
i=0;
while[i<8,i=i+1;
avg = (max+min)/2;

min = If[avg<val , min , avg];
max = If[avg<val, avg, max];

Insert[ans, If[val<avg,0,1], i];

Print[avg]
];

Print[ans];

Проблема, с которой я сталкиваюсь, заключается в том, что цикл while работает только один раз, а результат показан ниже. Я также пробовал цикл For, но результаты те же.

7.5`
{0.`,0.`,0.`,0.`,0.`,0.`,0.`,0.`}

Есть идеи, что происходит?

1 ответ

Решение

Используйте заглавную букву 'w' для While,

While[i < 8, i = i + 1;
 avg = (max + min)/2;
 min = If[avg < val, min, avg];
 max = If[avg < val, avg, max];
 Insert[ans, If[val < avg, 0, 1], i];
 Print[avg]]
Другие вопросы по тегам