ODE with time-varying coefficients
19 views (last 30 days)
Show older comments
I have the equation of this form below to be solved and I have written the attached code.
syms x(t) A(t) B(t) C(t) D y(t) t Y
x(t) = 20e-3:100e-3;
A(t) = 1./x(t);
B(t) = diff(x(t),t);
C(t) = diff(x(t),t,t);
D = 50;
D1y(t) = diff(y(t),t);
D2y(t) = diff(y(t),t,t);
D3y(t) = diff(y(t),t,t,t);
Eqn3 = D3y(t) + A(t)*D2y(t) + B(t)*D1y(t) + C(t)*y(t) + D == 0;
[VF3,Subs3] = odeToVectorField(Eqn3);
IC = [0;0;15e3]; % initial conditions
R = matlabFunction(VF3, 'Vars',{t,Y});
[T,I] = ode45(R,time,IC);
plot(T,I),grid
Just to be sure the code I have written is doing what I think, I would appreciate if someone could go through it.
3 Comments
David Goodmanson
on 13 Jan 2021
Hi Shozeal,
syms x(t) A(t) B(t) C(t) D y(t) t Y
x(t) = 20e-3:100e-3
A(t) = 1./x(t)
B(t) = diff(x(t),t)
C(t) = diff(x(t),t,t)
x(t) = 1/50
A(t) = 50
B(t) = 0
C(t) = 0
This does not appear to be what you want for x(t), As opposed to something like
x(t) = 1/(1+t^2)
A(t) = 1./x(t)
B(t) = diff(x(t),t)
C(t) = diff(x(t),t,t)
x(t) = 1/(t^2 + 1)
A(t) = t^2 + 1
B(t) = -(2*t)/(t^2 + 1)^2
C(t) = (8*t^2)/(t^2 + 1)^3 - 2/(t^2 + 1)^2
Accepted Answer
Star Strider
on 14 Jan 2021
The Answers Comment and Answer windows are malfunctioning. I am having serious problems with the lack of formatting and other options here, so I may not be able to provide an appropriate link.
Neverhteless, the correct way to code a time-varying term in your ODE function is described in ODE with Time-Dependent Terms I have no idea how to use that approach in your system, because I have no idea what you want to do.
I can possibly help you with that if I understand what you want, and I may be able to post the results once Answers works correctly again.
0 Comments
More Answers (0)
See Also
Categories
Find more on Calculus in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!