Matlab之四阶龙格—库塔法方法:解常微分初值问题

article/2025/8/29 22:23:26

目录

1. 题目

2. 算法原理

3. 代码

4. 结果

4.1 运行结果

4.2 结果分析


【若觉文章质量良好且有用,请别忘了点赞收藏加关注,这将是我继续分享的动力,万分感谢!】

直接通过解题的方式进行学习,代入感更强

1. 题目

用经典四阶龙格库塔方法对初值问题\left\{\begin{array}{l} y^{\prime}=-20 y \\ y(0)=1 \end{array}\right.,步长分别取求解,观察稳定区间的作用。

2. 算法原理

某些常微分方程有解析解,但大多数都没有,因此需要进行数值解计算。

龙格—库塔法是利用f(x,y)在某些特殊点上的函数值的线性组合,来估算高阶单步法的平均斜率。

经典的龙格—库塔法是四阶的,也就是在(x_i,x_{i+1})中用四个点处的斜率来估计其平局斜率,构成四阶龙格—库塔公式

其准确解y(x)在一系列点xiyxi)的近似值yi的方法,yi称为数值解。经典的四阶龙格库塔法方程如下:

y_{i+1}=y_i+c_1 K_1+c_2 K_2+c_3 K_3+c_4 K_4

其中:

