隐式龙格库塔法举例说明
隐式龙格-库塔法
- 题目
- 具体分析
- 前期准备
- 确定系数
- 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λrKr,Kr=f(xn+αrh,yn+hi=1∑pλriKi),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!hy′(xn)+2!h2y′′(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!hy′(xn)+2!h2y′′(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−fyhλ∗f+fxαh≈f+2h(fx+fyf)
化简得:
λ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−ffyhλ∗+21hfx+21hfyf
解得:
λ=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+21h,yn+21hK).(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;
隐式龙格库塔法举例说明相关推荐
- 没有学不会的C++:用户自定义的隐式类型转换
C++ 中的类型转换包含内建类型的转换和用户自定义类型的转换,而这两者都又可分为隐式转换和显示转换,所以一共有如下四象限表格中的 A.B.C.D 四种情况 隐式转换 显示转换 (casting) 内建 ...
- 隐式马可夫模型(hidden markov model,HMM)
马可夫的有关知识整理 1.马可夫性 就是强调一个将来的状态和现在状态的一种无关性."将来"和"过去"无关的这种特性就是强马尔科夫性. 2.马可夫夫过程 既然上面 ...
- 题目2:隐式图的搜索问题(A*算法解决八数码)
数据结构课程实践系列 题目1:学生成绩档案管理系统(实验准备) 题目2:隐式图的搜索问题(A*算法解决八数码) 题目3:文本文件单词的检索与计数(实验准备) 文章目录 数据结构课程实践系列 题目1:学 ...
- 用隐式反馈做推荐模型,你做对了吗
现在大家都习惯用隐式反馈来学习推荐模型,并作用于线上推荐系统(十方也不例外).大量的隐式反馈数据确实缓解了数据稀疏的问题,但是这些数据很多并没有反馈用户真正的需求.拿电商举例,大量的点击,并不会带来支 ...
- python隐式等待_selenium中隐式等待和显示等待的区别
Selenium显示等待和隐式等待的区别 1.selenium的显示等待 原理:显示等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那 ...
- 接口的隐式和显式实现
1:当类实现一个接口是,通常使用隐式接口实现,这样可以方便的访问接口方法和类自身具有的方法和属性 2:当类实现多个接口且接口包含相同的方法签名,此时使用显式接口实现.(标示出哪个接口属于哪个方法) 3 ...
- Adams隐式4阶方法解常微分方程,fortran实现
解微分方程的时候,大多数方程都是隐式方法比较稳定.虽然隐式方法需要迭代,写起来比较麻烦,我还是建议尽量使用隐式方法.Adams隐式是一种精度高,稳定性高的算法,属于隐式四阶龙格库塔法的一个特例.我之前 ...
- C# 重载 Equals() 方法、重载运算符、声明显隐式转换的简要整理
自动生成 可以使用 JetBrains ReSharper 的代码生成功能来自动生成各种结构性的或可重载的成员,而不必自行手写,因为非常麻烦且易错. 如确需手写,可参考本文. 引用类型和值类型 本文不 ...
- ORACLE隐式类型转换
隐式类型转换简介 通常ORACLE数据库存在显式类型转换(Explicit Datatype Conversion)和隐式类型转换(Implicit Datatype Conversion)两 ...
最新文章
- webpack版本查看_浅谈webpack技术
- Serializable And Parcelable
- java中executorservice_java中ExecutorService创建方法总结
- Spring的Autowired自动装配(XML版本+Annotation版本+源码+解析)
- ubuntu-E:Encountered a section with no Package: header的解决办法
- SQL查询环比增长 前后行数据对比操作
- python支持复数以及相关的运算吗_Python复数属性和方法运算操作示例
- 串口监视工具百度云免费下载
- 糖豆推荐系统第一期开发与评估报告
- 天梯赛-愿天下有情人都是失散多年的兄妹-题解
- Unity Timeline的使用
- 华3C交换机调试基本
- 如何删除数据库中的冗余数据…
- Linux——vi/vim文本编辑器、用户管理、关机重启的相关命令
- 克鲁伊夫:斗牛士因巴萨疯癫 红蓝一点克死皇马(2009-11-17)
- js返回上一页,下一页
- java 保存文件在服务器_Java中如何将数据保存到服务器端
- 手机按键精灵学习 —— 基础知识
- 部署k8s集群(k8s集群搭建详细实践版)
- 【Python】Python中字符串格式化实现整数前面自动补0