数学建模社区-数学中国
标题: 简单的加减运算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
& @2 s4 M) e: n7 T- Q8 K这不就OK
. C9 m6 G4 V1 L6 T不太清楚为什么要这样.7 n: K/ w- Z" o/ B; t
可能是因为√3不是有理数,所以没有求出数值解.
作者: trvoldemort 时间: 2009-5-23 20:46
本帖最后由 trvoldemort 于 2009-5-23 21:00 编辑
9 K9 i: v2 T+ s* |* d. v% C+ o; `: N/ ]& L" U0 h
Plus、Times有一个Attribute是NumericFunction,意思是当所有参数为Number时整个表达式自动Evaluate成Number,这才是“输入自动化简”的本质。
' X( J3 L1 T- }6 D9 y9 Q' ?9 ?
/ C% W! s# l" L' S, o6 W大家来看,平时我们输入:9 t+ s( b0 x5 ~
1+2*(1+1)
: r8 Q! _; ~+ i& T=> Plus[1,Times[2,Plus[1,1]]]# Z2 z! b& R/ |. K0 R5 _2 u3 J
=> Plus[1,Times[2,2]]
# e( C- Z# c& G6 G7 j* w A" z=> Plus[1,4]
9 Y6 r R0 D" U- c% B* c& k=> 5 Z# m& b6 Q9 b6 z g- M1 c
% Z9 g' [; Z$ O% h2 Z! H注意到每一步化简都很顺利; d9 y9 c+ S; V: N7 P
但是:2 t( S* m) u8 L' b: n5 d
8 v* p* ?, l# w3 }2 Y+ Z1 c
1+2*(1+Sqrt[2])6 u2 c" m D: d8 W( b6 {
=> Plus[1,Times[2,Plus[1,Sqrt[1]]]]6 B3 Q& K3 `' i& X( T
: A; p. ^: @6 p% B6 a& x
因为NumberQ[Sqrt[2]] = False,而无论如何Plus[1,Sqrt[1]]不能变成一个Number,自动化简停止。 R% Q7 u; ~5 z" U" ~
4 v. ]3 D6 Z& @& c0 e5 ?
这种化简是很机械化的, 必须从里向外,没有全局意识,当然了,简单的式子太多了,什么(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 |