当前位置:
文档之家› 基于Mathematica的数值计算.ppt
基于Mathematica的数值计算.ppt
求m次多项式拟合程序
Clear[xi,xx,yi]; xi=Input["xi="] yi=Input["yi="] n=Length[xi]; h=ListPlot[Table[{xi[[i]],yi[[i]]},{i,1,n}],PlotStyle->PointSize[0.04]] m=Input["多项式次数m="] s=Table[Sum[xi[[k]]^i,{k,1,n}],{i,0,2m}]; a=Table[s[[i+j-1]],{i,1,m+1},{j,1,m+1}]; Print["a=",MatrixForm[a]]; b=Table[Sum[xi[[k]]^i*yi[[k]],{k,1,n}],{i,0,m}]; Print["b=",MatrixForm[b]]; xx=Table[x[i],{i,1,m+1}]; g=Solve[a.xx==b,xx]; fa=Sum[x[i]*t^(i-1),{i,1,m+1}]/.g[[1]]; p=fa//N p1=Plot[p,{t,xi[[1]],xi[[n]]},DisplayFunction->Identity]; Show[{p1,h},DisplayFunction->$DisplayFunction];
程序中变量说明
xi:存放拟合基点{x0 , x1, ... , xn } yi: 存放对应函数值{y0 , y1 , … , yn} m: 存放拟合多项式次数 a: 存放正规方程组系数矩阵 b: 存放正规方程组常数项 p: 存放m次拟合多项式 h: 存放散点图 p1:存放拟合函数图形 xx:定义正规方程组变量,存放m次拟合多项式的系数 注:语句s=Table[Sum[xi[[k]]^i,{k,1,n}],{i,0,2m}]、
第九讲 数值计算
6.1 求近似函数 • 在生产和实验中, 人们经常遇到需要通过某个未知的函数
f(x)在有限个给定点的函数值:{xi, yi}, i=1,2,…., n, 这里 f(xi) = yi 去获得函数f(x)的近似函数(x), 求近 似函数(x)的方法主要有拟合方法和插值方法。
6.1.1 曲线拟合 • 曲线拟合主要用来求一元近似函数, 它是根据最小二乘原
Mathematica曲线拟合的一般形式为: Fit[{数据点集合}, {拟合基函数集合}, 自变量名]
具体的拟合命令有: 命令形式1:Fit[{{x1,y1},{x2,y2},...,{xn,yn}},{ 0, 1, 2,…, m },x] 功能:根据数据点集{{x1,y1},{x2,y2},...,{xn,yn}}求出具有拟合函数为
解:执行m次多项式拟合程序后,在输入的两 个窗口中按提示分别输入
{1,3,4,5,6,7,8,9,10},{10,5,4,2,1,1,2,3,4}
每次输入后用鼠标点击窗口的“OK”按扭,计 算机在屏幕上画出散点图。
由于该散点图具有2次多项式形状,因 此在确定选择多项式次数窗口输入2, 按OK”按扭后得如下输出结果。
a= 9 53 381
53 381 3017
381 3017 25317
b=32
147
1025 13.4597 - 3.60531 t + 0.267571 t2
a=Table[s[[i+j-1]],{i,1,m+1},{j,1,m+1}]、 b=Table[Sum[xi[[k]]^i*yi[[k]],{k,1,n}],{i,0,m}]是用简化
的正规方程组编程的。
例1.已知一组实验数据 x 1 3 4 5 6 7 8 9 10 f(x) 10 5 4 2 1 1 2 3 4 用多项式拟合求其拟合曲线。
理的意义下获得近似函数的, 此近似函数具有在数据点处的 误差平方和最小的特点。记函数集合:
M=Span[0, 1, 2,…, m]= {(x)|(x)= a0 0(x)+a11(x)+…+amm(x), ai R}
• 称集合M为函数0, 1, 2,…, m张成的空间,m+1个函 数0(x), 1(x), 2(x),…, m(x)称为拟合基函数集合, 它们都是已知的函数。
(x)= a 0 0(x)+a11(x)+…+a mm(x) 形式的近似函数(x)
命令形式2:Fit[{y1,y2,...,yn},{ 0, 1, 2,…, m },x] 功能:根据数据点集{{1,y1},{2,y2},...,{n,yn}}求出具有拟合函数为
(x)= a 0 0(x)+a11(x)+…+a mm(x) 形式的近似函数(x)
命令形式3:Fit[{{x1,y1},{x2,y2},...,{xn, yn}}, Table[x^i,{i,0,m}] ,x] 功能:根据数据点集{{x1,y1},{x2,y2},...,{xn,yn}}求出拟合函数为m次多
项式的近似函数(x) =a 0 +a1x+ a2x2 +…+a mx m
说明:本程序用于求m次多项式拟合。 程序执行后,按要求通过键盘输入拟 合基点xi:{x0 , x1, ... , xn }、对应函数 值yi:{ y0 , y1 , … , yn }后,计算机给 出散点图和请求输入拟合多项式次数
的窗口,操作者可以根据散点图确定
拟合多项式的次数通过键盘输入,程
序即可给出对应的正规方程组系数矩 阵a、常数项b、m次拟合多项式和由 拟合函数图形和散点图画在一起;1个拟合点: (xi, yi),i=0,1,…,n 根据散点图确定拟合多项式的次数m 计算相应正规线性方程组的系数和右端项 解正规正规线性方程组,得解:a0*,a1*,…,a
m* 写出拟合多项式*(x)= a0*+ a1*x+
a2*x2+ …+ am*xm