搜索
您的当前位置:首页正文

拟合

2021-10-19 来源:星星旅游


实验项目7: 拟合

一、实验目的

掌握拟合的最小二乘方法以及如何用MATLAB实现拟合。

二、实验要求

掌握用Matlab进行曲线拟合的方法。

三、实验内容

1、主要命令和注意事项:

MATLAB软件提供了基本的曲线拟合函数的命令,最常用的是多项式拟合函数,而依据的原理就是最小二乘法。

多项式函数拟合: a = polyfit(xdata,ydata,n)

其中n表示多项式的最高阶数,xdata,ydata 为要拟合的数据,即题中所给的节点,它是用数组的方式输入。输出参数a为拟合多项式y = a1x + … + anx + an+1的系数a = [a1, …, an, an+1],次数越低越靠后。

多项式在x处的值y可用下面程序计算: y = polyval (a, x) 超定方程的解法: 直接键入 AR\\y

例:有一只对温度敏感的电阻,已经测得了一组温度t和电阻R的数据如下: t(C) n

20.5 32.7 51.0 73.0 95.7 765 826 873 942 1032 R() 分别用多项式拟合与超定方程的方法拟合出R与t的关系:R= at +b 。 解: 1)多项式拟合

t = [20.5 32.5 51 73 95.7];

r = [765 826 873 942 1032];

aa=polyfit (t,r,1); % 最高次数为1

a= aa (1); b=aa(2); % aa中的元素是多项式的系数 y=polyval(aa,t); % 拟合的多项式在t处的值 plot(t,r,’k+’,t,y,’r’)

xlabel(‘t’), ylabel(‘R’) 2)超定方程的解法

t = [20.5 32.5 51 73 95.7];

r = [765 826 873 942 1032];

R = [t’ ones(5,1)]; % 注意对应的应是自变量t的值 aa = R\\r’; % 求解系数

a= aa (1); b=aa(2); % 后面的写法与前面一致 y=polyval(aa,t); plot(t,r,’k+’,t,y,’r’)

xlabel(‘t’), ylabel(‘R’)

非线性拟合

在后面的章节中将会介绍一些非线性拟合函数,在这里,对于某些非线性模型,通常可将其转化为线性模型进行求解。 ** 可线性化的非线性模型 变量和参数的变化 模型形式 变换后形式 Y X a1 a2 yax 1bx11b yaxaxb2x2 yaa1 yx y1 xx 21 ab ab2 aax y22bxyaxb yaebx 1 alnyblnxlna lnybxlna lny lnx lny x b b 1 2blna lna lna yaex2/b2 x2lny2lna bb22yb2x a22lny x 2x2y21 a2b2y 2x 2b22 ab2

例:在某个实验中得到如下一组数据: x 1 2 3 4 5 6 7 y 0.3101 0.4900 0.6400 0.8000 0.9200 1.0500 1.2000 已知x,y满足y=kxn,求参数k与n。 分析:首先将非线性函数化为线性函数

y=kxn  ln y = lnk + n ln x

令: y=ln y ,x= ln x, k=ln k, 则 此时 y= k +n x 用多项式拟合程序如下:

x=[1 2 3 4 5 6 7];

y=[0.3101 0.4900 0.6400 0.8000 0.9200 1.0500 1.2000]; x=log(x); y=log(y);

aa=polyfit (x,y,1); % 最高次数为1

n= aa (1); k=aa(2); %所求的系数是变形后的系数 [n exp(k)] %还原成原来的n与k

2、实验练习:

(1)用给定的多项式,如yx36x25x3,产生一组数据(xi,yi,i=1,2,…,n),

再在yi上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用rands产生N(0,1)

分布随机数),然后用xi和添加了随机干扰的yi作的3次多项式拟合,与原系数比较。

如果作2或4次多项式拟合,结果如何?

(2)用电压V=10伏的电池给电容器充电,电容器上t时刻的电压

tv(t)V(VV0)e,其中V0是电容器的初始电压,是充电常数.试由下面一组t, V数

据确定V0和.

t/s V/V

四、编写实验报告

0.5 6.36

1 6.48

2 3 4 5 7 9

7.26 8.22 8.66 8.99 9.43 9.63

按所拿到的实验报告纸,认真填写各项,并总结出心得体会。

安徽

师范大学

数计 学院实验报告

专业名称 数学与应用数学 实 验 室 2号实验楼#201 实验课程 Matlab 实验名称 拟合

姓 名 张顺强 学 号 100701185 同组人员 无 实验日期 2013.4.24

