2015-04-05 55 views
1

我試圖使用以下代碼:錯誤dsolve當變量被用一常數(R2011a)乘以

ode1='D2y1=-1256.4*y1-5*Dy1+255.1*y2+182.781'; 
ode2='D2y2=-151.5*y2-5*Dy2+255.1*y1-14.0459'; 
CI='y1(0)=2,y2(0)=-2,Dy1(0)=0,Dy2(0)=0'; 

sol=dsolve(ode1,ode2,CI,'t'); 
sol.y1 
sol.y2 

和MATLAB返回一個錯誤:

??? Error using ==> mupadengine.mupadengine>mupadengine.feval at 144 MuPAD error: Error: Division by zero [_invert];

during evaluation of 'stdlib::normalNoExpand'

Error in ==> dsolve>mupadDsolve at 215 T = feval(symengine,'symobj::dsolve',sys,x,ignoreConstraints);

Error in ==> dsolve at 96 sol = mupadDsolve(ignoreConstraints,varargin{1:narg});

Error in ==> maglevsol at 7 sol=dsolve(ode1,ode2,CI,'t');

然而,如果我運行這

ode1='D2y1=-y1-5*Dy1+255.1*y2+182.781'; 
ode2='D2y2=-y2-5*Dy2+255.1*y1-14.0459'; 
CI='y1(0)=2,y2(0)=-2,Dy1(0)=0,Dy2(0)=0'; 

sol=dsolve(ode1,ode2,CI,'t'); 
sol.y1 
sol.y2 

我沒有得到任何錯誤。 有什麼問題?我的版本是r2011a

+0

你是不是想找到符號或數字解決方案? – madbitloman 2015-04-05 00:49:55

+0

象徵性的解決方案 – questioner1234 2015-04-05 01:09:51

回答

0

看來Matlab無法解決這個問題,因爲IC問題。 (從嘗試數值求解器給出的t = 0處的導數的非數值)。我無法找到解決方法(Matlab 2015a實際上掛在這上面,對於解析解決方案)。

但是Maple能夠解決這個問題(Maple在ODE中非常好)。這裏是解決方案和繪圖(對所有那些硬編碼的數值使用符號也是一個好主意,然後在最後使用subs,不需要在所有地方都有幻數)。你可能想將此情況報告給Mathworks公司

restart; 
ode1 := diff(y1(t),t$2) = a*y1(t) + b*diff(y1(t),t)+ c*y2(t) + d; 
ode2 := diff(y2(t),t$2)= e*y2(t) + b*diff(y2(t),t)+ c*y1(t) + f; 
ic := y1(0) = 2, y2(0) = -2, D(y1)(0) = 0, D(y2)(0) = 0; 
sol:=dsolve({ode1, ode2, ic}, {y1(t), y2(t)}): 
sol:=subs({a = -1256.4, b = -5, c= 182.781, e = -151.5, f = -14.0459,d=182.781},sol); 


sol := {y1(t) = (-.1922320350+0.5088536230e-1*I)* 
exp((-2.500000000+9.444367980*I)*t)+(1.096005949-0.7581365270e-1*I)* 
exp((-2.500000000+36.14144316*I)*t)+(-.1922320331-0.5088536185e-1*I)* 
exp((-2.500000000-9.444367980*I)*t)+(1.096005952+0.7581365750e-1*I)* 
exp((-2.500000000-36.14144316*I)*t)+.1924521734, 

y2(t) = (-.8748433300+.2315780499*I)*exp((-2.500000000+9.444367980*I)*t)+ 
(-.2408287839+0.1665876887e-1*I)*exp((-2.500000000+36.14144316*I)*t)+ 
(-.8748433212-.2315780478*I)*exp((-2.500000000-9.444367980*I)*t)+ 
(-.2408287844-0.1665876992e1*I)* 
exp((-2.500000000-36.14144316*I)*t)+.2313442207} 

這裏是Y1(t)和Y2(t)的解決方案圖2秒鐘

Mathematica graphics

Mathematica graphics

+0

不知道楓樹還活着 – madbitloman 2015-04-05 01:13:49

+0

非常感謝。我試圖用2個不同的版本和wolfram來完成,沒有任何程序給我答案。 – questioner1234 2015-04-05 01:19:36