函数文件1:

  1. function b=F(f,x0,h,N)
  2. % b(1,1)=x0(1)-h*x0(2)-u(1);
  3. % b(2,1)=x0(2)+h*x0(1)^2-u(2)-h*f;
  4. b=zeros(N,1);
  5. b(1,1)=4*x0(1)-x0(2);
  6. b(2,1)=h^2*x0(1)^2-2*x0(1)+x0(2)-h^2*f(1)
  7. for i=3:N
  8. b(i,1)=x0(i-2)+h^2*x0(i-1)^2-2*x0(i-1)+x0(i)-h^2*f(i-1);
  9. end

函数文件2:

  1. function g=Jacobian(x0,h,N)
  2. % g(1,1)=1;
  3. % g(1,2)=-h;
  4. % g(2,1)=2*h*x0(1);
  5. % g(2,2)=1;
  6. g=zeros(N);
  7. g(1,1)=4;
  8. g(1,2)=-1;
  9. g(2,1)=2*h^2*x0(1)-2;
  10. g(2,2)=1;
  11. for i=3:N
  12. g(i,i-2)=1;
  13. g(i,i-1)=2*h^2*x0(i-1)-2;
  14. g(i,i)=1;
  15. end

函数文件3:

  1. function x=newton_Iterative_method(f,u,h,N)
  2. % u:上一节点的数值解或者初值
  3. % x0 每次迭代的上一节点的数值
  4. % x1 每次的迭代数值
  5. % tol 允许误差
  6. % f 右端函数
  7. x0=u;
  8. tol=1e-11;
  9. x1=x0-Jacobian(x0,h,N)\F(f,x0,h,N);
  10. while (norm(x1-x0,inf)>tol)
  11. %数值解的2范数是否在误差范围内
  12. x0=x1;
  13. x1=x0-Jacobian(x0,h,N)\F(f,x0,h,N);
  14. end
  15. x=x1;%不动点

脚本文件:

  1. tic;
  2. clear
  3. clc
  4. N=100;
  5. h=1/N;
  6. x=0:h:1;
  7. y=inline('x.^2.*sin(x).^2+2*cos(x)-x.*sin(x)');
  8. fun1=inline('x.*sin(x)');
  9. Accurate=fun1(x);
  10. f=y(x(2:N));
  11. Numerical=zeros(N+1,1);
  12. Numerical(2:end,1)=newton_Iterative_method(f,Numerical(2:end,1),h,N);
  13. error=Numerical-Accurate';
  14. subplot(1,3,1)
  15. plot(x,Accurate);
  16. xlabel('x');
  17. ylabel('Accurate');
  18. grid on
  19. subplot(1,3,2)
  20. plot(x,Numerical);
  21. xlabel('x');
  22. ylabel('Numerical');
  23. grid on
  24. subplot(1,3,3)
  25. plot(x,error);
  26. xlabel('x');
  27. ylabel('error');
  28. grid on
  29. toc;

效果图:

Matlab:高阶常微分三种边界条件的特殊解法(中心差分法,高精度导数边界处理)的更多相关文章

  1. 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 ...

  2. Matlab:非线性高阶常微分方程的几种解法

    一.隐式Euler: 函数文件1: function b=F(t,x0,u,h) b(,)=x0()-h*x0()-u(); b(,)=x0()+*h*x0()/t+*h*(*exp(x0())+ex ...

  3. Matlab中数组元素引用——三种方法

    Matlab中数组元素引用——三种方法   1.Matlab中数组元素引用有三种方法 1 2 3 1.下标法(subscripts) 2.索引法(index) 3.布尔法(Boolean) 注意:在使 ...

  4. MATLAB 显示输出数据的三种方式

    MATLAB 显示输出数据的三种方式 ,转载 https://blog.csdn.net/qq_35318838/article/details/78780412 1.改变数据格式 当数据重复再命令行 ...

  5. 如何使用MATLAB对图片的RGB三种颜色进行提取

    参考: https://jingyan.baidu.com/article/456c463b41de5f0a5831448e.html matlab在图像处理方面,具有很强大的应用.下面将分享如何使用 ...

  6. 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., ...

  7. java高并发锁的三种实现

    提到锁大家会想到Synchronized同步关键字,使用它确实可以解决一切并发问题,但是对于体统吞吐量要求更高,在这里提供了几个小技巧.帮助大家减少锁粒度.提高系统的并发能力 一.乐观锁 试用场景:读 ...

  8. matlab 高阶(一) —— assignin与evalin

    1. assignin assignin(ws, 'var', val) 将 val 值赋值给 ws 空间中的 var 变量,注意这里的变量,必须是 array 类型,而不可以是包含下标索引,如果在指 ...

  9. python六十四课——高阶函数练习题(三)

    案例五:求两个列表元素的和,返回新列表lt1 = [1,2,3,4]lt2 = [5,6]效果:[6,8,10,12] lt1=[1,2,3,4] lt2=[5,6] print(list(map(l ...

随机推荐

  1. 新建Maven项目时dtd约束出错

    新建或者导入Maven项目时出错:org.apache.maven.archiver.MavenArchiver.getManifesteclipse新建maven项目时,pom.xml文件第一行报错 ...

  2. angular--解决angular图片加载失败问题

    基于angular4写的一个指令,在ionic3.x项目在用.因为加载图片超时等原因导致图片显示不出来,需要替换成默认或者指定图片 1.err-src.ts import { Directive,In ...

  3. linux 逆向映射机制浅析

    2017-05-20 聚会回来一如既往的看了会羽毛球比赛,然后想到前几天和朋友讨论的逆向映射的问题,还是简要总结下,免得以后再忘记了!可是当我添加时间……这就有点尴尬了……520还在写技术博客…… 闲 ...

  4. 安装和使用ZFS

    一.安装和使用ZFS Centos7上安装和使用ZFS:https://blog.csdn.net/linuxnews/article/details/51286358

  5. iOS代理模式(delegate)的使用

    前言: 代理模式是iOS中非常重要的一个模式,iOS SDK中的系统控件几乎都用到了代理模式.代理模式用来处理事件监听.参数传递功能. 协议创建(Protocol): 可手打如下代码,或者在代码块里面 ...

  6. 对String中固定符号隔开的每项做无序不重复监测

    Response<List<String[]>> response = new Response<>(); // 引擎方式校验 // 在此对知识内容标签进行打标 t ...

  7. COM中参数标识

  8. 0007-20180403-python-自动化基础学习000--while-if 循环实操

    python-自动化基础学习000 Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64 ...

  9. tiny6410的启动参数

    bootargs=root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200 bootcmd=nand led ...

  10. 转:C#中Undo/Redo的一个简易实现

    一个比较常见的改进用户体验的方案是用Redo/Undo来取代确认对话框,由于这个功能比较常用,本文简单的给了一个在C#中通过Command模式实现Redo/Undo方案的例子,以供后续查询. clas ...