数值计算方法实验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、⼆分法和计算器均能解出⽅程的根。
- 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.递推公式由于避免了老节点的重复计算,而使计算量减少了一半