用绝对值求解微分方程

时间:2013-06-03 01:14:04

标签: matlab differential-equations

我想解决这种形式的等式: x'= -A.x + B. | sin(100 * pi * t)| 我像这样使用ode45:

function find_x
t = 0:0.001:10;
x0 = 0;
R1 = 90000;
R2 = 1000;
C = 0.001;
[t,x]=ode45(@rhs, t , x0);

plot(t,x);

    function dxdt = rhs(t,x)
        dxdt = -(C/R1 + C/R2)*x + C/R1*abs(sin(100*pi*t)) ;
        %It's form is dx/dt = -A.x + B.U(t)
    end
end

但我觉得它给了我错误的答案。 实际上,我从一个问题“在二极管桥和电容器之后找到输出电压”得到这个等式,如下所示: enter image description here

任何人都可以向我建议另一种解决方法吗?感谢。

1 个答案:

答案 0 :(得分:3)

不是解决这个问题的地方,这让我回到了我的信号和系统日,但基本上你的方程式应该有C作为分频器......

记住它是

I = C *dV/dt

因此,如果你在RHS上有dV / dt,你应该期望在LHS上看到1 / C:

function khan
t = 0:0.001:10;
x0 = 0;
R1 = 90000;
R2 = 1000;
C = 0.001;
options = odeset('RelTol',1e-6,'AbsTol',1e-8);
[t,x]=ode45(@rhs, t , x0,options);

plot(t,x);

    function dxdt = rhs(t,x)
        dxdt = -(1/R1 + 1/R2)*x/C + 1/R1*abs(sin(100*pi*t))/C ;
        %It's form is dx/dt = -A.x + B.U(t)
    end
end

enter image description here