matlab中用solve解方程组的问题,为何给出空矩阵,应该怎么改?

问题描述:

matlab中用solve解方程组的问题,为何给出空矩阵,应该怎么改?
>> [Xm,X0,K0]=solve('Xm/((1+Xm/X0-1)*exp(-K0))=533.34','Xm/((1+Xm/X0-1)*exp(-2*K0))=534.38','Xm/((1+Xm/X0-1)*exp(-3*K0))=566.03','Xm','X0','K0')
Warning:Explicit solution could not be found.
> In solve at 81
Xm =
[ empty sym ]
X0 =
[]
K0 =
[]

Warning: Explicit solution could not be found.
这句话的意思是不能找到精确解,也就是matlab里面solve函数的内部算法对于你这个方程组不适用,所以你这个方程组不能用solve求解
而且,观察你的三个方程,显然是无解的,第一式除以第二式可以得出exp(K0)=533.34/534.48
第二式除以第三式可以得出
exp(K0)=534.48/566.03
显然满足条件的K0不存在.
另外你的方程里面有表达式(1+Xm/X0-1),为什么不直接写Xm/X0呢?是(X0-1)少了括号?>> y1=Xm/(1+(Xm/X0-1)*exp(-K0));>> y2=Xm/(1+(Xm/X0-1)*exp(-2*K0));>> y3=Xm/(1+(Xm/X0-1)*exp(-3*K0));>> [Xm K0 X0]=solve('y1=533.34','y2=534.38','y3=566.03')Xm =533.34K0 =534.38X0 =566.03>> [Xm K0 X0]=solve('y1=533.34','y2=534.38','y3=566.03','Xm','K0','X0')Warning: Explicit solution could not be found. 空阵……[Xm K0 X0]=solve('y1=533.34','y2=534.38','y3=566.03')这一句并不是求解那三个方程组。而是求解'y1=533.34','y2=534.38','y3=566.03'这三个方程组,这三个方程组的解显然就是533.34,534.38,566.03啊!这确实是要联立方程组求解,但是同学你也不能把matlab看作是万能的。有些方程组就是没有办法用solve求解,这就是事实。你的问题可以用fsolve求解,另外,你也可以自己编写程序,试试用不动点迭代法,newton法,Broyden法求解,总有合适的方法的,但是这就比较复杂了,如果你学过当然最好了,没学过的话,自己查查资料,也不难解决。加油咯