3

変数 eqn1 と eqn2 によって与えられる微分方程式系を解こうとしています。

lambda1 = 3;
lambda2 = 2;
gamma1 = 1;
gamma2 = 1;
delta1 = 1;
delta2 = 1;

syms n1(t) n2(t)
eqn1 = diff(n1) == (lambda1 - gamma1)*n1 - delta1*(n1 + n2)*n1;
eqn2 = diff(n2) == (lambda2 - gamma2)*n2 - delta1*(n1 + n2)*n2;

c1 = n1(0) == 10;
c2 = n2(0) == 10;
[a, b] = dsolve(eqn1, eqn2, c1, c2)

条件 c1 と c2 を指定せずに実行した場合:

[a, b] = dsolve(eqn1, eqn2)

その後、すべてがうまくいき、次のようになります。

a =

(6*exp(2*t)*n1(0))/(3*exp(2*t)*n1(0) + 4*exp((3*t)/2)*n2(0) + 6)


b =

(6*exp(t/2)*exp(t)*n2(0))/(3*exp(2*t)*n1(0) + 4*exp((3*t)/2)*n2(0) + 6)

しかし、ソース コードでわかるように、n1(0) と n2(0) を指定しようとするとすぐに、次の警告が表示されます。

a =

Warning: The result cannot be displayed due a previously interrupted     computation or out of memory. Run 'reset(symengine)' and rerun the commands to regenerate the result. 
> In sym.disp at 36
  In sym.display at 37
  In competingForResources at 15 

b =

     []

そして、結果をプロットできません。私はそこに何が欠けていますか?条件を正しい方法で指定して、プロット可能な結果を​​得るにはどうすればよいですか?

4

1 に答える 1

1

を使用して、結果の値を直接置き換えることができますsubs

[a, b] = dsolve(eqn1, eqn2);
a=subs(a,'n1(0)',10);
a=subs(a,'n2(0)',10)

a =

(60*exp(2*t))/(30*exp(2*t) + 40*exp((3*t)/2) + 6)

と同じb

于 2016-10-20T16:38:11.927 に答える