Решатель квадратных уравнений в TI-BASIC возвращает неправильные корни

Когда я учился в старшей школе, я понял, как запрограммировать свой Калькулятор TI-84 Plus для решения квадратных уравнений. Как паинька, которой я был, я удалил программу перед выпускным экзаменом. Я пытаюсь воссоздать программу сейчас, но она не работает. Вот мой код:

:Prompt A, B, C
:(-B+√(B²-4AC))/2A→Y
:(-B-√(B²-4AC))/2A→Z
:Disp Y
:Disp Z

( соответствует кнопке STO> (сохранить) на калькуляторе, которая позволяет пользователю установить значение для заданной буквенной переменной.)

Насколько я могу судить, это должно работать. Математика и круглые скобки кажутся в порядке, функция Prompt работает (после завершения программы калькулятору нужно напечатать A, B и C, соответствующие значениям, сохраненным с момента последнего запуска программы).

Когда я прошу его вычислить квадратные уравнения, ответы на которые я уже знаю, он выдает мне забавные числа. Ввод A=1, B=-3, C=2, который должен вернуть x-перехватывает значения 1 и 2, вместо этого возвращает 2 и 0. x-отрезки 0=3x²-10x+7 являются 1 и 7/3, но калькулятор возвращает 21 и 0. Я не могу воспроизвести это прямо сейчас, но эта программа также вернула некоторые мнимые числа там, где их быть не должно. был.

Что не так с этим кодом? Математика работает (ввод второй и третьей строк кода в калькулятор для расчета, в отличие от строк кода в программе, после сохранения значений в переменных возвращает правильное значение), функции Prompt и Disp работают; что здесь не так?


person Shokhet    schedule 12.05.2017    source источник
comment
FWIW, мой код выглядит почти так же, как код здесь за исключением того, что их отображение немного более причудливое. Этот код якобы работает.   -  person Shokhet    schedule 12.05.2017
comment
У меня нет под рукой эмулятора TI-83 для тестирования, но не могли бы вы попробовать заключить (2A) в скобки?   -  person    schedule 12.05.2017
comment
@duskwuff Ха. Кажется, это удалось. Спасибо! ...ты хочешь написать ответ или мне?   -  person Shokhet    schedule 12.05.2017


Ответы (1)


Порядок операций снова поражает. Выражение

(-B+√(B²-4AC))/2A

анализируется как

((-B+√(B²-4AC))/2)*A

Добавьте скобки к /(2A), чтобы исправить это.

person Community    schedule 12.05.2017
comment
Как это могло вызвать первый пример, поскольку A=1 должен давать одинаковый результат в обеих интерпретациях? - person Lutz Lehmann; 12.05.2017
comment
@LutzL Единственное, что я мог видеть, это то, что символ деления был заменен вычитанием. Это даст {2,0} для первого примера. - person Timtech; 22.06.2017