简单的加减运算mathematica竟不会算
简单的加减运算mathematica竟不会算简单的加减运算mathematica竟不会算 2*(5 + 2 √3) + 3 + 2 √3 mathematica竟不会算 mathematica不会拆括号 <p>它不把括号外面的系数2乘进去,而且一般的也不这样做,我估计程序设计者是有一些计算方面的考虑的!他们不会看不到这样的问题!</p> <p>请在后面加: //Simplify</p><p>很笨的,不会自动化简</p> 不自动化简是出于为了保证正确. 的确如此 madio说的有理<br/><br/>想要简化,加上//Simplify 确实OK!<br/> 2*(5 + 2 √3) + 3 + 2 √3 //N这不就OK
不太清楚为什么要这样.
可能是因为√3不是有理数,所以没有求出数值解. 本帖最后由 trvoldemort 于 2009-5-23 21:00 编辑
Plus、Times有一个Attribute是NumericFunction,意思是当所有参数为Number时整个表达式自动Evaluate成Number,这才是“输入自动化简”的本质。
大家来看,平时我们输入:
1+2*(1+1)
=> Plus]]
=> Plus]
=> Plus
=> 5
注意到每一步化简都很顺利
但是:
1+2*(1+Sqrt)
=> Plus]]]
因为NumberQ] = False,而无论如何Plus]不能变成一个Number,自动化简停止。
这种化简是很机械化的, 必须从里向外,没有全局意识,当然了,简单的式子太多了,什么(1 - a) (1 + a)+a^2等等,如果都能自动化简,那还要Simplify干嘛用啊。毕竟涉及到符号运算,用机器语言描述不是那么简单。 这不是mathematica的错,这样的结果难道不是一个准确的结果吗? 出于对程序计算的考虑
页:
[1]