【问题标题】:Using scilab to solve and plot differential equations使用 scilab 求解和绘制微分方程
【发布时间】:2015-04-06 18:29:36
【问题描述】:

如何使用 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);

非常感谢

【问题讨论】:

  • 请参阅ode() 和绘图函数的文档,如果您仍有疑问,请附上您尝试过的代码。
  • 我已经添加了我尝试过的代码

标签: differential-equations scilab


【解决方案1】:

你快到了,你只有向量的形状以及它如何影响轨迹的集合,即ode的返回数组的构造,作为向量数组。

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 轴。

还请注意,函数和导数这两个分量的大小差异很大。

【讨论】:

    猜你喜欢
    • 2019-03-09
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2020-01-21
    相关资源
    最近更新 更多