2nd order ode using euler method
12 ビュー (過去 30 日間)
古いコメントを表示
The following second-order ODE is considered to be stiff: d2y/dx2=−1001dy/dx−1000?
initial conditions are: y(0)=1 and ?′(0)=0
What to solve the ODE using Euler’s method with implicit function.
I implemetd the above question using matlab. But implemented code gives this error.
I attached the code. Can anyone suggest me about the bug of this code?.
function dy = dpnon(t, y)
dy = [y(2);-1000*y(1)-1001*y(2)];
end
function [x,y]=euler_explicit(f,xinit,yinit,xfinal,h)
n=(xfinal-xinit)/h;
% Initialization of x and y as column vectors
x=[xinit zeros(1,n)]; y=[yinit zeros(1,n)];
% Calculation of x and y
for i=1:n
x(i+1)=x(i)+h;
y(i+1)=y(i)+h*f(x(i),y(i));
end
end
xinit=0;
xfinal=3;
yinit=0;
h=.5;
euler_explicit(@dpnon,xinit,yinit,xfinal,h)
0 件のコメント
採用された回答
Torsten
2018 年 11 月 26 日
編集済み: Torsten
2018 年 11 月 27 日
function main
xinit = 0;
xfinal = 3;
yinit = [1 0];
h = .5;
[x,y] = euler_explicit(@dpnon,xinit,yinit,xfinal,h)
plot(x,y(:,1))
end
function [x,y]=euler_explicit(f,xinit,yinit,xfinal,h)
n = (xfinal-xinit)/h;
% Initialization of x and y as column vectors
x = [xinit;zeros(n,1)];
y = [yinit;zeros(n,2)];
% Calculation of x and y
for i = 1:n
x(i+1) = x(i) + h;
y(i+1,:) = y(i,:) + h*f(x(i),y(i,:));
end
end
function dy = dpnon(t, y)
dy = [y(2),-1000*y(1)-1001*y(2)];
end
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Ordinary Differential Equations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!