我最近使用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方程:
这是找到 v'(0) = w(0)的初始值的方程:
现在,使用Runge-Kutta方法:
最后是代码:
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);
}