曲线拟合的数值计算方法实验

合集下载

曲线拟合问题的数值试验

曲线拟合问题的数值试验

曲线拟合问题的数值试验一、算法要求已知数据:x=5,y=1.OO29;x=1O,y=1.OO23;x=15,y=1.OOOO;x=2O,y=O.999O; x=25,y=O.9983; x=3O,y=O.9979; x=35,y=O.9978;x=4O,y=O.9981 x=45,y=O.9987 x=5O,y=O.9996;拟合多项式:P(X)=aO+a1x+a2x^2+•…+an x A n分别对n=2,3,4,5,6 进行数值计算,且根据各自偏差平方和分析拟合效果。

二、源代码及注释#include <stdio.h>#include <conio.h>#include <math.h>#include <process.h>#define N 1O//N 个点#define T 2 //T 次拟合#define W 1//权函数#define PRECISION O.OOOO1float pow_n(float a,int n){int i;if(n==O) return(1);float res=a;for(i=1;i<n;i++){ res*=a;// 自己相乘} return(res);// 返回 a 的平方}void mutiple(float a[][N],float b[][T+1],float c[][T+1]) {float res=O;int i,j,k;for(i=O;i<T+1;i++)for(j=O;j<T+1;j++){res=O;for(k=O;k<N;k++){res+=a[i][k]*b[k][j]; c[i][j]=res;// 返回ab 的内积} } } void matrix_trans(float a[][T+1],float b[][N]) { int i,j;for(i=0;i<N;i++){ for(j=0;j<T+1;j++){ b[j][i]=a[i][j];// 交换}}}void init(float x_y[][2],int n){int i;printf("请输入%d个已知点:\n",N);for(i=0;i<n;i++) { printf("(x%d y%d):",i,i);scanf("%f %f",&x_y[i][0],&x_y[i][1]);}}void get_A(float matrix_A[][T+1],float x_y[][2],int n) { int i,j; for(i=0;i<N;i++){ for(j=0;j<T+1;j++){matrix_A[i][j]=W*pow_n(x_y[i][0],j);// 获取输入矩阵}}}void print_array(float array[][T+1],int n){int i,j;for(i=0;i<n;i++) {for(j=0;j<T+1;j++){printf("%-g",array[i][j]);}printf("\n");}}void convert(float argu[][T+2],int n){int i,j,k,p,t;float rate,temp;for(i=1;i<n;i++){for(j=i;j<n;j++){ if(argu[i-1][i-1]==0){ for(p=i;p<n;p++){if(argu[p][i-1]!=0)break;}if(p==n){printf(" 方程组无解!\n");} for(t=0;t<n+1;t++){ temp=argu[i-1][t];argu[i-1][t]=argu[p][t]; argu[p][t]=temp;}} rate=argu[j][i-1]/argu[i-1][i-1]; for(k=i-1;k<n+1;k++){ argu[j][k]-=argu[i-1][k]*rate; if(fabs(argu[j][k])==PRECISION) argu[j][k]=0;}}}}void compute(float argu[][T+2],int n,float root[]) {float temp;for(i=n-1;i>=0;i--){ temp=argu[i][n];for(j=n-1;j>i;j--){temp-=argu[i][j]*root[j];}root[i]=temp/argu[i][i];}}void get_y(float trans_A[][N],float x_y[][2],float y[],int n){int i,j;float temp;for(i=0;i<n;i++){temp=0;for(j=0;j<N;j++){temp+=trans_A[i][j]*x_y[j][1];}y[i]=temp;}}void cons_formula(float coef_A[][T+1],float y[],float coef_form[][T+2]) {int i,j;for(i=0;i<T+1;i++){for(j=0;j<T+2;j++){if(j==T+1) coef_form[i][j]=y[i];elsecoef_form[i][j]=coef_A[i][j];}}}void print_root(float a[],int n){int i,j;printf("%d个点的%d次拟合的多项式系数为:\n",N,T);for(i=0;i<n;i++){printf("a[%d]=%g,",i+1,a[i]);}printf("\n");printf(" 拟合曲线方程为:\ny(x)=%g",a[0]);for(i=1;i<n;i++){printf(" + %g",a[i]);for(j=0;j<i;j++){printf("*X");}}printf("\n");}void process(){floatx_y[N][2],matrix_A[N][T+1],trans_A[T+1][N],coef_A[T+1][T+1],coef_formu[T+1][T+2 ], y[T+1],a[T+1];init(x_y,N);get_A(matrix_A,x_y,N);printf(" 矩阵 A 为:\n");print_array(matrix_A,N);matrix_trans(matrix_A,trans_A);mutiple(trans_A,matrix_A,coef_A);printf(" 法矩阵为:\n");print_array(coef_A,T+1);get_y(trans_A,x_y,y,T+1);cons_formula(coef_A,y,coef_formu);convert(coef_formu,T+1);compute(coef_formu,T+1,a);print_root(a,T+1);}void main(){ process();}三、调试:本程序在调试时,因为代码中的T声明是通过宏定义#define T 2,所以欲达到能对n=2,3,4,5,6切换的目的,还需程序员在代码中修改T的值四、计算结果如图:1.004d1.0021.001口099S0.93®0.957五、说明:本题用C++语言编程,用matlab作图,以此来使报告更加形象,直观。

