I'm having a weird problem. I'm trying to solve a 2nd order ode with both ode45 and dsolve. The results are fine as long as I have non-zero initial conditions but they don't match when the equation has zero initial condition. Any idea why this is happening? Also, which one would be the right choice as I am supposed to implement it in a larger piece of code.
Here is my script:
clc%clear all
m=3.4e6; k=3.51e10; c=13.8e6; f=7.2578;[t1,x]=ode45(@pend,[0 5],[0 0] );j=1;t2=0:0.01:5;l=length(t2);disp2=zeros(l,1);vel2=zeros(l,1);for t=0:0.01:5 sol_disp2=dsolve('m*D2x+c*Dx+k*x=f','x(0)=0,Dx(0)=0'); sol_vel2=diff(sol_disp2); disp2(j)=vpa(subs(sol_disp2)); vel2(j)=vpa(subs(sol_vel2)); j=j+1;endsubplot(2,2,1)plot(t1,x(:,1))subplot(2,2,2)plot(t1,x(:,2))subplot(2,2,3)plot(t2,disp2)subplot(2,2,4)plot(t2,vel2)
and the ode45 function:
function dxdt = pend(t,x)m=3.4e6; k=3.51e10; c=13.8e6; f=7.2578;x1=x(1);x2=x(2);% fun=@(x) sin(x)/z2;
dxdt=[x2; (f-c*x2-k*x1)/m];end
thanks in advance
Best Answer