菜单

betway体育国内参数优化软件:1stOpt – First Optimizationg函数薄和曲线拟合。

2018年9月19日 - 中甲报道

首页:http://www.7d-soft.com/index.htm


曲线拟合的线性最小二乘法及其MATLAB程序

 

 

betway体育 1

例7.2.1 
给有同样组数据点列入表7–2中,试用线性最小二就法求拟合曲线,并为此(7.2),(7.3)和(7.4)式估计该误差,作出拟合曲线.

betway体育 2

 

betway体育 3

表7–2  例7.2.1底均等组数

 

xi

-2.5  -1.7    -1.1    -0.8     0      0.1    1.5    2.7    3.6

yi

-192.9  -85.50  -36.15  -26.52   -9.10  -8.43  -13.12   6.50   68.04

 

 

 

解 (1)以MATLAB工作窗口输入程序

4.0新功能 (预定2010年8月6日):

>> x=[-2.5 -1.7 -1.1  -0.8  0 0.1  1.5  2.7 3.6];

1:支持复数拟合、复数方程组计算;

    y=[-192.9 -85.50 -36.15-26.52 -9.10 -8.43 -13.12  6.50  68.04];

2:支持微分方程拟合求解;

plot(x,y,’r*’),

3:通用全局优化求解器变异功能,优化能力提高20%上述;

legend(‘实验数据(xi,yi)’)

4:新的编程模式计算引擎;

xlabel(‘x’), ylabel(‘y’),

5:强大易用的数目批处理拟合功能

title(‘例7.2.1之数据点(xi,yi)的散点图’)

6:公式自动检索:增加又多的第二维、三维函数库;

运行后屏幕显示数据的散点图(略).

7:改进的积分计算,拟合,解方程可含蓄积分函数,支持高斯积分和辛普森积分算法

(3)编写下列MATLAB程序计算以地处之部数价,即输入程序

8:三维图形旋转、缩放、移动等力量

>> syms a1 a2 a3 a4

9:?号输入,可动态输入常数。

x=[-2.5 -1.7 -1.1  -0.8  0 0.1  1.5  2.7 3.6];

10:参数定义更加有利自由:Parameter 0<=a<=10, b=[1,3];

fi=a1.*x.^3+ a2.*x.^2+ a3.*x+ a4

11:更多的数学函数支持:Wrap、Wrap0…

运作后屏幕显示关于a1,a2,
a
3a4的线性方程组

12:支持再次多力量的重中之重字:FileWeight,OutWeight…

fi =[
-125/8*a1+25/4*a2-5/2*a3+a4,-4913/1000*a1+289/100*a2-17/10*a3+a4,-1331/1000*a1+121/100*a2-11/10*a3+a4,       -64/125*a1+16/25*a2-4/5*a3+a4, 

13:重复计算时自动记录每次结果

a4,       1/1000*a1+1/100*a2+1/10*a3+a4,       27/8*a1+9/4*a2+3/2*a3+a4,
19683/1000*a1+729/100*a2+27/10*a3+a4, 
5832/125*a1+324/25*a2+18/5*a3+a4]

14:Exp函数计算修正,与Matlab等保持一致:Exp(-3^0.23)->
Exp(-(3^0.23))

编纂构造误差平方和的MATLAB程序

15:….

>> y=[-192.9 -85.50 -36.15 -26.52 -9.10 -8.43 -13.12 
6.50 68.04];

3.0新功能 (2009年5月1日):

fi=[-125/8*a1+25/4*a2-5/2*a3+a4,-4913/1000*a1+289/100*a2-17/10*a3+a4,-1331/1000*a1+121/100*a2-11/10*a3+a4, -64/125*a1+16/25*a2-4/5*a3+a4,      a4,
1/1000*a1+1/100*a2+1/10*a3+a4,            
27/8*a1+9/4*a2+3/2*a3+a4,19683/1000*a1+729/100*a2+27/10*a3+a4,   5832/125*a1+324/25*a2+18/5*a3+a4];

New in 3.0

fy=fi-y; fy2=fy.^2; J=sum(fy.^2)

1:重新规划之跟其他高级语言的接口,更加有利和C++, Fortran, Basic,
Pascal等语言的浑编联动。

运作后屏幕显示误差平方和如下

2:增加新的算法:稳健全局优化算法。

J=

3:改进了离子群和最好酷累算法,优化能力再次胜。

(-125/8*a1+25/4*a2-5/2*a3+a4+1929/10)^2+(-4913/1000*a1+289/100*a2-17/10*a3+a4+171/2)^2+(-1331/1000*a1+121/100*a2-11/10*a3+a4+723/20)^2+(-64/125*a1+16/25*a2-4/5*a3+a4+663/25)^2+(a4+91/10)^2+(1/1000*a1+1/100*a2+1/10*a3+a4+843/100)^2+(27/8*a1+9/4*a2+3/2*a3+a4+328/25)^2+(19683/1000*a1+729/100*a2+27/10*a3+a4-13/2)^2+(5832/125*a1+324/25*a2+18/5*a3+a4-1701/25)^2

4:增加了时常微分方程(ODE)的求解功能,算法包括:龙格-库塔-费尔博格法(Runge-Kutta-Fehlberg
Method)、欧拉算法(Euler
Method)、2-5阶龙格-库塔算法(Runge-Kutta
Method),不仅能求解一般的初值ODE方程,还能够散特形式的ODE方程,对边值问题的ODE方程也会轻轻松松求解。

呢请而上极端小,只待下极值的必要条件 ,得到关于的线性方程组,这得由下的MATLAB程序完成,即输入程序

5:对线性规划问题活动判断识别,速度还快。

>>syms a1 a2 a3 a4

6:更加灵活的LoopConstant定义:LoopConstant d=[2,(max(x,1))];

J=(-125/8*a1+25/4*a2-5/2*a3+a4+1929/10)^2+(-4913/1000*a1+289/100*a2-17/10*a3+a4…+171/2)^2+(-1331/1000*a1+121/100*a2-11/10*a3+a4+723/20)^2+(-64/125*a1+16/25*a2-4/5*a3+a4+663/25)^2+(a4+91/10)^2+(1/1000*a1+1/100*a2+1/10*a3+a4+843/100)^2+(27/8*a1+9/4*a2+3/2*a3+a4+328/25)^2+(19683/1000*a1+729/100*a2+27/10*a3+a4-13/2)^2+(5832/125*a1+324/25*a2+18/5*a3+a4-1701/25)^2;

