隐式龙格-库塔法

  • 题目
  • 具体分析
    • 前期准备
    • 确定系数
    • MATLAB求解

题目

用隐式中点公式求解常微分方程:
{dydx=y,y(0)=1.\begin{cases} \dfrac{dy}{dx}=y,\\ y(0)=1. \end{cases} ⎩⎨⎧​dxdy​=y,y(0)=1.​

具体分析

前期准备

首先对和在区间上进行离散化,然后构造递推公式,再进一步得到在这些位置的近似取值。
这些离散位置可以表示为:
x1,x2,⋯,xn,⋯x_{1},x_{2},\cdots,x_{n},\cdotsx1​,x2​,⋯,xn​,⋯
显然,y(x)y(x)y(x)在这些离散的点处精确取值为:
y(x1),y(x2),⋯,y(xn),⋯y(x_1),y(x_2),\cdots,y(x_n),\cdotsy(x1​),y(x2​),⋯,y(xn​),⋯
令相邻两个离散点的间隔为一定值hhh,则有xn=x1+nh(n=1,2,⋯)x_n=x_1+nh(n=1,2,\cdots)xn​=x1​+nh(n=1,2,⋯),记f(x,y)=yf(x,y)=yf(x,y)=y。

p级隐式R-K方法(类似于龙格-库塔法的思想)
{yn+1=yn+h∑r=1pλrKr,Kr=f(xn+αrh,yn+h∑i=1pλriKi),r=1,2,⋯,p.\begin{cases} y_{n+1}=y_{n}+h\sum\limits_{r=1}^{p}\lambda_{r}K_{r},\\ K_{r}=f(x_n+\alpha_{r}h,y_{n}+h\sum\limits_{i=1}^{p}\lambda_{ri}K_{i}),r=1,2,\cdots,p.\\ \end{cases}⎩⎪⎪⎨⎪⎪⎧​yn+1​=yn​+hr=1∑p​λr​Kr​,Kr​=f(xn​+αr​h,yn​+hi=1∑p​λri​Ki​),r=1,2,⋯,p.​
我们可利用TaylorTaylorTaylor展开确定系数。(下面以r=1为例)

确定系数

{yn+1=yn+hλK,(1)K=f(xn+αh,yn+hλ∗K).(2)\begin{cases} y_{n+1}=y_{n}+h\lambda K,&(1)\\ K=f(x_n+\alpha h,y_{n}+h\lambda_{*}K).&(2)\\ \end{cases} {yn+1​=yn​+hλK,K=f(xn​+αh,yn​+hλ∗​K).​(1)(2)​
首先,我们对二式中对fff在xnx_nxn​出TaylorTaylorTaylor展开,得:
K=f(xn,yn)+fx(xn,yn)αh+fy(xn,yn)hλ∗K+o(h2)K=f(x_n,y_n)+f_x(x_n,y_n)\alpha h+f_y(x_n,y_n)h\lambda_{*}K+o(h^2)K=f(xn​,yn​)+fx​(xn​,yn​)αh+fy​(xn​,yn​)hλ∗​K+o(h2)
解出K=f(xn,yn)+fx(xn,yn)αh1−fy(xn,yn)hλ∗K=\frac{f(x_n,y_n)+f_x(x_n,y_n)\alpha h}{1-f_y(x_n,y_n)h\lambda_{*}}K=1−fy​(xn​,yn​)hλ∗​f(xn​,yn​)+fx​(xn​,yn​)αh​,
代入(1)式得:
yn+1=yn+hλf(xn,yn)+fx(xn,yn)αh1−fy(xn,yn)hλ∗y_{n+1}=y_{n}+h\lambda\frac{f(x_n,y_n)+f_x(x_n,y_n)\alpha h}{1-f_y(x_n,y_n)h\lambda_{*}}yn+1​=yn​+hλ1−fy​(xn​,yn​)hλ∗​f(xn​,yn​)+fx​(xn​,yn​)αh​
与y(xn+1)y(x_{n+1})y(xn+1​)在xnx_nxn​处TaylorTaylorTaylor展开进行比较:
y(xn+1)=y(xn)+h1!y′(xn)+h22!y′′(xn)+⋯y(x_{n+1})=y(x_n)+\frac{h}{1!}y^{'}(x_n)+\frac{h^2}{2!}y^{''}(x_n)+\cdotsy(xn+1​)=y(xn​)+1!h​y′(xn​)+2!h2​y′′(xn​)+⋯
得到:
hλf(xn,yn)+fx(xn,yn)αh1−fy(xn,yn)hλ∗≈h1!y′(xn)+h22!y′′(xn)h\lambda\frac{f(x_n,y_n)+f_x(x_n,y_n)\alpha h}{1-f_y(x_n,y_n)h\lambda_{*}}\approx\frac{h}{1!}y^{'}(x_n)+\frac{h^2}{2!}y^{''}(x_n)hλ1−fy​(xn​,yn​)hλ∗​f(xn​,yn​)+fx​(xn​,yn​)αh​≈1!h​y′(xn​)+2!h2​y′′(xn​)
即:
λf(xn,yn)+fx(xn,yn)αh1−fy(xn,yn)hλ∗≈f(xn,yn)+h2[fx(xn,yn)+fy(xn,yn)f(xn,yn)]\lambda\frac{f(x_n,y_n)+f_x(x_n,y_n)\alpha h}{1-f_y(x_n,y_n)h\lambda_{*}}\approx f(x_n,y_n)+\frac{h}{2}[f_x(x_n,y_n)+f_y(x_n,y_n)f(x_n,y_n)]λ1−fy​(xn​,yn​)hλ∗​f(xn​,yn​)+fx​(xn​,yn​)αh​≈f(xn​,yn​)+2h​[fx​(xn​,yn​)+fy​(xn​,yn​)f(xn​,yn​)]
简记为:
λf+fxαh1−fyhλ∗≈f+h2(fx+fyf)\lambda\frac{f+f_x\alpha h}{1-f_y h\lambda_{*}}\approx f+\frac{h}{2}(f_x+f_y f)λ1−fy​hλ∗​f+fx​αh​≈f+2h​(fx​+fy​f)
化简得:
λf+λfxαh=f−ffyhλ∗+12hfx+12hfyf\lambda f+\lambda f_x\alpha h=f-ff_y h \lambda_{*}+\frac{1}{2}h f_x+\frac{1}{2}h f_y fλf+λfx​αh=f−ffy​hλ∗​+21​hfx​+21​hfy​f
解得:
λ=1,λ∗=12,α=12.\lambda=1,\lambda_{*}=\frac{1}{2},\alpha=\frac{1}{2}.λ=1,λ∗​=21​,α=21​.
从而得到隐式中点公式:
{yn+1=yn+hK,(1)K=f(xn+12h,yn+12hK).(2)\begin{cases} y_{n+1}=y_{n}+h K,&(1)\\ K=f(x_n+\frac{1}{2} h,y_{n}+\frac{1}{2}h K).&(2)\\ \end{cases} {yn+1​=yn​+hK,K=f(xn​+21​h,yn​+21​hK).​(1)(2)​

MATLAB求解

% Implicit kutta
clear all,close all,clc
f=@(x,y)y;
N=10;h=1/N;
x=linspace(0,1,N+1);
y=[1,zeros(1,N)];
K=randn(1);
for n=1:NK=f(x(n)+1/2*h,y(n)+1/2*h*K);y(n+1)=y(n)+h*K;
end
y_exact=@(x)exp(x);
plot(x,y_exact(x),'-b',x,y,'*r')
axis([0 1 0.9 3.5]),xlabel x,ylabel y
legend('Exact','ImKutta')
error=y_exact(x)-y;

隐式龙格库塔法举例说明相关推荐

  1. 没有学不会的C++:用户自定义的隐式类型转换

    C++ 中的类型转换包含内建类型的转换和用户自定义类型的转换,而这两者都又可分为隐式转换和显示转换,所以一共有如下四象限表格中的 A.B.C.D 四种情况 隐式转换 显示转换 (casting) 内建 ...

  2. 隐式马可夫模型(hidden markov model,HMM)

    马可夫的有关知识整理 1.马可夫性 就是强调一个将来的状态和现在状态的一种无关性."将来"和"过去"无关的这种特性就是强马尔科夫性. 2.马可夫夫过程 既然上面 ...

  3. 题目2:隐式图的搜索问题(A*算法解决八数码)

    数据结构课程实践系列 题目1:学生成绩档案管理系统(实验准备) 题目2:隐式图的搜索问题(A*算法解决八数码) 题目3:文本文件单词的检索与计数(实验准备) 文章目录 数据结构课程实践系列 题目1:学 ...

  4. 用隐式反馈做推荐模型,你做对了吗

    现在大家都习惯用隐式反馈来学习推荐模型,并作用于线上推荐系统(十方也不例外).大量的隐式反馈数据确实缓解了数据稀疏的问题,但是这些数据很多并没有反馈用户真正的需求.拿电商举例,大量的点击,并不会带来支 ...

  5. python隐式等待_selenium中隐式等待和显示等待的区别

    Selenium显示等待和隐式等待的区别 1.selenium的显示等待 原理:显示等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那 ...

  6. 接口的隐式和显式实现

    1:当类实现一个接口是,通常使用隐式接口实现,这样可以方便的访问接口方法和类自身具有的方法和属性 2:当类实现多个接口且接口包含相同的方法签名,此时使用显式接口实现.(标示出哪个接口属于哪个方法) 3 ...

  7. Adams隐式4阶方法解常微分方程,fortran实现

    解微分方程的时候,大多数方程都是隐式方法比较稳定.虽然隐式方法需要迭代,写起来比较麻烦,我还是建议尽量使用隐式方法.Adams隐式是一种精度高,稳定性高的算法,属于隐式四阶龙格库塔法的一个特例.我之前 ...

  8. C# 重载 Equals() 方法、重载运算符、声明显隐式转换的简要整理

    自动生成 可以使用 JetBrains ReSharper 的代码生成功能来自动生成各种结构性的或可重载的成员,而不必自行手写,因为非常麻烦且易错. 如确需手写,可参考本文. 引用类型和值类型 本文不 ...

  9. ORACLE隐式类型转换

      隐式类型转换简介   通常ORACLE数据库存在显式类型转换(Explicit Datatype Conversion)和隐式类型转换(Implicit Datatype Conversion)两 ...

最新文章

  1. webpack版本查看_浅谈webpack技术
  2. Serializable And Parcelable
  3. java中executorservice_java中ExecutorService创建方法总结
  4. Spring的Autowired自动装配(XML版本+Annotation版本+源码+解析)
  5. ubuntu-E:Encountered a section with no Package: header的解决办法
  6. SQL查询环比增长 前后行数据对比操作
  7. python支持复数以及相关的运算吗_Python复数属性和方法运算操作示例
  8. 串口监视工具百度云免费下载
  9. 糖豆推荐系统第一期开发与评估报告
  10. 天梯赛-愿天下有情人都是失散多年的兄妹-题解
  11. Unity Timeline的使用
  12. 华3C交换机调试基本
  13. 如何删除数据库中的冗余数据…
  14. Linux——vi/vim文本编辑器、用户管理、关机重启的相关命令
  15. 克鲁伊夫:斗牛士因巴萨疯癫 红蓝一点克死皇马(2009-11-17)
  16. js返回上一页,下一页
  17. java 保存文件在服务器_Java中如何将数据保存到服务器端
  18. 手机按键精灵学习 —— 基础知识
  19. 部署k8s集群(k8s集群搭建详细实践版)
  20. 【Python】Python中字符串格式化实现整数前面自动补0

热门文章

  1. CCNA 11WAN广域网技术
  2. 无碳小车 matlab,基于无碳小车前轮运动关系的MATLAB运动轨迹仿真
  3. VScode怎么开启本地服务器及本地调试?
  4. avi视频文件太大怎么变小
  5. 开发自己的脚手架(react)
  6. php 下载 网站 文件,php中下载网站文件
  7. 深大算法设计与分析实验二——分治法求最近点对问题
  8. 淘宝开放平台的认证授权机制
  9. redis中的incr命令和incrby命令
  10. 助您赢百万暴风智能AI无屏电视有点意思