作业帮 > 数学 > 作业

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

来源:学生作业帮 编辑:拍题作业网作业帮 分类:数学作业 时间:2024/05/17 20:17:36
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.34 K0 = 534.38 X0 = 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啊!
再问: 老大,我不是这个意思,我把完整的运算贴给你,难道这个不是联立方程组求解吗? [Xm,X0,K0]=solve('Xm/(1+(Xm/X0-1)*exp(-K0))-883.12','Xm/(1+(Xm/X0-1)*exp(-2*K0))-893.64','Xm/(1+(Xm/X0-1)*exp(-3*K0))-940.53','Xm','X0','K0') Warning: Explicit solution could not be found. > In solve at 81 Xm = [ empty sym ] X0 = [] K0 = []
再答: 这确实是要联立方程组求解,但是同学你也不能把matlab看作是万能的。 有些方程组就是没有办法用solve求解,这就是事实。 你的问题可以用fsolve求解,另外,你也可以自己编写程序,试试用 不动点迭代法,newton法,Broyden法求解,总有合适的方法的,但是这就比较复杂了,如果你学过当然最好了,没学过的话,自己查查资料,也不难解决。 加油咯