7:与Vista兼容

Ja1=diff(J,a1);Ja2=diff(J,a2);  Ja3=diff(J,a3);Ja4=diff(J,a4);

8:编程模式增加对独特函数的支撑(Erf, Erfc, Gamma, Bessel…)

Ja11=simple(Ja1),Ja21=simple(Ja2), Ja31=simple(Ja3), Ja41=simple(Ja4),

9:Parameter对For的支持。

运转后屏幕显示J分别对a1, a2 ,a3
,a4的偏导数如下

10:拟合计算了进行展望时,可算各国一点之导数

Ja11=

11:SubDivision、RunNext与Inherit功能

56918107/10000*a1+32097579/25000*a2+1377283/2500*a3+23667/250*a4-8442429/625

12:LogFile自动保存功能

Ja21=

13:RowData、RowDataSet与EndRowDataSet关键字

32097579/25000*a1+1377283/2500*a2+23667/250*a3+67*a4+767319/625

14:更加有益于的Sum(),Prod()和For()语句

Ja31=

15:3D图形新格式:点状三维图

1377283/2500*a1+23667/250*a2+67*a3+18/5*a4-232638/125

16:“恢复刚关门的文书“功能

Ja41=

….

23667/250*a1+67*a2+18/5*a3+18*a4+14859/25

2.5新功能 (2006年10月7日):

消线性方程组Ja11 =0,Ja21=0,Ja31
=0,Ja41 =0,输入下列程序

1:更加优秀、稳健的通用全局优化能力

>>A=[56918107/10000,32097579/25000, 1377283/2500, 23667/250;
32097579/25000, 1377283/2500,23667/250, 67; 1377283/2500, 23667/250, 67,
18/5; 23667/250, 67, 18/5, 18];

1:对Basic的全面支持

B=[8442429/625,-767319/625, 232638/125, -14859/25];

2:参数型变量问题之拟合(未知中间变量):ParVariable

C=B/A,f=poly2sym(C)

3:带积分的拟合和函数优化

运转后屏幕显示拟合函数f连同系数C如下

4:隐函数优化算法的改善,速度增加10倍增

C=    5.0911  -14.1905   6.4102   -8.2574

5:隐函数拟合算法的订正:TradImplicit, ImplicitRange

f=716503695845759/140737488355328*x^3

6:BatchFile: 文件批处理效果

-7988544102557579/562949953421312*x^2

7:StepReg:逐步拟合功能

+1804307491277693/281474976710656*x

8:CodeSheet:代码本表,支持直接从表中读取数据

-4648521160813215/562949953421312                    

9:代码本显示形式:单业、多业和下拉

用所要的拟合曲线也

10:LoopConstant、FullLoopModel:自动循环计算功能

.

11:Constant a(1:3)=[1,2,3] -> Constant a = [1,2,3]

(4)编纂下面的MATLAB程序量该误差,并作出拟合曲线与多少的图形.输入程序

12:WeightReg:灵活多变、任意形式之带权重拟合

>> xi=[-2.5 -1.7 -1.1  -0.8  0 0.1  1.5  2.7 3.6];

13:PassParameter:编程模式下支持回到计算变量

   y=[-192.9 -85.50 -36.15 -26.52 -9.10-8.43 -13.12  6.50  68.04];

14:参数初值自动选择更加智能、健壮,适应范围更广大

n=length(xi);

15:RegType:最小二趁法、最小一乘法等不等款型拟合

f=5.0911.*xi.^3-14.1905.*xi.^2+6.4102.*xi -8.2574;

16:MDataSet,EndMDataset:网络节点数据自动转到矩阵数据

x=-2.5:0.01: 3.6;

17:HotRun:设定自动加热计算和计算次数

F=5.0911.*x.^3-14.1905.*x.^2+6.4102.*x -8.2574;

18:Sum,Prod,For更简明写法

fy=abs(f-y); fy2=fy.^2; Ew=max(fy),

19:编程模式下得以一直定义二维参变量

E1=sum(fy)/n, E2=sqrt((sum(fy2))/n)

20:Plot、PlotLoopData:迭代计算过程中进一步长、强大的动态图片表示法

plot(xi,y,’r*’), hold on, plot(x,F,’b-‘), hold off

21:众多更上一层楼与Bug修正

legend(‘数据点(xi,yi)’,’拟合曲线y=f(x)’),

2.0新功能 (2006年10月7日):

xlabel(‘x’), ylabel(‘y’),

1:求解非线性方程组功能大幅改善,【麦夸特法+通用全局优化算法】已成解非线性方程组的首选算法,其改良后底求解能力总体上大叫任何其它算法。

title(‘例7.2.1之数据点(xi,yi)和拟合曲线y=f(x)的图形’)

2:最老无比小优化问题要解 (MinMax):一种多目标优化求解功能。

运作后屏幕显示数据及拟合函数f的最要命误差Ew,平均误差E1暨咸方根误差E2随同数据点和拟合曲线y=f(x)的图形(略).

3:智能拟合功能:该意义特别符合为数据量很十分时的拟合,可反复倍增甚至数十加倍缩短计算时,数据量越充分,效果更加明显。

Ew =           E1 =              E2 =

4:改进之非常容易实现的带等式或非等式约束的拟合

3.105 4         0.903 4           1.240 9

5:算法自动选择功能:对于刚刚沾1stOpt之用户而言,由于未亮各国算法的风味及适用范围,常无法确定如何选择算法,该功能而依据题目的项目自动选择算法。

 

6:函数表达式以脚本语言描述表达功能:对于复杂、繁琐、冗长的题材,可透过脚本语言来描述

7.3  函数的抉择及其MATLAB程序

7:常字符串数组表达功能:定义字符串数组功能

 

例:ConstStr S(1:3) = [x1^2+x2, x1*x2-x2^2, sin(x1)+x2];

例7.3.1
 
受来一致组试数据点的横坐标向量为x=(-8.5,-8.7,-7.1,-6.8,-5.10,-4.5,-3.6,-3.4,-2.6,-2.5,-2.1,-1.5,
-2.7,-3.6),纵横坐标向量为y=(459.26,52.81,198.27,165.60,59.17,41.66,25.92,22.37,13.47,
12.87,
11.87,6.69,14.87,24.22),试用线性最小二随着法求拟合曲线,并就此(7.2),(7.3)和(7.4)式估计该误差,作出拟合曲线.

