实验4_数值积分与数值微分
数值分析实验报告四
数值积分与数值微分实验(2学时)
一 实验目的
1.掌握复化的梯形公式、Simpson 公式等牛顿-柯特斯公式计算积分。
2. 掌握数值微分的计算方法。
二 实验内容
1. 用复化梯形公式计算积分。
⎰9
0dx x M=8
2. 用复化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.769514
2复化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.903139
3求导数值
用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:50
x=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:50
x=50.0处的二阶导数值-0.000164。
数值微分与数值积分
数值微分与数值积分数值微分与数值积分是现代计算机科学中非常重要的数学工具。
它们可以用来处理各种研究。
在本文中,我们将讨论这两种方法的基础原理,以及它们在不同领域中的应用。
什么是数值微分?数值微分是指对给定函数进行求导的一种数值方法。
在实际应用中,函数的导数通常很难求得解析解,这时需要使用数值微分的方法来进行近似计算。
数值微分通常是通过在函数的某个点进行差分计算来完成的。
考虑一个函数$f(x)$在某个点$x_0$进行微分的情况。
我们可以计算$f(x_0+h)$和$f(x_0-h)$,其中$h$是一个小的正数。
然后,我们可以计算$[f(x_0+h) - f(x_0-h)]/2h$来得到$f'(x_0)$的近似值。
数值微分的应用非常广泛。
在科学和工程领域中,它通常用于计算物理量相关的导数。
例如,流体力学中的速度梯度、量子力学中的波函数导数,都可以使用数值微分进行近似计算。
此外,在金融领域中,数值微分也可用于计算期权价格等任意变量导数的近似解。
什么是数值积分?数值积分是指对给定函数进行积分的一种数值方法。
与数值微分类似,函数的积分通常很难求得解析解,而不得不使用数值积分的方法来近似计算。
在数值积分中,我们通常使用数值积分公式来计算定义在一个区间$[a,b]$上的函数(如果积分问题是无限积分,我们需要进行变形,将其转化为有限积分问题)。
数值积分公式通常基于插值方法,即将函数转化为一个多项式,并对多项式进行积分。
数值积分也应用广泛。
在科学和工程领域中,它通常用于计算面积、物质质量,以及探测信号的峰值等。
在金融领域中,数值积分也可用于计算期权定价公式的近似解。
数值微分和数值积分的误差分析在应用数值微分和数值积分时,误差是一个重要的考虑因素。
误差源可以来自于采样、采样噪声、近似方法等。
通常,我们使用误差分析来评估误差大小。
数值微分的误差通常归因于选取的$h$值。
当$h$太大时,我们会失去一些重要的信息,如函数的局部斜率。
数值分析-第4章 数值积分和数值微分
A0+A1=2 A0x0+A1x1=0 A0x02+A1x12=2/3 A0x03+A1x13=0
A0 A1 1 解得: 1 x 0 x1 3
求积公式为
1 1 1 f ( x)dx f ( ) f ( ) 3 3
x f(x)
数值分析
1 4
2 4.5
3 6
4 8
5 8.5
1
一、数值积分的基本概念 求积节点 数值积分定义如下:是离散点上的函数值的线性组合
I [ f ] f ( x)dx I n [ f ] Ai f ( xi )
b a i 0 n
称为数值积分公式
称为求积系数,与f (x)无关,与积分区间和求积节点有关
b a
Rn ( x) dx
定理:形如 Ak f ( xk ) 的求积公式至少有 n 次代数精度
A 该公式为插值型(即: k a l k ( x)dx )
数值分析
b
5
例1 试确定参数A0,A1,A2,使求积公式
1 f ( x)dx A0 f (1) A1 f (0) A2 f (1)
证明 因为Simpson公式对不高于三次的多项式精确成立。即
b
a
p 2 ( x)dx
ba ab [ p 2 (a) 4 p 2 ( ) p 2 (b)] 6 2
构造三次多项式H3(x),使满足 H3(a)=(a) ,H3(b)=(b),
H 3 (( a b) / 2) f (( a b) / 2), H 3 (( a b) / 2) f (( a b) / 2), 这时插值误差为
1
数值分析(李庆杨第四版)Cht4 数值积分和数值微分
1in
设f (xk )有误差k , 即f (xk ) ~fk k (k 0,1,,n), 则有
| In ( f ) In ( ~f ) |
n
wk
[
f
(
xk
)
~fk
].
定义3
若
0,
k 0
0,只要
f (xk )
~fk
(k
0,,n), 就有
| In ( f ) In ( ~f ) |
n
其中系数l (l 1,2,)与h无关.
T
( h) 2
I
1
h2 4
2
h4 16
l
h 2l
2
.
T1(h)
4T (h) T (h)
2
3
I
1h4 2h6 .
T1( h2)
I
1
h4 16
2
h6 64
.
T2 (h)
16T1(
h) 2
T1(h)
15
I
1h6
2h8
.
( 4.7) ( 4.8) ( 4.9)
1 8
2
1 3
0.000434 .
RS
I
S4
1 2880
1 4
4
1 5
0.27110-6.
作业 P159, 6.
§4 龙贝格求积算法
一、梯形公式的递推化(变步长求积法)
把区间[a,b]作n等分得n个小区间[xi , xi1],
h ba,则 n
复合梯形公式
Tn
n1h [
i02
f
(xi )
具有相应的收敛性和稳 定性.
复合柯特斯求积公式
1_数值分析4-数值积分与微分
回忆定积分的定义
b
I f (x)dx lim In,
a
n
n
In
f
(k
)
b
n
a
k 1
n充分大时In就是I的数值积分
各种数值积分方法研究的是
k 如何取值,区间 (a,b)如何划分, 使得既能保证一定精度,计算量又小。
(计算功效:算得准,算得快)
5
数值积分
y
1.梯形公式
h
Tn
h
k 1
fk
2 ( f0
fn )
b
f (x)dx
a
b
R( f ,Tn ) I Tn f (x)dx Tn
a
梯形公式在每小段上是用线性插值函数T(x)代替 f(x)
f (x) T(x)
f
(k
2
)
(
x
xk
)(x
xk
1
),
k (xk , xk1)
(
f0
fn)
(3)
k 1
非等距分割梯形公式
Tn
n1 k 0
fk
fk 1 2
(xk 1
xk
)
(4)
8
数值积分 2.辛普森(Simpson)公式
(抛物线公式)
梯形公式相当于用分段线性插值函数代替 f (x)
提高精度
分段二次插值函数
抛物线 公式
y
y=f(x)
每段要用相邻两小区间
数值积分
数值 积分
为什么要作数值积分
• 积分是重要的数学工具,是微分方程、概率 论等的基础;在实际问题中有直接应用。
数值计算基础实验报告(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库中的插值和拟合模块,实现了对数据的插值和拟合,并分析了拟合效果。
数值分析--第4章数值积分与数值微分[1]详解
第4章 数值积分与数值微分1 数值积分的基本概念实际问题当中常常需要计算定积分。
在微积分中,我们熟知,牛顿-莱布尼兹公式是计算定积分的一种有效工具,在理论和实际计算上有很大作用。
对定积分()ba I f x dx =⎰,若()f x 在区间[,]ab 上连续,且()f x 的原函数为()F x ,则可计算定积分()()()baf x dx F b F a =-⎰似乎问题已经解决,其实不然。
如1)()f x 是由测量或数值计算给出数据表时,Newton-Leibnitz 公式无法应用。
2)许多形式上很简单的函数,例如222sin 1(),sin ,cos ,,ln x x f x x x e x x-= 等等,它们的原函数不能用初等函数的有限形式表示。
3)即使有些被积函数的原函数能通过初等函数的有限形式表示,但应用牛顿—莱布尼兹公式计算,仍涉及大量的数值计算,还不如应用数值积分的方法来得方便,既节省工作量,又满足精度的要求。
例如下列积分241arc 1)arc 1)1dx tg tg C x ⎡⎤=+++-+⎣⎦+⎰ 对于上述这些情况,都要求建立定积分的近似计算方法—-数值积分法。
1。
1 数值求积分的基本思想根据以上所述,数值求积公式应该避免用原函数表示,而由被积函数的值决定.由积分中值定理:对()[,]f x C a b ∈,存在[,]a b ξ∈,有()()()baf x dx b a f ξ=-⎰表明,定积分所表示的曲边梯形的面积等于底为b a -而高为()f ξ的矩形面积(图4-1)。
问题在于点ξ的具体位置一般是不知道的,因而难以准确算出()f ξ。
我们将()f ξ称为区间[,]a b 上的平均高度。
这样,只要对平均高度()f ξ提供一种算法,相应地便获得一种数值求积分方法.如果我们用两端的算术平均作为平均高度()f ξ的近似值,这样导出的求积公式[()()]2b aT f a f b -=+ (4—1) 便是我们所熟悉的梯形公式(图4-2)。
《数值分析-李庆杨》第4章 数值积分与数值微分-文档资料
(a
b).得到的求积公式就是中矩形公式。再令
数
f (x) x2, 代入(1.4)式的第三式有
值
分 析 》
A0 x02
(b
a)( a
b)2 2
b
a 4
(a2
b2)
b x2dx 1 (b3 a3 ),
a
3
说明中矩形公式对f (x) x2不精确成立,故它的代数精确度为1.
当f(x)=x2时(1.4)式的第三个式子不成立,因为
b a (a2 b2 ) b x2dx 1 (b3 a3).
2
a
3
故梯形公式(1.1)的代数精确度为1.
第4章 数值积分与数值微分
在方程组(1.4)中如果节点xi及系数Ai都不确定,那么方 程组(1.4)是关于xi及Ai(i=0,1,…,n)的2n+2个参数的非线性方 程组。此方程组当n>1时求解是很困难的,但当n=0及n=1的 情形还可通过求解方程组(1.4)得到相应的求积公式。
练习 设有求积公式
1
1 f (x)dx A0 f (1) A1 f (0) A2 f (1)
试确定系数A0, A1, A2, 使上述求积公式的代数精度尽量高.
三、插值型求积公式
第4章 数值积分与数值微分
在n 1个互异节点a x0 x1 xn b上已知函数值f0,
A1
1(b a).于是得 2
数 值
I ( f ) b f ( x)dx b a [ f (a) f (b)]
a
2
分
析 这就是梯形公式(1.1),它表明利用线性方程组(1.4)推出的求积公式,
数值微分与数值积分
数值微分与数值积分数值微分和数值积分是数值分析中两个重要的概念和技术。
它们在数学与工程领域中都有着广泛的应用。
本文将介绍数值微分和数值积分的概念、原理和应用。
1. 数值微分数值微分是指通过数值计算方法来逼近函数的导数。
在实际计算中,我们常常需要求解某一函数在特定点的导数值,这时数值微分就能派上用场了。
一种常用的数值微分方法是有限差分法。
它基于函数在离给定点很近的两个点上的函数值来逼近导数。
我们可以通过选取合适的差分间距h来求得函数在该点的导数值。
有限差分法的一般形式可以表示为:f'(x) ≈ (f(x+h) - f(x))/h其中,f'(x)是函数f(x)在点x处的导数值,h是差分间距。
数值微分方法有很多种,比如前向差分、后向差分和中心差分等。
根据实际需求和计算精度的要求,我们可以选择合适的数值微分方法来进行计算。
2. 数值积分数值积分是指通过数值计算方法来近似计算函数的定积分。
在实际问题中,我们经常需要求解函数在某一区间上的积分值,而数值积分可以提供一个快速而准确的近似。
一种常见的数值积分方法是复合梯形法。
它将积分区间分割成若干个小区间,然后在每个小区间上应用梯形面积的计算公式。
最后将所有小区间上的梯形面积相加,即可得到整个积分区间上的积分值。
复合梯形法的一般形式可以表示为:∫[a, b] f(x)dx ≈ h/2 * [f(a) + 2∑(i=1 to n-1)f(x_i) + f(b)]其中,[a, b]是积分区间,h是分割的小区间宽度,n是划分的小区间个数,x_i表示第i个小区间的起始点。
除了复合梯形法,还有其他常用的数值积分方法,比如复合辛普森法、龙贝格积分法等。
根据被积函数的性质和计算精度要求,我们可以选择合适的数值积分方法来进行计算。
3. 数值微分和数值积分的应用数值微分和数值积分在科学研究和工程实践中具有广泛的应用。
以下是一些常见的应用领域:3.1 物理学在物理学中,我们经常需要对物体的位置、速度和加速度进行计算。
数值微分与数值积分的计算方法
数值微分与数值积分的计算方法数值微分和数值积分是数学中一种非常重要的方法。
在实际生活和科学研究中,很多情况下,需要对函数进行微分或积分的计算。
然而,由于很多函数的解析式很难或者根本不能求出,因此需要采用一些数值方法来近似计算。
本文将讨论数值微分和数值积分的计算方法。
一、数值微分在数值计算中,常常会遇到需要求函数在某个点处的导数的问题。
这时候,我们就需要用到数值微分。
数值微分主要有三种方法:前向差分、后向差分和中心差分。
(一)前向差分前向差分是一种用来计算函数在某个点处导数的方法。
其基本思想是求函数在当前点和向前一点的斜率,即:$$f'(x_i)=\frac{f(x_{i+1})-f(x_i)}{h}$$其中,$h$表示步长。
(二)后向差分后向差分是一种用来计算函数在某个点处导数的方法。
其基本思想是求函数在当前点和向后一点的斜率,即:$$f'(x_i)=\frac{f(x_i)-f(x_{i-1})}{h}$$(三)中心差分中心差分是一种用来计算函数在某个点处导数的方法。
其基本思想是求函数在当前点左右两个点的平均斜率,即:$$f'(x_i)=\frac{f(x_{i+1})-f(x_{i-1})}{2h}$$对于三种方法,其截断误差的阶分别为 $\mathcal{O}(h)$、$\mathcal{O}(h)$ 和 $\mathcal{O}(h^2)$。
二、数值积分数值积分是指用数值方法对某个函数在某一区间上的定积分进行近似计算的过程。
常见的数值积分方法有梯形法、辛普森法和龙贝格法。
下面将分别介绍这三种方法。
(一)梯形法梯形法是一种比较简单的数值积分方法。
其基本思想是将积分区间分成若干个小梯形,然后求出这些小梯形面积的和。
具体地,假设我们要对函数 $f(x)$ 在区间 $[a,b]$ 上进行积分,将该区间分成 $n$ 个小区间,步长为 $h=(b-a)/n$,则梯形法的计算公式为:$$\int_{a}^{b}f(x)dx\approx\frac{h}{2}\left[f(a)+2\sum_{i=1}^{n-1}f(a+ih)+f(b)\right]$$梯形法的截断误差的阶为 $\mathcal{O}(h^2)$。
数值分析中的数值微分与数值积分
数值分析中的数值微分与数值积分数值微分和数值积分是数值分析领域中两个重要的概念。
它们在计算机科学、工程学和物理学等领域中有广泛的应用。
本文将介绍数值微分和数值积分的概念、原理以及一些常用的方法和技巧。
一、数值微分数值微分是通过数值方法来计算函数的导数。
导数是描述函数变化率的工具,它在物理学、经济学和生物学等领域中具有重要的作用。
1. 前向差分法(Forward Difference)前向差分法是一种简单而常用的计算导数的方法。
它利用函数在某一点上的值与函数在该点附近的一个点上的值之间的差异来估计导数。
具体公式如下:f'(x) ≈ (f(x+h) - f(x))/h其中,h为步长,为了提高精度,需要选择足够小的步长。
2. 后向差分法(Backward Difference)后向差分法与前向差分法类似,不同之处在于它利用函数在某一点上的值与函数在该点附近的一个点上的值之间的差异来估计导数。
具体公式如下:f'(x) ≈ (f(x) - f(x-h))/h同样地,步长h需要选择足够小。
3. 中心差分法(Central Difference)中心差分法是一种更加准确的数值微分方法,它利用函数在某一点上的前后两个点的值来估计导数。
具体公式如下:f'(x) ≈ (f(x+h) - f(x-h))/(2h)中心差分法相对于前向差分法和后向差分法而言,具有更高的精度。
二、数值积分数值积分是通过数值方法来计算函数的积分。
积分在物理学、经济学和统计学等领域中起着重要的作用,它可以用来计算面积、体积以及概率等。
1. 矩形法(Rectangle Method)矩形法是一种简单的数值积分方法,它利用多个矩形来逼近曲线下的面积。
具体来说,将积分区间等分为若干子区间,然后在每个子区间上选择一个点作为高度,从而构造出多个矩形。
最后,将各个矩形的面积相加,即可得到近似的积分值。
2. 梯形法(Trapezoidal Method)梯形法是一种更加准确的数值积分方法,它利用多个梯形来逼近曲线下的面积。
