实验4_数值积分与数值微分
- 格式:doc
- 大小:45.50 KB
- 文档页数:10
数值微分与数值积分数值微分与数值积分是现代计算机科学中非常重要的数学工具。
它们可以用来处理各种研究。
在本文中,我们将讨论这两种方法的基础原理,以及它们在不同领域中的应用。
什么是数值微分?数值微分是指对给定函数进行求导的一种数值方法。
在实际应用中,函数的导数通常很难求得解析解,这时需要使用数值微分的方法来进行近似计算。
数值微分通常是通过在函数的某个点进行差分计算来完成的。
考虑一个函数$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$太大时,我们会失去一些重要的信息,如函数的局部斜率。
第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 数值积分的基本概念实际问题当中常常需要计算定积分。
在微积分中,我们熟知,牛顿-莱布尼兹公式是计算定积分的一种有效工具,在理论和实际计算上有很大作用。
对定积分()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)。
数值微分与数值积分数值微分和数值积分是数值分析中两个重要的概念和技术。
它们在数学与工程领域中都有着广泛的应用。
本文将介绍数值微分和数值积分的概念、原理和应用。
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)梯形法是一种更加准确的数值积分方法,它利用多个梯形来逼近曲线下的面积。
数值分析中的数值微分与数值积分数值分析是一门重要的数学分支,用于研究如何使用计算机来求解各种数学问题。
数值微分和数值积分是数值分析中的两个基本概念,它们在科学计算和工程应用中具有广泛的应用。
一、数值微分数值微分是通过数值方法来近似计算函数的导数。
在实际计算中,往往很难直接求得函数的导数表达式,这时候数值微分方法就派上用场了。
1. 前向差分公式前向差分公式是最简单的数值微分方法之一,它基于导数的定义,用函数值的差商来近似计算导数。
假设函数f(x)在点x0处可导,则其导数f'(x0)可以近似表示为:f'(x0) ≈ (f(x0 + h) - f(x0)) / h其中h是一个足够小的正数,通常称为步长。
通过取不同的步长h,可以得到不同精度的数值微分结果。
2. 中心差分公式中心差分公式是数值微分中较为常用的方法,它利用了函数值的前向和后向差商来近似计算导数。
假设函数f(x)在点x0处可导,则其导数f'(x0)可以近似表示为:f'(x0) ≈ (f(x0 + h) - f(x0 - h)) / (2h)与前向差分公式相比,中心差分公式的精度更高,但计算量稍大一些。
二、数值积分数值积分是通过数值方法来近似计算函数在某个区间上的定积分值。
定积分在数学、物理等领域中具有广泛的应用,尤其是对于无法用解析方法求解的积分问题,数值积分提供了可行的解决办法。
1. 矩形法则矩形法则是最简单的数值积分方法之一,它将函数在积分区间上分成若干个小矩形,然后计算这些小矩形的面积之和。
假设函数f(x)在区间[a, b]上积分,则其定积分值可以近似表示为:∫[a,b] f(x)dx ≈ (b - a) * f(x)其中x是[a, b]上的随机点。
2. 梯形法则梯形法则是数值积分中较常用的方法,它将函数在积分区间上分成若干个小梯形,然后计算这些小梯形的面积之和。
假设函数f(x)在区间[a, b]上积分,则其定积分值可以近似表示为:∫[a,b] f(x)dx ≈ (b - a) * (f(a) + f(b)) / 2梯形法则的精度要比矩形法则要高一些。
第四章 数值积分与数值微分1.确定下列求积公式中的特定参数,使其代数精度尽量高,并指明所构造出的求积公式所具有的代数精度: 解:求解求积公式的代数精度时,应根据代数精度的定义,即求积公式对于次数不超过m 的多项式均能准确地成立,但对于m+1次多项式就不准确成立,进行验证性求解。
(1)若101(1)()()(0)()hhf x dx A f h A f A f h --≈-++⎰令()1f x =,则 令()f x x =,则 令2()f x x =,则 从而解得 令3()f x x =,则 故101()()(0)()hhf x dx A f h A f A f h --=-++⎰成立。
令4()f x x =,则 故此时, 故101()()(0)()hhf x dx A f h A f A f h --≈-++⎰具有3次代数精度。
(2)若21012()()(0)()hhf x dx A f h A f A f h --≈-++⎰令()1f x =,则 令()f x x =,则 令2()f x x =,则 从而解得 令3()f x x =,则 故21012()()(0)()hhf x dx A f h A f A f h --=-++⎰成立。
令4()f x x =,则 故此时, 因此,具有3次代数精度。
(3)若1121()[(1)2()3()]/3f x dx f f x f x -≈-++⎰令()1f x =,则 令()f x x =,则 令2()f x x =,则 从而解得120.28990.5266x x =-⎧⎨=⎩或120.68990.1266x x =⎧⎨=⎩ 令3()f x x =,则 故1121()[(1)2()3()]/3f x dx f f x f x -=-++⎰不成立。
因此,原求积公式具有2次代数精度。
(4)若20()[(0)()]/2[(0)()]hf x dx h f f h ah f f h ''≈++-⎰令()1f x =,则 令()f x x =,则 令2()f x x =,则 故有令3()f x x =,则 令4()f x x =,则 故此时, 因此,21()[(0)()]/2[(0)()]12hf x dx h f f h h f f h ''≈++-⎰具有3次代数精度。
页脚内容1实验四 数值积分与数值微分专业班级:信计131班 姓名:段雨博 学号:2013014907 一、实验目的1、熟悉matlab 编程。
2、学习数值积分程序设计算法。
3、通过上机进一步领悟用复合梯形、复合辛普森公式,以及用龙贝格求积方法计算积分的原理。
二、实验题目 P1371、用不同数值方法计算积分049xdx =-⎰。
(1)取不同的步长h .分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h 的函数,并与积分精确值比较两个公式的精度,是否存在一个最小的h ,使得精度不能再被改善?(2)用龙贝格求积计算完成问题(1)。
三、实验原理与理论基础1.1复合梯形公式及其复合辛普森求解[]()()()11101()()222n n n k k k k k h h T f x f x f a f x f b --+==⎡⎤=+=++⎢⎥⎣⎦∑∑误差关于h 的函数:()()212n b a R fh f η-''=-页脚内容2复合辛普森公式:()()()()111/201426n n n k k k k h S f a f x f x f b --+==⎡⎤=+++⎢⎥⎣⎦∑∑误差关于h 的函数:()()441802n n b a h R f I S f η-⎛⎫=-=- ⎪⎝⎭1.2龙贝格求积算法:龙贝格求积公式是梯形法的递推化,也称为逐次分半加速法,它是在梯形公式、辛普森公式和柯特斯公式之间的关系的基础上,构造出一种计算积分的方法,同时它有在不断增加计算量的前提下提高误差的精度的特点。
计算过程如下:(1)取0,k h b a ==-,求:()()()[]()00.,.2hT f a f b k a b =+→⎡⎤⎣⎦令k 1记为区间的二分次数 (2)求梯形值02k b a T -⎛⎫⎪⎝⎭即按递推公式12102122n n n k k h T T f x -+=⎛⎫=+ ⎪⎝⎭∑计算0k T .(3)求加速值,按公式()()()111444141m m k k k mm m m m T T T +--=---逐个求出T 表的地k 行其余各元素()()1,2,,k j j T j k -=(4)若()()001k k T T ε--<(预先给定的精度),则终止计算,并取()()0;1k T I k k ≈+→否则令转(2)继续计算。
数值积分与数值微分数值积分和数值微分是数值计算中重要的概念和方法,它们在科学、工程和统计等领域有广泛的应用。
本文将介绍数值积分和数值微分的基本概念、原理和方法,并对其在实际问题中的应用进行讨论。
一、数值积分数值积分是求解定积分的数值近似值的方法。
定积分是函数在给定区间内的面积,表示为∫f(x)dx。
在实际计算中,由于很多函数的原函数求解十分困难或不可求得,因此需要借助数值积分方法来进行求解。
1.1 矩形法矩形法是最基本的数值积分方法之一。
它将积分区间等分为若干小区间,并在每个小区间上取一点,然后用这些小区间上的函数值的平均值来近似积分值。
具体而言,对于等分为n个小区间的积分,矩形法可以表示为:∫f(x)dx ≈ Δx * (f(x0) + f(x1) + ... + f(xn-1))其中,Δx为每个小区间的长度,xi为每个小区间上的取点。
矩形法的计算简单,但精度较低。
1.2 梯形法梯形法是另一种常用的数值积分方法,它通过用梯形面积来逼近积分值。
类似于矩形法,梯形法将积分区间等分为若干小区间,并在每个小区间上取两个点,然后用这些小区间上的梯形面积之和来逼近积分值。
具体而言,梯形法可以表示为:∫f(x)dx ≈ Δx/2 * (f(x0) + 2f(x1) + 2f(x2) + ... + 2f(xn-1) + f(xn))其中,Δx为每个小区间的长度,xi为每个小区间上的取点。
梯形法相对于矩形法有更高的精度,但计算复杂度也相应提高。
1.3 辛普森法则辛普森法则是一种更加精确的数值积分方法,它利用三次多项式来逼近积分值。
辛普森法则将积分区间等分为若干小区间,并在每个小区间上取三个点,然后通过构造一个三次多项式,利用多项式的积分近似面积来逼近积分值。
具体而言,辛普森法则可以表示为:∫f(x)dx ≈ Δx/3 * (f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + ... + 2f(xn-2) +4f(xn-1) + f(xn))其中,Δx为每个小区间的长度,xi为每个小区间上的取点。
数值分析实验报告四
数值积分与数值微分实验(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。