等同于:ConstStr S1 = x1^2+x2, S2 = x1*x2-x2^2, S3 = sin(x1)+x2;

解  (1)在MATLAB工作窗口输入程序

例:ConstStr S(1:3) = x2*[x1^2+x2, x1*x2-x2^2, sin(x1)+x2];

>>x=[-8.5,-8.7,-7.1,-6.8,-5.10,-4.5,-3.6,-3.4,-2.6,-2.5,
-2.1,-1.5,-2.7,-3.6];

等同于:ConstStr S1 = x2*(x1^2+x2), S2 = x2*(x1*x2-x2^2), S3 =
x2*(sin(x1)+x2);

y=[459.26,52.81,198.27,165.60,59.17,41.66,25.92, 22.37,13.47,
12.87,11.87,6.69,14.87,24.22];

8:公式拟合自动寻时庄严模式寻找功能

plot(x,y,’r*’),legend(‘实验数据(xi,yi)’)

9:0-1设计,修正数值范围溢起问题

xlabel(‘x’), ylabel(‘y’),

10:公式自动拟合库中,增加很多峰函数

title(‘例7.3.1的数据点(xi,yi)的散点图’)

11:约束函数连续发表功能:

运行后屏幕显示数据的散点图(略).

例:10.3>=x1+sin(x2)*x3>=0

(3)编纂下列MATLAB程序计算在处于之部数价,即输入程序

等同于:

>> syms a b

x1+sin(x2)*x3>=0;

x=[-8.5,-8.7,-7.1,-6.8,-5.10,-4.5,-3.6,-3.4,-2.6,-2.5,-2.1,-1.5,-2.7,-3.6];
fi=a.*exp(-b.*x)

x1+sin(x2)*x3<=10.3;

运转后屏幕显示关于ab的线性方程组

例:Parameter x1[0.5,0.66], x4[0.04,0.2], x7[,0.035];

fi =

MinFunction
0.44*x1+0.94*x2+0.88*x3+0.48*x4+4*x5+3.4*x6+2.3*x7+0.12*x8+1.6*x9+19*x10+25*x11;

[ a*exp(17/2*b), a*exp(87/10*b), a*exp(71/10*b), 
a*exp(34/5*b), a*exp(51/10*b),   a*exp(9/2*b),  a*exp(18/5*b), 
a*exp(17/5*b),  a*exp(13/5*b),   a*exp(5/2*b), a*exp(21/10*b),  
a*exp(3/2*b), a*exp(27/10*b),  a*exp(18/5*b)]

3230*x1+2640*x2+2500*x3+1730*x4+2900*x5+2230*x6+2500*x7>2750;

修构造误差平方和的MATLAB程序如下

8.27*x1+43*x2+40*x3+15.4*x4+62*x5+50*x6+45*x7>15;

>>y=[459.26,52.81,198.27,165.60,59.17,41.66,25.92,22.37,13.47,12.87,
11.87,6.69,14.87,24.22];

8.27*x1+43*x2+40*x3+15.4*x4+62*x5+50*x6+45*x7<16;

fi =[ a*exp(17/2*b),a*exp(87/10*b),
a*exp(71/10*b), a*exp(34/5*b), a*exp(51/10*b),  a*exp(9/2*b), 
a*exp(18/5*b),  a*exp(17/5*b),  a*exp(13/5*b),   a*exp(5/2*b),
a*exp(21/10*b),   a*exp(3/2*b), a*exp(27/10*b), 
a*exp(18/5*b)];

0.038*x1+0.32*x2+0.32*x3+0.14*x4+3.91*x5+4.6*x6+33.4*x8+21*x9>2.85;

fy=fi-y;

0.038*x1+0.32*x2+0.32*x3+0.14*x4+3.91*x5+4.6*x6+33.4*x8+21*x9<3;

fy2=fy.^2;

0.058*x1+0.15*x2+0.14*x3+0.32*x4+2.9*x5+2.15*x6+0.14*x8+18.5*x9>0.5;

J=sum(fy.^2)

0.058*x1+0.15*x2+0.14*x3+0.32*x4+2.9*x5+2.15*x6+0.14*x8+18.5*x9<0.55;

运行后屏幕显示误差平方和如下

0.26*x1+2.45*x2+2.41*x3+0.54*x4+4.35*x5+3.28*x6+2.6*x7+99*x11>0.8;

J =

0.125*x1+0.48*x2+0.51*x3+0.18*x4+1.65*x5+1.31*x6+0.65*x7+99*x10>0.31;

(a*exp(17/2*b)-22963/50)^2+(a*exp(87/10*b)-5281/100)^2+(a*exp(71/10*b)-19827/100)^2+(a*exp(34/5*b)-828/5)^2+(a*exp(51/10*b)-5917/100)^2+(a*exp(9/2*b)-2083/50)^2+(a*exp(18/5*b)-648/25)^2+(a*exp(17/5*b)-2237/100)^2+(a*exp(13/5*b)-1347/100)^2+(a*exp(5/2*b)-1287/100)^2+(a*exp(21/10*b)-1187/100)^2+(a*exp(3/2*b)-669/100)^2+(a*exp(27/10*b)-1487/100)^2+(a*exp(18/5*b)-1211/50)^2

0.298*x1+1.08*x2+1.4*x3+0.58*x4+2.21*x5+1.74*x6+0.83*x7+99*x10>0.58;

否求而上至极小,只待采取极值的必要条件,得到关于的线性方程组,这足以由下的MATLAB程序完成,即输入程序

0.298*x1+1.08*x2+1.4*x3+0.58*x4+2.21*x5+1.74*x6+0.83*x7+99*x10<0.63;

>>syms a b

0.077*x1+0.6*x2+0.6*x3+0.27*x4+0.8*x5+0.64*x6>0.19;

J=(a*exp(17/2*b)-22963/50)^2+(a*exp(87/10*b)-5281/100)^2+(a*exp(71/10*b)-19827/100)^2+(a*exp(34/5*b)-828/5)^2+(a*exp(51/10*b)-5917/100)^2+(a*exp(9/2*b)-2083/50)^2+(a*exp(18/5*b)-648/25)^2+(a*exp(17/5*b)-2237/100)^2+(a*exp(13/5*b)-1347/100)^2+(a*exp(5/2*b)-1287/100)^2+(a*exp(21/10*b)-1187/100)^2+(a*exp(3/2*b)-669/100)^2+(a*exp(27/10*b)-1487/100)^2+(a*exp(18/5*b)-1211/50)^2;

