求助关于求导的问题
我用ode45求解了一个二阶线性非齐次方程,得到x1和x2=dx1/dt与时间t 的关系图,可是我想还得到dx2/dt与时间t 的关系图该怎么办呢?ode方程是这样的:dx1/dt=x2;dx2/dt=f*x2-k*x1(f,k是已知量) 你用ode45返回的应该有X1与X2的值,再加一列X3,用其表示dx2/dt 除LS说的方式, 试试diff是否可行!?
回复 沙发 houxiaoyang 的帖子
谢谢你啦!回复 板凳 ChaChing 的帖子
谢谢你啦!求助关于求导的问题
我用ode45求解了一个二阶线性非齐次方程,得到x1和x2=dx1/dt与时间t 的关系图,程序如下:function linearResponse
m0=0.46;r=13.5; w=200*2*3.14;m=3.76+0.46; f=578;k=10;
tspan=linspace(0,8,100); sampint=tspan(2);
options=odeset('RelTol',1e-8,'AbsTol',);
=ode45(@ForcedOscillatorl,tspan,',options,m0,r,w,m,f,k);
figure(1);
subplot(2,1,1); plot(t,x(:,1)); axis(); xlabel('\tau'); ylabel('x(\tau)');
subplot(2,1,2); plot(t,x(:,2)); axis(); xlabel('\tau'); ylabel('v(\tau)');
function xdot=ForcedOscillatorl(t,x,m0,r,w,m,f,k)
xdot=
可是我想还得到dx2/dt与时间t 的关系图该怎么办呢?
用diff(x(,:2))好像是不行的,程序:
function linearResponse
m0=0.46;r=13.5; w=200*2*3.14;m=3.76+0.46; f=578;k=10;
tspan=linspace(0,8,100); sampint=tspan(2);
options=odeset('RelTol',1e-8,'AbsTol',);
=ode45(@ForcedOscillatorl,tspan,',options,m0,r,w,m,f,k);
figure(1);
subplot(3,1,1); plot(t,x(:,1)); axis(); xlabel('\tau'); ylabel('x(\tau)');
subplot(3,1,2); plot(t,x(:,2)); axis(); xlabel('\tau'); ylabel('v(\tau)');
x3=diff(x(:,2));
subplot(3,1,3); plot(t,x3); axis(); xlabel('\tau'); ylabel('a(\tau)');
function xdot=ForcedOscillatorl(t,x,m0,r,w,m,f,k)
xdot=
错误:
??? Error using ==> plot
Vectors must be the same lengths.
Error in ==> LinearResponse at 22
plot(t,x3);
请各位大侠多多指教,谢谢!
[ 本帖最后由 ChaChing 于 2010-4-10 15:39 编辑 ] 你不是返回个X么,里面有X1,X2,你再加一列X3,X3可以用X2,X1表示吧,这样就可以了,我以前也遇到过和LZ一样的问题,就是这样解决的,虽然有点麻烦
回复 6楼 蜜游儿 的帖子
从错误看t与x3的长度不相同。。检查一下t和x3回复 7楼 houxiaoyang 的帖子
是的 这个问题已经解决了,就是这个方法,谢谢
页:
[1]