2011-11-09 56 views
3

我正在为我的TI-Nspire CAS计算器编写函数。我有两个部分的表达式:(x+2)^2+3。当表达式加入时,结果扩展为x^2+4x+7,而我需要将其保留为(x+2)^2+3防止TI BASIC表达式扩展

我已经尝试制作两个部分字符串,并在加入后将它们转换回表达式,但这会导致相同的不需要的扩展。
我能做的最好的是返回(每学期)串联两个字符串,这是丑陋的天哪:"(x+2)^2" + "3"

反正是有防止这种扩张?
它破坏了整个功能(完成正方形)!

为了记录,即使与字符串连接,表达式也被展开。

(x+2)^2 + "3" 

回报

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

(我发现真的很离奇)

+1

2个并置字符串有什么问题? –

+0

'我能做的最好的是返回两个字符串(每个词)连接,**这是天哪难看**: “(x + 2)^ 2”+“3” ' –

+0

我没有Nspire,只是一个TI-84,但如果你仍然有这个问题,为什么不循环每个字符(类似于'sub('为Nspire)并且一个接一个地显示它们?这仍然会使表达式保持字符串形式,没有扩展,也不会有引号。(不知道这是否会工作和Nspire - 只是一个想法) – 2015-01-03 03:34:32

回答

1

你所看到的是在工作时自动简化器。这意味着没有简单的方法来关闭它。

在大多数符号代数系统(x + 1)^ 2和(x + 1)^ 2 + 3不会自动扩展。然而NSpire很乐意扩展后者。没有办法阻止这种行为。

在Mathematica中,人们可以编写Hold(expr)来表示expr不应被简化 - 但是NSpire缺少该功能。

从某种意义上说,你已经发现NSpire的弱点:符号操纵表达式(例如:没有办法使用模式匹配来定义函数)。 [与Mathematica,Maple,Maxima等相比]

什么是最佳解决方法取决于您想要对表达式做什么。如果它是算法的一部分,则可以将一个和表达式表示为一个术语列表。这要求你编写自定义函数来执行总和,产品等。