x2+x3>0.1;

Ja=diff(J,a);Jb=diff(J,b);

x2+x3<0.22;

Ja1=simple(Ja),Jb1=simple(Jb),

x5+x6>0.03;

运转后屏幕显示J分别对的偏导数如下

x5+x6<0.07;

Ja1=

x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11=1;

2*a*exp(3*b)+2*a*exp(17*b)+2*a*exp(87/5*b)+2*exp(68/5*b)*a+2*exp(9*b)*a+2*a*exp(34/5*b)-669/50*exp(3/2*b)-1487/50*exp(27/10*b)-2507/25*exp(18/5*b)-22963/25*exp(17/2*b)-5281/50*exp(87/10*b)-19827/50*exp(71/10*b)-2237/50*exp(17/5*b)-1656/5*exp(34/5*b)-1347/50*exp(13/5*b)-5917/50*exp(51/10*b)-1287/50*exp(5/2*b)-2083/25*exp(9/2*b)-1187/50*exp(21/10*b)+4*a*exp(36/5*b)+2*a*exp(26/5*b)+2*a*exp(71/5*b)+2*a*exp(51/5*b)+2*a*exp(5*b)+2*a*exp(21/5*b)+2*a*exp(27/5*b)

可写为:

Jb1=

Parameter x1[0.5,0.66], x4[0.04,0.2],x7[,0.035];

1/500*a*(2100*a*exp(21/10*b)^2+8500*a*exp(17/2*b)^2+6800*a*exp(34/5*b)^2-10035*exp(3/2*b)-40149*exp(27/10*b)-180504*exp(18/5*b)-3903710*exp(17/2*b)-459447*exp(87/10*b)-1407717*exp(71/10*b)-76058*exp(17/5*b)-1126080*exp(34/5*b)-35022*exp(13/5*b)-301767*exp(51/10*b)-32175*exp(5/2*b)-187470*exp(9/2*b)-24927*exp(21/10*b)+7100*a*exp(71/10*b)^2+5100*a*exp(51/10*b)^2+4500*a*exp(9/2*b)^2+7200*a*exp(18/5*b)^2+3400*a*exp(17/5*b)^2+2600*a*exp(13/5*b)^2+2500*a*exp(5/2*b)^2+1500*a*exp(3/2*b)^2+2700*a*exp(27/10*b)^2+8700*a*exp(87/10*b)^2)

MinFunction
0.44*x1+0.94*x2+0.88*x3+0.48*x4+4*x5+3.4*x6+2.3*x7+0.12*x8+1.6*x9+19*x10+25*x11;

用解二元非线性方程组的牛顿法的MATLAB程序求解线性方程组Ja1=0,Jb1
=0,得

3230*x1+2640*x2+2500*x3+1730*x4+2900*x5+2230*x6+2500*x7>2750;

a=            b=

16>8.27*x1+43*x2+40*x3+15.4*x4+62*x5+50*x6+45*x7>15;

2.8110        0.581 6

3>0.038*x1+0.32*x2+0.32*x3+0.14*x4+3.91*x5+4.6*x6+33.4*x8+21*x9>2.85;

故此所请的拟合曲线(7.13)为

0.55>0.058*x1+0.15*x2+0.14*x3+0.32*x4+2.9*x5+2.15*x6+0.14*x8+18.5*x9>0.5;

e.                  (7.14)

0.26*x1+2.45*x2+2.41*x3+0.54*x4+4.35*x5+3.28*x6+2.6*x7+99*x11>0.8;

(4)基于(7.2),(7.3),(7.4)和(7.14)式编写下面的MATLAB程序量其误差,并做出拟合曲线与数码的图形.输入程序

0.125*x1+0.48*x2+0.51*x3+0.18*x4+1.65*x5+1.31*x6+0.65*x7+99*x10>0.31;

>> xi=[-8.5 -8.7 -7.1  -6.8  -5.10 -4.5 -3.6 -3.4 -2.6 -2.5
-2.1 -1.5  -2.7  -3.6];

0.63>0.298*x1+1.08*x2+1.4*x3+0.58*x4+2.21*x5+1.74*x6+0.83*x7+99*x10>0.58;

y=[459.26  52.81  198.27 165.60   59.17   41.66  25.92 22.37   13.47  
12.87   11.87    6.69   14.87  24.22];

0.077*x1+0.6*x2+0.6*x3+0.27*x4+0.8*x5+0.64*x6>0.19;

n=length(xi); f=2.8110.*exp(-0.5816.*xi); x=-9:0.01: -1;

0.22>x2+x3>0.1;

F=2.8110.*exp(-0.5816.*x); fy=abs(f-y); fy2=fy.^2; Ew=max(fy),

0.07>x5+x6>0.03;

E1=sum(fy)/n, E2=sqrt((sum(fy2))/n), plot(xi,y,’r*’),hold on

x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11=1;

plot(x,F,’b-‘), hold off,

12:矩阵计算,基本函数求导计算

legend(‘数据点(xi,yi)’,’拟合曲线y=f(x)’)

13:带权重的拟合功能

xlabel(‘x’), ylabel(‘y’),

14:带约束的逾越方程求解

 title(‘例7.3.1底数据点(xi,yi)和拟合曲线y=f(x)的图形’)

15:For语句,支持循环表达式

运作后屏幕显示数据以及拟合函数f的卓绝深误差Ew = 390.141
5,平均误差E1=36.942 2和统方根误差E2=106.031
7会同数据点和拟合曲线y=f(x)的图形(略).

16:支持电动还计算

 

17:改进之预测/验证功能

7.4  多项式拟合及其MATLAB程序

18:DataSet,AutoData定义数据时,可指定起始基数:

例7.4.1 
给有同样组数据点列入表7–3挨,试用线性最小二乘机法求拟合曲线,并因而(7.2),(7.3)和(7.4)式估计其误差,作出拟合曲线.

少省时,起始基数为1

表7–3  例7.4.1之相同组数

例:

xi

