[討論] 反應問題已回收
%
% Mass matrix
%
M=[1 0 0
0 1 0
0 0 0];
%
% 起始值和模擬時間
%
y0=[1 0 0];
tspan=[0 4*logspace(-9,9)];
%
% 求解參數設定
%
options=odeset('Mass',M,'MassSingular','yes','RelTol',1e-4,'AbsTol',[1e-6
1e-10 1e-6]);
%
% 求解
%
[t,y]=ode15s(@ex4_5f,tspan,y0,options);
%
% 結果輸出繪圖
%
subplot(3,1,1)
semilogx(t,y(:,1))
ylabel('y_1')
subplot(3,1,2)
semilogx(t,y(:,2))
ylabel('y_2')
subplot(3,1,3)
semilogx(t,y(:,3))
xlabel('time')
ylabel('y_3')
%
% DAE系統方程式
%
function out=ex4_5f(t,y)
out=[-0.04*y(1)+1e4*y(2)*y(3)
0.04*y(1)-1e4*y(2)*y(3)-3e7*y(2)^2
y(1)+y(2)+y(3)-1];
----------------------------------------------------------
我嘗試將模擬時間拉大tspan=[0 4*logspace(-10,10)]
第一個圖就很奇怪的起始值自己變成零
可是我裡面明明假設y0=[1 0 0]
為什麼我一改變模擬時間,起始值就跑掉了..
不好意思,新手發問,剛學MATLAB一兩個月,希望各位大大幫忙一下~
感激不盡
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.120.136.219