数学建模社区-数学中国

标题: 简单的加减运算mathematica竟不会算 [打印本页]

作者: samking630    时间: 2006-3-1 17:59
标题: 简单的加减运算mathematica竟不会算
简单的加减运算mathematica竟不会算简单的加减运算mathematica竟不会算 2*(5 + 2 √3) + 3 + 2 √3 mathematica竟不会算 mathematica不会拆括号
作者: madio    时间: 2006-3-1 22:44

它不把括号外面的系数2乘进去,而且一般的也不这样做,我估计程序设计者是有一些计算方面的考虑的!他们不会看不到这样的问题!


作者: iwaa    时间: 2008-4-6 11:20

请在后面加: //Simplify

很笨的,不会自动化简


作者: views63    时间: 2008-4-18 14:39
不自动化简是出于为了保证正确.
作者: zkyhhx    时间: 2008-5-7 01:35
的确如此
作者: kofeffect    时间: 2008-5-7 13:25
madio说的有理

想要简化,加上//Simplify 确实OK!

作者: fouvy    时间: 2009-5-9 02:32
2*(5 + 2 √3) + 3 + 2 √3 //N
8 r! c5 ^6 @: q  D/ \8 P8 D& {这不就OK- f9 C* @! p; q( N
不太清楚为什么要这样.
2 m. L3 q+ }7 B可能是因为√3不是有理数,所以没有求出数值解.
作者: trvoldemort    时间: 2009-5-23 20:46
本帖最后由 trvoldemort 于 2009-5-23 21:00 编辑 3 S2 g' Q% y4 z4 H( E9 n

0 Z, W1 r( F. N0 k# _Plus、Times有一个Attribute是NumericFunction,意思是当所有参数为Number时整个表达式自动Evaluate成Number,这才是“输入自动化简”的本质。1 x' B, T, A- @2 N! B% b/ l
' _- R6 b$ N- Y. Q
大家来看,平时我们输入:
1 d% D! n6 L1 c* [( b1+2*(1+1) 4 u' r8 p; r3 }* \6 F$ a  X
=> Plus[1,Times[2,Plus[1,1]]]
) c( B7 S1 |3 d+ v; O% F=> Plus[1,Times[2,2]]
% R: i2 K4 j' y: E=> Plus[1,4]
. |6 {8 p, M/ Q& \! Q=> 5  f, L% z- A% e7 ?1 e% A  C4 w0 y
3 `! O' H$ Q8 q8 q) ^
注意到每一步化简都很顺利
/ q/ n# c6 H. |" L/ @但是:" P. c3 I0 \! p1 T8 ^' o5 J* B
; N- K. w  O3 ]8 ^5 G) G( H
1+2*(1+Sqrt[2])- W* R0 E9 i* g. z% K
=> Plus[1,Times[2,Plus[1,Sqrt[1]]]]& I4 e8 p5 b5 @
2 ^( \: P. B# Z
因为NumberQ[Sqrt[2]] = False,而无论如何Plus[1,Sqrt[1]]不能变成一个Number,自动化简停止。
; }7 _4 f. d, \, ?5 ^  H
1 Q8 F# ]# `2 K, X) O9 t! q0 f! N这种化简是很机械化的, 必须从里向外,没有全局意识,当然了,简单的式子太多了,什么(1 - a) (1 + a)+a^2等等,如果都能自动化简,那还要Simplify干嘛用啊。毕竟涉及到符号运算,用机器语言描述不是那么简单。
作者: peamy    时间: 2009-8-10 11:41
这不是mathematica的错,这样的结果难道不是一个准确的结果吗?
作者: 三差    时间: 2009-9-27 16:38
出于对程序计算的考虑




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5