曲线拟合的方法及过程

曲线拟合的方法及过程

一、课程设计题目: 对于函数 xex x f --=)(从00=x 开始,取步长1.0=h 的20个数据点,求五次最小二乘拟合多项式5522105)()()()(x x a x x a x x a a x P -++-+-+= 其中 ∑===1995.020i ix x 二、原理分析 (1)最小二乘法的提法当数据量大且由实验提供时,不宜要求近似曲线)(x y φ=严格地经过所有数据点),(i i y x ,亦即不应要求拟合函数)(x ϕ在i x 处的偏差(又称残差)i i i y x -=)(φδ(i=1,2,…,m)都严格的等于零,但是,为了使近似曲线能尽量反应所给数据点的变化趋势,要求偏差i δ适当的小还是必要的,达到这一目标的途径很多,例如,可以通过使最大偏差i δmax 最小来实现,也可以通过使偏差绝对值之和∑ii δ最小来实现……,考虑到计算方便等因素,通常用使得偏差平方和∑ii 2δ最小(成为最小二乘原则)来实现。

按最小二乘原则选择近似函数的方法称为最小二乘法。

用最小二乘法求近似函数的问题可以归结为:对于给定数据),(i i y x(i=1,2,…,m),要求在某个函数类Φ中寻求一个函数)(x *ϕ,使[][]21)(21*)()(min ∑∑=Φ∈=-=-mi iix mi iiy x y x ϕϕϕ(1-1) 其中)(x ϕ为函数类Φ中任意函数。

(1)确定函数类Φ,即确定)(x ϕ的形式。

这不是一个单纯的数学问题,还与其他领域的一些专业知识有关。

在数学上,通常的做法是将数据点),(i i y x 描绘在坐标纸上,然后根据这些点的分布情况来选择的)(x ϕ形式。

(2)球最小二乘法的解,即求满足条件(1-1)的近似函数)(x *ϕ。

(3)最小二乘法的实验原理 设)(x ϕ具有如下形式)(x ϕ=F),,,,10x a a a n ⋅⋅⋅( (1-2) 其中n<m, k a (k=0,1,…,n)是待定参数,求具有这种形式的最小二乘解的实质,就是要适当选择k a =*k a (k=0,1,…,n),使相应的函数 ),,,,()(**1*0*x a a a x n ⋅⋅⋅=ϕ (1-3) 满足条件(1-1),也就是说,点),,,(**1*0n a a a ⋅⋅⋅是多元函数 []211010),,,,),,,∑=-⋅⋅⋅=⋅⋅⋅mi i i n n y x a a a F a a a s ((的极小点,从而使**1*0,,,n a a a ⋅⋅⋅满足方程组0S=∂∂ka ,(k=0,1,…,n) (1-4) 因此,可以通过解上述方程组(称为法方程组)来求取*k a (k=0,1,…,n),以便获得最小二乘解。

曲线拟合实验报告[优秀范文5篇]

曲线拟合实验报告[优秀范文5篇]

曲线拟合实验报告[优秀范文5篇]第一篇:曲线拟合实验报告数值分析课程设计报告学生姓名学生学号所在班级指导教师一、课程设计名称函数逼近与曲线拟合二、课程设计目的及要求实验目的: ⑴学会用最小二乘法求拟合数据的多项式,并应用算法于实际问题。

⑵学会基本的矩阵运算,注意点乘与叉乘的区别。

实验要求: ⑴编写程序用最小二乘法求拟合数据的多项式,并求平方误差,做出离散函数与拟合函数的图形;⑵用MATLAB 的内部函数polyfit 求解上面最小二乘法曲线拟合多项式的系数及平方误差,并用MATLAB的内部函数plot作出其图形,并与(1)结果进行比较。

三、课程设计中的算法描述用最小二乘法多项式曲线拟合,根据给定的数据点,并不要求这条曲线精确的经过这些点,而就是拟合曲线无限逼近离散点所形成的数据曲线。

思路分析 : 从整体上考虑近似函数)(x p 同所给数据点)(i iy x , 误差i i iy x p r -=)(的大小,常用的方法有三种:一就是误差i i iy x p r -=)(绝对值的最大值im ir≤≤ 0max ,即误差向量的无穷范数;二就是误差绝对值的与∑=miir0,即误差向量的 1成绩评定范数;三就是误差平方与∑=miir02的算术平方根,即类似于误差向量的 2 范数。

前两种方法简单、自然,但不便于微分运算,后一种方法相当于考虑 2 范数的平方,此次采用第三种误差分析方案。

算法的具体推导过程: 1、设拟合多项式为:2、给点到这条曲线的距离之与,即偏差平方与:3、为了求得到符合条件的 a 的值,对等式右边求偏导数,因而我们得到了:4、将等式左边进行一次简化,然后应该可以得到下面的等式5、把这些等式表示成矩阵的形式,就可以得到下面的矩阵:⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∑∑∑∑∑∑∑∑∑∑∑=====+==+====niininiiknikinikinikinikiniiniinikiniiyyyaax x xx x xx x11i11012111111211 1an MMΛM O M MΛΛ 6.将这个范德蒙得矩阵化简后得到⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡n kkn nkkyyyaaax xx xx x M MΛM O M MΛΛ21102 21 1111 7、因为 Y A X = * ,那么 X Y A / = ,计算得到系数矩阵,同时就得到了拟合曲线。

数值计算方法 曲线拟合2 - 曲线拟合2

数值计算方法 曲线拟合2 - 曲线拟合2
v
曲 记 y ln g, a1 k, a2 ln(d / v)
线

则 y a1t a2

作线性最小二乘法拟合可得:
k 0.2347(1 / h), v 12(l)
D0 300, D 225.3, 3.9
参考答案
D0 300(mg), D 180(mg),
4(h)
课后实验课题


变换法方程结构
AT
ln a
Ab
AT
Z
例题分析
建立法方程
1
x1
1 x2
1
L L
1 x5
1M
x1 x2 M
lna
b
1 x1
1 x2
L L
1 x5
ln lMn
y1 y2
1 x5
ln y5

5 7.53 a 17.1059
线
化简法方程
7.53 11.5309b 26.0501
负面思考者
卖时间 找一份好工作 受人支配
做事情 重视学历 知识就是力量
20%的人身上集中了人类80%的智慧,他们一出生就鹤立鸡群。
【”二 ● 八“ 法 则】 意大利经济学家帕累托(1897)
20%
我要是怎么样怎么样做我就有钱 爱投资 有目标 问题中找答案 放眼长远 把握机会 计划未来 按成功的经验行事 重复做简单的事 明天的事今天做

求血药浓度随时间的变化规律 g(t) .
线 设计用药方案

问题:给药方式-快速静脉注射;

一室(中心室)模型;
血药浓度变化规律;
最小有效浓度和最大治疗浓度。
g(t) c0ekt
c0 , k为待定系数

Lab04.曲线拟合的最小二乘法实验

Lab04.曲线拟合的最小二乘法实验

Lab04.曲线拟合的最小二乘法实验【实验目的和要求】1.让学生体验曲线拟合的最小二乘法,加深对曲线拟合的最小二乘法的理解;2.掌握函数ployfit和函数lsqcurvefit功能和使用方法,分别用这两个函数进行多项式拟合和非多项式拟合。

【实验内容】1.在Matlab命令窗口,用help命令查询函数ployfit和函数lsqcurvefit功能和使用方法。

2.用多项式y=x3-6x2+5x-3,产生一组数据(x i,y i)(i=1,2,…,n),再在y i上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用randn产生N(0,1)均匀分布随机数),然后对x i和添加了随机干扰的y i用Matlab提供的函数ployfit用3次多项式拟合,将结果与原系数比较。

再作2或4次多项式拟合,分析所得结果。

3.用电压V=10伏的电池给电容器充电,电容器上t时刻的电压为τt eVVVtv ---=)()(,其中V0是电容器的初始电压,τ是充电常数。

对于下面的一组t,v数据,用Matlab提供的函数lsqcurvefit确定V和τ。

【实验仪器与软件】1.CPU主频在1GHz以上,内存在128Mb以上的PC;2.Matlab 6.0及以上版本。

实验讲评:实验成绩:评阅教师:年月日Lab04.曲线拟合的最小二乘法实验1.在Matlab命令窗口,用help命令查询函数ployfit和函数lsqcurvefit功能和使用方法。

在MATLAB中,用polyfit函数来求得最小二乘拟合多项式的系数,polyfit函数的调用格式为:[P,S]=polyfit(X,Y,m)。

函数根据采样点X和采样点函数值Y,产生一个m次多项式P及其在采样点的误差向量S。

其中X,Y是两个等长的向量,P是一个长度为m+1的向量,P的元素为多项式系数,得到的多项式为降序。

同样可以用lsqcurvefit函数来求得最小二乘拟合多项式的系数,调用格式为:x = lsqcurvefit(fun,x0,xdata,ydata)。

数值计算方法实验报告5―温度分布的曲线拟合

数值计算方法实验报告5―温度分布的曲线拟合

数值计算方法实验报告5―温度分布的曲线拟合本报告是关于温度分布的曲线拟合的,望对大家有所帮助!!!数值计算方法实验报告标题:温度分布的曲线拟合1.实验描述:在科学技术工程和实验中,经常需要从大量的实验数据中寻找拟合曲线,最简单的是一维情形(一元函数),此时数据的形式为x和y坐标的有序对,如:(x1,y1),...,(xN,yN),这里的横坐标{x}是明确的。

数值计算方法的目的之一是求解一个将自变量与因变量联系起来的拟合函数。

求解拟合函数的方法有多种,常见的方法有:线性最小二乘拟合、多项式拟合(最小二乘抛物线拟合)、样条插值拟合(三次样条拟合)、三角多项式拟合、贝塞尔曲线拟合这五种方法。

本次实验分别利用上述五种方法对一组温度数据进行拟合,通过拟合的结果比较这五种方法的优缺点(主要考虑误差)。

2.实验内容:已知某地区一天的温度数据如下:时间,p.m***-**********午夜***-********-********-*****温度时间,a.m***-**********正午***-********-********-*****温度分别利用:线性最小二乘拟合、多项式拟合(最小二乘抛物线拟合)、样条插值拟合(三次样条拟合)、三角多项式拟合、贝塞尔曲线拟合这五种方法对这组温度数据进行拟合,通过拟合的结果比较这五种方法的优缺点。

3.实验原理及分析:本报告是关于温度分布的曲线拟合的,望对大家有所帮助!!!①线性最小二乘拟合法:设{(x,y)}有N个点,其中横坐标{x}是确定的。

最小二乘拟合曲线为:kkk=1kk=1y=Ax+B,其系数满足如下正规方程:(∑x)A+(∑xk)B=∑xkyk 2kNNNNNk=1k=1(∑xk)A+NB=∑yk k=1k=1N解得:A=N∑xk=1Nk=1Nkyk Nxy2k∑xkNxN2=∑(xNNkx)(yk y),B=y Axk∑(xk=1kx)2其中:x=∑xk=1N,y=∑yk=1N线性最小二乘法的本质是:多元函数(均方根误差函数)求极值问题。

曲线拟合的数值计算方法实验

曲线拟合的数值计算方法实验

曲线拟合的数值计算方法实验Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】曲线拟合的数值计算方法实验【摘要】实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。

曲线拟合(curve fitting)是指选择适当的曲线类型来拟合观测数据,并用拟合的分析两变量间的关系。

曲线直线化是曲线拟合的重要手段之一。

对于某些非线性的资料可以通过简单的变量变换使之直线化,这样就可以按原理求出变换后变量的,在实际工作中常利用此直线方程绘制资料的标准工作曲线,同时根据需要可将此直线方程还原为,实现对资料的曲线拟合。

常用的曲线拟合有最小二乘法拟合、幂函数拟合、对数函数拟合、线性插值、三次样条插值、端点约束。

关键词曲线拟合、最小二乘法拟合、幂函数拟合、对数函数拟合、线性插值、三次样条插值、端点约束一、实验目的1.掌握曲线拟合方式及其常用函数指数函数、幂函数、对数函数的拟合。

2.掌握最小二乘法、线性插值、三次样条插值、端点约束等。

3.掌握实现曲线拟合的编程技巧。

二、实验原理1.曲线拟合曲线拟合是平面上离散点组所表示的坐标之间的函数关系的一种数据处理方法。

用解析表达式逼近的一种方法。

在或社会活动中,通过实验或观测得到量x 与y 的一组数据对(X i ,Y i )(i=1,2,...m ),其中各X i 是彼此不同的 。

人们希望用一类与数据的背景材料规律相适应的解析表达式,y=f(x ,c )来反映量x 与y 之间的依赖关系,即在一定意义下“最佳”地逼近或拟合已知数据。

f(x ,c)常称作拟合模型 ,式中c=(c 1,c 2,…c n )是一些待定参数。

当c 在f 中出现时,称为线性模型,否则称为。

有许多衡量拟合优度的标准,最常用的一种做法是选择参数c 使得拟合模型与实际在各点的(或),c)-f (f y e k k k 的平方和达到最小,此时所求曲线称作在加权最小二乘意义下对数据的拟合曲线。

数学实验—曲线拟合

数学实验—曲线拟合

实验问题
据人口统计年鉴,知我国从1949 年至1994年人口数据资料如下: (人口数单位为:百万)
年份 人口数 年份 人口数
1949 541.67 1974 908.59
1954 1959 602.66 672.09
1979 1984 975.42 1034.75
1964 1969 704.99 806.71
1989 1994 1106.76 1176.74
(1)在直角坐标系上作出人口数的图象。
(2)建立人口数与年份的函数关系,并估算1999 年的人口数。
y ax b 线性模型
如何确定a,b?
一、曲线拟合
1 曲线拟合问题的提法:
已知一组(二维)数据,即平面上的 n 个点(xi , yi ), i 1,2, L,n, xi 互不相同,寻求一个函数(曲线)y f (x),
探测到一组等分点位置的深度数据如下表所示.
25
21个等分点处的深度
分点 0
1
2
3
4
5
6
7
8
9
深度 9.01 8.96 7.96 7.96 8.02 9.05 10.13 11.18 12.26 13.28 (m)
10 11 12 13 14 15 16 17 18 19 20
13.32 12.61 11.29 10.22 9.15 7.95 7.95 8.86 9.81 10.80 10.93
人口(百 3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2
万)
年份 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
人口(百 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

曲线拟合的数值计算方法实验【摘要】实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。

曲线拟合(curve fitting)是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系。

曲线直线化是曲线拟合的重要手段之一。

对于某些非线性的资料可以通过简单的变量变换使之直线化,这样就可以按最小二乘法原理求出变换后变量的直线方程,在实际工作中常利用此直线方程绘制资料的标准工作曲线,同时根据需要可将此直线方程还原为曲线方程,实现对资料的曲线拟合。

常用的曲线拟合有最小二乘法拟合、幂函数拟合、对数函数拟合、线性插值、三次样条插值、端点约束。

关键词曲线拟合、最小二乘法拟合、幂函数拟合、对数函数拟合、线性插值、三次样条插值、端点约束一、实验目的1.掌握曲线拟合方式及其常用函数指数函数、幂函数、对数函数的拟合。

2.掌握最小二乘法、线性插值、三次样条插值、端点约束等。

3.掌握实现曲线拟合的编程技巧。

二、实验原理1.曲线拟合曲线拟合是平面上离散点组所表示的坐标之间的函数关系的一种数据处理方法。

用解析表达式逼近离散数据的一种方法。

在科学实验或社会活动中,通过实验或观测得到量x与y的一组数据对(Xi ,Yi)(i=1,2,...m),其中各Xi是彼此不同的。

人们希望用一类与数据的背景材料规律相适应的解析表达式,y=f(x,c)来反映量x与y之间的依赖关系,即在一定意义下“最佳”地逼近或拟合已知数据。

f(x,c)常称作拟合模型,式中c=(c1,c2,…cn)是一些待定参数。

当c在f中线性出现时,称为线性模型,否则称为非线性模型。

有许多衡量拟合优度的标准,最常用的一种做法是选择参数c使得拟合模型与实际观测值在各点的残差(或离差),c)-f (f y e k k k =的加权平方和达到最小,此时所求曲线称作在加权最小二乘意义下对数据的拟合曲线。

有许多求解拟合曲线的成功方法,对于线性模型一般通过建立和求解方程组来确定参数,从而求得拟合曲线。

至于非线性模型,则要借助求解非线性方程组或用最优化方法求得所需参数才能得到拟合曲线,有时称之为非线性最小二乘拟合。

曲线拟合:贝塞尔曲线与路径转化时的误差。

值越大,误差越大;值越小,越精确。

2.最小二乘法拟合:最小二乘法(又称最小平方法)是一种数学优化技术。

它通过最小化误差的平方和寻找数据的最佳函数匹配。

利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

最小二乘法还可用于曲线拟合。

其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。

函数曲线为: y=Ax+B其中系数满足下列的正规方程:3.幂函数拟合:函数曲线为:设(){}Νk k ,k y x 1=有N 个点,其中横坐标是确定的。

最小二乘幂函数拟合曲线的系数A 为:、4.对数函数拟合:对数函数(lograrithmic function )的标准式形式为 )0(ln a Y >+=X X bb>0时,Y 随X 增大而增大,先快后慢;b<0时,Y 随X 增大而减少,先快后慢,见图12.4(c)、(d)。

当以Y 和lnX 绘制的散点图呈直线趋势时,可考虑采用对数函数描述Y 与X 之间的非线性关系,式中的b 和a 分别为斜率和截距。

更一般的对数函数 Y=a+bln(X+k)式中k 为一常量,往往未知。

(a)lnY=lna+bX (b)lnY=lna-bX (c)Y=a+blnX (d)Y=a-blnX5.线性插值:在代数插值中,为了提高插值多项式对函数的逼近程度一般是增加节点的个数,即提高多项式的次数,但这样做往往不能达到预想的效果。

如下图所示:f(x) = 1 / (1 + x2)如果在区间[-5,5]上取7个等距节点:x k =5*(k/3-1) (k=0,1,2,...,6),由lagrange 插值公式可得到f(x)的次L7(x)。

如图所示:L7(x)仅在区间的中部能较好的逼近函数f(x), 在其它部位差异较大,而且越接近端点,逼近效果越差。

可以证明,当节点无限加密时,Ln(x)也只能在很小的围收敛,这一现象称为Runge 现象。

它表明通过增加节点来提高逼近程度是不适宜的,因而不采用高次多项式插值。

如果我们把以上的点用直线连接起来,显然比L7(x)要更逼近f(x)。

这就是分段线性插值。

而在实际应用常采用分段低次插值来提高近似程度,比如可用分段线性插值或分段三次埃尔米特插值来逼近已知函数,但它们的总体光滑性较差。

为了克服这一缺点,一种全局化的分段插值方法——三次样条插值成为比较理想的工具。

6.三次样条插值:设(){}N k kk ,yx 0=有N+1个点,其中b x ...x x x a N =<<<<=210。

如果存在N 个三次多项式x )S k (,系数为3210k ,k ,k ,k ,,S,S,S S 满足如下性质:33,22,1,0,)()()()()(k k k k k k k k x x s x x s x x s s x S x S -+-+-+==则成函数S(x)为三次样条函数。

7.端点约束:紧压样条:存在唯一的三次样条曲线,其一阶导数的边界条件是:natural样条:存在唯一的三次样条曲线,它的自由边界条件是:外推样条:存在唯一的三次样条曲线,其过对点x1和x2进行外推得到()aS'',同时通过对点X(n-1)和X(N-2)进行外推得到()bS''。

端点曲率调整:存在唯一的三次样条曲线,其中二阶导数的边界条件()aS''和()bS''是确定的。

抛物线终结样条:存在唯一的三次样条曲线,其中二阶在区间[X0,X 1]0xS≡''')(,而在[Xn-1,Xn]0xS≡''')(。

三、实验容1.P202 1胡克定律指出F=kx,其中F是拉伸弹簧的拉力(单位为盎司),x为拉伸的长度(单位为英寸)。

根据下列试验数据,求解拉伸常量k的近似值。

(a)(b)2.P215 1洛杉矶(美国城市)郊区11月8日的温度记录入下表所示,其中共有24个数据点。

(a )根据例5.5中的处理过程(使用fmins 命令),对给定的数据求解最小二乘曲线E Dx C Bx A x f ++=)sin()cos()(。

(b )求。

)(2f E(c )在同一坐标系下画出这些点集和(a)得出的最小二乘曲线。

3.P229 1一个轿车在时间T k 时经过的距离d k ,如下表所示。

使用程序5.3,并根据一阶导数边界条件98)8(',0)0('==S S ,求这些数据的三次紧压样条插值。

4.P238 5美国洛杉矶郊区11月9日的温度(华氏温度)如表5.10所示。

采用24小时制。

(a )求三角多项式)(7x T(b )在同一坐标系下,画出图)(7x T 和24个数据点。

(c )使用本地的温度情况重新求解问题(a)和问题(b)。

5.P246 1编写Matlab 程序,生成并绘制组合贝塞尔曲线。

利用该程序生成和绘制过3个控制点集{(0,0),(1,2),(1,1),(3,0)},{(3,0),(4,-1),(5,-2),(6,1),(7,0)},{(7,0),(4,-3),(2,-1),(0,0)}的贝塞尔曲线。

四、实验结果及分析1.P202 1实验描述:由题意可知,此题需要用最小二乘法进行计算,因为已知函数的5个插点并且知道它们的x,y 的值。

且函数的表达式为F=kx ,所以只需用方程中∑∑===Nk k Nk k y A x 11)(便可计算出k 的数值。

定义一个动态数组[]a,用来依次存取x和y的插值。

其中x,y的插值通过键盘手动输入并赋予给a中的元素。

然后通过相应的求和和基本运算便可以得到相应插值下的最小二乘法的函数表达式。

(其中k保留小数点后4位)具体函数运行效果如下:(a)请在此输入x的各插值0.2 0.4 0.6 0.8 1.0请在此输入y的各插值3.6 7.3 10.9 14.5 8.2此函数的最小二乘法曲线表达式为Y=14.8333*x请按任意键继续。

(b)请在此输入x的各插值0.2 0.4 0.6 0.8 1.0请在此输入y的各插值5.3 10.6 15.9 21.2 26.4此函数的最小二乘法曲线表达式为Y=26.4667*x请按任意键继续。

结果分析:易得,最小二乘法多项式计算可以很好的做出较为精确的最小二乘法拟合曲线,并且程序通用性高,只要输入相应的插值便可以计算出结果,结果系数的小数点有效位同时也可以自己确定。

2.P215 1实验描述:给出的最小二乘曲线表达式为:)=))(+cos(sin(Dxf+CExABx其中变量有5个,而给出的数据点有24个,在C语言中可以用牛顿-拉夫森算法迭代计算分别得出5个变量的值,但是方法繁琐,且迭代计算量庞大,因此这里采用Matlab进行相关的计算,调用fminsearch函数,求得当5个参量都为1附近时候多项式的最小值,此时便可求出此5个参变量的值.然后继续通过Matlab,将得到的公式以及各点,用plot函数,便可以求得。

实验结果:运行matlab结果如下:>> fminsearch('fiveOne',[1 1 1 1 1])ans =15.7225 1.3717 15.5359 1.2768 60.3579此时的所求值便为函数的待定系数。

所以可得最小二乘曲线的表达式为:7225..115cos(3717fx=x(+)+)60.35792768).1.15sin(5359然后进行相应的绘制图形便可以求出所要求出的结果。

结果分析:通过最小二乘法多项式同样可以绘制出三角函数的曲线。

并且程序通用性高,只要输入相应的插值便可以计算出结果,结果系数的小数点有效位同时也可以自己确定。

3.P229 1实验描述:由题意可知,由于这里涉及到了样条线的运算,计算较为复杂。

且要涉及到画图的部分,所以此处采用matlab计算较为方便快捷。

而书本上给出了一个用来计算三次紧压样条曲线的可调用函数,现在将其引用,并根据已知点得出相应的曲线。

实验结果:代入后得出的结果如下所示:>> X=[0 2 4 6 8];>> Y=[0 40 160 300 480];>> S=csfit(X,Y,0,98)S =0.8125 8.3750 0 0-2.4375 13.2500 43.2500 40.00001.4375 -1.3750 67.0000 160.0000-0.8125 7.2500 78.7500 300.0000由结果可知此插值为在区间[0,8]中有三个分别划分了[0,2],[2,4],[4,6],[6,8]四个区间的插点。

相关文档
最新文档