-2.9   -1.9   -1.1   -0.8      0     0.1     1.5    2.7     3.6

yi

53.94  33.68  20.88  16.92  8.79   8.98    4.17   9.12   19.88

DataSet;

解  (1)首先根据表7–3叫出之数据点,用下列MATLAB程序画起散点图.

EndDataSet:

于MATLAB工作窗口输入程序

例:AutoData x = 1:1:10;

>> x=[-2.9 -1.9  -1.1 -0.8  0  0.1 1.5  2.7  3.6];

章:定义起始基数为0

y=[53.94  33.68  20.88 16.92  8.79  8.98 4.17  9.12  19.88];

DataSet [Base = 0];

plot(x,y,’r*’), legend(‘数据点(xi,yi)’)

EndDataSet:

xlabel(‘x’), ylabel(‘y’),

例:AutoData[Base = 0] x = 1:1:10;

title(‘例7.4.1之数据点(xi,yi)的散点图’)

19:增加IFF关键字

运转后屏幕显示数据的散点图(略).

20:代码中一直从Excel表单和1stOpt电子表格遭遇读取数据:必须指定文件称、表单名及数码范围

(3)用作线性最小二乘拟合的大多项式拟合的MATLAB程序求待定系数 .输入程序

例:从Excel文件“C:\Data1.xls”中之“Sheet1”中读取数据进行拟共同计算,数据范围由A1交B20

>>a=polyfit(x,y,2)

Function y = a + b*x + Exp(c*x);

运作后输出(7.16)式的系数

DataFile C:\Data1.xls[Sheet1[A1:B20]];

a =

21:常数连续定义:

2.8302   -7.3721   9.1382

例:Constant A(1:3) = 2;

故拟合多项式为 

等同于 Constant A1 = 2, A2 = 2, A3 = 2;

.

例:Constant A(1:3) = 10*[1,2,3];

(4)编下面的MATLAB程序量其误差,并做出拟合曲线与数码的图形.输入程序

等同于 Constant A(1:3) = [10,20,30];

>>  xi=[-2.9 -1.9 -1.1  -0.8  0  0.1  1.5 2.7  3.6];

22:增强的编程模式,可全面机关处理任意多之等式及不等式约束,对于复杂的拉动约束之工程问题,可自由求解。

y=[53.94  33.68 20.88  16.92  8.79 8.98  4.17  9.12 19.88];

23:修正定义多维常数、参数时起的题目

n=length(xi);f=2.8302.*xi.^2-7.3721.*xi+9.1382

1.5新功能 (2006年4月18日):

x=-2.9:0.001:3.6;F=2.8302.*x.^2-7.3721.*x+8.79;

1:单纯形线性规划算法中,可进行整数规划、混合整数规划计算。

fy=abs(f-y);fy2=fy.^2; Ew=max(fy), E1=sum(fy)/n,

2:编程模式面临,对约束规范的自发性处理效果。

E2=sqrt((sum(fy2))/n),plot(xi,y,’r*’, x,F,’b-‘),

3: 权重拟合功能

legend(‘数据点(xi,yi)’,’拟合曲线y=f(x)’)

4:结果数据自动保存功能。

xlabel(‘x’), ylabel(‘y’),

5:同一代码本被,所有题目又求解功能。

 title(‘例7.4.1底数据点(xi,yi)和拟合曲线y=f(x)的图形’)

6:函数优化预测检验功能

运行后屏幕显示数据及拟合函数f的极端充分误差Ew,平均误差E1与咸方根误差E2会同数据点(xi,yi)和拟合曲线y=f(x)的图形(略).

7:数据自动发出效益: 关键字: AutoData

Ew=             E1 =                E2 =

例:AutoData X = 1:1:10, Y = X^2+X;

0.7457,          0.389 2,            0.436 3

等同于:Constant X(1:10) = [1,2,3,4,5,6,7,8,9,10];

 

Constant Y(1:10) = [2,6,12,20,30,42,56,72,90,110];

7.5  拟合曲线的线性变换及其MATLAB程序

8: 循环语句关键字:For,支持无穷镶套

 

例:For(i=1:3)(x[i]>=A[i]*i);

例7.5.1  受来一致组试数据点的横坐标向量为x=(7.5  6.8 5.10 
4.5  3.6  3.4 2.6  2.5  2.1 1.5  2.7 
3.6),纵横坐标向量为y=(359.26 165.6059.17 41.66 25.92 22.37 
13.47 12.8711.87 6.69 14.87 
24.22),试用线性变换和线性最小二就法求拟合曲线,并因此(7.2),(7.3)和(7.4)式估计该误差,作出拟合曲线.

等同于: x[1] >=A[1]*1;

解  (1)先是冲被闹底数据点,用下列MATLAB程序画有散点图.

x[2] >=A[2]*2;

以MATLAB工作窗口输入程序

x[3] >=A[3]*3;

>>x=[7.5  6.8  5.10 4.5  3.6  3.4 2.6  2.5  2.1 1.5  2.7  3.6];

9: 新增特殊密度分布函数:BetaCDF, BetaPDF, BinoCDF, BinoPDF, Chi2CDF,
Chi2PDF, ExpCDF,
ExpPDF, PoissCDF, PoissPDF, TCDF, TPDF

y=[359.26  165.60  59.17 41.66  25.92  22.37 13.47  12.87  11.87
6.69 14.87   24.22];

10:增加函数求导计算功能

plot(x,y,’r*’), legend(‘数据点(xi,yi)’)

例:(x*exp(x+sin(x)))’ ==>

xlabel(‘x’), ylabel(‘y’),

diff(x*exp(x+sin(x)),x) = exp(x+sin(x))+exp(x+sin(x))*(1+cos(x))*x

title(‘例7.5.1的数据点(xi,yi)的散点图’)

diff(x*exp(x+sin(x)),x=3) = exp(x+sin(x))+exp(x+sin(x))*(1+cos(x))*x
= 23.82417126

运作后屏幕显示数据的散点图(略).

11:新增:

(2)冲数量散点图,取拟合曲线为

BinParameter: 定义0-1变量;

          e ,            (7.19)

IntParameter: 定义正整数变量;

里面凡内需定系数.令,则(7.19)化为.在MATLAB工作窗口输入程序

ParameterDomain:定义变量范围;

>>x=[7.5  6.8  5.10 4.5  3.6  3.4 2.6  2.5  2.1  1.5 2.7  3.6];

