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 で同じ連立方程式を解こうとすると、2 つの解が見つかります。私は何か間違ったことをしていますか?

ありがとう!

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);

あなたが言ったように、それは2つの解決策を見つけました。

于 2013-05-29T11:31:03.317 に答える