How to solve a system of ODE's by using Forward Euler method?
18 次查看(过去 30 天)
显示 更早的评论
How I can rewrite the following code for a system ODE's y(t)=[y_1 y_2]'. Also, how can I write f( t(i) , y(i)) ,which is equal to f(t,y)=A *y, as a function.
function [y , t ] = forwardEuler (f , t0 ,T , y0 , N )
%Solve dy/dt = f(t,y) , y(t0 )= y0
h = ( T - t0 )/( N -1); % Calulate and store the step - size
t = linspace( t0 ,T , N ); % A vector to store the time values .
y = zeros (1 , N ); % Initialize the Y vector .
y (1) = y0 ; % Start y at the initial value .
for i = 1:( N -1)
y (i +1)= y(i)+ h*f( t(i) , y(i)); % Update approximation y at t+h
end
0 个评论
回答(1 个)
Jan
2018-4-15
编辑:Jan
2018-4-15
Replace
y = zeros (1 , N ); % Initialize the Y vector .
y (1) = y0 ; % Start y at the initial value .
by
y = zeros (numel(y0) , N); % Initialize the Y matrix .
y(:, 1) = y0(:); % Start y at the initial value .
And
y (i +1)= y(i)+ h*f( t(i) , y(i)); % Update approximation y at t+h
by
y(:, i +1) = y(:, i) + h * f(t(i), y(:, i)); % Update approximation y at t+h
Then your f(t,y) is simply:
function dy = f(t, y)
A = ???
dy = A * y;
end
Hint: It improves the readability of code to use a fixed scheme of inserting spaces. Some users prefer: spaces around operators and the equal character. No spaces after parenthesis and before commas.
2 个评论
Hesham Hendy
2019-10-26
编辑:Hesham Hendy
2019-10-26
I have a question for you !
In your dy = f(t,y) you pass the time instant as input argument but you don't use it !
Should the time instant be used by the calculation or not ? and why ??
另请参阅
类别
在 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!