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:
function g=Jacobian(x0,u,h)
g(1,1)=1;
g(1,2)=-h;
g(2,1)=2*h*x0(1);
g(2,2)=1;
函数文件3:
function x=newton_Iterative_method(f,u,h)
% u:上一节点的数值解或者初值
% x0 每次迭代的上一节点的数值
% x1 每次的迭代数值
% tol 允许误差
% f 右端函数
x0=u;
tol=1e-11;
x1=x0-Jacobian(x0,u,h)\F(f,x0,u,h);
while (norm(x1-x0,inf)>tol)
%数值解的2范数是否在误差范围内
x0=x1;
x1=x0-Jacobian(x0,u,h)\F(f,x0,u,h);
end
x=x1;%不动点
脚本文件:
tic;
clear all
clc
N=100;
h=1/N;
x=0:h:1;
y=inline('x.^2.*sin(x).^2+2*cos(x)-x.*sin(x)');
fun1=inline('x.*sin(x)');
Accurate=fun1(x);
f=y(x);
Numerical=zeros(2,N+1);
for i=1:N
Numerical(1:2,i+1)=newton_Iterative_method(f(i+1),Numerical(1:2,i),h);
end
error=Numerical(1,:)-Accurate;
subplot(1,3,1)
plot(x,Accurate);
xlabel('x');
ylabel('Accurate');
grid on
subplot(1,3,2)
plot(x,Numerical(1,:));
xlabel('x');
ylabel('Numerical');
grid on
subplot(1,3,3)
plot(x,error);
xlabel('x');
ylabel('error');
grid on
toc;
效果图:

Matlab:高阶常微分三种边界条件的特殊解法(隐式Euler)的更多相关文章
- Matlab:高阶常微分三种边界条件的特殊解法(中心差分法,高精度导数边界处理)
函数文件1: function b=F(f,x0,h,N) % b(1,1)=x0(1)-h*x0(2)-u(1); % b(2,1)=x0(2)+h*x0(1)^2-u(2)-h*f; b=zero ...
- 学好Spark/Kafka必须要掌握的Scala技术点(三)高阶函数、方法、柯里化、隐式转换
5. 高阶函数 Scala中的高阶函数包含:作为值的函数.匿名函数.闭包.柯里化等,可以把函数作为参数传递给方法或函数. 5.1 作为值的函数 定义函数时格式: val 变量名 = (输入参数类型和个 ...
- Matlab:非线性高阶常微分方程的几种解法
一.隐式Euler: 函数文件1: function b=F(t,x0,u,h) b(,)=x0()-h*x0()-u(); b(,)=x0()+*h*x0()/t+*h*(*exp(x0())+ex ...
- Matlab中数组元素引用——三种方法
Matlab中数组元素引用——三种方法 1.Matlab中数组元素引用有三种方法 1 2 3 1.下标法(subscripts) 2.索引法(index) 3.布尔法(Boolean) 注意:在使 ...
- MATLAB 显示输出数据的三种方式
MATLAB 显示输出数据的三种方式 ,转载 https://blog.csdn.net/qq_35318838/article/details/78780412 1.改变数据格式 当数据重复再命令行 ...
- 如何使用MATLAB对图片的RGB三种颜色进行提取
参考: https://jingyan.baidu.com/article/456c463b41de5f0a5831448e.html matlab在图像处理方面,具有很强大的应用.下面将分享如何使用 ...
- c++ operator操作符的两种用法:重载和隐式类型转换,string转其他基本数据类型的简洁实现string_cast
C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式 ...
- matlab 高阶(三)—— 插值(fft、)
1. FFT 插值 y = interpft(x,n) y = [0, .5, 1., 1.5, 2., 1.5, 1., .5, 0, -.5, -1, -1.5, -2., -1.5, -1., ...
- java高并发锁的三种实现
提到锁大家会想到Synchronized同步关键字,使用它确实可以解决一切并发问题,但是对于体统吞吐量要求更高,在这里提供了几个小技巧.帮助大家减少锁粒度.提高系统的并发能力 一.乐观锁 试用场景:读 ...
随机推荐
- MAVEN_day02快速入门
一.MAVEN工程目录结构 二.怎么在Eclipse中集成M2E插件(工欲善其事必先利其器)有一些准备工作 1.修改自己下载的MAVEN 2.设置本地仓库 三.构建MAVEN工程 1.选择“MAVEN ...
- [LeetCode] 系统刷题3_Binary search
可以参考 [LeetCode] questions conclusion_ Binary Search
- C#:特性
#define IsText//添加一个宏,接触注释 using System; using System.Collections.Generic; using System.Diagnostics; ...
- JAVA 重写equals和重写hashCode
面试官可能会问你:“你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法?” 首先你需要了解: hashCode()的作用是获取哈希码(散列码) 它实 ...
- 面向对象编程之OC
面向对象概述 面向对象是一种符合人类思想习惯的编程思想.现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系,在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种 ...
- [macOS] PHP双版本,5.6跟7.1
转过来的,原文看这里,https://www.symfony.fi/page/how-to-run-both-php-5-6-and-php-7-x-with-homebrew-on-os-x-wit ...
- SpringMvc @PathVariable 工作原理
SpringMvc @PathVariable 工作原理: 友情提示:查看清晰大图,请鼠标右击图片后,选择新标签页中打开. 相关对象: DispatcherServlet DefaultAnnot ...
- Java面试题整理---JVM篇
1.JVM运行时内存区域划分? 2.内存溢出OOM和堆栈溢出SOE的案例.原因.排查及解决? 3.常用的JVM性能监控工具? 4.JVM参数设置? 5.类加载过程? 6.JVM内存 ...
- Linux基础命令---lpr打印文件
lpr lpr指令用来打印文件,如果没有指定文件名,那么从标准输入读取内容.CUPS提供了许多设置默认目标的方法.首先查询“LPDEST”和“PRINTER”环境变量.如果没有设置,则使用lpopti ...
- openGL学习----光照
0.光照处理时候,向量点乘一定要是标准化后的单位向量!!! 1.冯氏光照模型:光照=环境光+漫反射+镜面反射 vec3 result = ambient + diffuse + specular; 一 ...