数学建模社区-数学中国
标题: 简单的加减运算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 //N7 P2 X2 q; ?# w# S9 K8 W2 R1 i
这不就OK* y x* {* I l! J* j8 J
不太清楚为什么要这样.+ g/ x8 r# {- `9 G; k
可能是因为√3不是有理数,所以没有求出数值解.
作者: trvoldemort 时间: 2009-5-23 20:46
本帖最后由 trvoldemort 于 2009-5-23 21:00 编辑 8 c$ B& I4 v4 A m! r4 b& M
5 n, c& g0 Z0 c8 c
Plus、Times有一个Attribute是NumericFunction,意思是当所有参数为Number时整个表达式自动Evaluate成Number,这才是“输入自动化简”的本质。8 P J, I$ p# J0 A" ^
U; k: V7 j3 J3 S$ x大家来看,平时我们输入:
" ?- H. n: H- ]) ?' K1+2*(1+1)
6 o, ?5 ^1 ]; L# Q% ^8 ?=> Plus[1,Times[2,Plus[1,1]]]" ]! r8 z# Q! R. |: A' }
=> Plus[1,Times[2,2]]5 h6 S0 a: p( [5 U$ @
=> Plus[1,4]
8 o9 {$ l6 f7 y% N k=> 5
! D' j3 A$ E. h1 O$ @4 R) b( K
8 F# p4 b* u1 @) @+ ^注意到每一步化简都很顺利+ ^6 U* Q8 A6 M' {. q
但是:
" X( i0 S4 s% i7 K
8 N" \; q9 I8 I7 B1+2*(1+Sqrt[2])
( A F7 `: [9 n3 _8 C! w: w7 B6 K=> Plus[1,Times[2,Plus[1,Sqrt[1]]]]
( R; Q- U# z- M* v$ I4 k3 t/ R. y7 ~$ [2 E" f% J
因为NumberQ[Sqrt[2]] = False,而无论如何Plus[1,Sqrt[1]]不能变成一个Number,自动化简停止。2 H/ w7 P# X# k$ J8 T7 H+ C. r
+ o7 D9 Z1 J7 z) ?这种化简是很机械化的, 必须从里向外,没有全局意识,当然了,简单的式子太多了,什么(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 |