using interp1 on ode45
Afficher commentaires plus anciens
i try to implement interpolation on ode45 but mostly error pop up, plus i dont really understand how it works. these are codes used...
function dxdt = forced(t,x)
dxdt_1 = x(2);
dxdt_2 = -100*x(2)-250000*x(1)+ sin(500*t);
dxdt = [dxdt_1;dxdt_2];
tspan=[0:0.1:100];
initial_x=0;
initial_dxdt=0;
[t,x]=ode45(@forced,tspan,[initial_x initial_dxdt]);
figure
plot(t,x(:,1));
grid on
this will result to having x data..
now, i want to interpolate x data into f(see below function)...
function dxdt = forced(t,x)
dxdt_1 = x(2);
dxdt_2 = -100*x(2)-250000*x(1)+(25000*(f(t)^3));
dxdt = [dxdt_1;dxdt_2];
tspan=[0:0.1:100];
initial_x=0;
initial_dxdt=0;
f=interp1(x1,p,x);
[t1,x1,f]=ode45(@forced,tspan,[initial_x initial_dxdt]);
but it doesnt work, and error pops such as Index exceeds matrix dimensions.
Error in interp1>sortxv (line 423)
V = V(idx,:);
Error in interp1 (line 186)
[X, V] = sortxv(X,V);
...
any body has any suggestion or correct my codes, thanks.
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Ordinary Differential Equations dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!