注:实验报告应包含(实验目的,实验原理,主要仪器设备和材料,实验过程和步骤,实验原始数据记录和处理,实验结果和分析,成绩评定)等七项内容。具体内容可根据专业特点和实验性质略作调整,页面不够可附页。 一.实验目的 掌握拟合的最小二乘方法以及如何用MATLAB实现拟合。 二.实验原理 1、主要命令和注意事项: MATLAB软件提供了基本的曲线拟合函数的命令,最常用的是多项式拟合函数,而依据的原理就是最小二乘法。 多项式函数拟合: a = polyfit(xdata,ydata,n) 其中n表示多项式的最高阶数,xdata,ydata 为要拟合的数据,即题中所给的节点,它是用数组的方式输入。输出参数a为拟合多项式y = a1xn + … + anx + an+1的系数a = [a1, …, an, an+1],次数越低越靠后。 多项式在x处的值y可用下面程序计算: y = polyval (a, x) 超定方程的解法: 直接键入 AR\\y 例:有一只对温度敏感的电阻,已经测得了一组温度t和电阻R的数据如下: t(C) 20.5 32.7 51.0 73.0 95.7 765 826 873 942 1032 R() 分别用多项式拟合与超定方程的方法拟合出R与t的关系:R= at +b 。 解: 1)多项式拟合 t = [20.5 32.5 51 73 95.7]; r = [765 826 873 942 1032]; aa=polyfit (t,r,1); % 最高次数为1 a= aa (1); b=aa(2); % aa中的元素是多项式的系数 y=polyval(aa,t); % 拟合的多项式在t处的值 plot(t,r,’k+’,t,y,’r’) xlabel(‘t’), ylabel(‘R’) 2)超定方程的解法 t = [20.5 32.5 51 73 95.7]; r = [765 826 873 942 1032]; R = [t’ ones(5,1)]; % 注意对应的应是自变量t的值 aa = R\\r’; % 求解系数 a= aa (1); b=aa(2); % 后面的写法与前面一致 y=polyval(aa,t); plot(t,r,’k+’,t,y,’r’) xlabel(‘t’), ylabel(‘R’)

非线性拟合 在后面的章节中将会介绍一些非线性拟合函数,在这里,对于某些非线性模型,通常可将其转化为线性模型进行求解。 ** 可线性化的非线性模型 变量和参数的变化 模型形式 变换后形式 Y X a1 a2 ax y1bxax y2bx2yaxb yaebx 11b yaxaxb2x2 yaa1 yx y1 xx 21 a1 ab ab2 alnyblnxlna lnybxlna lny lnx lny x b lna b 1 2blna lna yaex2/b2 x2lny2lna bb22yb2x a22lny x2 x2y21 a2b2y 2x 2b22 ab2 例:在某个实验中得到如下一组数据: x 1 2 3 4 5 6 7 y 0.3101 0.4900 0.6400 0.8000 0.9200 1.0500 1.2000 已知x,y满足y=kxn,求参数k与n。 分析:首先将非线性函数化为线性函数 y=kxn  ln y = lnk + n ln x 令: y=ln y ,x= ln x, k=ln k, 则 此时 y= k +n x 用多项式拟合程序如下: x=[1 2 3 4 5 6 7]; y=[0.3101 0.4900 0.6400 0.8000 0.9200 1.0500 1.2000]; x=log(x); y=log(y); aa=polyfit (x,y,1); % 最高次数为1 n= aa (1); k=aa(2); %所求的系数是变形后的系数 [n exp(k)] %还原成原来的n与k 三主要仪器设备和材料

计算机,Matlab软件 四.实验过程和步骤 (1)用给定的多项式,如yx36x25x3,产生一组数据(xi,yi,i=1,2,…,n),再在yi上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用rands产生N(0,1)分布随机数),然后用xi和添加了随机干扰的yi作的3次多项式拟合,与原系数比较。 如果作2或4次多项式拟合,结果如何? 三次拟合: x=0:0.1:1; y=[]; y=x.^3-6*x.^2+5*x-3 y1=[]; for i=1:11 y1(i)=y(i)+rand; end y1 a=polyfit(x,y1,3) x1=0:0.05:1; y2=a(1)*x1.^3+a(2)*x1.^2+a(3)*x1+a(4); plot(x1,y2,'-r',x,y,'--b') y = Columns 1 through 9 -3.0000 -2.5590 -2.2320 -2.0130 -1.8960 -1.8750 -1.9440 -2.0970 -2.3280 Columns 10 through 11 -2.6310 -3.0000 y1 = Columns 1 through 9 -2.0682 -2.0930 -1.8134 -1.1668 -1.3708 -1.6724 -1.2719 -1.2589 -2.3084 Columns 10 through 11

-1.9497 -2.6205 a = -1.1280 -2.4343 3.1393 -2.1887 二次拟合: a = -4.1371 3.7929 -2.3158

四次拟合: a = -10.4495 14.1037 -6.4936 2.1539 -2.0051

(2)用电压V=10伏的电池给电容器充电,电容器上t时刻的电压tv(t)V(VV0)e,其中V0是电容器的初始电压,是充电常数.试由下面一组t, V数据确定V0和.y = Columns 1 through 9 -3.0000 -2.5590 -2.2320 -2.0130 -1.8960 -1.8750 -1.9440 -2.0970 -2.3280 Columns 10 through 11 -2.6310 -3.0000 y1 = Columns 1 through 9 -2.0682 -2.0930 -1.8134 -1.1668 -1.3708 -1.6724 -1.2719 -1.2589 -2.3084 Columns 10 through 11 -1.9497 -2.6205 a = -1.1280 -2.4343 3.1393 -2.1887 t/s V/V clc,clear; t=[0.5 1 2 3 4 5 7 9]; 0.5 6.36 1 6.48 2 3 4 5 7 9 7.26 8.22 8.66 8.99 9.43 9.63 v=[6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63]; V=10; y=log(10-v); a=polyfit(t,y,1);

taor=-1/a(1) V0=10-exp(a(2)) taor = 3.5269 V0 = 5.6221 五.实验结果和分析 用Matlab软件可以很好的解决拟合问题,我们可以根据数据和图形,利用拟合对数据进行加工,对其总体进行把握,而且可以把非线性转换为线性的。

成绩评定: 1、 根据实验情况和实验报告质量作出写事性评价 2、 评分 综合评分 折合成等级 指导教师签名: 时间: 年 月 日

因篇幅问题不能全部显示,请点此查看更多更全内容

Top