一、显示Euler

函数文件:Euler.m

 function f=Euler(h,Y)
f(1,1)=Y(1)+h*(0.01-(1+(Y(1)+1000)*(Y(1)+1))*(0.01+Y(1)+Y(2)));
f(2,1)=Y(2)+h*(0.01-(1+Y(2)^2)*(0.01+Y(1)+Y(2)));

脚本文件:

 tic;
clear
clc
%%
%显示Euler方法求刚性微分方程,要求用Richardson外推法估计近似误差从而控制步长
y(1:2,1)=[0;0];%初值
e=1e-5;%误差过小
tol=1e-3;%指定的误差
N=10;%节点的步数
h=1/N;%初始步长
t(1)=0;
i=1;
while t(i)+h<=1
k=1;
%%自动变步长
while k==1
y(1:2,i+1)=Euler(h,y(1:2,i));%符合误差的数值解
y1_half=Euler(h/2,y(1:2,i));%半步长的中点数值解
y1_one=Euler(h/2,y1_half);%半步长的右端点的数值解
Estimate_error=2*norm(y(1:2,i+1)-y1_one);%中间估计误差
if Estimate_error<tol%指定误差
k=0;%步长相差不大,或者说正好在指定的误差范围内,则确定选择h作为步长。
elseif Estimate_error<e%误差过小
h=2*h;
else
h=h/2;
end
end
t(i+1)=t(i)+h;
i=i+1;
end
%%
%绘图
plot(t,y,'');
xlabel('t'),ylabel('y(t) and z(t)');
legend('y(t)','z(t)');
title('Implicit Euler method for numerical solution of image');
grid on;
toc;

效果图:

二、隐式Euler:Euler.m

 function X=Euler(t_h,u)
%隐式Euler(Newton迭代法)
%%
Tol=1e-5;
U=u;
x1=U-Jacobian(U,t_h)\F(U,u,t_h);
while (norm(x1-U,2)>=Tol)
%数值解的2范数是否在误差范围内
U=x1;
x1=U-Jacobian(U,t_h)\F(U,u,t_h);
end
X=x1;%不动点
%雅可比矩阵
function f=Jacobian(U,t_h)
f(1,1)=-t_h*((2*U(1)+1001)*(0.01+U(1)+U(2))+1+(U(1)+1000)*(U(1)+1))-1;
f(1,2)=-t_h*(1+(U(1)+1000)*(U(1)+1));
f(2,1)=-t_h*(1+U(2)^2);
f(2,2)=-t_h*(2*U(2)*(0.01+U(1)+U(2))+(1+U(2)^2))-1; %方程组
%%
function fun=F(U,u,t_h)
fun(1,1)=u(1)+t_h*(0.01-(1+(U(1)+1000)*(U(1)+1))*(0.01+U(1)+U(2)))-U(1);
fun(2,1)=u(2)+t_h*(0.01-(1+U(2)^2)*(0.01+U(1)+U(2)))-U(2);

脚本文件:

 tic;
clear
clc
%隐式Euler方法求刚性微分方程,要求用Richardson外推法估计近似误差从而控制步长
%%
y(1:2,1)=[0;0];%初值
e=1e-5;%误差过小
tol=1e-3;%指定的误差
N=100;%节点的步数
h=1/N;%初始步长
t(1)=0;%初始节点
i=1;
while t(i)+h<=1
k=1;
%自动变步长
while k==1
y(1:2,i+1)=Euler(h,y(1:2,i));%符合误差的数值解
% y1_half=Euler(h/2,y(1:2,i));%半步长的中点数值解
y1_half=Euler(h/2,y(1:2,i));%半步长的右端点的数值解
Estimate_error=2*norm(y(1:2,i+1)-y1_half);%中间估计误差
if Estimate_error<tol%指定误差
k=0;%步长相差不大,或者说正好在指定的误差范围内,则确定选择h作为步长。
elseif Estimate_error<e%误差过小
h=2*h;
else%近似估计误差大于指定误差
h=h/2;
end
end
t(i+1)=t(i)+h;
i=i+1;
end
%绘图
%%
plot(t,y);
xlabel('t'),ylabel('y(t) and z(t)');
legend('y(t)','z(t)');
title('Explicit Euler method for numerical solution of image');
grid on ;
toc;

效果图:

