ODE with time-varying coefficients

20 次查看(过去 30 天)
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 个评论
David Goodmanson
David Goodmanson 2021-1-13
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
Shozeal
Shozeal 2021-1-14
Thanks, Strider and David.
@Strider I am guessing you have included the initial condition for B(t) and C(t) in $IC = [0;0;0;0;15e3]$; % initial conditions.
I also noticed that you commented out x(t)=20e-3:100e-3, what if I knew the range of x(t) beforehand?
"I have no idea what you want to solve for." I was hoping to get the solution for y(t).
@David Well, that is the problem I have at hand, as stated above. Thank you for the suggestion.

请先登录,再进行评论。

采纳的回答

Star Strider
Star Strider 2021-1-14
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 个)

类别

Help CenterFile Exchange 中查找有关 Calculus 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by