PlotXYZData:画三维数据图;

y=[359.26  165.60 59.17  41.66  25.92 22.37  13.47  12.87 11.87 6.69 
14.87   24.22]; 

PlotMeshData:画三维网格数据图;

Y=log(y); a=polyfit(x,Y,1);B=a(1);A=a(2); b=B,a=exp(A)

PlotPoint3D:画三维点图;

n=length(x); X=8:-0.01:1; Y=a*exp(b.*X); f=a*exp(b.*x);

12:众多改良,运行更快捷、稳定。

plot(x,y,’r*’,X,Y,’b-‘), xlabel(‘x’),ylabel(‘y’)

错误纠正:

legend(‘数据点(xi,yi)’,’拟合曲线y=f(x)’)

1:函数表达式中冒出空格显错的问题。

title(‘例7.5.1的数据点(xi,yi)和拟合曲线y=f(x)的图形’)

2:拟合时,用“DataFile”调用外部数据文件出错。

fy=abs(f-y); fy2=fy.^2; Ew=max(fy), E1=sum(fy)/n, E2=sqrt((sum(fy2))/n)

3:用超过两次“DataSet- EndDataSet”定义数据时错

运作后屏幕显示e的系数b =0.624 1,a =2.703
9,数据和拟合函数f的顶深误差Ew =67.641
9,平均误差E1=8.677 6和统方根误差E2=20.711
3与该数据点和拟合曲线e的图形(略).

4:拟合时,用“SkipStep“出错。

 

5:函数中冒出如“2E+10“时显错的问题。

7.6  函数逼近及其MATLAB程序

6: 其它诸多Bugs

至上均方逼近的MATLAB主程序

function
[yy1,a,WE]=zjjfbj(f,X,Y,xx)

m=size(f);n=length(X);m=m(1);b=zeros(m,m);c=zeros(m,1);

if n~=length(Y)

    error(‘X和Y的维数应该相同’)

end

for j=1:m

    for k=1:m

        b(j,k)=0;

        for i=1:n

        b(j,k)=b(j,k)+feval(f(j,:),X(i))*feval(f(k,:),X(i));

        end

    end

    c(j)=0;

    for i=1:n

        c(j)=c(j)+feval(f(j,:),X(i))*Y(i);

    end

end

a=b\c;

WE=0;

for i=1:n

     ff=0;

for j=1:m

ff=ff+a(j)*feval(f(j,:),X(i));

end

WE=WE+(Y(i)-ff)*(Y(i)-ff);

end

if nargin==3

    return;

end

yy=[];

for i=1:m

    l=[];

    for j=1:length(xx)

        l=[l,feval(f(i,:),xx(j))];

    end

    yy=[yy l’];

end

  yy=yy*a; yy1=yy’;a=a’;WE;

 

例7.6.1  对数据XY,
用函数进行逼近,用所获得的侵函数计算在处于的部数价,并估计误差.其中

X=(1  3  4 5  6  7  8  9); Y=(-11  -13  -11  -7  -1 7  17 
29).

解  在MATLAB工作窗口输入程序

>> X=[ 1 3  4  5 6  7  8  9];Y=[-11  -13  -11  -7 -1  7 
17 29];

f=[‘fun0′;’fun1′;’fun2’];[yy,a,WE]=zjjfbj(f,X,Y,6.5)

运行后屏幕显示如下

yy =

  2.75000000000003

a =

 -7.00000000000010 -4.99999999999995  1.00000000000000

WE =

   7.172323350269439e-027

例7.6.2
 对数据XY,用函数,,e,进行逼近,其中X=(0 0.50
1.00 1.50 2.00 2.503.00),Y=(0 0.4794 0.8415 0.9815 0.9126
0.59850.1645).

在MATLAB工作窗口输入程序

>> X=[ 0  0.50  1.00 1.50  2.00  2.50  3.00];

Y=[0 0.4794  0.8415  0.9815 0.9126  0.5985  0.1645];

f=[‘fun0′;’fun1′;’fun2′;’fun3′;’fun4′;’fun5’];xx=0:0.2:3;

[yy,a,WE]=zjjfbj(f,X,Y, xx),plot(X,Y,’ro’,xx,yy,’b-‘)

运转后屏幕显示如下(图略)

yy =  Columns1 through 7

-0.0005   0.2037    0.3939    0.5656   0.7141    0.8348   0.9236

  Columns 8through 14

0.9771   0.9926    0.9691    0.9069   0.8080    0.6766    0.5191

  Columns 15through 16

   0.3444    0.1642

a = 0.3828   0.4070   -0.3901    0.0765  -0.4598    0.5653

WE = 1.5769e-004

纵使,最佳逼近函数为

y=0.3828+0.4070*x-0.3901*x^2+0.0765*exp(x)-0.4598*cos(x)
+0.5653*sin(x).

 

7.7  三角多项式逼近及其MATLAB程序

计三角多项式的MATLAB主程序

function
[A,B,Y1,Rm]=sanjiao(X,Y,X1,m)

n= length(X)-1;max1=fix((n-1)/2);

if m > max1

    m=max1;

end

A=zeros(1,m+1);B=zeros(1,m+1);

Ym=(Y(1)+Y(n+1))/2; Y(1)=Ym; Y(n+1)=Ym; A(1)=2*sum(Y)/n;

for i=1:m

B(i+1)=sin(i*X)*Y’; A(i+1)=cos(i*X)*Y’;

end

  A=2*A/n; B=2*B/n;
A(1)=A(1)/2;Y1=A(1);

for k=1:m

Y1=Y1+A(k+1)*cos(k*X1)+ B(k+1)*sin(k*X1);

Tm=A(1)+A(k+1).*cos(k*X)+ B(k+1).*sin(k*X); k=k+1;

end

Y;Tm; Rm=(sum(Y-Tm).^2)/n;

例7.7.1  冲达之只当去横坐标点 和函数.

(1)求之6阶三角多项式逼近,计算均方误差;

(2)将即时三个三角多项式分别和的傅里叶级数

的前6码进行较;

(3)利用三角多项式分别计算Xi= -2, 2.5的值;

(4)在同坐标系中,画生函数,的三角多项式和数据点的图形.

解 (1)输入程序

>>X1=-pi:2*pi/13:pi;Y1=2*sin(X1/3);X1i=[-2,2.5];

