数值计算方法实验3
数值计算方法实验报告
本科实验报告课程名称:数值计算方法实验地点:计算机科学与技术学院506 专业班级:学号:学生姓名:指导教师:**年月日太原理工大学学生实验报告}printf("%f\n",c);}五、实验结果与分析二分法割线法分析:使用二分法和割线法均能计算出方程的根,但利用割线法要比二分法计算的次数少,并且能够较早的达到精度要求。
并且割线法程序代码量较少,精简明了。
六、讨论、心得本次数值计算方法程序设计实验是在不断的习题练习中跳脱出来,直接面对实用性较强的程序代码编写。
效果很好,不仅加深对二分法、割线法的理解,还加强了实际用运能力。
将理论成功地转化成实践结果。
实验地点北区多学科综合楼4506指导教师王峥太原理工大学学生实验报告x[i] = y[i];for(j=i+1;j<=n;++j){x[i]-=u[i][j]*x[j];}x[i]/= u[i][i];}for(i=1;i<=n;++i){printf("%0.2lf\n",x[i]);}return 0;}五、实验结果与分析完全主元素消元法:列主元素消元法:LU分解法:分析:对于两种高斯解方程,完全主元素跟列主元素都是先消元、再回代,由程序段可以发现,始终消去对角线下方的元素。
即,为了节约内存及时效,可以不必计算出主元素下方数据。
列主元素消元法的算法设计上优于完全主元素消元法,它只需依次按列选主元素然后换行使之变到主元素位置,再进行消元即可。
列主元素消元法的耗时比完全主元素法少很多,常采用之。
对于LU分解法,分解矩阵为单位下三角阵L与上三角阵U的乘积,然后解方程组Ly=b,回代,解方程组Ux=y。
其中的L为n阶单位下三角阵、U为上三角阵.六、讨论、心得本次试验中,感觉是最难的一次,完全主元素消元法程序编写过程相对来说花了好长时间。
纠正各种语法、算法、思路错误。
最后勉强成功,但还是有几处警告,不得解决之法。
数值计算方法实验3
1
变步长梯形法的流程图:
0 ⇒ S, a +
h ⇒x 2
S + f ( x) ⇒ S , x + h ⇒ T2 2 2
1 T2 + (T2 − T1 ) ⇒ S 2 3
= k=1?
h ⇒h 2 T2 ⇒ T1 , S 2 ⇒ S1 k + 1 ⇒ k,
S2 +
1 ( S 2 − S1 ) ⇒ C 2 15
xk + 1 ,所要计算 f
2
值的次
1 I − T2 n ≈ (T2 n − Tn ) 3
1 I ≈ T2 n + (T2 n − Tn ) 3 1 (T2 n − Tn ) 3
∫ 1+ x
0
1
4
2. 积分近似值 T2n 的误差大致等于 3.
2
dx
-4
利用龙贝格积分法计算,使精确度达到 10
1 (T2 n − Tn ) 3
1 h n −1 = Tn + ∑ f ( x k + 1 ) 2 2 2 k =0
6.前一项 Tn 是二分前的积分值, 后一项只涉及二分时新增加的分点 教师签字: 教师签字: 实验目的: 实验目的: 编写变步长的梯形法则及龙贝格方法等算法程序,上机调试通过。 实验环境: 实验环境: 硬件环境:IBM-PC 或兼容机 软件环境:Windows 操作系统 编程语言:C 语言 实验内容: 实验内容: 用变步长梯形法求下列积分,使精确度达到 10-4 二. 龙贝格积分法的步骤。 1. 将积分区间分成 n 等份和 2n 等份时,求得积分近似值 Tn 和 T2n,则有误差估计式 数为 n 7.递推公式由于避免了老节点的重复计算,而使计算量减少了一半
数值计算方法实验报告
数值计算方法实验报告一、实验介绍本次实验是关于数值计算方法的实验,旨在通过计算机模拟的方法,实现对于数值计算方法的掌握。
本次实验主要涉及到的内容包括数值微积分、线性方程组的求解、插值与拟合、常微分方程的数值解等。
二、实验内容1. 数值微积分数值微积分是通过计算机模拟的方法,实现对于微积分中的积分运算的近似求解。
本次实验中,我们将会使用梯形公式和辛普森公式对于一定区间上的函数进行积分求解,并比较不同公式的计算误差。
2. 线性方程组的求解线性方程组求解是数值计算领域中的重要内容。
本次实验中,我们将会使用高斯消元法、LU分解法等方法对于给定的线性方程组进行求解,并通过比较不同方法的计算效率和精度,进一步了解不同方法的优缺点。
3. 插值与拟合插值与拟合是数值计算中的另一个重要内容。
本次实验中,我们将会使用拉格朗日插值法和牛顿插值法对于给定的数据进行插值求解,并使用最小二乘法对于给定的函数进行拟合求解。
4. 常微分方程的数值解常微分方程的数值解是数值计算中的难点之一。
本次实验中,我们将会使用欧拉法和龙格-库塔法等方法对于给定的常微分方程进行数值解的求解,并比较不同方法的计算精度和效率。
三、实验结果通过本次实验,我们进一步加深了对于数值计算方法的理解和掌握。
在数值微积分方面,我们发现梯形公式和辛普森公式都能够有效地求解积分,但是辛普森公式的计算精度更高。
在线性方程组求解方面,我们发现LU分解法相对于高斯消元法具有更高的计算效率和更好的数值精度。
在插值与拟合方面,我们发现拉格朗日插值法和牛顿插值法都能够有效地进行插值求解,而最小二乘法则可以更好地进行函数拟合求解。
在常微分方程的数值解方面,我们发现欧拉法和龙格-库塔法都能够有效地进行数值解的求解,但是龙格-库塔法的数值精度更高。
四、实验总结本次实验通过对于数值计算方法的模拟实现,进一步加深了我们对于数值计算方法的理解和掌握。
在实验过程中,我们了解了数值微积分、线性方程组的求解、插值与拟合、常微分方程的数值解等多个方面的内容,在实践中进一步明确了不同方法的特点和优缺点,并可以通过比较不同方法的计算效率和数值精度来选择合适的数值计算方法。
数值计算基础实验报告(3篇)
第1篇一、实验目的1. 理解数值计算的基本概念和常用算法;2. 掌握Python编程语言进行数值计算的基本操作;3. 熟悉科学计算库NumPy和SciPy的使用;4. 分析算法的数值稳定性和误差分析。
二、实验内容1. 实验环境操作系统:Windows 10编程语言:Python 3.8科学计算库:NumPy 1.19.2,SciPy 1.5.02. 实验步骤(1)Python编程基础1)变量与数据类型2)运算符与表达式3)控制流4)函数与模块(2)NumPy库1)数组的创建与操作2)数组运算3)矩阵运算(3)SciPy库1)求解线性方程组2)插值与拟合3)数值积分(4)误差分析1)舍入误差2)截断误差3)数值稳定性三、实验结果与分析1. 实验一:Python编程基础(1)变量与数据类型通过实验,掌握了Python中变量与数据类型的定义方法,包括整数、浮点数、字符串、列表、元组、字典和集合等。
(2)运算符与表达式实验验证了Python中的算术运算、关系运算、逻辑运算等运算符,并学习了如何使用表达式进行计算。
(3)控制流实验学习了if-else、for、while等控制流语句,掌握了条件判断、循环控制等编程技巧。
(4)函数与模块实验介绍了Python中函数的定义、调用、参数传递和返回值,并学习了如何使用模块进行代码复用。
2. 实验二:NumPy库(1)数组的创建与操作通过实验,掌握了NumPy数组的基本操作,包括创建数组、索引、切片、排序等。
(2)数组运算实验验证了NumPy数组在数学运算方面的优势,包括加、减、乘、除、幂运算等。
(3)矩阵运算实验学习了NumPy中矩阵的创建、操作和运算,包括矩阵乘法、求逆、行列式等。
3. 实验三:SciPy库(1)求解线性方程组实验使用了SciPy库中的线性代数模块,通过高斯消元法、LU分解等方法求解线性方程组。
(2)插值与拟合实验使用了SciPy库中的插值和拟合模块,实现了对数据的插值和拟合,并分析了拟合效果。
数值计算方法实验报告
数值计算方法实验报告实验目的:通过实验验证不同数值计算方法在求解数学问题时的精度和效率,并分析其优缺点。
实验原理:实验内容:本实验选取了三个典型的数值计算问题,并分别采用了二分法、牛顿迭代法和梯度下降法进行求解。
具体问题和求解方法如下:1. 问题一:求解方程sin(x)=0的解。
-二分法:利用函数值的符号变化将解空间不断缩小,直到找到满足精度要求的解。
-牛顿迭代法:通过使用函数的斜率来逼近方程的解,并不断逼近真实解。
-梯度下降法:将方程转化为一个极小化问题,并利用梯度下降的方式逼近极小值点,进而找到方程的解。
2.问题二:求解函数f(x)=x^2-3x+2的极小值点。
-二分法:通过确定函数在一个区间内的变化趋势,将极小值所在的区间不断缩小,从而找到极小值点。
-牛顿迭代法:通过使用函数的导数和二阶导数来逼近极小值点,并不断逼近真实解。
-梯度下降法:将函数转化为一个极小化问题,并利用梯度下降的方式逼近极小值点,进而找到函数的极小值点。
3. 问题三:求解微分方程dy/dx = -0.1*y的解。
-二分法:通过离散化微分方程,将微分方程转化为一个差分方程,然后通过迭代计算不同点的函数值,从而得到函数的近似解。
-牛顿迭代法:将微分方程转化为一个积分方程,并通过迭代计算得到不同点的函数值,从而得到函数的近似解。
-梯度下降法:将微分方程转化为一个极小化问题,并利用梯度下降的方式逼近极小值点,从而得到函数的近似解。
实验步骤:1.编写代码实现各个数值计算方法的求解过程。
2.对每个数值计算问题,设置合适的初始值和终止条件。
3.运行程序,记录求解过程中的迭代次数和每次迭代的结果。
4.比较不同数值计算方法的精度和效率,并分析其优缺点。
实验结果:经过实验测试,得到了如下结果:-问题一的二分法迭代次数为10次,求解结果为x=0;牛顿迭代法迭代次数为4次,求解结果为x=0;梯度下降法迭代次数为6次,求解结果为x=0。
-问题二的二分法迭代次数为10次,求解结果为x=1;牛顿迭代法迭代次数为3次,求解结果为x=1;梯度下降法迭代次数为4次,求解结果为x=1-问题三的二分法迭代次数为100次,求解结果为y=e^(-0.1x);牛顿迭代法迭代次数为5次,求解结果为y=e^(-0.1x);梯度下降法迭代次数为10次,求解结果为y=e^(-0.1x)。
数值计算方法第3、4次实验--龙贝格--龙格库塔
1.完成复合梯形、复合辛普森求积公式,用变步长、事后误差估计的方法完成P145例题6.3.1对应表6-3的计算,课后作业题7.%复合梯形求积公式的MATLAB实现%姓名:王定%学号:1306034248%中北大学仪器与电子学院function T_n=ComTrapezoidal(a,b,n)%a为积分上限%b为积分下限%n为划分区间的个数h=(b-a)/n;for(k=0:n)x(k+1)=a+k*h;if(x(k+1)==0)x(k+1)=10^(-10);endendI_1=h/2*(f(x(1))+f(x(n+1)));for(i=2:n)F(i)=h*f(x(i));endI_2=sum(F);I_n=I_1+I_2%****************************% %复合辛普森求积公式的MATLAB实现function I=ComSimpson(a,b,n)n=2;h=(b-a)/2;I1=0;I2=(f(a)+f(b))/h;eps=1.0e-4;while(abs(I2-I1)>eps)n=n+1;h=(b-a)/n;I1=I2;I2=0;for(i=0:n-1)x=a+h*i;x1=x+h;I2=I2+h/6*(f(x)+4*f((x+x1)/2)+f(x1));endendI=I2 %变步长梯形求积法的MATLAB实现function AdaptiveTrapezoidal(a,b,eps)m=1t0=0;t2=(f(a)+f(b))/4+f((a+b)/2)while(abs(t2-t0)>eps)m=m+1p=t2;t1=0;n=2^m;h=(b-a)/n;for(k=0:(n-1))t1=t1+h*((f(a+k*h)+f(a+(k+1)*h))/4+f(a+(k+1/2)*h)/2);endt2=t1t0=p;endI=t2%**************************%>>AdaptiveTrapezoidal(1,2,0.000001)m = 1t2 = 3.03948481584447m = 2t2 = 2.02304986763725m = 3t2 = 2.02080858246806m = 4t2 = 2.02024624995310m = 5t2 = 2.02010553934348m = 6t2 = 2.02007035369492m = 7t2 = 2.02006155678257m = 8t2 = 2.02005935752321m = 9t2 = 2.02005880770641I = 2.02005880770641%课后作业题7.>>AdaptiveTrapezoidal(1,3,0.0001)m = 1t2 =7.99930630234471m = 2t2 =10.84204346755743m = 3t2 =10.92309388961378m = 4t2 =10.94339842118680m = 5t2 =10.94847716722413m = 6t2 =10.94974701694155m = 7t2 =10.95006448956964m = 8t2 =10.95014385836406I =10.950143858364062.完成龙贝格积分,计算P150例题6.4.2对应的表6-5,按例题列表格显示数值,完成课后作业题8.%龙贝格求积法的MATLAB实现%姓名:王定%学号:1306034248%中北大学仪器与电子学院function [I,step]=Romberg(f,a,b,eps)f=input('please input f=');a=input('please input a=');b=input('please input b=');eps=input('please input eps=');%I为所求积分值%step为积分划分的子区间次数%f为被积函数%a为积分上限%b为积分下限%eps为积分精度if(nargin==3)eps=1.0e-4;end;M=1;tol=10;k=0;T=zeros(1,1);h=b-a;T(1,1)=(h/2)*(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsy m(sym(f)),b));while(tol>eps)k=k+1;h=h/2;Q=0;for(i=1:M)x=a+h*(2*i-1);Q=Q+subs(sym(f),findsym(sym(f)),x);endT(k+1,1)=T(k,1)/2+h*Q;M=2*M;for(j=1:k)T(k+1,j+1)=T(k+1,j)+(T(k+1,j)-T(k,j))/(4^j-1);endtol=abs(T(k+1,j+1)-T(k,j));endI=T(k+1,k+1)step=k %计算P150例题6.4.2对应的表6-5>> [I,step]=Romberg('4/(1+x^2)',0,1); format longI,stepI =3.14159266527772step =4%********************************%%按例题列表格显示数值,完成课后作业题8.>>please input f='(2/sqrt(pi))*exp(-x)'please input a=0please input b=1please input eps=1.0e-5I =0.71327166981418step =31、完成预报校正公式的程序,完成P183例题7.3.2对应表7—6第3列结果的计算,课后作业题3。
插值数值实验报告(3篇)
第1篇一、实验目的1. 理解并掌握插值法的基本原理和常用方法。
2. 学习使用拉格朗日插值法、牛顿插值法等数值插值方法进行函数逼近。
3. 分析不同插值方法的优缺点,并比较其精度和效率。
4. 通过实验加深对数值分析理论的理解和应用。
二、实验原理插值法是一种通过已知数据点来构造近似函数的方法。
它广泛应用于科学计算、工程设计和数据分析等领域。
常用的插值方法包括拉格朗日插值法、牛顿插值法、样条插值法等。
1. 拉格朗日插值法拉格朗日插值法是一种基于多项式的插值方法。
其基本思想是:给定一组数据点,构造一个次数不超过n的多项式,使得该多项式在这些数据点上的函数值与已知数据点的函数值相等。
2. 牛顿插值法牛顿插值法是一种基于插值多项式的差商的插值方法。
其基本思想是:给定一组数据点,构造一个次数不超过n的多项式,使得该多项式在这些数据点上的函数值与已知数据点的函数值相等,并且满足一定的差商条件。
三、实验内容1. 拉格朗日插值法(1)给定一组数据点,如:$$\begin{align}x_0 &= 0, & y_0 &= 1, \\x_1 &= 1, & y_1 &= 4, \\x_2 &= 2, & y_2 &= 9, \\x_3 &= 3, & y_3 &= 16.\end{align}$$(2)根据拉格朗日插值公式,构造插值多项式:$$P(x) = \frac{(x-x_1)(x-x_2)(x-x_3)}{(x_0-x_1)(x_0-x_2)(x_0-x_3)}y_0 + \frac{(x-x_0)(x-x_2)(x-x_3)}{(x_1-x_0)(x_1-x_2)(x_1-x_3)}y_1 + \frac{(x-x_0)(x-x_1)(x-x_3)}{(x_2-x_0)(x_2-x_1)(x_2-x_3)}y_2 + \frac{(x-x_0)(x-x_1)(x-x_2)}{(x_3-x_0)(x_3-x_1)(x_3-x_2)}y_3.$$(3)计算插值多项式在不同点的函数值,并与实际值进行比较。
数值计算方法实验报告
数值计算⽅法实验报告《数值计算⽅法》实验报告实验题⽬⼆分法求⾮线性⽅程的根专业班级11级数学师范⼆班姓名李洪学号201102024056指导⽼师李梦联系电话188********⼀、实验⽬的熟悉⼆分法求⽅程近似根的数值⽅法,与⽤计算器解出的值进⾏⽐较,并学会误差分析。
⼆、实验原理⼆分法的基本思路是通过计算隔根区间的中点,逐步将隔根区间缩⼩,从⽽可得⽅程的近似根数列}{n x 。
(≤-+1*k x x ?)三、实验内容已知0)()3(3=-=-e x x f 在[]1,0上有⼀个实根*x ,0)1(0)0(>本实验中的⽤到的求根⽅法有①⼆分法,②计算器求根。
四、实验步骤1.输⼊:a ,b 值及精度控制?量;2.if 0)()(>b f a f then 返回第1步,重新输⼊a ,b 值else 转第3步;3.while ?>-b a 时做(1))(21b a x +=,计算)(x f ;if )(x f =0 then 输出x ,停机。
(2)if0)()(4.输出)(21b a x +=。
五、 Matlab 源程序1.erfen.m:function [c,err,yc]=erfen(f,a,b,delta)ya = feval(f,a);yb = feval(f,b);if ya * yb > 0 ,return,endmax1 = 1+round((log(b-a)-log(delta))/log(2));for k=1:max1c=(a+b)/2;yc=feval(f,c);if yc==0a=c;b=c;elseif yb * yc > 0b=c;yb=yc;elsea=c;ya=yc;endif b-aendc=(a+b)/2;err=abs(b-a);yc=feval(f,c);2.f.m:function f=f(x);f=x^3-exp(-x);六、运⾏结果七、计算机计算结果⼋、实验分析1、⼆分法和计算器均能解出⽅程的根。
数值计算方法课后实验-李维国
实验3.1 Gauss消去法的数值稳定性实验实验目的:观察和理解高斯消元过程中出现小主元(即|a(k)kk|很小)时引起方程组解数值不稳定性.实验内容:求解方程组Ax=b,其中实验要求:(1)计算矩阵的条件数,判断系数矩阵是良态的还是病态的.(2)用高斯列主元消去法求得L和U及解向量x1,x2 .(3)用不选主元的高斯消去法求得L和U及解向量x1,x2 .(4)观察小主元并分析对计算结果的影响.解:(1)cond(A1)=68.4296cond(A2)=8.9939A1矩阵条件数远大于1,A1矩阵为病态;A2矩阵条件数没有远远大于1,A2矩阵为良态。
(2)高斯列主元消去法:程序如下ClearA1=[0.3*power(10,-15),59.14,3,1;5.291,-6.130,-1,2;11.2,9,5,2;1,2,1,1];b1=[59.17;46.18;1;2];% A1=[1,2,-1,1;1,1,2,-1;3,-1,1,1;2,1,3,-1];%b1=[1;-2;6;-1];A2=[10,-7,0,1;-3,2.0999********,6,2;5,-1,5,-1;0,1,0,2];b2=[8;5.900000000001;5;1];A=A1; b=b1;n=input('n=');for k=1:n-1 [a,b3]=max(A(k:n,k)); A([k k-1+b3],:)=A([k-1+b3 k],:); b([k k-1+b3],:)=b([k-1+b3 k],:); if A(k,k)~=0A(k+1:n,k)=A(k+1:n,k)./A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); else stop end endA; b; L=tril(A,-1);U=triu(A,0); for i=1:1:n L(i,i)=1;end L; for j=1:n-1 b(j)=b(j)/L(j,j);b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);end b(n)=b(n)/L(n,n); b; y=b;for j=n:-1:2 y(j)=y(j)/U(j,j); y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);end y(1)=y(1)/U(1,1);结果如下:方程组一:L1: U1:解向量x1结果如下:方程组二结果如下:L2:U2:解向量x2结果如下:(3)不选主元的分解程序如下:ClearA1=[0.3*power(10,-15),59.14,3,1;5.291,-6.130,-1,2;11.2,9,5,2;1,2,1,1]; b1=[59.17;46.18;1;2];%A1=[6,2,1,-1;2,4,1,0;1,1,4,-1;-1,0,-1,3];%b1=[6;-1;5;-5];A2=[10,-7,0,1;-3,2.0999********,6,2;5,-1,5,-1;0,1,0,2];b2=[ 8;5.900000000001;5;1]; A=A2; b=b2; n=input('n='); for k=1:n-1A(k+1:n,k)= A(k+1:n,k)/A(k,k); A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); end L=tril(A,-1); U=triu(A,0); for i=1:1:n L(i,i)=1; end L ;for j=1:n-1 b(j)=b(j)/L(j,j);b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j); end b(n)=b(n)/L(n,n); b; y=b;for j=n:-1:2 y(j)=y(j)/U(j,j); y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j); end y(1)=y(1)/U(1,1);方程组一结果:L1: U1:解向量x1结果如下:方程组二结果:L2: U2:解向量x2结果如下:(4) 观察方程在两种不同方法下的结果可知:由于计算机字长是一定的,小主元会造成大数除以小数的结果超出字长,结果发生很大的变化。
数值计算方法实验报告
《数值计算方法》实验报告班级数学132班学号201300144402姓名袁媛2016年 1月3日实验报告一1. 实验名称解线性方程组的直接法 2.实验题目用追赶法求解下列方程组⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎭⎫ ⎝⎛101053-001-21-002-31-001-24321x x x x 3.实验目的熟练运用已经学过的方法计算方程组,巩固已经学到的解决方程组的方法,培养使用计算机进行科学计算和解决问题的能力,熟悉了解这样的系数矩阵,能运用追赶法进行方程组的求解。
4.基础理论设A 有如下形式的分解⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=------11......11...............1211122111122211n n n n n n n n n n t t t s r s r s r s b a c b a c b a c b A 其中,i i r s 和i t 为待定常数,则有1,...,3,2,, (3)2,,,111111-===+====-n i t s c n i s t r b r a t s c s b i i i i i i i i i 由可得如下计算公式:1111111,1,...,3,2,/,,/,---==-==-====n n n n n n i i i i i i i i i t r b s a r n i s c t t r b s a r s c t b s 即在A 满足条件的情况下,可以把{}{}i i s r ,和{}i t 完全确定出来,从而实现上面给定形式的LU 分解,且i r 等于),...3,2(n i a i =。
这样,求解三对角阵方程组Ax=f 就等价于求解两个三角形方程组y Ux f Ly ==, 从而得到公式:(1)计算{}i s 和{}i t 的递推公式 ;1, (3)2,/,,/11111---=-==-==n n n n i i i i i i i t a b s n i s c t t a b s b c t (2)求解f Ly = ni s y a f y b f y i i i i i ,...,3,2,/)(,/1111=-==-(3)求解y Ux =1,...,2,1,,1--=-==+n n i x t y x y x i i i i n n通常把计算121...-→→→n t t t 和n y y y →→→...21的过程称为追的过程,而把计算方程组的解11...x x x n n →→→-的过程称为赶的过程,这一方法称为解三角方程组的追赶法。
上机-3-数值积分常微分方程
数值计算方法上机 (三)
杨雪松
1
上机习题三
1. 分别用变步长梯形公式和龙贝格公式计算下列 积分:
i n c o sx i nx d x 2 s s
2 2 0
取同样的收敛判断精度,比较不同方法的计算效率。
2
上机习题三
2.分别用改进欧拉法和四阶龙格-库塔公式求解下 列微分方程初值问题:分别取三种不同的步长 进行计算,并将数据绘制在同一张图中进行比 较。
字)
4
上机报告格式要求
• 上机报告纸质版在第13周周五之前交到物电楼712, 请同时发送电子版,备查。 • 电子版文件命名:数值计算第3次上机报告_学号_姓 名。电子版发送至:xsyang@. • 评分以纸质版为准。 • 对于雷同报告及明显抄袭报告,抄袭者和被抄袭者均 扣分。 • 报告格式可参考:上机报告格式参考模板.doc • 考试时间待定。
2 2 y ' x y ( 1) ( 1 . 0 x 1 . 8 ) ( 1 ) 0 ; y
学号为单号 同学做
y ' y 2 x /y ( 2) ( 0 x 2 . 0 ) 学号为双号 同学做 y ( 0 ) 1 ;
3
上机题三
3. 学习本课程的体会、收获及不足,对任课教师及 课程教学方法的评价、意见或建议。(150~1000
数值计算方法实验报告
一、实验目的1. 熟悉数值计算的基本概念和方法;2. 掌握数值计算的基本原理和算法;3. 提高编程能力和数值计算能力;4. 通过实验,加深对数值计算方法的理解和应用。
二、实验内容1. 矩阵运算2. 线性方程组求解3. 函数求值4. 微分方程求解三、实验步骤1. 矩阵运算(1)编写程序实现矩阵的加法、减法、乘法运算;(2)编写程序实现矩阵的转置运算;(3)编写程序实现矩阵的逆运算。
2. 线性方程组求解(1)编写程序实现高斯消元法求解线性方程组;(2)编写程序实现雅可比迭代法求解线性方程组;(3)编写程序实现高斯-赛德尔迭代法求解线性方程组。
3. 函数求值(1)编写程序实现牛顿迭代法求函数的零点;(2)编写程序实现二分法求函数的零点;(3)编写程序实现割线法求函数的零点。
4. 微分方程求解(1)编写程序实现欧拉法求解一阶微分方程;(2)编写程序实现龙格-库塔法求解一阶微分方程;(3)编写程序实现龙格-库塔-法求解二阶微分方程。
四、实验结果与分析1. 矩阵运算(1)矩阵加法、减法、乘法运算结果正确;(2)矩阵转置运算结果正确;(3)矩阵逆运算结果正确。
2. 线性方程组求解(1)高斯消元法求解线性方程组,结果正确;(2)雅可比迭代法求解线性方程组,结果正确;(3)高斯-赛德尔迭代法求解线性方程组,结果正确。
3. 函数求值(1)牛顿迭代法求函数的零点,结果正确;(2)二分法求函数的零点,结果正确;(3)割线法求函数的零点,结果正确。
4. 微分方程求解(1)欧拉法求解一阶微分方程,结果正确;(2)龙格-库塔法求解一阶微分方程,结果正确;(3)龙格-库塔-法求解二阶微分方程,结果正确。
五、实验总结本次实验通过对数值计算方法的学习和实践,使我对数值计算有了更深入的了解。
以下是我对本次实验的总结:1. 矩阵运算是数值计算的基础,熟练掌握矩阵运算对于解决实际问题具有重要意义;2. 线性方程组求解是数值计算中常见的问题,高斯消元法、雅可比迭代法和高斯-赛德尔迭代法是常用的求解方法;3. 函数求值是数值计算中另一个常见问题,牛顿迭代法、二分法和割线法是常用的求解方法;4. 微分方程求解是数值计算中的难点,欧拉法、龙格-库塔法和龙格-库塔-法是常用的求解方法。
数值计算方法实验报告(例)
实验报告一、实验目的二、实验内容三、实验环境四.实验方法五、实验过程1实验步骤2 关键代码及其解释3 调试过程六、实验总结1.遇到的问题及解决过程2.产生的错误及原因分析3.体会和收获。
七、程序源代码:八、教师评语实验报告一.试验目的:练习用数值方法求解给定的非线性方程。
二.实验内容:求解人口方程: )1(5.43e 1004.156-+=λλλe要求误差小于410-。
三.实验环境:PC 计算机,FORTRAN 、C 、C ++、VB 任选一种。
四.实验方法:牛顿法牛顿法简述:牛顿法是一种特殊的迭代法,其迭代公式为:,2,1,0,)()(1='-=+k x f x f x x k k k k ,当数列{}k x 收敛时,其极限值x 即为方程的解。
定理:给定方程],[,0)(b a x x f ∈=1)设0)()(<b f a f ;2))(x f ''在],[b a 上不变号,且],[,0)(b a x x f ∈≠'; 3)选取],[0b a x ∈,满足0)()(00>''x f x f ;则牛顿法产生的序列{}k x 收敛于0)(=x f 在],[b a 内的唯一解x 。
五.实验过程:1.编程: 用C 语言编出牛顿法的源程序。
2. 开机, 打开C 语言编译程序,键入所编程序源代码.3. 调试程序, 修改错误至能正确运行.六.实验总结:(1)牛顿法收敛速度快,但初值不容易确定,往往由于初值取得不当而使迭代不收敛或收敛慢,但若能保证)()(1+>K K x f x f (称为下山条件),则有可能收敛。
把新的近似值看作初值的话会比原来的取得好,有可能落入局部收敛的邻域。
(2)牛顿法要求)(x f '在x 附近不为零。
亦即x 只能是单根, 不能求重根。
可用重根加速收敛法求重根。
(3)牛顿法的每一步迭代中,都要计算一次导数值,若计算)(x f '比计算函数的近似值要麻烦的多。
数值计算方法后退欧拉法,龙格库塔法(三阶,四阶方法)
数值计算方法实验课测验作业——微分方程求解的后退欧拉法,龙格库塔法(三阶,四阶方法)日期:2011-06-17一、实验目的1.学习matlab的使用方法。
2.掌握常微分方程的几种数值解法:后退欧拉法,龙格库塔法三阶方法,龙格库塔法四阶方法。
3.比较各方法的数值解及误差,了解各方法的优缺点。
二、实验题目给定的初值问题y′=-y+x+2,0≤x≤1y(0)=-1,取精确解y(x)=exp(-x)+x按(1)后退欧拉法,步长h=0.003, h=0.1;(2)龙格库塔法三阶方法,步长h=0.1;(3)龙格库塔法四阶方法,步长h=0.1;求在节点x k=1+0.1k (k=1,2,3……10)处的数值解及误差比较各方法的优缺点。
三、实验原理1.对于后退欧拉法:利用Yn+1 = Yn + 1/2*K1 + 1/2*K2①n = 1, 2, 3……K1 = hf(Xn, Yn)②K2 = hf(Xn + h, Yn + K1)③三式可以完成计算需要将微分方程表达式和精度计算表达式作为两个函数保存在m文件里并在程序中调用:①微分方程(oulei_wf)function z=oulei_wf(x,y)z=-y+x+2end②精确解计算(ouleij_q)function z=ouleij_q(x)z=exp(-x)+xend2.对于龙哥库塔三阶:利用Yn+1 = Yn + h/6(K1 + 4K2 + K3 ) ①K1 = f(Xn, Yn)②K2 = f(Xn + 1/2*h, Yn +( h/2)*K1)③K3= f(Xn + h, Yn - K1+2*h*k2)④四式可以完成计算3.对于龙哥库塔四阶:利用Yn+1 = Yn + 1/6(K1 + 2K2 + 2K3 +K4) ①K1 = hf(Xn, Yn)②K2 = hf(Xn + 1/2*h, Yn + 1/2*K1)③K3 = hf(Xn + 1/2*h, Yn + 1/2*K2)④K4 = hf(Xn + h, Yn + K3)⑤四式可以完成计算四、实验内容由上述实验原理叙述的后退欧拉法,龙哥库塔三阶,龙哥库塔四阶几种常微分方程数值解法分别对已给定的初值问题进行求解,比较各方法的数值解及误差,了解各方法的优缺点。
数值计算方法三次样条插值演示文稿
第14页,共68页。
三次样条插值
对于待定系数a j ,bj , c j .d j j 1,2,...n,即4n个未知系数, 而插值条件为4n 2个,还缺两个,因此须给出两个 条件称为边界条件,有以下三类: 第一类 已知两端点的一阶导数
s( s(
x0 xn
) )
f (x0 ) m0 f (xn ) mn
第12页,共68页。
4.4.2 三次样条插值
定义 设函数f (x)是区间[a,b]上的二次连续可微函数, 在区间[a,b]上给出一个划分
:a x0 x1 ... xn1 xn b 如果函数s( x)满足条件
(1)s(x j ) f (x j ) ( j 0,1,2,...n); (2) 在每个小区间[x j1, x j ]( j 1,2,..., n)上s(x)是不超过
Mi 2!
( xi 1
xi )2
M i1 3!
Mi
( xi 1
xi )2
解得
s(xi )
yi1 yi xi1 xi
(
1 6
M
i 1
2 6
M
i
)( xi 1
xi
)
(1)
第18页,共68页。
三次样条插值
同理在[xi1, xi ]上讨论得
s(xi )
yi xi
yi1 xi1
(
2 6
M
i
1 6 M i1)(xi
第21页,共68页。
三次样条插值
第一类边界条件:s(x0 ) f (x0 ) s(xn ) f (xn )
(1) 式中令i 0得
s(x0 )
y1 x1
y0 x0
(1 6
数值计算方法实验报告
数值计算方法实验报告一、实验目的本实验旨在通过Python语言编写数值计算方法程序,掌握常见数值计算方法的实现原理及应用。
具体包括:插值法、最小二乘法、数值微积分、数值解方程、数值解微分方程等。
二、实验环境Python编程语言、Jupyter Notebook环境三、实验内容1.插值法(1)代码实现:在Python中使用Scipy库中的Interpolate模块实现拉格朗日插值法和牛顿插值法,并通过数据可视化展示其效果。
(2)实验步骤:- 导入所需库,准备所需数据;- 定义拉格朗日插值法函数;- 定义牛顿插值法函数;- 测试函数并可视化结果。
(3)实验结果:2.最小二乘法(1)代码实现:在Python中使用Numpy库实现最小二乘法,并通过数据可视化展示其效果。
(2)实验步骤:- 导入所需库,准备所需数据;- 定义最小二乘法函数;- 测试函数并可视化结果。
(3)实验结果:3.数值微积分(1)代码实现:在Python中实现梯形法和辛普森法,并通过数据可视化展示其效果。
(2)实验步骤:- 导入所需库,准备所需数据;- 定义梯形法函数和辛普森法函数;- 测试函数并可视化结果。
(3)实验结果:4.数值解方程(1)代码实现:在Python中实现二分法、牛顿法和割线法,并通过数据可视化展示其效果。
(2)实验步骤:- 导入所需库,准备所需数据;- 定义二分法函数、牛顿法函数和割线法函数;- 测试函数并可视化结果。
(3)实验结果:5.数值解微分方程(1)代码实现:在Python中实现欧拉法和龙格-库塔法,并通过数据可视化展示其效果。
(2)实验步骤:- 导入所需库,准备所需数据;- 定义欧拉法函数和龙格-库塔法函数;- 测试函数并可视化结果。
(3)实验结果:四、实验总结通过本次实验,我学习了数值计算方法的常用算法和实现原理,掌握了Python 语言实现数值计算方法的方法,加深了对数值计算方法的理解和应用。
实验中遇到的问题,我通过查找资料和与同学的讨论得到了解决,也更加熟练地掌握了Python语言的使用。
数值计算方法实验报告
数值计算方法实验报告数值计算方法实验报告引言:数值计算方法是一种通过数学模型和计算机算法来解决实际问题的方法。
在科学研究和工程应用中,数值计算方法被广泛应用于求解方程、优化问题、模拟仿真等领域。
本实验报告将介绍数值计算方法的基本原理和实验结果。
一、二分法求根二分法是一种通过不断折半缩小搜索区间来求解方程根的方法。
在实验中,我们选取了一个简单的方程f(x) = x^2 - 4 = 0来进行求根实验。
通过不断将搜索区间进行二分,我们可以逐步逼近方程的根。
实验结果表明,通过二分法,我们可以得到方程的根为x = 2。
二、牛顿迭代法求根牛顿迭代法是一种通过不断逼近方程根的方法。
在实验中,我们同样选取了方程f(x) = x^2 - 4 = 0进行求根实验。
牛顿迭代法的基本思想是通过对方程进行线性近似,求得近似解,并不断迭代逼近方程的根。
实验结果表明,通过牛顿迭代法,我们可以得到方程的根为x = 2。
三、高斯消元法求解线性方程组高斯消元法是一种通过变换线性方程组的系数矩阵,将其化为上三角矩阵的方法。
在实验中,我们选取了一个简单的线性方程组进行求解实验。
通过对系数矩阵进行行变换,我们可以将其化为上三角矩阵,并通过回代求解得到方程组的解。
实验结果表明,通过高斯消元法,我们可以得到线性方程组的解为x = 1,y = 2,z = 3。
四、插值与拟合插值与拟合是一种通过已知数据点来构造函数模型的方法。
在实验中,我们选取了一组数据点进行插值与拟合实验。
通过拉格朗日插值多项式和最小二乘法拟合,我们可以得到数据点之间的函数模型。
实验结果表明,通过插值与拟合,我们可以得到数据点之间的函数关系,并可以通过该函数模型来进行预测和拟合。
结论:数值计算方法是一种通过数学模型和计算机算法来解决实际问题的方法。
通过本次实验,我们学习了二分法求根、牛顿迭代法求根、高斯消元法求解线性方程组以及插值与拟合的基本原理和应用。
这些方法在科学研究和工程应用中具有广泛的应用前景。
数值实验报告的基本格式
附录1 数值实验报告的基本格式 1
《数值计算方法》实验报告
专业______ 年级_______ 班级_______ 学号_______ 姓名______ 成绩_______
1. 实验名称
给出要进行的实验的名称,如
实验3 线性方程组的迭代法
2. 实验题目
写出要求解的具体问题.
3. 实验目的
简述所做实验要达到的目的、效果和注意事项. 例如,验证有关理论所预言的数值结果;编程实现某个算法,加深对算法的优缺点的理解;改进某个数值算法等.
4. 基础理论
简述实验题目所涉及的相关算法的基础知识和基本原理.
5. 实验环境
列出实验所用的操作系统及选择的程序设计语言,如Linux操作系统;Matlab 软件或Visual C++语言.
6. 实验过程
主要叙述实验的实施方案、数据准备步骤和实现算法的流程图;介绍程序中定义的各个函数或过程的功能;上机调试程序中遇到的问题及解决办法等.
7. 结果分析
采用屏幕拷贝等方式给出实验的输入数据、中间结果和最终结果(图形),对较复杂的问题,还可通过表格或图形展示最终结果. 分析(1)实验结果是否与理论结果一致,如果不一致,阐明原因;(2)初值对计算结果的影响;(3)不同方法对计算结果的影响. 并阐述调试程序过程的体会,总结所用算法的适用范围及进一步改进的可能性与必要性等.
8. 附录程序清单
在附录中列出采用选定的编程语言独立编写的能实现算法的源代码.。
数值计算方法实验报告
数值计算方法实验报告一、实验目的本实验旨在通过数值计算方法的实验操作,深入理解数值计算方法的原理与应用,掌握数值计算方法的相关技能,提高数值计算方法的实际应用能力。
二、实验内容1.数值微积分2.数值代数3.数值微分方程4.数值线性代数5.数值优化6.数值统计分析7.数值随机模拟8.数值傅立叶分析9.数值偏微分方程三、实验步骤1.数值微积分:通过不同的数值积分方法,计算给定函数的定积分值,并对不同数值积分方法的误差进行分析。
2.数值代数:通过使用线性代数方法,求解给定的线性方程组,并分析不同线性方程组求解方法的优劣。
3.数值微分方程:通过使用常微分方程数值解法,求解给定的微分方程,并比较不同求解方法的精度和稳定性。
4.数值线性代数:通过使用特征值分解方法,对给定的矩阵进行特征值分解,并分析不同特征值分解方法的优缺点。
5.数值优化:通过使用不同的优化方法,求解给定的优化问题,并比较不同的优化方法的效率和精度。
6.数值统计分析:通过使用不同的统计分析方法,对给定的数据进行统计分析,并分析不同的统计方法的优缺点。
7.数值随机模拟:通过使用随机模拟方法,模拟给定的概率分布,并分析不同随机模拟方法的效率和精度。
8.数值傅立叶分析:通过使用傅立叶分析方法,对给定的信号进行频谱分析,并分析不同的傅立叶分析方法的优缺点。
9.数值偏微分方程:通过使用偏微分方程数值解法,求解给定的偏微分方程,并比较不同求解方法的精度和稳定性。
四、实验结果与分析本实验中,通过对不同的数值计算方法的实验操作,我们可以更深入地理解数值计算方法的原理与应用,并掌握数值计算方法的相关技能,提高数值计算方法的实际应用能力。
同时,通过实验结果的分析,我们可以更好地比较不同数值计算方法的优缺点,为实际应用提供参考依据。
五、实验总结本实验旨在通过数值计算方法的实验操作,深入理解数值计算方法的原理与应用,掌握数值计算方法的相关技能,提高数值计算方法的实际应用能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ik =
h f ( xk ) + 2 f ( xk + 1 ) + f ( xk +1 ) 2 4
n −1
[
]
5.对区间[a, b]因此有
T2 n = ∑ =
h f ( x k ) + 2 f ( x k + 1 ) + f ( x k +1 ) 2 k =0 4
[
]
n −1 h n −1 [ f ( x k ) + f ( x k +1 )] + h ∑ f ( x k + 12 ) ∑ 4 k =0 2 k =0
二. 龙贝格积分法 #include<stdio.h> #include<math.h> double f(double x){return sin(x);} void main(){
3
1
变步长梯形法的流程图:
0 ⇒ S, a +
h ⇒x 2
S + f ( x) ⇒ S , x + h ⇒ x
< x<b?
T1 h + S ⇒ T2 2 2
1 T2 + (T2 − T1 ) ⇒ S 2 3
= k=1?
h ⇒h 2 T2 ⇒ T1 , S 2 ⇒ S1 k + 1 ⇒ k,
S2 +
1 ( S 2 − S1 ) ⇒ C 2 15
3.T2n
的全部分点中有 n + 1 个是二分前原有的点
实验报告
学院( 学院(系)名称: 名称: 姓名 班级 课程名称 实验时间 批改意见: 批改意见: 学号 实验项目 数值计算方法 专业 数值积分 课程代码 实验地点 成绩
4.每个小区间[xk , xk+1]经过二分再增加一个新分点 后,用复化梯形公式求得该区间上的积分值为
xk + 1 ,所要计算 f
2
值的次
1 I − T2 n ≈ (T2 n − Tn ) 3
1 I ≈ T2 n + (T2 n − Tn ) 3 1 (T2 n − Tn ) 3
∫ 1+ x
0
1
4
2. 积分近似值 T2n 的误差大致等于 3.
2
dx
-4
利用龙贝格积分法计算,使精确度达到 10
1 (T2 n − Tn ) 3
与 T2n 之和比 T2n 更接近于真值 I
∫ sin xdx
0
1
4. 可以得到种更好的计算积分的公式
1 4 1 T = T2 n + (T2 n − Tn ) = T2 n − Tn 3 3 3
实验步骤: 实验步骤: 一. 变步长梯形法的步骤。 思想:将区间逐次对分进行计算,用前后两次计算的结果进行估计,若合乎精度要求,就停止计 算;否则再次对分,重复以上计算过程,直至达到精度要求为止。 变步长梯形求积法的实现 1.设将区间[a, b] n 等分,共有 n + 1 个分点,按复化梯形公式计算 Tn,需要计算 n + 1 个 f (x) 的值 2.如果将求积区间再次对分,若仍然直接用复化梯形公式计算二分后的积分值 T2n 计算 2n+1 个 f(x) 的值 ,则需要 实验结果: 实验结果: 结果 一. 变步长梯形法 输入积分区间和精度后,输出结果 3.141582,根据精度要求,最终结果为:3.1416 二. 龙贝格积分法 输入积分区间和精度后,输出结果为 0.459698,根据精度要求,最终结果为:0.4597
= k=2?
C 2 ⇒ C1
龙贝格积分法的流程图:
C2 +
开始
1 (C 2 − C1 ) ⇒ R2 63
= k=3?
R2 ⇒ R1
读入 a, b, ε |R2-R1|<ε?
h b − a ⇒ h, [ f (a ) + f (b)] ⇒ T1 2 1⇒ k
< 打印 R2
2
附录(源程序及运行结果) : 一. 变步长梯形法 #include<stdio.h> #include<math.h> double f(double x){return 4/(1+x*x);} void main(){ double a,b,h,T1,T2,e,S,x; printf("请输入区间 a 和 b:"); scanf("%lf,%lf",&a,&b); printf("精度:"); scanf("%lf",&e); h=b-a; T2=h/2*(f(a)+f(b)); do{ T1=T2; S=0; x=a+h/2; do{ S=S+f(x); x=x+h; }while(x<b); T2=T1/2+h*S/2; h=h/2; }while(fabs(T2-T1)>=e); printf("用变步长梯形法输出 T2:%lf\n",T2); } 运行结果:
double a,b,h,T1,T2=1,e,S,S1,S2=1,x,C1,C2,R1=0,R2=1; printf("请输入区间 a 和 b:"); scanf("%lf,%lf",&a,&b); printf("精度:"); scanf("%lf",&e); h=2*(b-a); T2=(b-a)/2*(f(a)+f(b)); int k=0; while(fabs(R2-R1)>=e){ k=k+1; h=h/2; T1=T2; S1=S2; S=0; x=a+h/2; do{S=S+f(x); x=x+h; }while(x<b); T2=T1/2+h/2*S; S2=T2+(T2-T1)/3; if(k==1){continue;} C2=S2+(S2-S1)/15; if(k==2){C1=C2;continue;} R2=C2+(C2-C1)/63; if(k==3){R1=R2;C1=C2;continue;} C1=C2; R1=R2; } printf("%lf",R2); } 运行结果:
1 h n −1 = Tn + ∑ f ( x k + 1 ) 2 2 2 k =0
6.前一项 Tn 是二分前的积分值, 后一项只涉及二分时新增加的分点 教师签字: 教师签字: 实验目的: 实验目的: 编写变步长的梯形法则及龙贝格方法等算法程序,上机调试通过。 实验环境: 实验环境: 硬件环境:IBM-PC 或兼容机 软件环境:Windows 操作系统 编程语言:C 语言 实验内容: 实验内容: 用变步长梯形法求下列积分,使精确度达到 10-4 二. 龙贝格积分法的步骤。 1. 将积分区间分成 n 等份和 2n 等份时,求得积分近似值 Tn 和 T2n,则有误差估计式 数为 n 7.递推公式由于避免了老节点的重复计算,而使计算量减少了一半