2015-04-06 212 views
0

如何使用scilab ode()函数求解二阶微分方程。 (例如:y''+ 3y'+ 2y = f(x),y​​(0)= 0,y'(0)= 0) 然后绘制函数y(x)的结果。使用scilab求解并绘制微分方程

我想利用这个与阶跃函数输入

这里RLC电路信号模型是我试过的代码

function y=u(t) 
    y=(sign(t)+1)/2 
endfunction 

L=0.001 
R=10 
C=0.000001 

function zdot=f(t,y) 
    zdot(1)= y(2); 
    zdot(2)=(u(t)-y(1)-L*y(2)/R)/(L*C); 
endfunction 

y0=[0,0]; 
t0=0; 
t=0:0.00001:0.001; 
out=ode(y0,t0,t,f); 
clf(); 
plot(out); 

谢谢你很多

+0

请参阅ode()的文档并绘制函数,如果您仍有疑问,请包含您尝试过的代码。 –

+0

我添加了我试过的代码 – 3d510

回答

1

你几乎没有,你只有向量的形状和如何影响作为向量数组的轨迹集合的问题。

function y=u(t) 
    y=(sign(t)+1)/2 
endfunction 

L=0.001 
R=10 
C=0.000001 

function zdot=f(t,y) 
    zdot = [ y(2); (u(t)-y(1)-L*y(2)/R)/(L*C)]; 
endfunction 

y0=[0;0]; 
t0=0; 
t=0:0.00001:0.001; 
out=ode(y0,t0,t,f); 
clf(); 
subplot(211) 
plot(t,out(1,:),"r.--"); 
subplot(212) 
plot(t,out(2,:),"b-.."); 

请注意,所有向量都被迫为列向量。并且绘图是组件明智的,使用提供的时间尺度作为x轴。

还要注意,这两个组件,函数和派生,由它们的大小有很大不同。