(完整版)Mathematica数值分析和数值计算

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五章 数值分析和数值计算

1. 如何求插值多项式

给定n 个点( x i ,y i ),(i=1,2,…,n),构造一个次数不超过n-1的多项式函数f(x),使得f(x i )=y i ,则称f(x)为拉格朗日插值多项式。

可以证明该多项式函数由公式

))...()(())...()((...)

)...()(())...()(())...()(())...()((1211212321231113121321--------++------+------=n n n n n n n n n n x x x x x x x x x x x x y x x x x x x x x x x x x y x x x x x x x x x x x x y y

唯一给定。

Mathematica 提供了根据插值点数据计算拉格朗日插值多项式的函数InterpolatingPolynomial ,下面是其调用格式:

InterpolatingPolynomial[data,var]

作出以data 为插值点数据,以var 为变量名的插值多项式。

例:

在多数情况下,我们构造插值函数的目的在于计算函数f(x)的值,而并不在意插值多项式的具体表示形式。对于拉格朗日插值多项式,当n 较大时,得到的高次插值多项式由于截断误差和舍入误差的影响,往往误差较大。此时在实际应用中,一般采用分段插值。

Mathematica 提供了分段插值函数Interpolation ,其使用格式为:

Interpolation[data,InterpolationOrder->n]

这里InterpolationOrder->n 指定插值多项式的次数,默认值为3。此外数据data 中还可以包括插值点处的导数,格式为:{{x1,{y1,dy1}},{x2,{y2,dy2}},…}

例:已知f(0)=0,f(1)=2,f’(0)=1,f’(1)=1,求3次插值多项式f(x),并计算f(0.72)和画出函数f(x)在[0,1]区间上的图形。

注:虽然Interpolation函数生成一个没有显式表达式的函数,但我们可以计算该函数在某点的值,也可以画出它在插值区间内的图形。

2.如何进行曲线拟合

曲线拟合是根据已知的某函数在某些点处的函数值,按照最小二乘法的原理,得到该函数的近似函数的过程。一般来说,拟合的过程是先选定一组函数,通过它们的线性组合来近似原函数。在Mathematica中,使用函数Fit来进行拟合,其一般使用格式是:Fit[拟合数据,用于拟合的函数列表,变量]

拟合函数形式意义

Fit[data,{1,x},x] 作线性拟合a+bx

Fit[data,{1,x,x^2},x] 构造二次拟合a+bx+cx2

Fit[data,Table[x^i,{i,0,n}],x] n次多项式拟合

Exp[Fit[Log[data],{1,x},x]] 拟合曲线为e a+bx

例:

3.如何求解超越方程

Solve和FindRoot函数都能求方程的根,它们之间的区别在于,Solve主要用于求多项式方程或方程组的所有根,而FindRoot则给出任意方程或方程组的一个根(注意不是全部),FindRoot的求根方法是牛顿切线法(或弦截法),其使用格式为:

函数意义

FindRoot[方程,{x,x0}] 从x=x0开始,计算方程的一个数值解

FindRoot[方程,{x,x0,xmin,xmax}] 求根区间范围(xmin,xmax)

FindRoot[{方程组},{x,x0},{y,y0},…] 计算方程组的一个数值解

注:初值x0在一些情况下对寻找根是有影响的,如果找不到,请改变初值再试。初值的选取可以结合所求函数的图形来分析。

例:

4.如何求函数的极小值

函数的极小值用函数FindMinimum计算,和FindRoot一样,该函数也只能给出初值附

函数意义

FindMinimum[f,{x,x0}] 以x=x0为起始点计算f的一个局部极小值

FindMinimum[f,{x,{xs,x0,x1}}] xs为起始点,在区间(x0,x1)上求f的极小值FindMinimum[f,{x,x0},{y,y0},…] 计算多元函数的极值

5.如何求常微分方程的数值解

求常微分方程或方程组的数值解的函数是NDSolve,由于是求数值解,所以初始条件也必须一起给出,和方程列在一起。函数使用的一般形式为:

NDSolve[{方程1,方程2,…},y[x],{x,xmin,xmax}]

对常微分方程,求函数y关于自变量x在区间[xmin,xmax]内的数值解;

NDSolve[{方程1,方程2,…},{y1[x],y2[x],…},{x,xmin,xmax}] 对常微分方程组,求函数y1,y2,…关于自变量x在区间[xmin,xmax]内的数值解;例:(1)求解y’=x2+y2,y(0)=0,并计算y(1)和画出y(x)的图形

(2)求解方程组x’(t)=-y(t)-x2(t),y’(t)=2x(t)-y(t),x(0)=y(0)=1

解:

6.线性规划

函数ConstrainedMax和ConstrainedMin可求解任意线性规划在限定区域上的目标函数的最大值或最小值问题。

其使用格式为:

ConstrainedMin[目标函数,{限定区域},{变量列表}]

ConstrainedMax[目标函数,{限定区域},{变量列表}]

例:求解线性规划问题

max f=3x+2y-1

s.t. 0<=x<=1

0<=y<=2

解:

注:函数中的变量限于取非负值,对不等式也是约定可以取等号;关于这方面的内容可以参考有关线性规划方面的书籍。

习题

1.已知函数f(x)过点(-1,3),(0,0.5),(0.5,0),(1,1),试求拉格郎日插值多项式并画出其图形;2

X 19 23 30 35 40

Y 19.0 28.5 47.0 68.2 90.0 试对以上数据作出形如y=a+bx的曲线拟合;

3.求函数y=sinxcosx在x=0.5附近的极小值;

4.用FindRoot解方程cos3x+2cosx=0

5.求微分方程y’=y2+x3,y(0)=0.5在区间[-2,2]上的数值解并画出其图形;

6.解下列线性规划问题

min f=2x+3y+4z

s.t. x+2y-z>10

x+y-z>=60

y+2z>12

x>0,y>0,z>1

相关文档
最新文档