二阶微分方程龙格库塔法_二阶龙格库塔法公式

二阶微分方程龙格库塔法_二阶龙格库塔法公式一、计算公式对于形如以下的常微分方程:采用四阶龙格库塔法的计算公式:四阶龙格库塔法精度为4,属于单步递推法。单步递推法的基本思想是从(x(i),y(i))点出发,以某一斜率沿直线达到(x(i+1),y(i+1))点。二、实例计算对于下述二阶方程:f(q)为分段函数1、基本思想:令位移q为y(1),q的一阶导dq/dt为y(2),因此可得:dq/dt=y(2)令f(q)=fy令q的二阶导ddq/dt^2=-2*eptheton*y(2)-fy+Fm

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

一、计算公式

对于形如以下的常微分方程:

\frac{dy}{dx}=f(x,y)

y(a)=y0

采用四阶龙格库塔法的计算公式

y_{i+1}=y_i+h/6*(K_1+2K_2+2*K_3+K_4)

K_1=f(x_i,y_i)

K_2=f(x_i+h/2,y_i+h/2*K_1)

K_3=f(x_i+h/2,y_i+h/2*K_2)

K_4=f(x_i+h,y_i+h*K_3)

四阶 龙格库塔法精度为4,属于单步递推法

单步递推法的基本思想是从(x(i),y(i))点出发,以某一斜率沿直线达到(x(i+1),y(i+1))点。

二、实例计算

从上述定义可以看出,龙格库塔实质上是求一阶微分方程,但是如果将一阶导看作变量,则二阶导也不过是这个变量的一阶导而已。

接下来就看实例吧:

对于下述二阶方程:

{\ddot{q}}+2*\varepsilon *{\dot{q}}+q=Fm+Fah*cos(\Omega *t)

1、基本思想:

令位移为    q=u(1)

q的一阶导,即位移的一阶导(速度)为   \dot{q}=u(2)

q的二阶导   \dot{u(2))}=-2* \varepsilon *u(2)-u(1)+Fm+Fah*cos(\Omega *t)

求解位移u(1)的龙格库塔计算方法如下:

KK1=u(2);
KK2=u(2)+h/2*KK1;
KK3=u(2)+h/2*KK2;
KK4=u(2)+h*KK3;
u(1)=u(1)+h/6*(KK1+2*KK2+2*KK3+KK4);

Jetbrains全家桶1年46,售后保障稳定

求解速度u(2)的龙格库塔计算方法如下:

K1=-2*eptheton*u(2)-u(1)+Fm+Fah*wh*wh*sin(wh*tao+fav_h);
K2=-2*eptheton*(u(2)+h/2*K1)-(u(1)+h/2)+Fm+Fah*wh*wh*sin(wh*tao+fav_h);
K3=-2*eptheton*(u(2)+h/2*K2)-(u(1)+h/2)+Fm+Fah*wh*wh*sin(wh*tao+fav_h);
K4=-2*eptheton*(u(2)+h*K3)-(u(1)+h)+Fm+Fah*wh*wh*sin(wh*tao+fav_h);
u(2)=u(2)+h/6*(K1+2*K2+2*K3+K4);

2、编程实现

参数设置:

h=0.001;       % 步长
t0=0:h:400;    % 总时长
w=5;
ep=0.02;
Fm=0.1;
Fah=0.05;
u(1)=0;u(2)=0;  % 初值

总的程序实现

h=0.001;
t0=0:h:400;
w=5;
ep=0.02;
Fm=0.1;
Fah=0.05;
u(1)=0;u(2)=0;
for i=1:length(t0)   % 进行多次迭代
    tao=t0(i);
    u=RK(u,tao,h,ep,w,Fm,Fah);     
    Result(i,:)=u;   % 将每次迭代的位移和速度保存
end
figure(1)
subplot(2,1,1)
plot(t0,Result(:,1))      % 绘制位移图
xlabel('Time')
ylabel('displacement')
subplot(2,1,2)
plot(t0,Result(:,2))      % 绘制速度图
xlabel('Time')
ylabel('velocity')

function u=RK(u,tao,h,ep,w,Fm,Fah)
KK1=u(2);
KK2=u(2)+h/2*KK1;
KK3=u(2)+h/2*KK2;
KK4=u(2)+h*KK3;
u(1)=u(1)+h/6*(KK1+2*KK2+2*KK3+KK4);
K1=-2*ep*u(2)-u(1)+Fm+Fah*cos(w*tao);
K2=-2*ep*(u(2)+h/2*K1)-u(1)-h/2+Fm+Fah*cos(w*tao);
K3=-2*ep*(u(2)+h/2*K2)-u(1)-h/2+Fm+Fah*cos(w*tao);
K4=-2*ep*(u(2)+h*K3)-u(1)-h+Fm+Fah*cos(w*tao);
u(2)=u(2)+h/6*(K1+2*K2+2*K3+K4);
end

