数学实验“微分方程组边值问题数值算法(打靶法,有限差分法)”实验报告(内含matlab程序)
微分方程数值解法实验报告

微分方程数值解法实验报告2篇微分方程数值解法实验报告(一)在实际科学与工程问题中,我们经常会遇到微分方程的求解。
然而,许多微分方程往往没有解析解,这就需要我们利用数值方法来获得近似解。
本篇实验报告将介绍两种常见的微分方程数值解法:欧拉方法和改进的欧拉方法。
一、欧拉方法欧拉方法是最简单的微分方程数值解法之一。
其基本原理为离散化微分方程,将微分方程中的导数用差商代替。
设要求解的微分方程为dy/dx = f(x, y),步长为h,则可用以下公式进行递推计算:y_{n+1} = y_n +hf(x_n, y_n)二、算法实现为了对欧拉方法进行数值实验,我们以一阶线性常微分方程为例:dy/dx = x - y, y(0) = 1步骤如下:(1)选择合适的步长h和求解区间[a, b],这里我们取h=0.1,[a, b] = [0, 1];(2)初始化y_0 = 1;(3)利用欧拉方法递推计算y_{n+1} = y_n + 0.1(x_n - y_n);(4)重复步骤(3),直到x_n = 1。
三、实验结果与讨论我们通过上述步骤得到了在[0, 1]上的近似解y(x)。
下图展示了欧拉方法求解的结果。
从图中可以看出,欧拉方法得到的近似解与精确解有一定的偏差。
这是因为欧拉方法只是通过递推计算得到的近似解,并没有考虑到更高阶的误差。
所以在需要高精度解时,欧拉方法并不理想。
四、改进的欧拉方法针对欧拉方法的不足,我们可以考虑使用改进的欧拉方法(也称为改进的欧拉-柯西方法)。
它是通过利用前后两个步长欧拉方法得到的结果作为差商的中间项,从而提高了求解精度。
一阶线性常微分方程的改进欧拉方法可以表示为:y_{n+1} = y_n + h(f(x_n, y_n) + f(x_{n+1}, y_n + hf(x_n,y_n)))/2五、算法实现与结果展示将改进的欧拉方法应用于前述的一阶线性常微分方程,我们同样选择h=0.1,[a, b] = [0, 1]。
微分方程数值解实验报告

微分方程数值解实验报告实验目的:掌握微分方程数值解的基本方法,能够利用计算机编程求解微分方程。
实验原理:微分方程是自然科学与工程技术中常见的数学模型,它描述了变量之间的关系及其随时间、空间的变化规律。
解微分方程是研究和应用微分方程的基础,但有很多微分方程无法找到解析解,只能通过数值方法进行求解。
本实验采用欧拉方法和改进的欧拉方法求解微分方程的初值问题:$$\begin{cases}\frac{dy}{dt}=f(t,y)\\y(t_0)=y_0\end{cases}$$其中,$f(t,y)$是给定的函数,$y(t_0)=y_0$是已知的初值条件。
欧拉方法是最基本的数值解法,其步骤如下:1.给定$t_0$和$y_0$2.计算$t_{i+1}=t_i+h$,其中$h$是步长3. 计算$y_{i+1}=y_i+hf(t_i,y_i)$4.重复步骤2、3直到达到终止条件改进的欧拉方法是对欧拉方法进行改进,通过利用函数$y(t)$在$t+\frac{1}{2}h$处的斜率来更准确地估计$y_{i+1}$,其步骤如下:1.给定$t_0$和$y_0$2.计算$t_{i+1}=t_i+h$,其中$h$是步长3. 计算$y_*=y_i+\frac{1}{2}hf(t_i,y_i)$4. 计算$y_{i+1}=y_i+hf(t_i+\frac{1}{2}h,y_*)$5.重复步骤2、3、4直到达到终止条件实验步骤:1.编写程序实现欧拉方法和改进的欧拉方法2.给定微分方程和初值条件3.设置步长和终止条件4.利用欧拉方法和改进的欧拉方法求解微分方程5.比较不同步长下的数值解与解析解的误差6.绘制误差-步长曲线,分析数值解的精度和收敛性实验结果:以一阶常微分方程$y'=3ty+t$为例,给定初值$y(0)=1$,取步长$h=0.1$进行数值求解。
利用欧拉方法求解微分方程得到的数值解如下:\begin{array}{cccc}t & y_{\text{exact}} & y_{\text{Euler}} & \text{误差} \\ \hline0.0&1.000&1.000&0.000\\0.1&1.035&1.030&0.005\\0.2&1.104&1.108&0.004\\0.3&1.212&1.217&0.005\\0.4&1.360&1.364&0.004\\0.5&1.554&1.559&0.005\\0.6&1.805&1.810&0.005\\0.7&2.131&2.136&0.005\\0.8&2.554&2.560&0.006\\0.9&3.102&3.107&0.006\\1.0&3.807&3.812&0.005\\\end{array}利用改进的欧拉方法求解微分方程得到的数值解如下:\begin{array}{cccc}t & y_{\text{exact}} & y_{\text{Improved Euler}} & \text{误差} \\\hline0.0&1.000&1.000&0.000\\0.1&1.035&1.035&0.000\\0.2&1.104&1.103&0.001\\0.3&1.212&1.211&0.001\\0.4&1.360&1.358&0.002\\0.5&1.554&1.552&0.002\\0.6&1.805&1.802&0.003\\0.7&2.131&2.126&0.005\\0.8&2.554&2.545&0.009\\0.9&3.102&3.086&0.015\\1.0&3.807&3.774&0.032\\\end{array}误差-步长曲线如下:实验结论:通过对比欧拉方法和改进的欧拉方法的数值解与解析解的误差,可以发现改进的欧拉方法具有更高的精度和收敛性。
微分方程数值方法实验报告

