Runge-Kutta 4阶,带有2阶ODE错误

时间:2018-09-16 11:49:04

标签: java function for-loop ode runge-kutta

我最近使用Runge-Kutta方法使用二阶ODE编写了解决RLC电路问题的代码,但是我编写的代码与标准结果ODE不匹配,例如,使用 5ohm 电阻(R), 10mF 电容器(C), 1H 电感(L), 5v ,初始电压为[v(0 )],电流[i(0)]为 0A ,时间(t)为 0.05s ,经过 100次迭代,我得到了 1.5163v ,使用我得到的代码 3.75v ,我看不到我做错了什么。这是ODE方程:

ODE equations

这是找到 v'(0) = w(0)的初始值的方程:

w(0) initial value

现在,使用Runge-Kutta方法:

Runge-Kutta 4th order

最后是代码:

for(int i=0;i<iteracao;i++, hX+=h){

        tensaofSec=tensaof;
        wTV=wf;
        wT=wf;

        //Runge-Kutta para a funcao v'(t) e w'(t)

        l1=h*funcaoV;
        k1=h*funcaoW;

        wT=(wf+(k1/2));
        wTV=(wf+(k1/2));
        tensaofSec=(tensaof+(l1/2));

        k2=h*funcaoW;
        l2=h*funcaoV;

        wT=(wf+(k2/2));
        wTV=(wf+(k2/2));
        tensaofSec=(tensaof+(l2/2));

        k3=h*funcaoW;
        l3=h*funcaoV;

        wT=(wf+k3);
        wTV=(wf+k3);
        tensaofSec=(tensaof+l3);

        k4=h*funcaoW;
        l4=h*funcaoV;

        wf=wf+((k1+(2*k2)+(2*k3)+k4)/6);

        tensaof=tensaof+((l1+(2*l2)+(2*l3)+l4)/6);
    }

The complete function for calculate the final voltage

0 个答案:

没有答案