Matlab:显(隐)式Euler和Richardson外推法变步长求解刚性问题的更多相关文章

  1. C#中显/隐式实现接口及其访问方法

    原贴地址: http://www.cnblogs.com/dudu837/archive/2009/12/07/1618663.html 在实现接口的时候,VS提供了两个菜单,一个是"实现接 ...

  2. Matlab:高阶常微分三种边界条件的特殊解法(隐式Euler)

    函数文件1: function b=F(f,x0,u,h) b(1,1)=x0(1)-h*x0(2)-u(1); b(2,1)=x0(2)+h*x0(1)^2-u(2)-h*f; 函数文件2: fun ...

  3. 转】C#接口-显式接口和隐式接口的实现

    [转]C#接口-显式接口和隐式接口的实现 C#中对于接口的实现方式有隐式接口和显式接口两种: 类和接口都能调用到,事实上这就是“隐式接口实现”. 那么“显示接口实现”是神马模样呢? interface ...

  4. 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)

    1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...

  5. 显式Intent和隐式Intent

    http://blog.csdn.net/qs_csu/article/details/7995966 对于明确指出了目标组件名称的Intent,我们称之为“显式Intent”. 对于没有明确指出目标 ...

  6. SQL Server显式事务与隐式事务

    事务是单个的工作单元.如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分.如果事务遇到错误且必须取消或回滚,则所有数据库修改均被清除. SQL Server中有一下几 ...

  7. (转载)Android理解:显式和隐式Intent

    Intent分两种:显式(Explicit intent)和隐式(Implicit intent). 一.显式(设置Component) 显式,即直接指定需要打开的activity对应的类. 以下多种 ...

  8. dll显式加载与隐式加载

    使用动态DLL有两种方法,一种是隐式链接,一种是显式链接,如果用loadlibrary就是显示链接,用lib就属于隐式链接. 两种方法对于你的程序调用动态库时没有任何区别,只是你在编程时,步骤是不一样 ...

  9. c# implicit explicit关键字(隐式和显式数据类型转换)

    implicit关键字用于声明隐式的用户定义类型转换运算符.(explicit反之)explicit则用于显示转换用户自定义类型.static implicit operator target_typ ...

随机推荐

  1. Jenkins+Jmeter持续集成笔记(一:环境准备)

    整体思路: 通过Jmeter图形界面编写api测试脚本 ant 批量执行Jmeter脚本文件 将其集成到jenkins,设置执行频率与发送测试报告 运行环境 系统 配置 IP Centos7.1 1核 ...

  2. 官方Canvas API文档

    https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API

  3. python笔记-正则表达式常用函数

    1.re.findall()函数 语法:re.findall(pattern,string,flags=0) --> list(列表) 列出字符串中模式的所有匹配项,并作为一个列表返回.如果无匹 ...

  4. [js]js代码执行顺序/全局&私有变量/作用域链/闭包

    js代码执行顺序/全局&私有变量/作用域链 <script> /* 浏览器提供全局作用域(js执行环境)(栈内存) --> 1,预解释(仅带var的可以): 声明+定义 1. ...

  5. 【UML】NO.54.EBook.6.UML.2.002-【Thinking In UML 大象 第二版】- UML 核心元素

    1.0.0 Summary Tittle:[UML]NO.54.EBook.6.UML.2.002-[Thinking In UML 大象 第二版]- UML 核心元素 Style:DesignPat ...

  6. 53.CSS---CSS水平垂直居中常见方法总结

    CSS水平垂直居中常见方法总结 1.元素水平居中 当然最好使的是: margin: 0 auto; 居中不好使的原因: 1.元素没有设置宽度,没有宽度怎么居中嘛! 2.设置了宽度依然不好使,你设置的是 ...

  7. keepalived 工作原理

    keepalived主要通过vrrp协议为基础进行通信 所以先从VRRP协议说起: VRRP: 英文全称 Virtual Router Redundancy Protocol, .中文:虚拟路由冗余协 ...

  8. java之导入excel

    接口: /** * * Description: 导入excel表 * @param map * @param request * @param session * @return * @author ...

  9. 【python】python2.x中的除法

    在生信分析中有许多时候我们需要用到除法,在经历无数次break out 之后我终于发现原来python 2.x中只有整除,而没有浮点除法,这就是没有基础的弊病. 那么如何在python 2.x中运用除 ...

  10. 调用微信的扫一扫功能详解说明---(java 排坑版)

    最近碰到了这么一个需求,说是在前端页面调用手机本地的相机,扫描二维码这么一个需求,对于我一个后端来说, 这实在是难,难于上青天,但是决不能说一个不字.我说可以使用微信的扫码工具吗,这样可以方便一点,. ...