数值微分计算方法实验
数值分析常微分方程求解实验
实验报告
一、实验目的
解初值问题各种方法比较。
二、实验题目
给定初值问题
⎪⎩⎪⎨⎧=≤<+=,
0)1(,21y x xe x y dx dy x , 其精确解为)(e e x y x -=,按
(1)改进欧拉法,步长01.0,1.0==h h ;
(2)四阶标准龙格-库塔法,步长1.0=h ;
求在节点)10,...,2,1(1.01=+=k k x k 处的数值解及其误差,比较各个方法的优缺点。
三、实验原理
改进欧拉法程序,四阶标准龙格-库塔法程序。
四、实验内容及结果
五、实验结果分析
实验2中改进欧拉法和四阶标准龙格-库塔法的比较:
结果的第一个ans是x的值与对应的y的值,第二个ans是精确解x的对应值y,第三个ans 是与精确值的误差百分数。
通过误差百分数的比较,可以明显的发现改进欧拉法比四阶标准龙格-库塔法更精确。
数值计算方法实验报告
数值计算方法实验报告一、实验介绍本次实验是关于数值计算方法的实验,旨在通过计算机模拟的方法,实现对于数值计算方法的掌握。
本次实验主要涉及到的内容包括数值微积分、线性方程组的求解、插值与拟合、常微分方程的数值解等。
二、实验内容1. 数值微积分数值微积分是通过计算机模拟的方法,实现对于微积分中的积分运算的近似求解。
本次实验中,我们将会使用梯形公式和辛普森公式对于一定区间上的函数进行积分求解,并比较不同公式的计算误差。
2. 线性方程组的求解线性方程组求解是数值计算领域中的重要内容。
本次实验中,我们将会使用高斯消元法、LU分解法等方法对于给定的线性方程组进行求解,并通过比较不同方法的计算效率和精度,进一步了解不同方法的优缺点。
3. 插值与拟合插值与拟合是数值计算中的另一个重要内容。
本次实验中,我们将会使用拉格朗日插值法和牛顿插值法对于给定的数据进行插值求解,并使用最小二乘法对于给定的函数进行拟合求解。
4. 常微分方程的数值解常微分方程的数值解是数值计算中的难点之一。
本次实验中,我们将会使用欧拉法和龙格-库塔法等方法对于给定的常微分方程进行数值解的求解,并比较不同方法的计算精度和效率。
三、实验结果通过本次实验,我们进一步加深了对于数值计算方法的理解和掌握。
在数值微积分方面,我们发现梯形公式和辛普森公式都能够有效地求解积分,但是辛普森公式的计算精度更高。
在线性方程组求解方面,我们发现LU分解法相对于高斯消元法具有更高的计算效率和更好的数值精度。
在插值与拟合方面,我们发现拉格朗日插值法和牛顿插值法都能够有效地进行插值求解,而最小二乘法则可以更好地进行函数拟合求解。
在常微分方程的数值解方面,我们发现欧拉法和龙格-库塔法都能够有效地进行数值解的求解,但是龙格-库塔法的数值精度更高。
四、实验总结本次实验通过对于数值计算方法的模拟实现,进一步加深了我们对于数值计算方法的理解和掌握。
在实验过程中,我们了解了数值微积分、线性方程组的求解、插值与拟合、常微分方程的数值解等多个方面的内容,在实践中进一步明确了不同方法的特点和优缺点,并可以通过比较不同方法的计算效率和数值精度来选择合适的数值计算方法。
数值计算实验报告-欧拉法常微分方程
数学与计算科学学院实验报告实验项目名称欧拉法解常微分方程所属课程名称数值计算实验类型验证型实验日期2012-6- 4班级隧道1002班学号201008020233姓名李彬彬成绩一、实验概述:【实验目的】 通过运用相关的数值计算软件,解决最基本的常微分方程的数值计算,并且能够熟练的运用这种方法。
【实验原理】 欧拉法1.对常微分方程初始问题(9.2))((9.1)),(00⎪⎩⎪⎨⎧==y x y y x f dxdy用数值方法求解时,我们总是认为(9.1)、(9.2)的解存在且唯一。
欧拉法是解初值问题的最简单的数值方法。
从(9.2)式由于y (x 0) = y 0已给定,因而可以算出),()('000y x f x y =设x 1 = h 充分小,则近似地有:),()(')()(00001y x f x y hx y x y =≈-(9.3)记 ,n ,,i x y y i i 10 )(== 从而我们可以取),(0001y x hf y y ==作为y (x 1)的近似值。
利用y 1及f (x 1, y 1)又可以算出y (x 2)的近似值:),(1112y x hf y y +=一般地,在任意点x n +1 = (n + 1)h 处y (x )的近似值由下式给出),(1n n n n y x hf y y +=+(9.4)这就是欧拉法的计算公式,h 称为步长。
不难看出,近似解的误差首先是由差商近似代替微商(见(9.3))引起的,这种近似代替所产生的误差称为截断误差。
还有一种误差称为舍入误差,这种误差是由于利用(9.4)进行计算时数值舍入引起的。
【实验环境】Windows XP 环境下运行 NumericalAnalyse 软件二、实验内容:【实验方案】在区间[0,1]上以h=0.1为步长,分别用欧拉法与预估-校正法求初值问题y’=y-2x/y且 y|x=0 =1的数值解。
将上述方程输入到软件NumericalAnalyse中步骤如图选择常微分方程的数值解法。
数值分析第四章外推法计算数值微分MATLAB计算实验报告
数值分析第四章外推法计算数值微分MATLAB计算实验报告数值分析MATLAB计算实验报告姓名班级学号⼀、实验名称⽤MATLAB编程实现数值微分的外推法计算。
⼆、实验⽬的1.掌握数值微分和定义和外推法的计算过程;2.了解数值微分外推法的计算⽅法并且编写出与其算法对应的MATLAB程序代码;3.体会利⽤MATLAB软件进⾏数值计算。
三、实验内容⽤外推法计算f(x)=x2e?x在x=0.5的导数。
四、算法描述1.命名函数。
2.如果输⼊未知数少于四个,默认精度10^-33.描述T表矩阵坐标4.依次赋值计算 T表第⼀列5.根据数值微分计算公式求出T表矩阵的值6.若达到精度则运算结束,若未达到循环计算7.输出T表,得出的值就是导数值五、实验结果六、实验结果分析此实验通过MATLAB实现外推法数值微分计算,得到相应的数据,⽅便对数据进⾏分析。
从结果可以看出,当步长h=0.025时⽤中点微分公式只有3位有效数字,外推⼀次达到5位有效数字,外推两次达到9位有效数字。
七、附录(程序)function g=waituifa(fname,x,h,e)if nargin<4,e=1e-3;end;i=1;j=1;G(1,1)=(feval(fname,x+h)-feval(fname,x-h))/(2*h);G(i+1,1)=(feval(fname,x+h/2)-feval(fname,x-h/2))/h;G(i+1,j+1)=(4^j*G(i+1,j)-G(i,j))/(4^j-1);while abs(G(i+1,i+1)-G(i+1,i))>ei=i+1;G(i+1,1)=(feval(fname,x+h/2^i)-feval(fname,x-h/2^i))/(2*h/2^i); for j=1:iG(i+1,j+1)=((4^j)*G(i+1,j)-G(i,j))/(4^j-1);endendGg=G(i+1,i+1);。
微分方程数值解法实验报告
微分方程数值解法实验报告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}误差-步长曲线如下:实验结论:通过对比欧拉方法和改进的欧拉方法的数值解与解析解的误差,可以发现改进的欧拉方法具有更高的精度和收敛性。
实验09 数值微积分与方程数值解(第6章)
实验09 数值微积分与方程数值求解(第6章 MATLAB 数值计算)一、实验目的二、实验内容1. 求函数在指定点的数值导数232()123,1,2,3026x x x f x x xx x==2. 用数值方法求定积分(1) 210I π=⎰的近似值。
程序及运行结果:《数学软件》课内实验王平(2) 2221I dx x π=+⎰程序及运行结果:3. 分别用3种不同的数值方法解线性方程组6525494133422139211x y z u x y z u x y z u x y u +-+=-⎧⎪-+-=⎪⎨++-=⎪⎪-+=⎩ 程序及运行结果:4. 求非齐次线性方程组的通解1234123412342736352249472x x x x x x x x x x x x +++=⎧⎪+++=⎨⎪+++=⎩5. 求代数方程的数值解(1) 3x +sin x -e x =0在x 0=1.5附近的根。
程序及运行结果(提示:要用教材中的函数程序line_solution ):(2) 在给定的初值x 0=1,y 0=1,z 0=1下,求方程组的数值解。
23sin ln 70321050y x y z x z x y z ⎧++-=⎪+-+=⎨⎪++-=⎩6. 求函数在指定区间的极值(1) 3cos log ()xx x x xf x e ++=在(0,1)内的最小值。
(2) 33212112122(,)2410f x x x x x x x x =+-+在[0,0]附近的最小值点和最小值。
7. 求微分方程的数值解,并绘制解的曲线2250(0)0'(0)0xd y dyy dx dx y y ⎧-+=⎪⎪⎪=⎨⎪=⎪⎪⎩程序及运行结果(注意:参数中不能取0,用足够小的正数代替):令y 2=y,y 1=y ',将二阶方程转化为一阶方程组:'112'211251(0)0,(0)0y y y x x y y y y ⎧=-⎪⎪=⎨⎪==⎪⎩8. 求微分方程组的数值解,并绘制解的曲线123213312123'''0.51(0)0,(0)1,(0)1y y y y y y y y y y y y =⎧⎪=-⎪⎨=-⎪⎪===⎩程序及运行结果:三、实验提示四、教程:第6章 MATLAB 数值计算(2/2)6.2 数值微积分 p155 6.2.1 数值微分1. 数值差分与差商对任意函数f(x),假设h>0。
数值微分的计算方法
数值微分的计算方法内容摘要 求解数值微分问题,就是通过测量函数在一些离散点上的值,求得函数的近似导数。
本文就所学知识,归纳性地介绍了几种常用的数值微分计算方法。
并举例说明计算,实验结果表明了方法的有效性。
关键词 数值微分 Taylor 展开式 Lagrange 插值 三对角矩阵引言:数值微分即根据函数在一些离散点的函数值,推算它在某点的导数或高阶导数的近似值的方法。
常见的可以用一个能够近似代替该函数的较简单的可微函数(如多项式或样条函数等)的相应导数作为能求导数的近似值,由此也可导出多点数值微分计算公式。
当函数可微性不太好时,利用样条插值进行数值微分要比多项式插值更适宜。
1.Taylor 展开式方法理论基础:Taylor 展开式()()()()()()()()()000000022!!nnx x x x f x f x x x f x f x f x n --'''=+-++++我们借助Taylor 展开式,可以构造函数f x 在点0x x 的一阶导数和二阶导数的数值微分公式。
取步长0h则),()(2)()()(0011''20'00h x x f h x hf x f h x f +∈++=+ξξ (1)所以),()(2)()()(0011''000'h x x f h h x f h x f x f +∈--+=ξξ (2)同理),()(2)()()(0022''20'00x h x f h x hf x f h x f -∈+-=-ξξ (3) ),()(2)()()(0022''000'x h x f h h h x f x f x f -∈+--=ξξ (4)式(2)和式(4)是计算'0f x 的数值微分公式,其截断误差为O h ,为提高精度,将Taylor 展开式多写几项),()(24)(6)(2)()()(0011)4(40'''30''20'00h x x f h x f h x f h x hf x f h x f +∈++++=+ξξ ),()(24)(6)(2)()()(0022)4(40'''30''20'00x h x f h x f h x f h x hf x f h x f -∈+-+-=-ξξ两式相减得)()(62)()()(40'''2000'h O x f h h h x f h x f x f +---+= (5)上式为计算)(0'x f 的微分公式,其截断误差为O(h 2),比式(2)和(4)精度高。
计算机图形学 实验 数值微分(DDA)法、中点画线法、Bresenham算法
最终,Bresenham算法也是每个象素,需一个整数算法,其优点是可以用于其他二次曲线。
三、实验内容:
1.DDA画线法:
void DDALine(CDC *pdc,int x0,int x1,int y0,int y1,int color)
{
int a,b,d,d1,d2,x,y;
a=y0-y1,b=x1-x0,d=2*a+b;
d1=2*a,d2=2*(a+b);
x=x0,y=y0;
pdc->SetPixel(x,y,color);
while(x<x1)
{
if(d<0)
{
x++;
y++;
d+=d1;
}
else
{
x++;
d+=d2;
}
pdc->SetPixel(x,y,color);
2.掌握数值微分(DDA)法、中点画线法、Bresenham算法的基本步骤;
二、实验原理:
1.数值微分(DDA)法
已知过端点的直线段L:y=kx+b,直线斜率为
从x的左端点开始,向x右端点步进。步长=1(个象素),计算相应的y坐标y=kx+b;取象素点(x, round(y))作为当前点的坐标。
2.中点画线法
}
}
void CMy2View::On1()
{
// TODO: Add your command handler code here
int x0,x1,y0,y1,color;
微积分的数值计算方法数值微分
将节点处的增长率作 三次样条插值
年份 增长率 1900 0.0283 1901 0.0255 1902 0.0230 1935 0.0082 1936 0.0081 1937 0.0083 1953 0.0172 1954 0.0172 1979 0.0100 1980 0.0100 1981 0.0109 1989 0.0111 1990 0.0113
f ( x 0 ) 21h(3f04f1f2) f ( x n ) 21h(fn24fn13fn)
--------(11)
称(11)式为分段三点公式
实际中下面的公式很有用
f
(
xk
xk1 2
)
1( h
f k 1
fk
)
例: 回到实例(美国人口)
1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5 251.4
E 2(x0)f(3 3 )!()(x0x1)x (0x2)
ห้องสมุดไป่ตู้h2 3
f (3)( )
E 2(x1)f(3 3 )!()(x1x0)x (1x2)
h2 6
f (3)()
E 2(x2)f(3 3 )!()(x2x0)x (2x1)
h2 3
f (3)( )
f ( x0 )
21h(3f04f1f2)
1( h
f1
f0 )
h f (2)( )
常微分方程的数值解法实验报告
常微分方程的数值解法实验报告实验报告:常微分方程的数值解法摘要:常微分方程(ODE)是描述动力学系统中物理量随时间变化的数学方程,广泛应用于自然科学和工程领域。
然而,对于一些复杂的非线性ODE,很难找到解析解。
因此,我们需要数值解法来求解这些方程。
本实验报告将介绍四种常见的常微分方程数值解法,分别是欧拉法、改进的欧拉法、四阶龙格-库塔法和自适应步长的龙格-库塔法,并通过数值实验比较它们的精度和效率。
1.引言在实际问题中,许多物理量的变化规律可以由常微分方程描述。
然而,对于复杂的非线性ODE,很难找到解析解。
因此,为了解决这类问题,我们需要借助数值方法来求解。
2.方法本实验采用四种常见的常微分方程数值解法:欧拉法、改进的欧拉法、四阶龙格-库塔法和自适应步长的龙格-库塔法。
(1)欧拉法是最简单的数值解法,通过将微分方程转化为差分方程,使用离散的步长来近似微分方程。
(2)改进的欧拉法在欧拉法的基础上进行了改进,使用预估-校正的方法来提高精度。
(3)四阶龙格-库塔法是一种经典的数值解法,通过利用不同步长处的斜率来近似微分方程,具有较高的精度。
(4)自适应步长的龙格-库塔法是在四阶龙格-库塔法的基础上改进而来的,根据步长的大小自适应地选择不同的步长,同时保证精度和效率。
3.实验设计为了比较这四种数值解法的精度和效率,我们设计了两个实验。
实验一是求解一阶常微分方程:dy/dx = -2x,初始条件y(0) = 1,解析解为y = 1 - x^2、实验二是求解二阶常微分方程:d^2y/dx^2 + y = 0,初始条件y(0) = 0,dy/dx(0) = 1,解析解为y = sin(x)。
4.结果与分析实验一中,比较四种数值解法在不同步长下的近似解和解析解,计算其误差。
实验结果表明,四阶龙格-库塔法和自适应步长的龙格-库塔法具有较高的精度,而欧拉法和改进的欧拉法的精度较低。
实验二中,我们比较四种数值解法在不同步长下的近似解和解析解,并计算其误差。
函数的数值微分计算
函数的数值微分计算1. 实验描述数值微分根据函数在一些离散点的函数值,推算它在某点的导数或高阶导数的近似值的方法。
通常用差商代替微商,或者用一个能够近似代替该函数的较简单的可微函数(如多项式或样条函数等)的相应导数作为能求导数的近似值。
例如一些常用的数值微分公式(如两点公式、三点公式等)就是在等距步长情形下用插值多项式的导数作为近似值的。
此外,还可以采用待定系数法建立各阶导数的数值微分公式,并且用外推技术来提高所求近似值的精确度。
当函数可微性不太好时,利用样条插值进行数值微分要比多项式插值更适宜。
如果离散点上的数据有不容忽视的随机误差,应该用曲线拟合代替函数插值,然后用拟合曲线的导数作为所求导数的近似值,这种做法可以起到减少随机误差的作用。
数值微分公式还是微分方程数值解法的重要依据。
2. 实验内容计算余弦函数f(x)=cos(x)的数值微分实验要求:1.一阶导数O(h^2), O(h^4)中心差分法的误差分析P252;2.二阶导数O(h^2), O(h^4)中心差分法的误差分析P263;3.对上面4种微分计算其0~π上不同步长h的微分曲线分布;4.在两端点0,π采用对应精度的Lagrange多项式微分P264。
3. 实验结果及分析一阶精度为O(h^2)的中心差分法的误差分析:1.一阶精度为O(h^2)的中心差分:设f∈C3a,b,且x-h,x,x+h∈a,b,则f′x≈f x+ℎ−f x−ℎ2ℎ而且存在数c=c(x)∈a,b,满足f′x=f x+ℎ−f x−ℎ2ℎ+E trunc f,ℎ其中E trunc f,ℎ=−ℎ2f3c=Oℎ2项E trunc f,ℎ称为截断误差。
2.误差分析和步长优化:(1)设函数f满足1中的假设,并利用计算公式f′x0≈y1−y−1则误差分析可通过如下方程进行解释f′x0=y1−y−1+E f,ℎ其中(f(x0-h)=y-1+e-1,f(x0+h)=y1+e1)E f,ℎ=E round f,ℎ+E trunc f,ℎ=e 1−e −12ℎ−ℎ2f 3 c 6这里的E f ,ℎ 为舍入误差和截断误差的和。
微分方程数值解实验报告
微分方程数值解法课程设计报告班级:姓名:学号:成绩:2017年 6月 21 日摘要自然界与工程技术中的很多现象,可以归结为微分方程定解问题。
其中,常微分方程求解是微分方程的重要基础内容。
但是,对于许多的微分方程,往往很难得到甚至不存在精确的解析表达式,这时候,数值解提供了一个很好的解决思路。
,针对于此,本文对常微分方程数值解法进行了简单研究,主要讨论了一些常用的数值解法,如欧拉法、改进的欧拉法、Runge—Kutta方法、Adams法以及椭圆型方程、抛物型方程的有限差分方法等,通过具体的算例,结合MATLAB求解画图,初步给出了一般常微分方程数值解法的求解过程。
同时,通过对各种方法的误差分析,让大家对各种方法的特点和适用范围有一个直观的感受。
关键词:微分方程数值解、MATLAB目录摘要 (2)目录 (3)第一章常微分方程数值解法的基本思想与原理 (4)1.1常微分方程数值解法的基本思路 (4)1.2用matlab编写源程序 (4)1.3常微分方程数值解法应用举例及结果 (5)第二章常系数扩散方程的经典差分格式的基本思想与原理 (6)2.1常系数扩散方程的经典差分格式的基本思路 (6)2.2 用matlab编写源程序 (7)2.3常系数扩散方程的经典差分格式的应用举例及结果 (8)第三章椭圆型方程的五点差分格式的基本思想与原理 (10)3.1椭圆型方程的五点差分格式的基本思路 (10)3.2 用matlab编写源程序 (10)3.3椭圆型方程的五点差分格式的应用举例及结果 (12)第四章总结 (12)参考文献 (12)第一章常微分方程数值解法的基本思想与原理1.1常微分方程数值解法的基本思路常微分方程数值解法(numerical methods forordinary differential equations)计算数学的一个分支.是解常微分方程各类定解问题的数值方法.现有的解析方法只能用于求解一些特殊类型的定解问题,实用上许多很有价值的常微分方程的解不能用初等函数来表示,常常需要求其数值解.所谓数值解,是指在求解区间内一系列离散点处给出真解的近似值.这就促成了数值方法的产生与发展.1.2用matlab编写源程序龙格库塔法:M文件:function dx=Lorenz(t,x)%r=28,sigma=10,b=8/3dx=[-10*(x(1)-x(2));-x(1)*x(3)+28*x(1)-x(2);x(1)*x(2)-8*x(3)/3];运行程序:x0=[1,1,1];[t,y]=ode45('Lorenz',[0,100],x0);subplot(2,1,1) %两行一列的图第一个plot(t,y(:,3))xlabel('time');ylabel('z');%画z-t图像subplot(2,2,3) %两行两列的图第三个plot(y(:,1),y(:,2))xlabel('x');ylabel('y'); %画x-y图像subplot(2,2,4)plot3(y(:,1),y(:,2),y(:,3))xlabel('x');ylabel('y');zlabel('z');%画xyz图像欧拉法:h=0.010;a=16;b=4;c=49.52;x=5;y=10;z=10;Y=[];for i=1:800x1=x+h*a*(y-x);y1=y+h*(c*x-x*z-y);z1=z+h*(x*y-b*z);x=x1;y=y1;z=z1;Y(i,:)=[x y z];endplot3(Y(:,1),Y(:,2),Y(:,3));1.3常微分方程数值解法的应用举例及结果应用举例:⎪⎪⎪⎩⎪⎪⎪⎨⎧-=--=--=)()()()()()()()()())()(()(t bz t y t x dt t dz t z t x t y t rx dt t dy t y t x a dt t dx a=10,b=8/3,0<r<+∞,当1<r<24.74时,Lorenz 方程有两个稳定的不动点c()1(-r b ,)1(-r b ,r-1)和c '(-)1(-r b ,-)1(-r b ,r-1),一个稳定的不动点0=(0,0,0),当r>24.74时,c 和c '都变成不稳定的,此时存在混沌和奇怪吸引子。
【MATLAB】实验五:数值微积分与方程数值求解
实验五 数值微积分与方程数值求解一、实验目的1. 掌握求数值导数和数值积分的方法。
2. 掌握代数方程数值求解的方法。
3. 掌握常微分方程数值求解的方法。
二、实验内容要求:命令手工 ( )输入1. 求函数在指定点的数值导数。
232()123,1,2,3026x x x f x x x x x==2. 用数值方法求定积分。
(1) 210I π=⎰的近似值。
(2) 2220ln(1)1x I dt xπ+=+⎰3. 分别用三种不同的数值方法解线性方程组。
6525494133422139211x y z u x y z u x y z u x y u +-+=-⎧⎪-+-=⎪⎨++-=⎪⎪-+=⎩4. 求非齐次线性方程组的通解。
1234123412342736352249472x x x x x x x x x x x x +++=⎧⎪+++=⎨⎪+++=⎩解:先建立M 函数文件,然后命令窗口中写命令。
121/119/112/115/111/1110/11100010X k k --⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥=++⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦,其中12,k k 为任意常数。
5. 求代数方程的数值解。
(1) 3x +sin x -e x =0在x 0=1.5附近的根。
(2) 在给定的初值x 0=1,y 0=1,z 0=1下,求方程组的数值解。
23sin ln 70321050y x y z x z x y z ⎧++-=⎪+-+=⎨⎪++-=⎩ans =1289/6826. 求函数在指定区间的极值。
(1) 3cos log ()xx x x x f x e ++=在(0,1)内的最小值。
(2) 33212112122(,)2410f x x x x x x x x =+-+在[0,0]附近的最小值点和最小值。
(以下选作题,是微分方程的数值解)7. 求微分方程的数值解。
x 在[1.0e-9,20]2250(0)0'(0)0xd y dy y dx dx y y ⎧-+=⎪⎪⎪=⎨⎪=⎪⎪⎩解:M 文件:运行结果:8. 求微分方程组的数值解,并绘制解的曲线。
matlab数值分析实验报告
matlab数值分析实验报告Matlab数值分析实验报告引言数值分析是一门研究利用计算机进行数值计算和模拟的学科,它在科学计算、工程技术和金融等领域有着广泛的应用。
本次实验报告将介绍在Matlab环境下进行的数值分析实验,包括数值微分、数值积分和线性方程组求解等内容。
一、数值微分数值微分是通过数值方法计算函数的导数,常用的数值微分方法有前向差分、后向差分和中心差分。
在Matlab中,可以使用diff函数来计算函数的导数。
例如,对于函数f(x)=x^2,在Matlab中可以使用如下代码进行数值微分的计算:```matlabsyms x;f = x^2;df = diff(f, x);```二、数值积分数值积分是通过数值方法计算函数的定积分,常用的数值积分方法有梯形法则、辛普森法则和龙贝格积分法。
在Matlab中,可以使用trapz、quad和integral等函数来进行数值积分的计算。
例如,对于函数f(x)=sin(x),可以使用如下代码进行数值积分的计算:```matlabx = linspace(0, pi, 100);y = sin(x);integral_value = trapz(x, y);```三、线性方程组求解线性方程组求解是数值分析中的重要问题,常用的求解方法有高斯消元法和LU 分解法。
在Matlab中,可以使用\操作符来求解线性方程组。
例如,对于线性方程组Ax=b,可以使用如下代码进行求解:```matlabA = [1, 2; 3, 4];b = [5; 6];x = A\b;```四、实验结果与分析在本次实验中,我们分别使用Matlab进行了数值微分、数值积分和线性方程组求解的计算。
通过实验结果可以发现,Matlab提供了丰富的数值计算函数和工具,能够方便地进行数值分析的计算和求解。
数值微分的计算结果与解析解相比较,可以发现数值微分的误差随着步长的减小而减小,但是当步长过小时,数值微分的误差会受到舍入误差的影响。
微分方程的数值计算报告
微分方程的数值计算******1. 实验描述微分方程指含有自变量,自变量的未知函数及其导数的等式, 是常微分方程和偏微分方程的总称。
科学和工程中建立数学模型时经常用到,由于他们通常没有已知的解析解,因而需要求其数值近似解。
求解微分方程的方法有很多,如欧拉方法,修恩方法,泰勒方法,龙格-库塔方法,亚当斯-巴什福斯-莫尔顿方法等等。
2. 实验内容在区间[0,0.95]上,y’=2ty 2,y(0)=1,y(t)=1/(1-t 2),另外y(0.05)=1.0025063,y(0.10)=1.0101010,y(0.15)=1.0230179。
(设h=0.1) 要求:1.用欧拉方法计算。
2.用修恩方法计算。
3.用4次泰勒方法计算;4.用4阶龙格-库塔方法计算。
5.用亚当斯-巴什福斯-莫尔顿方法计算。
6.计算和分析各算法的误差。
3. 实验结果及分析欧拉方法:设[a,b]为求解良态初值问题32',(0)0y t y y =+=,首先将[a,b]划分为M 个等距子区间,并选择网格点k t b kh =+ k=0,1,⋯,M 其中b ah M-= (1) 值hewing 步长。
然后近似求解'(,)y f t y = 在0[,]M t t 上, 00()y t y = (2)设y(t),y ’(t)和y ’’(t)连续,利用泰勒定理将y(t)在0t t =处展开,对每个值t ,存在一个t0和t 自己的值c1,使得()()210000''()()()()'2y c t t y t y t y t t t -=+-+ (3)将000'()(,())y t f t y t =和10h t t =-代入式(3)中,得到y(t1)的表式:()210001()(,())''()2h y t y t hf t y t y c =++ (4)如果步长h 足够小,则可以忽略2次项,得到1000(,)y y hf t y =+(5)这就是欧拉近似。
函数的数值微分实验报告
函数的数值微分计算学号:XX 姓名:XXX1. 实验描述计算余弦函数()cos()f x x =的数值微分实验。
要求:1.一阶导数2()O h ,4()O h 中心差分法的误差分析; 2.二阶导数2()O h , 4()O h 中心差分法的误差分析;3.对上面4种微分计算其0~π上不同步长h 的微分曲线分布;4.在两端点0,π采用对应精度的Lagrange 多项式微分。
2. 实验内容一、实验原理1.一阶导数2()O h ,4()O h 中心差分法的误差分析定理6.1(精度为2()O h 的中心差分公式)设3[,]f C a b ∈,且,,[,]x h x x h a b -+∈,则()()()2f x h f x h f x h+--'≈(1)而且存在数()[,]c c x a b =∈,满足()()()(,)2trunc f x h f x h f x E f h h+--'≈+(2)其中2(3)2()(,)()6trunc h fc E f h O h =-=(3)项(,)E f h 称为截断误差。
定理 6.2(精度为4()O h 的中心差分公式)设5[,]f C a b ∈,且2,,,,2[x h x h x x h x h ab--++∈,则(2)8()8()(2)()12f x h f x h f x h f x h f x h-+++--+-'≈ (4)而且存在数()[,]c c x a b =∈,满足(2)8()8()(2)()(,)12trunc f x h f x h f x h f x h f x E f h h-+++--+-'≈+(5)其中4(5)4()(,)()6trunc h fc E f h O h =-=(6)推论6.1(b) 设函数f 满足定理6.1的假设,且进行数值计算。
如果{}(3)11,,m ax ()a xb e e M fx εε-≤≤≤≤=,则2(,)6M h E f h h ε≤+ (7)式(7)右边最小时的h 值为1/33h M ε⎛⎫= ⎪⎝⎭(8)推论6.2(b) 设函数f 满足定理6.2的假设,且进行数值计算。
实验八 常微分方程初值问题数值解法报告
实验八 常微分方程初值问题数值解法一、基本题科学计算中经常遇到微分方程(组)初值问题,需要利用Euler 法,改进Euler 法,Rung-Kutta 方法求其数值解,诸如以下问题:(1) ()⎪⎩⎪⎨⎧=-='004y xy y x y 20≤<x分别取h=0.1,0.2,0.4时数值解。
初值问题的精确解245x y e -=+。
(2) ()⎩⎨⎧=--='0122y y x y 01≤≤-x用r=3的Adams 显式和预 - 校式求解取步长h=0.1,用四阶标准R-K 方法求值。
(3)()()()100010321331221==-='⎪⎩⎪⎨⎧-='-='='y y y y y y y y y 10≤≤x用改进Euler 法或四阶标准R-K 方法求解取步长0.01,计算(0.05),(0.1y y y 数值解,参考结果 123(0.15)0.9880787,(0.15)0.1493359,(0.15)0.8613125y y y ≈-≈≈。
(4)利用四阶标准R- K 方法求二阶方程初值问题的数值解(I )()()⎩⎨⎧='==+'-''10,00023y y y y y 02.0,10=≤≤h x(II)()()()⎩⎨⎧='==+'--''00,10011.02y y y y y y 1.0,10=≤≤h x(III)()()⎪⎩⎪⎨⎧='=+='00,101y y e y y x 1.0,20=≤≤h x(IV)()()⎩⎨⎧='==+''00,100sin y y y y 2.0,40=≤≤h x二、应用题1. 小型火箭初始质量为900千克,其中包括600千克燃料。
火箭竖直向上发射时燃料以15千克/秒的速率燃烧掉,由此产生30000牛顿的恒定推力.当燃料用尽时引擎关闭。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
N1
P 'N t a1 a2 t t0 t t1 aN
N 1 j0
t ti
k0 jk
由此可知在 x M , M 0,1,, N 处的导数值
M 1
P 'N t a1 a2 t t0 t t1 aM
2)令 A [ f (t0 ), f (t1),, f (tN )] , for j=1 upto N+1
8
《数值方法》实验报告
for i=j+1 upto N+1
A(i) ( A(i) A(i 1)) / ti ti j
3)p=1, df (k) A2 ,
for n=2 upto N
Di
f
x 2hi 8 f
x hi 8 f
12hi
x hi
f
x 2hi
;
2) 近 似 导 数 值 序 列 间 隔 Ei Di Di1 , 相 对 误 差 序 列
Ri 2Ei / Di Di1 。
3) 若 Ei Ei1 或 Ri toler ,则停止计算循环;
a f x 60x45 32x33 233x5 47x2 77; x 1 3
b f x tan cos
5 sin 1 x2
x
;
x
1 3
5
c f x sin cos 1 x ; x 1/ 2
Dk 1
h
Dk
1
h
Dk
4k 1
1
2h
|
O(h
2
k
2)
4. 牛顿多项式微分:利用 f t 的 N 1个插值点可得近似 f t 的 N 次牛顿
多项式 PN t ,其可表示为 PN t a0 a1 t t0 a2 t t0 t t1 aN t t0 t tN1
6
《数值方法》实验报告
Step5:将 Dk , Ek , Rk , k 0,1, n 储存到向量 D, E, R 中列表输出。
2.P260 2 计算精度为 O(h4 ) 导数近似值的算法.
依据精度为 O(h2 ) 的中心差分公式,利用步长序列。
Step1:输入函数 f x ,要计算的导数的横坐标 x 及相对误差容限 toler,步
它们满足
f ' x0 Dk1 h c1h2k c2h2k2
和
f ' x0 Dk1 2h 4k c1h2k 4k1c2h2k2
这样可得到改进的近似值表达式
3
《数值方法》实验报告
f
' x0 Dk
h O(h 2k2)
Step1:输入 xi 及其对应的函数值 f xi , i 0,1,, N
Step2:for k=0 upto N,计算 xM 处的近似导数值 P 'N xM
1) t0 xM , ti1 xi ,1 i M 1,ti xi , M 1 i N ,
(2)P260 2 使用精度 O(h4 ) 的中心差分公式求解 (3)P260 3 使用理查森外推法求解
2.P270 1
计算 N 阶牛顿插值多项式 PN x 的在插值点的导数值 P 'N xM , M 0,1,, N
5
《数值方法》实验报告
(二)实验算法
1.P260 1 计算精度为 O(h2 ) 导数近似值的算法.
1.P260 1 已知下列函数,用数值微分方法求解在 x 处的导数近似值,精度为小数点后 面的 13 位。
a f x 60x45 32x33 233x5 47x2 77; x 1 3
b
f
x
tan
cos
5 sin 1 x2
x
始步长 h0 ,计算行数上限 max ;
Step2:计算初始化量
1) 初始近似导数值 D0,0
f
x h0 f
2h0
x h0 ;
2) 初始误差 E0 0 ,初始相对误差 R0 1 ;
3) j 1 ;
Step3:计算出符合精度要求的近似导数值: 若 E j1 delta 且 Rj1 toler 且 j 1 max ,则进行下列计算,否则进
入 step4
1) hj hj1 / 2 , D j,0 f x h j f x h j 2h j ;
For k=1 upto j
D j,k
D j,k 1
D j,k 1 D j1,k 1 4k 1
2) 计算误差 E j D j, j D j 1, j 1
12h
其中
Etrunc
f
,
h
h4
f 5 30
c
O
h4
项 Etrunc f , h 称为截断误差。
3.理查森外推法:
利用低阶公式推出高阶求解数值微分的公式,定理如下:
设 f ' x0 的两个精度为 O(h2k ) 的近似值分别为 Dk1 h 和 Dk1 2h ,而且
12h1
x h1
f
x 2h1
并令近似导数值序列前两个初值 E0 0, E1 D1 D0 ,
相对误差序列前两个初值 R0 0, R1 2E1 / D1 D0 。
Step3:for i=1 upto max 1) 计算步长 hi hi1 / 10 时的近似导数值,
依据精度为 O(h2 ) 的中心差分公式,利用步长序列。
Step1:输入函数 f x ,要计算的导数的横坐标 x 及相对误差容限 toler,步
长序列长度 max ;
Step2:设置初始参量,初始步长 h0 , f x 在 x 处的近似导数值
D0
f
x h0 f
2h0
x h0
1
《数值方法》实验报告
数值微分计算方法实验
【摘要】数值微分(numerical differentiation)根据函数在一些离散点的函数 值,推算它在某点的导数或高阶导数的近似值的方法。通常用差商代替微商,或 者用一个能够近似代替该函数的较简单的可微函数(如多项式或样条函数等)的 相应导数作为能求导数的近似值。例如一些常用的数值微分公式(如两点公式、 三点公式等)就是在等距步长情形下用插值多项式的导数作为近似值的。此外, 还可以采用待定系数法建立各阶导数的数值微分公式,并且用外推技术来提高所 求近似值的精确度。当函数可微性不太好时,利用样条插值进行数值微分要比多 项式插值更适宜。如果离散点上的数据有不容忽视的随机误差,应该用曲线拟合 代替函数插值,然后用拟合曲线的导数作为所求导数的近似值,这种做法可以起 到减少随机误差的作用。数值微分公式还是微分方程数值解法的重要依据。
长序列长度 max ;
Step2:设置初始参量,初始步长 h0 , f x 在 x 处的近似导数值来自D0f
x 2h0 8 f
x h0 8 f
12h0
x h0
f
x 2h0
令 h1
h0
/ 10 ,计算 D1
f
x 2h1 8 f
x h1 8 f
关 键 词 中心差分公式;理查森外推法;牛顿多项式微分;
一、实验目的
1.通过本次实验熟悉并掌握各种数值微分算法。 2.掌握如何通过程序设计实现数值微分算法,从而更好地解决实际中的问 题。
二、实验原理
1. 精度为 O(h2 ) 的中心差分公式:
设 f C3 a,b,且 x h, x, x h a,b ,则
4
《数值方法》实验报告
P260 3 使用程序 6.2 求解第 1 题中函数导数的近似值。精度为小数点后 13 位。注: 有必要改变 err,relerr 和 h 的初始值。
2.P270 1 修改程序 6.3,使得可用它计算 P(xM),M 1,2,...N 1。
四、实验结果及分析
(一)实验描述
Step4:输出 Di 即可得到符合精度要求的近似导数值,记录 n i 。 Step5:将 Dk , Ek , Rk , k 0,1, n 储存到向量 D, E, R 中输出。
3.P260 3 利用理查森外推法设计计算满足精度要求的近似导数值的算法,
7
《数值方法》实验报告
Step1:输入函数 f x ,自变量 x ,相对误差容限 toler,误差容限 delta,初
2. 精度为 O(h4 ) 的中心差分公式:
设 f C5 a,b,且 x 2h, x h, x, x h, x 2h a,b ,则
f 'x f x h f x h
2h
而且存在数 c c xa,b ,满足
f ' x f x 2h 8 f x h 8 f x h f x 2h
N 1 j0
t ti
aM
1
i0 iM
1
t ti
aN
i0 i N 1
t ti
k0 jk
iM
三、实验内容
1.P260 1 用程序 6.1 求解下列函数在 x 处的倒数近似值,精度为小数点后 13 位。注: 有必要改写程序中的 max1 的值和 h 的初始值。