Info

This question is closed. Reopen it to edit or answer.

differential Equations with ode45

2 views (last 30 days)
Alex Pak
Alex Pak on 28 Nov 2014
Closed: MATLAB Answer Bot on 20 Aug 2021
Hi! Please help solve the differential equation with ode45. The problem is: I can't find Uk (it's value Vy in the previous step).
function odefun100
t0=0;
tk=0.05;
[T,Y]=ode45(@odefun12, [t0 tk],0);
nT=numel(T);
Vy=zeros(nT,1);
L1=zeros(nT,1);
L=zeros(nT,1);
Uk=zeros(nT,1);
for ik=1:nT
[~,Vy(ik,1),L1(ik,1),L(ik,1),Uk(ik,1)]=odefun12(T(ik),Y(ik,:));
end
plot(T,Vy,T,Uk)
function [dy, Vy, L1 L Uk]=odefun12(t,y)
N=0;
Uk=0;
Uk=N;
L2=y(1);
E=randn;
b=exp(-0.1*0.1);
Vy=b*Uk + 2*sqrt(1-b^2)*E;
L1=0.006*Vy;
dy=zeros(1,1);
dy(1)=0.01*Vy-5*L2;
L=L1+L2;
N=Vy;
end
end
Why Uk=0?

Answers (1)

Orion
Orion on 28 Nov 2014
Edited: Orion on 28 Nov 2014
Hi,
you wrote :
function [dy, Vy, L1 L Uk]=odefun12(t,y)
N=0;
Uk=0;
Uk=N;
=> Uk = N = 0 whatever the inputs are.
you forget to code something
  1 Comment
Alex Pak
Alex Pak on 28 Nov 2014
thank you, you are right, but I need Uk, Uk is Vy, but on the previous step of calculating.
I know how to solve this problem in the simple case. For example:
N=0;
Uk=0;
x=0:9;
for i=1:10;
Uk(i)=N;
E(i)=randn;
b=exp(-0.1*0.1);
Vy(i)=b*Uk(i) + 2*sqrt(1-b^2)*E(i);
N=Vy(i);
end
plot(x,Vy,x,Uk)
Please tell me, how can I solve this problem with ode45?

Products

Community Treasure Hunt

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

Start Hunting!