Function as an integrator

1 回表示 (過去 30 日間)
Hugo Hernández Hernández
Hugo Hernández Hernández 2021 年 1 月 24 日
Hi everybody,
I'm computing a numerical solution by Euler's method for a second order differential equation, I have defined the function for the differential equation but I also need to define an additional one as an integrator (like ode45), but by Euler's method. I've tried some computations and agorithms but it does not work. Please, could you help me?
This is my code:
% Sampling interval
h = 0.1;
%h = 0.05;
%h = 0.01;
t0 = 0; % Initial time
tf = 4; % Final time
t = [t0:h:tf]; % Time vector
% Initial value problem
th0 = pi/40; % theta(t0)
om0 = 0; % ommega(t0)
yu = [th0 om0];
e = euler(@yprime,t,h,yu); % Want to call euler's function as an integrator but does not work and has an issue with * multiplication
function [yp] = yprime(t,y)
L = 0.61;
G = 9.81;
yp = zeros(2,1);
yp(1) = y(2); % Angle theta [rad]
yp(2) = (-G/L)*sin(y(1)); % Angular velocity omega [rad/s]
end
% and my Euler's function as a script:
function eu = euler(yp,t,h,y)
% Function that computes the values of the angle theta followinf the Euler
% method
eul = y + yp*h;
eu = eul;

採用された回答

Walter Roberson
Walter Roberson 2021 年 1 月 24 日
eul = y + yp(t,y)*h;
  6 件のコメント
Walter Roberson
Walter Roberson 2021 年 1 月 24 日
eu1(i+1) = y(i)+h*yp(t(i));
That line of code does not appear in anything you have posted so far. It is failing to pass y values into yp. It is also trying to work with one y value at a time, which is incorrect as yp needs both y values and returns two outputs.
Hugo Hernández Hernández
Hugo Hernández Hernández 2021 年 1 月 25 日
Got it, thanks!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeOrdinary Differential Equations についてさらに検索

製品


リリース

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by