数值积分实验报告
实验4_数值积分与数值微分

数值分析实验报告四数值积分与数值微分实验(2学时)一 实验目的1.掌握复化的梯形公式、Simpson 公式等牛顿-柯特斯公式计算积分。
2. 掌握数值微分的计算方法。
二 实验内容1. 用复化梯形公式计算积分。
⎰90dx x M=82. 用复化Simpson 公式计算积分。
⎰90dx x M=8 3. 给定下列表格值利用四点式(n=3)求)50()50('''f f 和的值。
三 实验步骤(算法)与结果1复化梯形公式用C 语言编程如下:#include<stdio.h>#include<math.h>/*被积函数的定义*/float f(float x){float y;y=sqrt(x);return y;}void main(){int i,m;float a,b,h,r;printf("输入等分数m:" );scanf("%d",&m);printf("输入区间左端点a的值:"); scanf("%f",&a);printf("输入区间右端点b的值:"); scanf("%f",&b);float x[m+1];h=(b-a)/m;for(i=0;i<=m;i++)x[i]=a+i*h;r=0;for(i=0;i<=m;i++){if(i==0) r=r+h*0.5*f(x[i]);if(i>0&&i<m) r=r+h*f(x[i]);if(i==m) r=r+0.5*h*f(x[i]);}printf("输出区间[%3.1f %3.1f]的积分值:%f\n",a,b,r); }求解结果如下:输入等分数m:8输入区间左端点a的值:0输入区间右端点b的值:9输出区间[0.0 9.0]的积分值:17.7695142复化Simpson公式用C语言编程如下:#include<stdio.h>#include<math.h>/*被积函数的定义*/float f(float x){float y;y=sqrt(x);return y;}void main(){int i,m;float a,b,h,r;printf("输入等分数m:" );scanf("%d",&m);printf("输入区间左端点a的值:"); scanf("%f",&a);printf("输入区间右端点b的值:"); scanf("%f",&b);float x[m+1];h=(b-a)/m;for(i=0;i<=m;i++)x[i]=a+i*h;r=0;for(i=0;i<=m;i++){if(i==0) r=r+h*f(x[i])/3;if(i>0&&i<m){ if(i%2==0)r=r+h*2*f(x[i])/3; else r=r+h*4*f(x[i])/3;}if(i==m) r=r+h*f(x[i])/3;}printf("输出区间[%3.1f %3.1f]的积分值:%f\n",a,b,r); }求解结果如下:输入等分数m:8输入区间左端点a的值:0输入区间右端点b的值:9输出区间[0.0 9.0]的积分值:17.9031393求导数值用C语言编程如下:#include<stdio.h>int n;/*拉格朗日多项式函数的一阶导函数的定义*/float g1(float *x,float *y,float z){int i,j,k;float r,m,s;s=0;for(i=0;i<n;i++){ m=0;for(j=0;j<n;j++){if(j!=i){ r=1;for(k=0;k<n;k++)if(k!=i&&k!=j) r=r*(z-x[k]); m=m+r*y[i];}}r=1;for(j=0;j<n;j++)if(j!=i)r=r*(x[i]-x[j]);s=s+m/r;}return s;}/*拉格朗日多项式函数的二阶导函数的定义*/ float g2(float *x,float *y,float z){int i,j,k,p;float r,m,s,w;s=0;for(i=0;i<n;i++){w=0;for(j=0;j<n;j++){if(j!=i){m=0;for(k=0;k<n;k++){if(k!=i&&k!=j){ r=1;for(p=0;p<n;p++)if(p!=k&&p!=j&&p!=i)r=r*(z-x[p]); m=m+r*y[i];}}w=w+m;}}r=1;for(j=0;j<n;j++)if(j!=i)r=r*(x[i]-x[j]);s=s+w/r;}return s;}void main(){int i,j;float f1,x0,f2;printf("输入节点数n:");scanf("%d",&n);float x[n],y[n];printf("输入向量x:");for(i=0;i<n;i++)scanf("%f",&x[i]);printf("输入向量y:");for(i=0;i<n;i++)scanf("%f",&y[i]);printf("********************\n"); printf("输入1****求一阶导数\n"); printf("输入2****求二阶导数\n"); printf("********************\n"); printf("选择操作1-2:");scanf("%d",&j);switch(j){case 1:printf("输入求导处的x:");scanf("%f",&x0);f1=g1(x,y,x0);printf("x=%3.1f处的一阶导数值%f\n",x0,f1); break;case 2:printf("输入求导处的x:");scanf("%f",&x0);f2=g2(x,y,x0);printf("x=%3.1f处的二阶导数值%f\n",x0,f2); break;}}求解结果如下:输入节点数n:4输入向量x:50 55 60 65输入向量y:1.6690 1.7404 1.7782 1.8129********************输入1****求一阶导数输入2****求二阶导数********************选择操作1-2:1输入求导处的x:50x=50.0处的一阶导数值0.019673输入节点数n:4输入向量x:50 55 60 65输入向量y:1.6990 1.7404 1.7782 1.8129 ********************输入1****求一阶导数输入2****求二阶导数********************选择操作1-2:2输入求导处的x:50x=50.0处的二阶导数值-0.000164。
数值分析实验报告--数值积分与数值微分及其并行算法

《数值分析》实验报告实验六 数值积分与数值微分及其并行算法(一) 数值微分一实验目的:① 我们通过 Mat lab 编 来 决数值 的诸多问题 例如这次实验所涉及到得数值微分,使我们进一步学会使用Matlab 来求解复杂的数值微分积分等问题,就进而避免了手算出现的各种错误。
体会Matlab 这门课是多么方便实用 让我体会到了高数和计算方法相结合的重要性,让我更好的学习这门课。
② 并让我们熟悉Mat lab 编 环 并要熟练掌握及应用二.实验要求:会用matlab 编写代码,并把关于数值微分的题目进行结果计算,并进行误差分析,需要画图的把图形画出来。
三.实验内容:用matlab 编写出的代码进行编译运行,来做下面有关于数值微分的例子,然后再进行误差分析的出最终结论。
最后把结果和过程写在实验报告上。
四.实验题目:1.关于数值微分的:设)94^*8cos()162^*4sin()(+−−=x x x f .(1)分别利用前差公式和后差公式计算)27.0('f 的近似值和误差,取4位小数点计算,其中步长分别取1000.0,001.0,01.0,1.0=h ,≤)("x f 100,]1,0[∈x .五.实验原理:1.、数值微分中的前插公式:hx f h x f x f )()()(−+≅′ 后插公式:hh x f x f x f )()()(−−≅′ 前插公式和后插公式的截断误差公式:)()(2),(1h O f h h f R i =′′−=ξ )2,1(=i 六.设计思想:是用离散的方法近似的计算y=f(x)在某点的函数值,当然通常只有函数以离散数值形式给出时才有必要用它。
七.对应程序及实验结果:1.数值微分的程序:在工作区输入:x=0.27;h=[0.1,0.01,0.001,0.0001];M=100;x1=x+h;x2=x-h; y=sin(4.*x.^2-16)- cos(8.*x.^4+9);y1=sin(4.*x1.^2-16)- cos(8.*x.^4+9); y2=sin(4.*x2.^2-16)- cos(8.*x.^4+9); yq=(y1-y)./h, yh=(y-y2)./h,wu=abs(h.*M/2), syms x,f=sin(4.*x.^2-16)- cos(8.*x.^4+9); yx=diff(f,x)得出结果为:yq =-2.5323 -2.1998 -2.1640 -2.1604yh =-1.7509 -2.1198 -2.1560 -2.1596wu =5.0000 0.5000 0.0500 0.0050yx =8*cos(4*x^2-16)*x+32*sin(8*x^4+9)*x^3再算出截断误差:输入:x=0.27; yx =8*cos(4*x^2-16)*x+32*sin(8*x^4+9)*x^3,wuq=abs(yq-yx), wuh=abs(yh-yx)输出:yx =-1.9251wuq =0.6072 0.2748 0.2389 0.2353wuh =0.1742 0.1948 0.2309 0.2345九、实验体会:本实验中,关于数值微分方法的使用,使我个人又对前插公式有了新的一种理念,让我记的更加牢固。
实验四数值微积分实验报告

实验四数值微积分实验报告实验四:数值微积分实验目的:1. 熟悉数值微积分的基本概念和方法;2. 学习使用Python进行数值积分和数值微分的计算;3. 掌握积分和微分的误差分析。
实验仪器:计算机、Python编程环境实验原理:1. 数值微积分是一种使用数值近似计算积分和微分的方法,适用于无法用解析方法求解的函数,或是为了简化计算过程而采用的方法。
2. 数值积分的常用方法有矩形法、梯形法和辛普森法等。
其中,矩形法是通过将区间分成若干小矩形来近似计算积分值;梯形法是通过将区间分成若干小梯形来近似计算积分值;辛普森法是通过将区间分成若干小曲线来近似计算积分值。
3. 数值微分的常用方法有中心差分法和向前差分法等。
其中,中心差分法是通过用相邻两点的斜率的平均值来近似计算导数值;向前差分法是通过用当前点和下一个点的斜率来近似计算导数值。
实验步骤:1. 导入Python所需的库和模块;2. 编写函数f(x),表示待求解的函数;3. 编写函数rectangular_rule(f, a, b, n),实现矩形法求积分;4. 编写函数trapezoidal_rule(f, a, b, n),实现梯形法求积分;5. 编写函数simpsons_rule(f, a, b, n),实现辛普森法求积分;6. 编写函数central_difference(f, x, h),实现中心差分法求导数;7. 编写函数forward_difference(f, x, h),实现向前差分法求导数;8. 调用以上函数,分别计算给定函数的积分和导数,并对结果进行误差分析;9. 打印输出实验结果。
实验结果:给定函数f(x):f(x) = x^3 + 2x^2 - 3x + 1使用矩形法计算积分,取n=1000,得到积分值为:-1.155使用梯形法计算积分,取n=1000,得到积分值为:-1.156使用辛普森法计算积分,取n=1000,得到积分值为:-1.155使用中心差分法计算导数,取x=1.0,h=0.001,得到导数值为:6.0使用向前差分法计算导数,取x=1.0,h=0.001,得到导数值为:4.0实验结论:1. 数值微积分是一种有效的数值计算方法,适用于无法用解析方法求解的函数;2. 在积分计算中,不同的数值积分方法会得到略有不同的结果,但结果误差一般很小;3. 在数值微分中,中心差分法的结果更加精确,但计算量较大;4. 数值微积分的误差分析是一个重要的环节,需要对结果进行误差评估和控制。
数值积分实验报告

数值积分实验报告数值积分实验报告导言:数值积分是数学中的一个重要概念,它在实际应用中具有广泛的意义。
本实验旨在通过数值积分方法,探索如何近似计算函数的积分值,并对结果进行分析和比较。
一、实验目的本实验的主要目的有以下几点:1. 了解数值积分的基本概念和原理;2. 掌握常见的数值积分方法,如矩形法、梯形法和辛普森法;3. 进行实际函数的数值积分计算,并与解析解进行对比。
二、实验原理1. 数值积分的基本概念数值积分是一种通过将函数曲线下的面积近似分解为多个小矩形、梯形或抛物线的面积之和,从而计算函数积分值的方法。
常见的数值积分方法有矩形法、梯形法和辛普森法。
2. 矩形法矩形法是一种简单的数值积分方法,它将函数曲线下的面积近似为多个矩形的面积之和。
常见的矩形法有左矩形法、右矩形法和中矩形法。
3. 梯形法梯形法是一种更精确的数值积分方法,它将函数曲线下的面积近似为多个梯形的面积之和。
梯形法的计算公式为:积分值≈ (b-a) * (f(a) + f(b)) / 2,其中a和b为积分区间的上下限。
4. 辛普森法辛普森法是一种更加精确的数值积分方法,它将函数曲线下的面积近似为多个抛物线的面积之和。
辛普森法的计算公式为:积分值≈ (b-a) * (f(a) +4f((a+b)/2) + f(b)) / 6。
三、实验步骤1. 确定积分区间和函数表达式;2. 根据所选的数值积分方法,编写相应的计算代码;3. 运行代码,得到数值积分的结果;4. 将数值积分的结果与解析解进行对比,并分析误差。
四、实验结果与分析在本次实验中,我们选择了函数 f(x) = x^2 在区间 [0, 1] 上进行积分计算。
根据不同的数值积分方法,得到的结果如下:1. 矩形法:- 左矩形法:积分值≈ 0.25- 右矩形法:积分值≈ 0.5- 中矩形法:积分值≈ 0.3752. 梯形法:积分值≈ 0.3753. 辛普森法:积分值≈ 0.3333与解析解进行对比,我们可以发现不同的数值积分方法得到的结果与解析解(积分值为 1/3)存在一定的误差。
数值分析积分实验报告(3篇)

第1篇一、实验目的本次实验旨在通过数值分析的方法,研究几种常见的数值积分方法,包括梯形法、辛普森法、复化梯形法和龙贝格法,并比较它们在计算精度和效率上的差异。
通过实验,加深对数值积分理论和方法的理解,提高编程能力和实际问题解决能力。
二、实验内容1. 梯形法梯形法是一种基本的数值积分方法,通过将积分区间分割成若干个梯形,计算梯形面积之和来近似积分值。
实验中,我们选取了几个不同的函数,对积分区间进行划分,计算积分近似值,并与实际积分值进行比较。
2. 辛普森法辛普森法是另一种常见的数值积分方法,它通过将积分区间分割成若干个等距的区间,在每个区间上使用二次多项式进行插值,然后计算多项式与x轴围成的面积之和来近似积分值。
实验中,我们对比了辛普森法和梯形法的计算结果,分析了它们的精度差异。
3. 复化梯形法复化梯形法是对梯形法的一种改进,通过将积分区间分割成多个小区间,在每个小区间上使用梯形法进行积分,然后计算所有小区间积分值的和来近似积分值。
实验中,我们对比了复化梯形法和辛普森法的计算结果,分析了它们的精度和效率。
4. 龙贝格法龙贝格法是一种通过外推加速提高计算精度的数值积分方法。
它通过比较使用不同点数(n和2n)的积分结果,得到更高精度的积分结果。
实验中,我们使用龙贝格法对几个函数进行积分,并与其他方法进行了比较。
三、实验步骤1. 编写程序实现梯形法、辛普森法、复化梯形法和龙贝格法。
2. 选取几个不同的函数,对积分区间进行划分。
3. 使用不同方法计算积分近似值,并与实际积分值进行比较。
4. 分析不同方法的精度和效率。
四、实验结果与分析1. 梯形法梯形法在计算精度上相对较低,但当积分区间划分足够细时,其计算结果可以接近实际积分值。
2. 辛普森法辛普森法在计算精度上优于梯形法,但当积分区间划分较细时,计算量较大。
3. 复化梯形法复化梯形法在计算精度上与辛普森法相当,但计算量较小。
4. 龙贝格法龙贝格法在计算精度上优于复化梯形法,且计算量相对较小。
实验四__数值积分[1]
![实验四__数值积分[1]](https://img.taocdn.com/s3/m/033faa79a417866fb84a8e1a.png)
实验四 数值积分
一、实验目的
了解并熟悉梯形公式、牛顿-科特斯公式、复合梯形公式、复合辛普森公式、以及高斯公式等常用的数值积分方法。
通过数值实验理解这些方法的优缺点;熟悉这些方法的程序编制。
二、实验内容
编写复合梯形公式、复合辛普森公式、高斯列让德求积公式的程序,并通过数值方法比较这些积分公式.
三、实验要求
熟悉各种积分公式的程序编制;通过数值方法求一些函数的积分,比较各种积分公式,得到相应的结论。
四、实验设备
装有matlab 等程序语言的计算机
五、实验步骤
1. 编写复合梯形公式、复合辛普森公式、高斯列让德公式的程序代码;
2.
用所编写的程序计算积分0xdx ⎰,1
0sin x dx x ⎰. 3. 从计算量、计算精度、计算能力等方面比较这些求积公式, 得出结论。
五、实验原理
复合梯形公式:
121/20
1()22n n n n k k h T T f x -+==+∑
称为复化辛普森公式. 记 1122110
[()2()4()()]3n n n k k k k h S f a f x f x f b --+===+++∑∑
及格:用复合梯形公式、复合辛普森公式的程序求出2中两个函数的积分良好:完成及格内容,并用高斯列让德公式的程序求出2中两个函数的积分优秀:程序具有较好交互性。
从不同方面体现着三种方法的优劣或者特点!。
实验二 数值积分实验

实验二数值积分实验一. 实验目的(1)熟悉数值积分与数值微分方法的基本思想,加深对数值积分与数值微分方法的理解。
(2)熟悉Matlab编程环境,利用Matlab实现具体的数值积分与数值微分方法。
二. 实验要求用Matlab软件实现复化梯形方法、复化辛甫生方法、龙贝格方法和高斯公式的相应算法,并用实例在计算机上计算。
三.实验内容1. 实验题目已知x(-+=的数据表)1xef x4sin Array分别编写用复化梯形法、复化辛甫生公法、龙贝格法、三点高斯法求积分⎰=10)(dxfIx近似值的计算机程序。
2. 设计思想1.复化Simpson公式:设计Simpson公式,即为设计含有3个节点(即为3阶精度)的Newton-Cotes 公式。
将区间划分为3等份,选取等分点作为求积节点构造求积公式,具有三阶精度的Simpson公式。
将区间[a,b]划分为n等分,步长为h=(b-a)/n,等分点xi=a+i*h,i=0,1,2,3…。
设计复化求积法,先用低阶求积公式求得每个子段上的积分值,然后再将它们累加求和,用各段积分之和作为所求积分的近似值。
即设计出复化Simpson公式。
2.复化梯形公式:将区间[a,b]划分为n等分,步长为h=(b-a)/n,等分点xi=a+i*h,i=0,1,2,3…。
设计复化求积法,先用低阶求积公式求得每个子段上的积分值,然后再将它们累加求和,用各段积分之和作为所求积分的近似值。
再根据梯形公式即可设计出复化梯形公式。
3.Romberg公式:再加工Cotes值。
将积分区间[a,b]划分为8等份,等分点xi=a+i*(b-a)/8,i=0,1,2…,8,则二分前后的Cotes值可求,再对求得的Cotes公式进行松弛,提高精度,设计出Romberg公式。
4.三点Gauss公式:根据Newton-Cotes公式,但对求积节点自由选择,适当选取待定参数使公式具有高精度,即设计出Gauss公式。
数值积分实验

实验8 数值积分实验实验类型:●验证性实验○综合性实验○设计性实验实验目的:进一步熟练掌握变步长数值积分算法,提高编程能力和解决定积分问题的实践技能。
实验内容:用龙贝格积分算法计算⎰102dxx实验原理龙贝格积分算法:生成j>=k 的近似积分结果逼近表,并以R(j+1,j+1)为最终解来逼近积分。
R(j,0)=T(j), j>=0,T(j)为区间逐次减半递推梯形求积分公式算出的结果;R(j,1)=S(j), j>=1,S(j)为区间逐次减半递推辛普森求积分公式算出的结果;R(j,2)=B(j), j>=2,B(j)为递推布尔求积分公式算出的结果;1 4)1 ,1()1,()1,(),(-----+-=kkjRkjRkjRkjR实验步骤1 要求上机实验前先编写出程序代码2 编辑录入程序3 调试程序并记录调试过程中出现的问题及修改程序的过程4 经反复调试后,运行程序并验证程序运行是否正确。
5 记录运行时的输入和输出。
实验总结:练习对龙贝格积分的应用,熟悉算法的编写;实验报告:根据实验情况和结果撰写并递交实验报告。
>> [R,quad,err,h]=roomber('f1',0,1,10,0.001)R =0.5000 0 0 0 00.3750 0.3333 0 0 00.3438 0.3333 0.3333 0 00.3359 0.3333 0.3333 0.3333 00.3340 0.3333 0.3333 0.3333 0.3333quad =0.3333err =h =0.0625参考程序function [R,quad,err,h]=roomber(f,a,b,n,tol)M=1;h=b-a;err=1;J=0;R=zeros(4,4);R(1,1)=h*(feval(f,a)+feval(f,b))/2;while((err>tol)&(J<n))|(J<4)J=J+1;h=h/2;s=0;for p=1:Mx=a+h*(2*p-1);s=s+feval(f,x);endR(J+1,1)=R(J,1)/2+h*s;M=2*M;for k=1:JR(J+1,k+1)=R(J+1,k)+(R(J+1,k)-R(J,k))/(4^k-1); enderr=abs(R(J,J)-R(J+1,k+1));endquad=R(J+1,J+1);。