[A1,B1,Y11,Rm1]=sanjiao(X1,Y1,X1i,6),

 X2=-pi:2*pi/60:pi;Y2=2*sin(X2/3);

[A2,B2,Y12,Rm2]=sanjiao(X2,Y2,X1i,6)

X3=-pi:2*pi/350:pi;Y3=2*sin(X3/3);

[A3,B3,Y13,Rm3]=sanjiao(X3,Y3,X1i,6)

X1i=[-2,2.5];Y1=2*sin(X1i/3)

for n=1:6

bi=(-1)^(n+1)*18*sqrt(3)*n/(pi*(9*n^2-1))

end

(2)画图,输入程序

>>X1=-pi:2*pi/13:pi;Y1=2*sin(X1/3);

Xi=-pi:0.001:pi; f=2*sin(Xi/3);

[A1,B1,Y1i,R1m]=sanjiao(X1,Y1,Xi,6);X2=-pi:2*pi/60:pi;

Y2=2*sin(X2/3);X3=-pi:2*pi/350:pi;Y3=2*sin(X3/3);

[A2,B2,Y2i,R2m]=sanjiao(X2,Y2,Xi,6);

[A3,B3,Y3i,R3m]=sanjiao(X3,Y3,Xi,6);

plot(X1,Y1,’r*’, Xi, Y1i,’b-‘,Xi,Y2i,’g–‘, Xi, Y3i, ‘m:’, Xi, f,
‘k-.’)

xlabel(‘x’),ylabel(‘y’)

legend(‘数据点(xi,yi)’,’n=13底三角形多项式’,’n=60之三角形多件式’,’n=350底三角多起式’,’函数f(x)’)

title(‘例7.7.1底数据点(xi,yi)、n=13,60,350的三角形多起式T3和函数f(x)的图形’)

运转后图形(略).

 

7.8  随机数据点上的亚头拟合及其MATLAB程序

 

例7.8.1
设节点(X,Y,Z)中的XY各自是于区间与直达之50独随机数,Z是函数Z=7-3x3e在(X,Y)的值,拟合点(XI,YI)中的XI=-3:0.2:3,
YI=-2.5:0.2:3.5.各自就此二正拟合方法被最近邻内插法、三角基线性内插法、三角基三不良外插法和MATLAB4网格化坐标方法算在(XI,YI)处之价值,作出它们的图纸,并同被拟和曲面进行比较.

解  (1)最近邻内插法.输入程序

>> x=rand(50,1);

y=rand(50,1); %转50独一样头均匀分布随机数x和y, x,y .

 X=-3+(3-(-3))*x;%采取x生成的随机变量.

 Y=-2.5+(3.5-(-2.5))*y; %用到y生成的随机变量.

Z=7-3* X.^3 .* exp(-X.^2 – Y.^2); %当每个随机点(X,Y)处计算Z的值.

X1=-3:0.2:3;

Y1=-2.5:0.2:3.5;

[XI,YI] = meshgrid(X1,Y1);    %将坐标(XI,YI)网格化.

ZI=griddata(X,Y,Z,XI,YI, ‘nearest’)
%计以每个插值点(XI,YI)处之插值ZI.

mesh(XI,YI, ZI)             %作二首位起合图形.

xlabel(‘x’), ylabel(‘y’), zlabel(‘z’),

title(‘用最近邻内插法拟合函数z =7-3 x^3 exp(-x^2 – y^2)
的曲面和节点的图形’)

%legend(‘拟合曲面’,’节点(xi,yi,zi)’)

hold on                     %在时下图上补偿加新图形.

plot3(X,Y,Z, ‘bo’)            %所以兰色小周画生每个节点(X,Y,Z).

hold of                     %毕在脚下图上上加新图形.

运作后屏幕显示用最近邻内插法拟合函数Z=7-3x3e在少数组不同节点处的曲面及其插值ZI(略).

(2)三角基线性内插法.

输入程序

>> x=rand(50,1);

y=rand(50,1); %转50个一律首先均匀分布随机数x和y, x,y .

 X=-3+(3-(-3))*x;%采取x生成达标之随机变量.

 Y=-2.5+(3.5-(-2.5))*y; %使用y生成达标之随机变量.

Z=7-3* X.^3 .* exp(-X.^2 – Y.^2); %以每个随机点(X,Y)处计算Z的值.

X1=-3:0.2:3;

Y1=-2.5:0.2:3.5;

[XI,YI] = meshgrid(X1,Y1);    %将坐标(XI,YI)网格化.

ZI=griddata(X,Y,Z,XI,YI, ‘linear’) %计量以每个插值点(XI,YI)处的插值ZI.

mesh(XI,YI, ZI)             %发二长起合图形.

xlabel(‘x’), ylabel(‘y’), zlabel(‘z’),

title(‘用三角基线性内插法拟合函数z =7-3 x^3 exp(-x^2 – y^2)
的曲面和节点的图形’)

%legend(‘拟合曲面’,’节点(xi,yi,zi)’)

hold on                     %于眼前图上添加新图形.

plot3(X,Y,Z, ‘bo’)            %为此兰色小周画有每个节点(X,Y,Z).

hold of                     %结于眼前图上加加新图形.

运转后屏幕显示用三角基线性内插法拟合函数Z=7-3x3e在有限组不同节点处的曲面和节点的图片及其插值ZI(略).

(3)三角基三涂鸦外插法.

输入程序

>> x=rand(50,1);

y=rand(50,1); %生成50个一律第一均匀分布随机数x和y, x,y .

 X=-3+(3-(-3))*x;%应用x生成达标之随机变量.

 Y=-2.5+(3.5-(-2.5))*y; %采用y生成达标之随机变量.

Z=7-3* X.^3 .* exp(-X.^2 – Y.^2); %当每个随机点(X,Y)处计算Z的值.

X1=-3:0.2:3;

Y1=-2.5:0.2:3.5;

[XI,YI] = meshgrid(X1,Y1);    %将坐标(XI,YI)网格化.

ZI=griddata(X,Y,Z,XI,YI, ‘cubic’) %乘除在每个插值点(XI,YI)处的插值ZI.

mesh(XI,YI, ZI)             %犯二首位起合图形.

xlabel(‘x’), ylabel(‘y’), zlabel(‘z’),

