Предотвратить расширение выражения TI BASIC - PullRequest
3 голосов
/ 09 ноября 2011

Я кодирую функцию для моего калькулятора TI-Nspire CAS.У меня есть две части выражения: (x+2)^2 и +3.Когда выражения объединяются, результат расширяется до x^2+4x+7, в то время как мне нужно, чтобы он оставался как (x+2)^2+3.

Я попытался сделать обе части строк и преобразовать их обратно в выражения после объединения, но этоприводит к тому же нежелательному расширению.
Лучшее, что я могу сделать, это вернуть две строки (каждый термин) объединенными, что чертовски ужасно: "(x+2)^2" + "3"

Есть ли способ предотвратить это расширение?
Это подрывает всю функцию (которая завершает квадрат)!

Для записи, выражение расширяется, даже если объединяется со строкой.

(x+2)^2 + "3"  

возвращает

x^2 + 2x + "3" + 4  

(что я нашел действительно странным)

1 Ответ

1 голос
/ 01 мая 2015

То, что вы видите здесь, - это автоматический упрощатель на работе. А это значит, что нет простого способа выключить его.

В большинстве систем символической алгебры (x + 1) ^ 2 и (x + 1) ^ 2 + 3 не раскрываются автоматически. NSpire, однако, с радостью расширяет последнее. Нет способа предотвратить такое поведение.

В Mathematica можно написать Hold (expr), чтобы указать, что expr не следует упрощать - однако, функциональность отсутствует в NSpire.

В некотором смысле вы нашли слабое место NSpire: символическое манипулирование выражениями (например: нет способа определить функции с использованием сопоставления с образцом). [По сравнению с Mathematica, Maple, Maxima и т. Д.]

Что лучше обойти, зависит от того, что вы пытаетесь сделать с выражениями. Если это часть алгоритма, вы можете представить выражение суммы в виде списка терминов. Это требует от вас написания пользовательских функций для выполнения сумм, продуктов и т. Д.

...