问题描述:
关于数学软件的解方程原理
在MAPLE,MATLAB等数学软件中,用solve或者fsolve命令解多项式方程时,软件的工作原理是什么呢?
我想知道大致的过程.
比如是直接逐步逼近呢?还是先化简、分解因式等等.如果有化简的过程,那么是如何化简的呢?
举个例子,比如在MAPLE中,我尝试解一个4次多项式方程
solve(x^4+x^3+1=0);
软件输出的结果是
RootOf(_Z^4+_Z^3+1,index = 1),RootOf(_Z^4+_Z^3+1,index = 2),RootOf(_Z^4+_Z^3+1,index = 3),RootOf(_Z^4+_Z^3+1,index = 4)
而对于另一个4次多项式方程,
solve(x^4+x^3+x^2+x+1=0);
结果则是所有的4个解
-1/4+1/4*5^(1/2)+1/4*I*2^(1/2)*(5+5^(1/2))^(1/2),-1/4-1/4*5^(1/2)+1/4*I*2^(1/2)*(5-5^(1/2))^(1/2),-1/4-1/4*5^(1/2)-1/4*I*2^(1/2)*(5-5^(1/2))^(1/2),-1/4+1/4*5^(1/2)-1/4*I*2^(1/2)*(5+5^(1/2))^(1/2)
同样是4次方程,为什么例2直接得到答案,而软件却不去解例1呢?
请问软件到底是如何判断一个方程的可解性,又是如何得到解的呢?
2楼的朋友,我这里的例子不是MATLAB,而是MAPLE里的,所以没有solve加引号的问题.
这两个软件内核应该是类似的,只是语言系统略有出入.
而且这里完全没有上下文,就是新开窗口直接输入以上两句命令.
我想问的不是方程本身的可解性,而是软件决定是否去解某个方程的判断依据.
另外,你说的牛顿法是否就是在函数上取某一点的切线,求交点,再由得到的点求新的切线,然后循环逼近的这种方法呢?
如果是的话,那么这种方法恐怕只适用于实数吧,包括二分法,恐怕也不能直接应用在复数域中.
那么,这些复数解究竟是怎么得到的呢?或者说,以上方法是如何推广至复数范围的?
请赐教,
在MAPLE,MATLAB等数学软件中,用solve或者fsolve命令解多项式方程时,软件的工作原理是什么呢?
我想知道大致的过程.
比如是直接逐步逼近呢?还是先化简、分解因式等等.如果有化简的过程,那么是如何化简的呢?
举个例子,比如在MAPLE中,我尝试解一个4次多项式方程
solve(x^4+x^3+1=0);
软件输出的结果是
RootOf(_Z^4+_Z^3+1,index = 1),RootOf(_Z^4+_Z^3+1,index = 2),RootOf(_Z^4+_Z^3+1,index = 3),RootOf(_Z^4+_Z^3+1,index = 4)
而对于另一个4次多项式方程,
solve(x^4+x^3+x^2+x+1=0);
结果则是所有的4个解
-1/4+1/4*5^(1/2)+1/4*I*2^(1/2)*(5+5^(1/2))^(1/2),-1/4-1/4*5^(1/2)+1/4*I*2^(1/2)*(5-5^(1/2))^(1/2),-1/4-1/4*5^(1/2)-1/4*I*2^(1/2)*(5-5^(1/2))^(1/2),-1/4+1/4*5^(1/2)-1/4*I*2^(1/2)*(5+5^(1/2))^(1/2)
同样是4次方程,为什么例2直接得到答案,而软件却不去解例1呢?
请问软件到底是如何判断一个方程的可解性,又是如何得到解的呢?
2楼的朋友,我这里的例子不是MATLAB,而是MAPLE里的,所以没有solve加引号的问题.
这两个软件内核应该是类似的,只是语言系统略有出入.
而且这里完全没有上下文,就是新开窗口直接输入以上两句命令.
我想问的不是方程本身的可解性,而是软件决定是否去解某个方程的判断依据.
另外,你说的牛顿法是否就是在函数上取某一点的切线,求交点,再由得到的点求新的切线,然后循环逼近的这种方法呢?
如果是的话,那么这种方法恐怕只适用于实数吧,包括二分法,恐怕也不能直接应用在复数域中.
那么,这些复数解究竟是怎么得到的呢?或者说,以上方法是如何推广至复数范围的?
请赐教,
问题解答:
我来补答展开全文阅读