数学建模社区-数学中国
标题: 简单的加减运算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
$ i7 L. f4 n/ c- Y: o R* ]! f- Q+ l这不就OK
D4 K, F6 H' L5 P; [( X4 f不太清楚为什么要这样.
9 @1 M& ]7 c- w9 n' N, s可能是因为√3不是有理数,所以没有求出数值解.
作者: trvoldemort 时间: 2009-5-23 20:46
本帖最后由 trvoldemort 于 2009-5-23 21:00 编辑 / }7 z# C3 n& C+ a( E; A
2 c" l2 G" L7 G& F% _' W
Plus、Times有一个Attribute是NumericFunction,意思是当所有参数为Number时整个表达式自动Evaluate成Number,这才是“输入自动化简”的本质。
% K+ O" [. ?7 i: C9 A8 T l/ _9 n s) d1 R+ A
大家来看,平时我们输入:1 U. _4 W3 w% T* D! F2 V' Q; O
1+2*(1+1)
! w; x+ o' C: P=> Plus[1,Times[2,Plus[1,1]]]
$ e# U0 v/ O: y2 G7 v( @* c" q1 E=> Plus[1,Times[2,2]]
7 V4 j$ B4 a! K* S, I=> Plus[1,4]
" B0 \3 R( a1 E6 }1 a=> 5
1 ?6 P z9 I0 m! ]% D9 x" m% w& K" F, z! Y# |3 r
注意到每一步化简都很顺利
- C8 B; V0 T5 V. ^* f但是:, W |- }% ^! J o$ D: Z3 z
0 S1 X0 t; \3 d) {1+2*(1+Sqrt[2])
* E( |! k; ?# U5 h( {; O8 o=> Plus[1,Times[2,Plus[1,Sqrt[1]]]]* L5 J' o R. Y9 d5 m n
! h+ U/ J/ L3 ~' I
因为NumberQ[Sqrt[2]] = False,而无论如何Plus[1,Sqrt[1]]不能变成一个Number,自动化简停止。( h. U+ {% L: B- w& V6 g7 m
4 _. v8 j. m; w: A; r5 q
这种化简是很机械化的, 必须从里向外,没有全局意识,当然了,简单的式子太多了,什么(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 |