title(‘用三角基三坏外插法拟合函数z =7-3 x^3 exp(-x^2 – y^2)
的曲面和节点的图形’)

%legend(‘拟合曲面’,’节点(xi,yi,zi)’)

hold on                     %在眼前图上加加新图形.

plot3(X,Y,Z, ‘bo’)            %就此兰色小周画起每个节点(X,Y,Z).

hold of                     %说尽在目前图上补偿加新图形.

运行后屏幕显示用三角基三次外插法拟合函数Z=7-3x3e在简单组不同节点处的曲面和节点的图片及其插值ZI(略).

(4)MATLAB4网格化坐标方法.

输入程序

>> x=rand(50,1);

y=rand(50,1); %转变50只同老大都匀分布随机数x和y, x,y .

 X=-3+(3-(-3))*x;%运用x生成达的随机变量.

Y=-2.5+(3.5-(-2.5))*y; %运y生成达的随机变量.

Z=7-3* X.^3 .* exp(-X.^2 – Y.^2); %在每个随机点(X,Y)处计算Z的值.

X1=-3:0.2:3; Y1=-2.5:0.2:3.5;

[XI,YI] = meshgrid(X1,Y1);    %将坐标(XI,YI)网格化.

ZI=griddata(X,Y,Z,XI,YI, ‘v4’) %计以每个插值点(XI,YI)处的插值ZI.

mesh(XI,YI, ZI)             %犯二处女起合图形.

xlabel(‘x’), ylabel(‘y’), zlabel(‘z’),

title(‘用MATLAB 4网格化坐标方法拟合函数z =7-3x^3 exp(-x^2 –
y^2) 的曲面和节点的图形’)

%legend(‘拟合曲面’,’节点(xi,yi,zi)’)

hold on                     %每当现阶段图上补偿加新图形.

plot3(X,Y,Z, ‘bo’)            %就此兰色小周画出每个节点(X,Y,Z).

hold of                     %了却在手上图上上加新图形.

运作后屏幕显示用MATLAB
4网格化坐标方法拟合函数Z=7-3x3e在有限组不同节点处的曲面和节点的图形及其插值ZI(略).

(5)作于拟合曲面*Z=7-3x*3e与节点的图形.

输入程序

>> x=rand(50,1);

y=rand(50,1); %变迁50独一样首均匀分布随机数x和y, x,y .

 X=-3+(3-(-3))*x;%使x生成随机变量.

Y=-2.5+(3.5-(-2.5))*y;  %动y生成随机变量.

Z=7-3* X.^3 .* exp(-X.^2 – Y.^2); %以每个随机点(X,Y)处计算Z的值.

X1=-3.:0.1:3.;

Y1=-2.5:0.1:3.5;

[XI,YI] = meshgrid(X1,Y1);    %将坐标(XI,YI)网格化.

ZI=7-3* XI.^3 .* exp(-XI.^2 – YI.^2);

mesh(XI,YI, ZI)             %发二初次起合图形.

xlabel(‘x’), ylabel(‘y’), zlabel(‘z’),

title(‘被起合函数z =7-3 x^3 exp(-x^2 – y^2) 的曲面和节点的图形’)

%legend(‘被起合函数曲面’,’节点(xi,yi,zi)’)

hold on                     %当当前图上加加新图形.

plot3(X,Y,Z, ‘bo’)            %据此兰色小周画来每个节点(X,Y,Z).

hold of                     %了结于眼前图上补偿加新图形.

运作后屏幕显示为起合函数Z=7-3x3e的曲面和节点的图样及其函数值ZI(略).

 

7.9   随机数据点上之元拟合及其MATLAB程序

 

 

例7.9.1
首先利用MATLAB函数rand产生随机数据X1,Y1,Z1,然后用线性变换 (其中)将随意数据X1,Y1
,Z1 变换吧节点坐标(X,Y,Z),再就此函数e生成多少W,
用三最先最近邻内插法方法计算函数在插值点xi yizi=yi地处拟合数据的价,并作该图形.

 输入程序   

>>  X1=-5+5*rand(10,1);

Y1=-5+5*rand(10,1);

Z1=Y1;

[X,Y,Z] = meshgrid(X1,Y1,Z1);

W=7-3* X.^3 .* Y.*(Z+1).* exp(-X.^2 – Y.^2- Z.^2);

xi=-3:0.5:10;

yi=-2:0.5:13;

zi=yi;

[XI,YI,ZI] = meshgrid(xi,yi,zi);

W1=griddata3(X, Y, Z, W, XI, YI, ZI, ‘nearest’);

slice(XI,YI,ZI,W1,[-2 4 9.5],9,[-2 2 9]),

%shading flat

%lighting flat

xlabel(‘x’), ylabel(‘y’), zlabel(‘z’),

title(‘被起合函数W=7-3X^3Y(Z+1)exp(-X^2 – Y^2- Z^2) ‘);

hold on

colorbar(‘horiz’)

view([-30  45])

运行后屏幕显示三元线性拟合值及其图形(略).

 

例7.9.2
 
设节点(X,Y,Z,W)中的X,YZ分级是以区间和,Y=Z落得之15只随机数,W是函数e在(X,Y,Z)的值,拟合点(xi,yi,zi)中的xi=-3:0.2:3,
yi=-2.5:0.2:3.5,zi=yi
用’linear’方法算拟合数据的价值,并作该图形.

 输入程序

>>x=rand(15,1); y=rand(15,1);

X1=-3+(3-(-3))*x;

Y1=-2.5+(3.5-(-2.5))*y;Z1=Y1;

[X,Y,Z] = meshgrid(X1,Y1,Z1);

W=2+X.* exp(-X.^2 – Y.^2- Z.^2);

xi=-3:0.2:3; yi=-2.5:0.2:3.5; zi=yi;

[X2,Y2,Z2]=meshgrid(xi,yi,zi);

W1=griddata3(X, Y, Z, W, X2,Y2,Z2,’linear’);

slice(X2,Y2,Z2,W1,[-1 0 1.5],2,[-2 3]),

shading flat,lighting flat,

xlabel(‘x’), ylabel(‘y’), zlabel(‘z’),

title(‘被起合函数W=2+X exp(-X^2 – Y^2- Z^2)’);

hold on,colorbar(‘horiz’),view([-3  5])

运作后屏幕显示三元线性拟合值及其图形(略).

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图