非线性方程matlab的符号系统

时间:2013-05-29 10:46:07

标签: matlab symbolic-math equation-solving nonlinear-functions

我试图象征性地解决以下等式系统:

Sys = [...
   k1*x - y == 0,... 
   y - k2*z*w == 0,... 
   1 - x*k8 - y - w == 0,...
   k3*q + k5*q*r - k2*w*z - k4*z*t == 0,...
   1 - z - q == 0,...
   k4*z*t - k5*r*q == 0,...
   1 - r - t == 0];

使用函数solve(Sys,[x,y,z,w,q,r,t])得到: 警告:找不到明确的解决方案。

  

在169解决

但如果我尝试在Mathematica中解决相同的方程系统,我会找到两个解决方案。 我做错了吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

根据the documentation,您必须列出要明确解决的每个变量:

 AA = solve(Sys,x,y,z,w,q,r,t)

答案 1 :(得分:0)

我认为这与方程式的格式有关。以下代码适用于我(使用MATLAB R2011b):

syms k1 k2 k3 k4 k5 k6 k7 k8 x y z q r t w

[x,y,z,q,r,t,w] = solve(...
                        'k1*x - y = 0',... 
                        'y - k2*z*w = 0',... 
                        '1 - x*k8 - y - w = 0',...
                        'k3*q + k5*q*r - k2*w*z - k4*z*t = 0',...
                        '1 - z - q = 0',...
                        'k4*z*t - k5*r*q = 0',...
                        '1 - r - t = 0',x,y,z,q,r,t,w);

正如对未来调试器的帮助:当我第一次尝试这种形式的方程k1*x - y == 0时,我收到了以下错误消息:

Error using char
Conversion to char from logical is not possible.  

这是由于逻辑表达式。只是删除它给出了这个错误:

The expression to the left of the equals sign is not a valid target
for an assignment.  

这意味着如果你把它作为带引号的字符串,Matlab只能理解这个等式。

答案 2 :(得分:0)

我试过这个:

syms x y z w q r t k1 k2 k8 k3 k4 k5;

Sys = [...
   k1*x - y == 0,... 
   y - k2*z*w == 0,... 
   1 - x*k8 - y - w == 0,...
   k3*q + k5*q*r - k2*w*z - k4*z*t == 0,...
   1 - z - q == 0,...
   k4*z*t - k5*r*q == 0,...
   1 - r - t == 0];

S = solve(Sys);

如你所说,它找到了两个解决方案。