我试图象征性地解决以下等式系统:
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中解决相同的方程系统,我会找到两个解决方案。 我做错了吗?
谢谢!
答案 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);
如你所说,它找到了两个解决方案。