How to use ode45 for an equation with space dependent coefficients?

조회 수: 1 (최근 30일)
Mirlan Karimov
Mirlan Karimov 2019년 3월 16일
댓글: darova 2019년 3월 16일
Consider an equation of form: where so that after each time iteration I have to update to be used in the next time iteration. I have hard coded Runge-Kutta scheme but I believe that there are some tolerance problems. Therefore, I want to try ODE45 and check the difference.

채택된 답변

darova
darova 2019년 3월 16일
p = @(x) sin(x).*sqrt(tan(x));
% x(1) == x
% x(2) == x'
f = @(t,x) [x(2); -p(x(1)).*x(1)];
tspan = [0 2];
x0 = [0.5 0.1];
[t, x] = ode45(f,tspan,x0);
plot(t,x(:,1),'r',t,x(:,2),'b')
  댓글 수: 2
Mirlan Karimov
Mirlan Karimov 2019년 3월 16일
Thank you!
I think I should clarify the question a bit more. What if p is a bit more complicated so that cant be directly written as a function? For example, in my case, where C is a complicated function of x and I is another complicated function obtained by summation of vector cross products?
darova
darova 2019년 3월 16일
function main
clc, clear
tspan = [0 1];
x0 = [ 0.1 0.5]
[t,y] = ode45(f,tspan,x0);
X = y(:,1);
Y = y(:,2);
plot(X,Y,'r')
end
function ydot = f(t,x)
x1 - x(1);
dx = x(2);
C = % complicated function
I = % another
ydot(1) = dx; % x'
ydot(2) = -C/I*x1; % x''
end

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by