微分方程数值方法实验报告微分方程数值方法实验报告一、实验目的1、了解Euler法及梯形法的基本原理,能用其解决常微分方程初值问题,并把计算结果用图形表示出来。
2、理解4阶RK法基本计算步骤,能编程实现算法并解决相关常微分方程初值问题。
3、了解MATLAB主要功能和基本特征,熟悉MATLAB操作环境。
掌握MATLAB常用函数的使用以及图形处理。
二、实验题目对于初值问题u’=u,u(0)=1,在区间[0,1]上,用Euler法,梯形法及RK方法进行计算,取步长h=0.1,0.2,0.5,试比较(1)用同样步长,三种方法中哪一个精度最好;(2)对同一种方法一不同步长进行计算,哪一个结果最好。
三、实验内容1、步长为h=0.1时,用三种方法计算题目1)、MATLAB程序Euler法:>> a=0;b=1;h=0.1;N=(b-a)/h;y=zeros(N+1,1);y(1)=1;x=a:h:b;>> for i=2:N+1y(i)=y(i-1)+h*y(i-1);end求得:y = (1 1.1 1.21 1.331 1.4641 1.6105 1.7716 1.9487 2.1436 2.3579 2.5937)’梯形法:>> z=zeros(N+1,1);>> z(1)=1;>> for i=2:N+1v1=z(i-1);t=z(i-1)+h*v1;v2=t;z(i)=z(i-1)+h/2*(v1+v2);end1求得:z = (1 1.105 1.2205 1.3476 1.4873 1.641 1.8101 1.99622.2008 2.4258 2.6734)’RK法:>> w=zeros(N+1,1);>> w(1)=1;>> for i=2:N+1K1=w(i-1);K2=w(i-1)+K1*h/2;K3=w(i-1)+K2*h/2;K4=w(i-1)+K3*h;w(i)=w(i-1)+h*(K1+2*K2+2*K3+K4)/6;end求得:w =(1 1.1052 1.2214 1.3499 1.4918 1.6487 1.8221 2.01382.2255 2.4596 2.7183)’>> plot(x,y)>> hold on>> plot(x,z,':')>> plot(x,w,'--')>> plot(x,exp(x),'*')>> title('相同步长下三种方法与准确解的对比')>> legend('Euler法','梯形法','四阶RK法','准确解') 2)、图形对比相同步长下三种方法与准确解的对比2.82.62.42.221.81.6Euler法1.4梯形法四阶RK法1.2准确解1 00.10.20.30.40.50.60.70.80.9123)、结果分析由图得出三种方法中四阶RK法经确度最高,梯形法次之,Euler法精确度最差。
数学实验“微分方程组边值问题数值算法(打靶法,有限差分法)”实验报告(内含matlab程序)

