1

我试图象征性地解决以下方程组:

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 中求解相同的方程组,我会找到两个解。难道我做错了什么???

谢谢!

4

3 回答 3

1

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

 AA = solve(Sys,x,y,z,w,q,r,t)
于 2013-05-29T11:28:52.177 回答
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 仅在您将其作为引号字符串时才能理解该等式。

于 2013-05-29T11:30:40.347 回答
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);

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

于 2013-05-29T11:31:03.317 回答