\left\{\begin{array}{l} K_1=h f\left(x_i, y_i\right) \\ K_2=h f\left(x_i+a_2 h, y_i+b_{21} K_1\right) \\ K_3=h f\left(x_i+a_3 h, y_i+b_{31} K_1+b_{32} K_2\right) \\ K_4=h f\left(x_i+a_4 h, y_i+b_{41} K_1+b_{42} K_2+b_{43} K_3\right) \end{array}\right.

其中的各个参数具体如下:

\begin{gathered} a_2=a_3=b_{21}=b_{32}=\frac{1}{2} \\ b_{31}=b_{41}=b_{42}=0 \\ a_4=b_{43}=1 \\ c_1=c_4=\frac{1}{6} \\ c_2=c_3=\frac{1}{3} \end{gathered}

其整合之后为:

\left\{\begin{array}{l} y_{i+1}=y_i+\frac{1}{6}\left(K_1+2 K_2+2 K_3+K_4\right) \\ K_1=h f\left(x_i, y_i\right) \\ K_2=h f\left(x_i+\frac{h}{2}, y_i+\frac{1}{2} K_1\right) \\ K_3=h f\left(x_i+\frac{h}{2}, y_i+\frac{1}{2} K_2\right) \\ K_4=h f\left(x_i+h, y_i+K_3\right) \end{array}\right.

其中h为步长。

3. 代码

clear;
clc;for step = [0.1, 0.2]x_0 = 0;y_0 = 1;num = floor(1/step);n = 1;X_output = [0];Y_output = [1];disp("y'= -20 * y")while n <= numx_1 = x_0 + step;K_1 = step * fun(x_0,y_0);K_2 = step * fun(x_0 + step/2, y_0 + K_1/2);K_3 = step * fun(x_0 + step/2, y_0 + K_2/2);K_4 = step * fun(x_0 + step, y_0 + K_3);y_1 = y_0 + (K_1 + 2 * K_2 + 2 * K_3 + K_4) / 6 ;X_output = [X_output x_1];Y_output = [Y_output y_1];x_0 = x_1;y_0 = y_1;n = n + 1;endfigure()plot(X_output,Y_output)xlabel('x')ylabel('y')title(['Runge-Kutta4阶,步长为:', num2str(step)])X_outputY_outputclear X_output Y_output
end[x,y] = ode45('fun', [0:1], 1);
figure()
plot(x,y)
xlabel('x')
ylabel('y')
title('自带函数求解结果')function dy = fun(x, y)
dy = - 20*y;
end

4. 结果

4.1 运行结果

Step = 0.1 时X_output =
0    0.1000    0.2000    0.3000    0.4000    0.5000    0.6000    0.7000    0.8000    0.9000          
1.0000Y_output =
1.0000    0.3333    0.1111    0.0370    0.0123    0.0041    0.0014    0.0005    0.0002    0.0001    0.0000Step = 0.2时
X_output =
0    0.2000    0.4000    0.6000    0.8000    1.0000Y_output =
1           5          25         125         625        3125

 

 

4.2 结果分析

用经典四阶龙格库塔方法求解,其求解结果与设置得步长有很大的相关性,步长设置合适时,其求解情况与真实值基本一致,趋于稳定。但步长加大时,其求解值与真实值相差太大。

​​​​​​​【若觉文章质量良好且有用,请别忘了点赞收藏加关注,这将是我继续分享的动力,万分感谢!】


http://chatgpt.dhexx.cn/article/9chLV07i.shtml

相关文章

龙格库塔方法的原理和案例及MTATLAB编程

文章目录 龙格库塔法的原理利用四阶龙格库塔法求解一个案例用MATLAB编程 龙格库塔法的原理 在百度百科中是这么解释的&#xff1a;在各种龙格&#xff0d;库塔法当中有一个方法十分常用&#xff0c;以至于经常被称为“RK4”或者就是“龙格&#xff0d;库塔法”。该方法主要是在…

欧拉法、改进的欧拉法、龙格-库塔法求解初值问题

求解初值问题 简介前期准备欧拉法改进的欧拉法龙格-库塔法标准四阶显式Kutta公式三级三阶显式公式四级四阶显式Kutta公式四级四阶显式Gill公式 示例MATLAB代码结果 简介 通过求解简单的初值问题&#xff1a; { d u d x f ( x , u ) ( 1 ) u ( x 0 ) u 0 ( 2 ) \begin{cases…

6.2 龙格—库塔法

学习目标&#xff1a; 学习龙格-库塔法的具体明确的学习目标可以有以下几点&#xff1a; 理解龙格-库塔法的基本思想和原理&#xff1a;我们应该了解龙格-库塔法的数值求解思想和数值误差的概念&#xff0c;包括截断误差和稳定性等基本概念&#xff0c;并且要熟悉龙格-库塔法的…

四阶龙格库塔法求解一次常微分方程组(python实现)

四阶龙格库塔法求解一次常微分方程组 一、前言二、RK4求解方程组的要点1. 将方程组转化为RK4求解要求的标准形式2. 注意区分每个方程的独立性 三、python实现RK4求解一次常微分方程组1. 使用的方程组2. python代码3. 运行结果 一、前言 之前在博客发布了关于使用四阶龙格库塔方…

四阶龙格库塔算法及matlab代码

常微分方程 Ordinary differential equation&#xff0c;简称ODE&#xff0c;自变量只有一个的微分方程。 例子1&#xff1a; d y d x f ( x , y ) \dfrac {dy} {dx}f(x,y) dxdy​f(x,y) , f ( x , y ) f(x,y) f(x,y)是已知函数 偏微分方程 Partial differential equation…

经典四阶龙格库塔法

关注微信公众号“二进制小站”~~获取更多分析~~&#xff08;文末二维码~~&#xff09; 龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法,经常被称为“RK4”或者就是“龙格库塔法”。 令初值问题表述如下。 对于该问题的RK4由如下方程给出&#xff1a; 其中&…

四阶龙格库塔法(Runge-Kutta)求解常微分方程的 Matlab程序及案例

文章目录 1. 算法2. 程序3. 案例4. 联系作者 1. 算法 上一篇介绍了显式欧拉法、隐式欧拉法、两步欧拉法和改进欧拉法求解常微分方程初值问题&#xff1b;其中显式欧拉法和隐式欧拉法是一阶算法精度&#xff0c;截断误差为 O ( h 2 ) O\left( {{h^2}} \right) O(h2)&#xff1b…

【Runge-Kutta】龙格-库塔法求解微分方程matlab仿真

1.软件版本 MATLAB2013b 2.算法理论 龙格&#xff0d;库塔法&#xff08;Runge-Kutta&#xff09;是用于模拟常微分方程的解的重要的一类隐式或显式迭代法。龙格库塔法的家族中的一个成员如此常用&#xff0c;以至于经常被称为“RK4”或者就是“龙格库塔法”。令初值问题表述…

龙格-库塔方法学习笔记

1、龙格-库塔法简介 龙格—库塔法是一种在工程上应用广泛的高精度单步算法&#xff0c;其中包括著名的欧拉法&#xff0c;用于数值求解微分方程。 由于此算法精度高&#xff0c;采取措施对误差进行抑制&#xff0c;所以其实现原理也较复杂。 在各种龙格—库塔法当中有一个方法十…

四阶龙格库塔法的计算例子

序 没有对比就没有伤害&#xff0c;本文先给出很多时候直接采用的矩形法&#xff0c;然后与四阶龙格库塔法做比较&#xff0c;着重说明四阶龙格库塔法。 一、矩形法 1.1 原理 设微分方程 y ˙ f ( y ) (1.1) \dot yf(y) \tag{1.1} y˙​f(y)(1.1) 求 y y y。 使用数值方法…

龙格-库塔法(Runge-Kutta methods)

非线性的常微分方程通常是难以求出解析解的&#xff0c;只能通过多次迭代求近似的数值解。 龙格&#xff0d;库塔法&#xff08;Runge-Kutta methods&#xff09;是用于非线性常微分方程的解的重要的一类隐式或显式迭代法。简写做RK法。 对于任意的Yf(X),假设某点(Xi,Yi)的斜…

龙格-库塔(Runge-Kutta)方法C++实现

龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法。由于此算法精度高&#xff0c;采取措施对误差进行抑制&#xff0c;所以其实现原理也较复杂。该算法是构建在数学支持的基础之上的。 1 中点法 2传统二阶龙格库塔法&#xff1a; 3 传统三阶龙格库塔法 4 传…

龙格库塔法

1 基本思想 我们求解常微分方程的时候&#xff0c;某些常微分方程有解析方法&#xff0c;但是大多数的常微分方程只能用数值解法来求解。 数值解法的一个基本特点就是“递进式”&#xff0c;顺着节点的顺序一步一步向前推进。 龙格库塔法的基本思想就是利用f(x,y)在某些特殊点…

关于html中文字空格以及换行符的处理

在阮一峰大神的博客中发现空格原来可以有多种处理方式&#xff0c;过去只知道用$nbsp;真是惭愧。长路漫漫吖 目录 1、html里面的空格2、怎样原样显示空格和换行符2.1 使用pre标签2.2 使用white-space设置样式 3、参考链接 1、html里面的空格 在html里面&#xff0c;空格和换行符…

html5中如何取消换行,html5换行符元素: 元素

1. 基本概念 html5中的元素用于产生一个换行符&#xff0c;它的名称br正是单词break的前两个字母&#xff1b;break本身的含义为“打破、拆分”&#xff0c;在此处就引申为换行的意思。 为什么html5要专门定义一个元素来代表换行符呢&#xff1f;我们平常在办公软件中编辑文本的…

linux换行符 r,\r \n 回车换行符详解

\r \n 回车换行符详解 \r \n 回车换行符详解 \r \n 回车换行符详解1. \r \n 回车换行的含义1.1 \r 回车 1.2 \n 换行 2. \r \n 回车换行的历史2.1 \r \n 回车换行的历史 2.2 发展:linux 和 windows的不同 参考: 1.1 \r 回车 回车 CR (carriage return) 含义:return oldline …

html文本换行符

2019独角兽企业重金招聘Python工程师标准>>> p的样式&#xff1a;white-space:pre;或者white-space:pre-wrap;或者white-space:pre-line; <p> abcdef </p> 转载于:https://my.oschina.net/u/3407699/blog/1829940

在html中js如何给字符串中加换行符

var str 如果有一天休息休息下cvcvx,"\n" 那么&#xff5e;&#xff5e;&#xff5e;; 这种写法在html中是会被识别为"如果有一天休息休息下cvcvx,\n 那么&#xff5e;&#xff5e;&#xff5e;" 那么如何保证其这么写会被识别&#xff0c;只需要在该d…

linux cr换行符,回车符CR和换行符LF

我在Windows电脑上做开发时,经常会见到这个现象。代码从远程git仓库clone下来后,然后npm install安装依赖后,打开任意一个代码文件会看到每行结尾处有如下报红: 将鼠标指针停留在行尾报红处,会浮出如下提示: Expected linebreaks to be LF but found CRLF.eslint(linebre…

文本文件换行符

文本文件的每一行结尾用一个或者两个特殊的ASCII字符进行标识&#xff0c;这个标识就是换行符&#xff0c;不同的操作系统中会采用不同的换行符。 1.CR、LF、CRLF 主要的换行符有三种&#xff1a;LF&#xff08;Line Feed即换行&#xff0c;转义字符用“\n”表示&#xff0c;十…