西京学数学软件实验任务书课程名称数学软件实验班级数0901学号0912020107姓名李亚强微分方程组边值问题数值算法(打靶法,有限差分法)实验课题熟悉微分方程组边值问题数值算法(打靶法,有限差实验目的分法)运用Matlab/C/C++/Java/Maple/Mathematica等其中实验要求一种语言完成微分方程组边值问题数值算法(打靶法,有限差分法)实验内容成绩教师实验二十七实验报告1、实验名称:微分方程组边值问题数值算法(打靶法,有限差分法)。
2、实验目的:进一步熟悉微分方程组边值问题数值算法(打靶法,有限差分法)。
3、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言完成程序设计。
4、实验原理:1.打靶法:对于线性边值问题(1)⎩⎨⎧==∈=+'+''βα)(,)(],[)()()(b y a y b a x x f y x q y x p y 假设是一个微分算子使:L ()()Ly y p x y q x y '''=++则可得到两个微分方程:,,)(1x f Ly =α=)(1a y 0)(1='a y ,, (2)⇔)()()(111x f y x q y x p y =+'+''α=)(1a y 0)(1='a y ,,02=Ly 0)(2=a y 1)(2='a y ,, (3)⇔0)()(222=+'+''y x q y x p y 0)(2=a y 1)(2='a y 方程(2),(3)是两个二阶初值问题.假设是问题1y(2)的解,是问题(3)的解,且,则线性边值问2y 2()0y b ≠题(1)的解为: 。
1122()()()()()y b y x y x y x y b β-=+2.有限差分法:基本思想是把连续的定解区域用有限个离散点构成的网格来代替,这些离散点称作网格的节点;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似, 积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组 , 解此方程组就可以得到原问题在离散点上的近似解。
微分方程数值解实验报告

微分方程数值解实验报告微分方程数值解实验报告一、引言微分方程是数学中一类重要的方程,广泛应用于各个科学领域。
在实际问题中,往往难以得到微分方程的解析解,因此需要借助数值方法来求解。
本实验旨在通过数值解法,探索微分方程的数值解及其应用。
二、数值解法介绍常用的微分方程数值解法有欧拉法、改进欧拉法、四阶龙格-库塔法等。
在本实验中,我们将采用改进欧拉法进行数值解的求取。
改进欧拉法是一种一阶的显式迭代法,其基本思想是将微分方程的导数用差商来近似表示,并通过迭代逼近真实解。
具体迭代公式如下:\[y_{n+1} = y_n + h \cdot f(x_n + \frac{h}{2}, y_n + \frac{h}{2} \cdot f(x_n, y_n))\]其中,\(y_n\)表示第n步的近似解,\(h\)表示步长,\(f(x_n, y_n)\)表示微分方程的导数。
三、实验步骤1. 确定微分方程及初始条件在本实验中,我们选择经典的一阶常微分方程:\[y' = -2xy\]并给定初始条件\(y(0) = 1\)。
2. 设置步长和迭代次数为了得到较为准确的数值解,我们需要合理选择步长和迭代次数。
在本实验中,我们将步长设置为0.1,迭代次数为10。
3. 迭代计算数值解根据改进欧拉法的迭代公式,我们可以通过编写计算程序来求解微分方程的数值解。
具体计算过程如下:- 初始化:设定初始条件\(y_0 = 1\),并给定步长\(h = 0.1\)。
- 迭代计算:使用改进欧拉法的迭代公式,通过循环计算得到\(y_1, y_2, ...,y_{10}\)。
- 输出结果:将计算得到的数值解输出,并进行可视化展示。
四、实验结果与分析通过以上步骤,我们得到了微分方程的数值解\(y_1, y_2, ..., y_{10}\)。
将这些数值解进行可视化展示,可以更直观地观察到解的变化趋势。
根据实验结果,我们可以发现随着迭代次数的增加,数值解逐渐逼近了真实解。
打靶法(含Matlab程序)

西京学数学软件实验任务书动方向控制减速的推力,主要的控制量只有一个减速推力,减速还会消耗燃料让登月器的质量减小。
所以在极坐标下系统的状态就是x‘=[质量m,角度theta,高度r,角速度omega,径速度v]这五个量,输入就是减速力F。
先列微分方程,dx/dt=f(x)+B*F,其中x是5*1的列向量,质量dm/dt=-F/2940,剩下几个翻下极坐标的手册。
把这个动力学模型放到matlab里就能求解了,微分方程数值解用ode45。
第一问F=0,让你求椭圆轨道非常容易。
注意附件1里说15公里的时候速度是1.7km/s。
算完以后验证一下对不对,对的话就是他了,不对的话说明这个椭圆轨道有进动,到时再说。
(2) 算出轨道就能计算减速力了。
这时候你随便给个常数减速力到方程里飞船八成都能降落,但不是最优解。
想想整个过程,开始降落之前飞船总机械能就那么多,你需要对飞船做负功让机械能减到0。
题目里写发动机喷出翔的相对速度是一定的,直觉告诉我飞船速度快的时候多喷一些速度慢的时候少喷一些,可以提高做负功的效率。
但是多喷也不能超过上限7500N,所以这就是一个带约束优化问题,matlab里边有专用的优化函数,用fmincon就好。
找出最优解以后把过程画出来,看看F可不可以是那5个状态量的线性组合,如果是的话就非常happy,不是的话再说。
三四阶段你可以扯点图像识别,什么二维复利叶分解找平坦区域,怎么一边下降一边根据自身状态调整路径之类的。
五六阶段还真不知道说什么。
一二阶段肯定是重点啦(3) 误差分析其实还挺难的。
可能的误差来源是地球的引力,月亮绕地球向心加速度,太阳的引力(可能会很小),对自身速度、角度的测量误差(比如你测出自身当前速度100m/s但实际上是105m/s),控制的时候F大小以及角度的误差(比如你想朝正前方向喷2000N但实际上偏了2度而且F=2010N之类)。
上一问已经求出了最优控制策略和飞船路线,把这些扰动加进去以后算出新的路线减掉理想路线求偏差,然后随便用个卡尔曼滤波器把误差给校正All for Joy2014/9/13 11:14:38老师的思路,求大神解答给我一份呀实验二十七实验报告一、实验名称:微分方程组边值问题数值算法(打靶法,有限差分法)。
打靶法(含Matlab程序)

西京学数学软件实验任务书动方向控制减速的推力,主要的控制量只有一个减速推力,减速还会消耗燃料让登月器的质量减小。
所以在极坐标下系统的状态就是x‘=[质量m,角度theta,高度r,角速度omega,径速度v]这五个量,输入就是减速力F。
先列微分方程,dx/dt=f(x)+B*F,其中x是5*1的列向量,质量dm/dt=-F/2940,剩下几个翻下极坐标的手册。
把这个动力学模型放到matlab里就能求解了,微分方程数值解用ode45。
第一问F=0,让你求椭圆轨道非常容易。
注意附件1里说15公里的时候速度是s。
算完以后验证一下对不对,对的话就是他了,不对的话说明这个椭圆轨道有进动,到时再说。
(2) 算出轨道就能计算减速力了。
这时候你随便给个常数减速力到方程里飞船八成都能降落,但不是最优解。
想想整个过程,开始降落之前飞船总机械能就那么多,你需要对飞船做负功让机械能减到0。
题目里写发动机喷出翔的相对速度是一定的,直觉告诉我飞船速度快的时候多喷一些速度慢的时候少喷一些,可以提高做负功的效率。
但是多喷也不能超过上限7500N,所以这就是一个带约束优化问题,matlab里边有专用的优化函数,用fmincon就好。
找出最优解以后把过程画出来,看看F可不可以是那5个状态量的线性组合,如果是的话就非常happy,不是的话再说。
三四阶段你可以扯点图像识别,什么二维复利叶分解找平坦区域,怎么一边下降一边根据自身状态调整路径之类的。
五六阶段还真不知道说什么。
一二阶段肯定是重点啦(3) 误差分析其实还挺难的。
可能的误差来源是地球的引力,月亮绕地球向心加速度,太阳的引力(可能会很小),对自身速度、角度的测量误差(比如你测出自身当前速度100m/s但实际上是105m/s),控制的时候F大小以及角度的误差(比如你想朝正前方向喷2000N但实际上偏了2度而且F=2010N之类)。
上一问已经求出了最优控制策略和飞船路线,把这些扰动加进去以后算出新的路线减掉理想路线求偏差,然后随便用个卡尔曼滤波器把误差给校正All for Joy2014/9/13 11:14:38老师的思路,求大神解答给我一份呀实验二十七实验报告实验名称:微分方程组边值问题数值算法(打靶法,有限差分法)。
(完整版)二阶常微分方程边值问题的数值解法毕业论文

二阶常微分方程边值问题的数值解法摘要求解微分方程数值解的方法是多种多样的,它本身已形成一个独立的研究方向,其要点是对微分方程定解问题进行离散化.本文以研究二阶常微分方程边值问题的数值解法为目标,综合所学相关知识和二阶常微分方程的相关理论,通过对此类方程的数值解法的研究,系统的复习并进一步加深对二阶常微分方成的数值解法的理解,为下一步更加深入的学习和研究奠定基础.对于二阶常微分方程的边值问题,我们总结了两种常用的数值方法:打靶法和有限差分法.在本文中我们主要探讨关于有限差分法的数值解法.构造差分格式主要有两种途径:基于数值积分的构造方法和基于Taylor展开的构造方法.后一种更为灵活,它在构造差分格式的同时还可以得到关于截断误差的估计.在本文中对差分方法列出了详细的计算步骤和Matlab程序代码,通过具体的算例对这种方法的优缺点进行了细致的比较.在第一章中,本文将系统地介绍二阶常微分方程和差分法的一些背景材料.在第二章中,本文将通过Taylor展开分别求得二阶常微分方程边值问题数值解的差分格式.在第三章中,在第二章的基础上利用Matlab求解具体算例,并进行误差分析.关键词:常微分方程,边值问题,差分法,Taylor展开,数值解The Numerical Solutions ofSecond-Order Ordinary Differential Equations with the Boundary Value ProblemsABSTRACTThe numerical solutions for solving differential equations are various. It formed an independent research branch. The key point is the discretization of the definite solution problems of differential equations. The goal of this paper is the numerical methods for solving second-order ordinary differential equations with the boundary value problems. This paper introduces the mathematics knowledge with the theory of finite difference. Through solving the problems, reviewing what have been learned systematically and understanding the ideas and methods of the finite difference method in a deeper layer, we can establish a foundation for the future learning.For the second-order ordinary differential equations with the boundary value problems, we review two kinds of numerical methods commonly used for linear boundary value problems, i.e. shooting method and finite difference method. There are mainly two ways to create these finite difference methods: i.e. Taylor series expansion method and Numerical Integration. The later one is more flexible, because at the same time it can get the estimates of the truncation errors. We give the exact calculating steps and Matlab codes. Moreover, we compare the advantages and disadvantages in detail of these two methods through a specific numerical example. In the first chapter, we will introduce some backgrounds of the ordinary differential equations and the difference method. In the second chapter, we will obtain difference schemes of the numerical solutions of the Second-Order ordinary differential equations with the boundary value problems through the Taylor expansion. In the third chapter, we using Matlab tosolve the specific examples on the basis of the second chapter, and analyzing the errors.KEY WORDS: Ordinary Differential Equations, Boundary Value Problems, Finite Difference Method, Taylor Expansion, Numerical Solution毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西京学数学软件实验任务书
实验二十七实验报告
一、实验名称:微分方程组边值问题数值算法(打靶法,有限差分法)。
二、实验目的:进一步熟悉微分方程组边值问题数值算法(打靶法,有限差分法)。
三、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言完成程序设计。
四、实验原理:
1.打靶法:
对于线性边值问题
⎩⎨⎧==∈=+'+''βα)(,)(],[)()()(b y a y b a x x f y x q y x p y (1)
假设L 是一个微分算子使:()()Ly y p x y q x y '''=++
则可得到两个微分方程:
)(1x f Ly =,α=)(1a y ,0)(1='a y
⇔)()()(111
x f y x q y x p y =+'+'',α=)(1a y ,0)(1='a y (2) 02=Ly ,0)(2=a y ,1)(2
='a y ⇔0)()(222
=+'+''y x q y x p y ,0)(2=a y ,1)(2='a y (3) 方程(2),(3)是两个二阶初值问题.假设1y 是问题(2)
的解,2y 是问题(3)的解,且2()0y b ≠,则线性边值问题(1)的解为:1122()
()()()()y b y x y x y x y b β-=+ 。
2.有限差分法:
基本思想是把连续的定解区域用有限个离散点构成的网格来代替,这些离散点称作网格的节点;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似, 积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组 , 解此方程组就可以得到原问题在离散点上的近似解。
然后再利用插值方法便可以从离散解得到定解问题在整个区域上的近似解。
五、实验内容:
%线性打靶法
function
[k,X,Y,wucha,P]=xxdb(dydx1,dydx2,a,b,alpha,beta,h) n=fix((b-a)/h); X=zeros(n+1,1); CT1=[alpha,0];
Y=zeros(n+1,length(CT1)); Y1=zeros(n+1,length(CT1)); Y2=zeros(n+1,length(CT1));
X=a:h:b;
Y1(1,:)= CT1;
CT2=[0,1];Y2(1,:)= CT2;
for k=1:n
k1=feval(dydx1,X(k),Y1(k,:))
x2=X(k)+h/2;y2=Y1(k,:)'+k1*h/2;
k2=feval(dydx1,x2,y2);
k3=feval(dydx1,x2,Y1(k,:)'+k2*h/2);
k4=feval(dydx1, X(k)+h,Y1(k,:)'+k3*h);
Y1(k+1,:)=Y1(k,:)+h*(k1'+2*k2'+2*k3'+k4')/6,k=k+1;
end
u=Y1(:,1)
for k=1:n
k1=feval(dydx2,X(k),Y2(k,:))
x2=X(k)+h/2;y2=Y2(k,:)'+k1*h/2;
k2=feval(dydx2,x2,y2);
k3=feval(dydx2,x2,Y2(k,:)'+k2*h/2);
k4=feval(dydx2, X(k)+h,Y2(k,:)'+k3*h);
Y2(k+1,:)=Y2(k,:)+h*(k1'+2*k2'+2*k3'+k4')/6,k=k+1;
end
v=Y2(:,1)
Y=u+(beta-u(n+1))*v/v(n+1)
for k=2:n+1
wucha(k)=norm(Y(k)-Y(k-1)); k=k+1;
end
X=X(1:n+1);Y=Y(1:n+1,:);k=1:n+1;wucha=wucha(1:k,:);
P=[k',X',Y,wucha'];
plot(X,Y(:,1),'ro',X,Y1(:,1),'g*',X,Y2(:,1),'mp')
xlabel('轴\it x'); ylabel('轴\it y')
legend('是边值问题的数值解y(x)的曲线','是初值问题1的数值解u(x)的曲线', '是初值问题2的数值解v(x)的曲线')
title('用线性打靶法求线性边值问题的数值解的图形')
%有限差分法
function
[k,A,B1,X,Y,y,wucha,p]=yxcf(q1,q2,q3,a,b,alpha,beta,h) n=fix((b-a)/h); X=zeros(n+1,1);
Y=zeros(n+1,1); A1=zeros(n,n);
A2=zeros(n,n); A3=zeros(n,n); A=zeros(n,n);B= zeros(n,1);
for k=1:n
X=a:h:b;
k1(k)=feval(q1,X(k)); A1(k+1,k)=1+h*k1(k)/2;
k2(k)=feval(q2,X(k));
A2(k,k)=-2-(h.^2)*k2(k);
A3(k,k+1)= 1-h*k1(k)/2; k3(k)=feval(q3,X(k));
end
for k=2:n
B(k,1)=(h.^2)*k3(k);
end
B(1,1)=(h.^2)*k3(1)-(1+h*k1(1)/2)*alpha;
B(n-1,1)=(h.^2)*k3(n-1)-(1+h*k1(n-1)/2)*beta;
A=A1(1:n-1,1:n-1)+A2(1:n-1,1:n-1)+A3(1:n-1,1:n-1);
B1=B(1:n-1,1);
Y=A\B1;Y1=Y'; y=[alpha;Y;beta];
for k=2:n+1
wucha(k)=norm(y(k)-y(k-1)); k=k+1;
end
X=X(1:n+1); y=y(1:n+1,1); k=1:n+1;
wucha=wucha(1:k,:); plot(X,y(:,1),'mp')
xlabel('轴\it x'); ylabel('轴\it y'),legend('是边值问题的数值解y(x)的曲线')
title('用有限差分法求线性边值问题的数值解的图形'),
p=[k',X',y,wucha'];。