如何使用scilab ode()函数求解二阶微分方程。 (例如:y'' + 3y' + 2y = f(x),y(0)= 0,y'(0)= 0) 然后绘制函数y(x)的结果。
我想用它来模拟具有阶跃函数输入的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 :(得分: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轴。
另请注意,功能和衍生物这两个组成部分的大小差别很大。