1 страниц (3 вхождений)
Странная ошибка в связке while - breake - Сообщения
#1 Опубликовано: 07.06.2013 15:29:00
Вот 2 примера программы. Взято с сайта Ю.М.Пахоменкова.
Игрался с алгоритмом Ремеза и решением нелинейной системы.
Смотреть надо модуль p_nsolve.
Когда оба условия выхода из цикла обьединены в while(|e|>0.0001 ^ ii<100) то все работает.
Если же убрать (|e|>0.0001) и поставить в конец цикла [ if (|e|>0.0001) continue else break] ,
то программа перестает работать с непонятными сообшением об ошибке "Argument must be scalar",
иногда выскакивает что-то об ошибке в типах и предложение обратиться к разработчикам.
Smath 0.96b4868.
Remez_2-bad.sm (59 КиБ) скачан 82 раз(а).
Игрался с алгоритмом Ремеза и решением нелинейной системы.
Смотреть надо модуль p_nsolve.
Когда оба условия выхода из цикла обьединены в while(|e|>0.0001 ^ ii<100) то все работает.
Если же убрать (|e|>0.0001) и поставить в конец цикла [ if (|e|>0.0001) continue else break] ,
то программа перестает работать с непонятными сообшением об ошибке "Argument must be scalar",
иногда выскакивает что-то об ошибке в типах и предложение обратиться к разработчикам.
Smath 0.96b4868.
Remez_2-bad.sm (59 КиБ) скачан 82 раз(а).
#2 Опубликовано: 18.06.2013 16:33:35
Со странным поведением оператора break разобрался. Не заметил ошибку -
в операторе if условием была abs(eps), где еps-был вектор а не скаляр.
поставил if ((norme(eps)<=0.001) и все заработало, как надо.
То есть выходит, что if проверяет тип операнда на правильность, а while, в комбинации с еще одним условием - не всегда.
Это очень похоже на ошибку или недосмотр.
в операторе if условием была abs(eps), где еps-был вектор а не скаляр.
поставил if ((norme(eps)<=0.001) и все заработало, как надо.
То есть выходит, что if проверяет тип операнда на правильность, а while, в комбинации с еще одним условием - не всегда.
Это очень похоже на ошибку или недосмотр.
#3 Опубликовано: 18.06.2013 17:38:14
Спасибо! Обязательно посмотрю.
С уважением, Андрей Ивашов.
С уважением, Андрей Ивашов.
1 страниц (3 вхождений)
-
Новые сообщения
-
Нет новых сообщений