结果图如下所示

二阶微分方程龙格库塔法_二阶龙格库塔法公式

值得特别注意的是

u=RK(u,tao,h,ep,w,Fm,Fah);

输入的u与输出的u一定要符号一致,从而确保下一次迭代的初始值是上一次的值。确保迭代能一直进行下去。

三、辅助验证

接下来用MATLAB自带的ode45函数来进行验证。

之前已经写过ode45函数的用法,在此不再进行介绍。

源程序如下:

t0=0:0.001:400;
w=5;
ep=0.02;
Fm=0.1;
Fah=0.05;
y0=[0 0];
[t,u]=ode45(@(t,u) odefun(t,u,w,ep,Fm,Fah),t0,y0);
figure(1)
subplot(2,1,1)
plot(t,u(:,1))
xlabel('Time')
ylabel('displacement')
subplot(2,1,2)
plot(t,u(:,2))
xlabel('Time')
ylabel('velocity')
function du=odefun(t,u,w,ep,Fm,Fah)
du=[u(2);
    -2*ep*u(2)-u(1)+Fm+Fah*cos(w*t)]; 
end

运算结果图如下所示

二阶微分方程龙格库塔法_二阶龙格库塔法公式

两中方法计算的结果是一样的。

创作不易,如有帮助,记得点个赞呐。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234982.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法…

    台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法…有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始”菜单或者左下角的windows标志处,找到“控制面板”然后找到”windowsupdate”把这微软默认的更新程序给关闭掉,可解决!(经测试,此方法能解决大多数这种问题)如果解决…

    2022年6月15日
    160
  • python 制作淘宝秒杀脚本

    python 制作淘宝秒杀脚本1. 安装pycharm。网上教程很多。2. 安装Selenium库。Selenium支持很多浏览器,我选择的是Firefox浏览器。因为我这里是Python3环境,自带的又pip,所以安装selenium直接使用pip安装安装方法:–打开cmd;–输入命令进入Python36/Scripts(找到下图的目录)目录下;–输入命令pipinstalls…

    2022年5月5日
    53
  • javascript除法如何取整

    javascript除法如何取整javascript除法如何取整Math.round(x)四舍五入,如Math.round(0.60),结果为1;Math.round(0.49),结果为0;Math.floor(x)向下舍入,如Math.floor(0.60)与Math.floor(0.49),结果均为0;Math.ceil(x)向上舍入,如Math.ceil(0.60)与Math.ceil(0….

    2022年6月21日
    57
  • 织梦CMS系统中power by dedecms怎么去掉?power by dedecms什么意思?

    织梦CMS系统中power by dedecms怎么去掉?power by dedecms什么意思?织梦CMS近期的新版本至2013-6-7更新包以来,不管新版还是旧版更新补丁包,更新后网站页底都会出现powerbydedecms。powerbydedecms什么意思呢,那powerbydedecms怎么去掉呢,请大家看以下方法:一、powerbydedecms什么意思在我们上网的时候,会见到页面页底很多带powerbydedecms的网站,powerbyded…

    2022年7月13日
    17
  • 【全流程】从头在树莓派4B上部署自己训练的yolov5模型(配合NCS2加速)

    【全流程】从头在树莓派4B上部署自己训练的yolov5模型(配合NCS2加速)目录0.前言1.我的环境2.整个流程3.具体过程3.1训练自己的yolov5模型3.2将.pt模型转换为.onnx模型3.3在本地将.onnx转换成IR模型3.4在树莓派4B上使用IR模型推理4.一些坑4.1树莓派4B上安装pytorch4.2安装好了pytorch没法用4.3模型转换失败4.4转换好的模型推测出的结果和原模型相差较大5.总结0.前言最近这一个月基本没写过博客,因为一直在树莓派4B上部署yolov5的模型,已经数不清楚踩了多少坑了,来来回回折腾了一个月,终于完成了。于

    2022年5月28日
    99
  • netstat命令详解Linux,Linux netstat命令详解

    netstat命令详解Linux,Linux netstat命令详解常见参数-a(all)显示所有选项,默认不显示LISTEN相关-t(tcp)仅显示tcp相关选项-u(udp)仅显示udp相关选项-n拒绝显示别名,能显示数字的全部转化成数字。-l仅列出有在Listen(监听)的服務状态-p显示建立相关链接的程序名-r显示路由信息,路由表-e显示扩展信息,例如uid等-s按各个协议进行统计-c每隔一个固定时间,执行该netstat命令。提…

    2022年5月7日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号