2014-05-13 37 views
0

基本目標:其中情節dsolve解決方案具有多種常量參與

a1=k*H*H/c; 
a0=-H*H*tau0/c; 
c=0.1; 
k=1; 
H=1; 
tau0=1; 

我使用dsolve解決 & 情節的ODE D2f=a1*f+a0

的解決方案命令找到具有上述常量值的解決方案。

sol=dsolve('D2th=a1*th+a0','th(0)=0','th(1)=0','t'); 

非但沒有與常量的分配值的解決方案,我得到的解決方案爲:

sol = 


(exp(a1^(1/2)*t)*(a0 - a0*exp(-a1^(1/2))))/(a1*(exp(a1^(1/2)) - exp(-a1^(1/2)))) - (exp(-a1^(1/2)*t)*(a0 - a0*exp(a1^(1/2))))/(a1*(exp(a1^(1/2)) - exp(-a1^(1/2)))) - a0/a1 

我需要MATLAB自動替換常量的值(A1A0,等等),然後求解方程,從而使結果以完全簡化的形式出現。

其次, 我想繪製上述ODE的解決方案如下:

t0=0; 
tf=1; 
N=100; 
h=(tf-t0)/N; 
t=t0+(0:N)'*h; 
plot(t,sol) 

我已經試過plot(t,sol(t)) 但沒有正常工作。

摘要問題:首先通過在溶液中置換的常數的值解決ODE,然後相對於該溶液繪製到一個列向量

回答

0

該解決方案是一個符號表達式。你需要的是在符號表達中進行替換和對符號表達進行繪圖。在Matlab網站上快速搜索subsezplot作爲合適的功能。我修復了代碼,但請檢查網絡上或Matlab中這兩個函數的工作情況。

H=1; 
k=1; 
c=0.1; 
tau0=1; 
a1=k*H*H/c; 
a0=-H*H*tau0/c; 
sol=dsolve('D2th=a1*th+a0','th(0)=0','th(1)=0','t'); 
sol2 = subs(sol, [sym('a0'),sym('a1')], [a0, a1]); 
t0=0; 
tf=1; 
ezplot(sol2, [t0, tf]); 
+0

我很感謝您對問題進行整理。當然,我會檢查關於「subs」和「ezplot」的detials。 – user3630852