函数逼近与曲线拟合,基于MATLAB实现的云模型总结隶属度

”或者’云滴‘是云模型的中坚单元,所谓云是指在其论域上的八个遍布,能够用协同可能率的情势(x,
u)来表示

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

云模型用四个数据来表示其特征 
仰望:云滴在论域空间分布的期望,一般用符号Εx表示。 
熵:不分明程度,由离散程度和模糊程度共同决定,1般用En表示。 
超熵: 用来衡量熵的不分明性,既熵的熵,一般用符号He表示。

 

云有三种爆发器:正向云爆发器和逆向云发生器,分别用来生成丰硕的云滴和总括云数字特征(Ex,
En,He)。

例7.2.1 
给出一组数据点列入表7–第22中学,试用线性最小2乘法求拟合曲线,并用(七.二),(7.三)和(7.肆)式估算其基值误差,作出拟合曲线.

正向云发生器: 
一.生成以En为期待,以He^二为方差的正态随机数En’。 
二.生成与Ex为期待,以En‘^2为方差的正态随机数x。 
3.计量隶属度约等于规定是 u=exp(-(x – Ex)^二 / 二*En‘^二),则(x,
u)便是绝对于论域U的一个云滴。这里选取常用的“钟型”函数u=exp(-(x –
a)^2 / 二*b^二)为专属度函数。 

 

  1. 再次生成1二三手续直到生成足够的云滴

表七–二  例七.二.壹的1组数据

逆向云产生器 
壹.划算样本均值X和方差S^贰 
2.Ex = X 
3.En = S^2 
4. He = sqrt(S^2 – En^2)

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

云模型的MATLAB设计 ———评估上面二位选手的统一筹划水准

 

选手 A B C D
1 9.5 10.3 10.1 8.1
2 10.3 9.7 10.4 10.1
3 10.6 8.6 9.2 10.0
4 10.5 10.4 10.1 10.1
5 10.9 9.8 10.0 10.1
6 10.6 9.8 9.7 10.0
7 10.4 10.5 10.6 10.3
8 10.1 10.2 10.8 8.4
9 9.3 10.2 9.6 10.0
10 10.5 10.0 10.7 9.9

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

MATLAB程序如下:

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

 cloud_main.m

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

% 以下是主函数cloud_main.m
clc;
clear all;
close all;
% 每幅图生成N个云滴
N = 1500;
% 射击成绩的原始数据
Y = [
    9.5 10.3 10.1 8.1;
    10.3 9.7 10.4 10.1;
    10.6 8.6 9.2 10.0;
    10.5 10.4 10.1 10.1;
    10.9 9.8 10.0 10.1;
    10.6 9.8 10.0 10.1;
    10.4 10.5 10.6 10.3;
    10.1 10.2 10.8 8.4;
    9.3 10.2 9.6 10.0;
    10.5 10.0 10.7 9.9;
    ];

for i = 1: size(Y,2)
    subplot(size(Y,2)/2, 2, i)
    % 调用函数
    [x, y, Ex, En, He] = cloud_transform(Y(:,i), N);
    plot(x, y, 'r.');
    xlabel('射击成绩分布/环');
    ylabel('确定度');
    title('人射击云模型还原图谱');
    % 控制坐标轴的范围
    % 统一坐标轴上才会在云模型形态上才具有可比性
    axis([8, 12, 0, 1]);
end

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

 

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

cloud_transform.m

function [x, y, Ex, En, He] = cloud_transform(y_spor, n);
% x 表示云滴, y 表示隶属度(这里是钟型隶属度), 意义是度量倾向的稳定程度;
% Ex 云模型的数字特征,表示期望;En 云模型的数字特征,表示滴(表示混乱程度的物理量,实在是打不出来了,就用这个代替了,下同);
% He 云模型的数字特征,表示超滴
Ex = mean(y_spor);
En = mean(abs(y_spor - Ex)).*sqrt(pi./2);
He = sqrt(var(y_spor) - En.^2);
% 通过统计数据样本计算云模型的数字特征
for q = 1:n
    Enn = randn(1).*He + En;
    x(q) = randn.*Enn + Ex;
    y(q) = exp(-(x(q) - Ex).^2./(2.*Enn.^2));
end
x;
y;

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

 

title(‘例七.贰.一的数据点(xi,yi)的散点图’)

 

运行后显示器展现数据的散点图(略).

结果如下图:

(3)编辑下列MATLAB程序总括在处的函数值,即输入程序

图片 1

>> syms a1 a2 a3 a4

 

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

能够观察C选手的云滴凝聚抱合程度更加高,所以能够认为C选手在此番竞技表现尤其优秀

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

 

运行后荧屏展现关于a1,a2,
a
3a4的线性方程组

读  《MATLAB在数学建立模型中的应用》

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]

编写制定构造相对误差平方和的MATLAB程序

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

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];

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

运作后荧屏突显抽样误差平方和如下

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

为求使达到最小,只需利用极值的必要条件 ,得到有关的线性方程组,那能够由上边包车型大巴MATLAB程序实现,即输入程序

>>syms a1 a2 a3 a4

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;

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

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

运营后显示器显示J分别对a1, a2 ,a3
,a4的偏导数如下

Ja11=

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

Ja21=

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

Ja31=

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

Ja41=

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

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

>>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];

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

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

运转后显示屏彰显拟合函数f会同全面C如下

C=    5.0911  -14.1905   6.4102   -8.2574

f=716503695845759/140737488355328*x^3

-7988544102557579/562949953421312*x^2

+1804307491277693/281474976710656*x

-4648521160813215/562949953421312                    

故所求的拟合曲线为

.

(4)编排下边包车型地铁MATLAB程序估量其相对误差,并作出拟合曲线和数量的图形.输入程序

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

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

n=length(xi);

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

x=-2.5:0.01: 3.6;

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

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

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

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

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

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

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

运转后显示器展现数据与拟合函数f的最大抽样误差Ew,平均抽样误差E1和均方根标称误差E2连同数据点和拟合曲线y=f(x)的图形(略).

Ew =           E1 =              E2 =

3.105 4         0.903 4           1.240 9

 

7.三  函数的取舍及其MATLAB程序

 

例7.3.1
 
交付1组实验数据点的横坐标向量为x=(-八.伍,-八.7,-7.一,-六.八,-5.拾,-4.伍,-三.陆,-三.4,-2.六,-2.五,-贰.1,-一.五,
-二.柒,-三.陆),纵横坐标向量为y=(45玖.26,52.81,1玖八.二柒,1陆伍.60,5玖.一柒,四1.66,二5.九贰,2二.37,1叁.四7,
1二.八柒,
1一.87,陆.6九,1四.八七,贰4.2二),试用线性最小贰乘法求拟合曲线,并用(七.二),(七.叁)和(7.4)式估摸其抽样误差,作出拟合曲线.

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

>>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];

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

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

title(‘例7.三.一的数据点(xi,yi)的散点图’)

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

(3)编辑下列MATLAB程序计算在处的函数值,即输入程序

>> syms a b

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)

运维后显示屏突显关于ab的线性方程组

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)]

编纂构造标称误差平方和的MATLAB程序如下

>>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];

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)];

fy=fi-y;

fy2=fy.^2;

J=sum(fy.^2)

运维后显示器显示抽样误差平方和如下

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

为求使达到最小,只需选择极值的须要条件,获得关于的线性方程组,那足以由上面包车型地铁MATLAB程序完结,即输入程序

>>syms a b

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;

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

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

运作后显示屏彰显J各自对的偏导数如下

Ja1=

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=

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)

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

a=            b=

2.8110        0.581 6

故所求的拟合曲线(柒.13)为

e.                  (7.14)

(4)听别人讲(7.二),(7.三),(7.4)和(7.14)式编写上面包车型客车MATLAB程序估量其标称误差,并做出拟合曲线和数码的图形.输入程序

>> 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];

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];

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

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

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

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

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

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

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

运转后显示器展现数据与拟合函数f的最大基值误差Ew = 390.141五,平均标称误差E1=3陆.94二 贰和均方根相对误差E2=106.03一七及其数据点和拟合曲线y=f(x)的图形(略).

 

七.四  多项式拟合及其MATLAB程序

例7.4.1 
给出1组数据点列入表七–三中,试用线性最小二乘法求拟合曲线,并用(7.二),(七.3)和(7.四)式预计其测量误差,作出拟合曲线.

表柒–三  例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

解  (1)首先依据表柒–3提交的数据点,用下列MATLAB程序画出散点图.

在MATLAB工作窗口输入程序

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

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

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

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

title(‘例柒.4.1的数据点(xi,yi)的散点图’)

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

(三)用作线性最小2乘拟合的多项式拟合的MATLAB程序求待定周全 .输入程序

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

运作后输出(7.1陆)式的周密

a =

2.8302   -7.3721   9.1382

故拟合多项式为 

.

(4)编辑下边的MATLAB程序预计其系统误差,并做出拟合曲线和数指标图形.输入程序

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

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

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

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

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

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

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

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

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

运营后荧屏显示数据与拟合函数f的最大引用误差Ew,平均相对误差E1和均方根抽样误差E2随同数据点(xi,yi)和拟合曲线y=f(x)的图形(略).

Ew=             E1 =                E2 =

0.7457,          0.389 2,            0.436 3

 

七.5  拟合曲线的线性别变化换及其MATLAB程序

 

例7.5.1  付出一组实验数据点的横坐标向量为x=(7.5  陆.八 5.10 
四.伍  三.六  三.4 二.陆  2.5  二.壹 壹.伍  二.7 
三.陆),纵横坐标向量为y=(35九.2陆 165.605玖.壹柒 四壹.6陆 二5.9二 2贰.叁柒 
一叁.四7 1二.871一.87 陆.6玖 1四.捌7 
②四.2二),试用线性别变化换和线性最小二乘法求拟合曲线,并用(7.贰),(柒.三)和(7.肆)式估摸其测量误差,作出拟合曲线.

解  (1)首先遵照提交的数据点,用下列MATLAB程序画出散点图.

在MATLAB工作窗口输入程序

>>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.60  59.17 41.66  25.92  22.37 13.47  12.87  11.87
6.69 14.87   24.22];

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

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

title(‘例七.五.一的数据点(xi,yi)的散点图’)

运作后荧屏呈现数据的散点图(略).

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

          e ,            (7.19)

里头是待定周全.令,则(7.1九)化为.在MATLAB工作窗口输入程序

>>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.60 59.17  41.66  25.92 22.37  13.47  12.87 11.87 6.69 
14.87   24.22]; 

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

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

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

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

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

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

运行后荧屏展现e的周到b =0.624 1,a =2.703
9,数据与拟合函数f的最大抽样误差Ew =陆柒.641
玖,平均基值误差E1=8.677 六和均方根引用误差E2=20.71一3及其数据点和拟合曲线e的图纸(略).

 

柒.陆  函数逼近及其MATLAB程序

一级均方逼近的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  根据上的个等距横坐标点 和函数.

(一)求的陆阶三角多项式逼近,总括均方误差;

(二)将那三个三角形多项式分别与的傅里叶级数

的前陆项进行相比;

(三)利用三角多项式分别总括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

(二)画图,输入程序

>>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=一三的三角形多项式’,’n=60的三角形多项式’,’n=350的三角多项式’,’函数f(x)’)

title(‘例7.7.一的数据点(xi,yi)、n=壹三,60,350的三角多项式T三和函数f(x)的图形’)

运维后图形(略).

 

7.8  随机数据点上的2元拟合及其MATLAB程序

 

例7.8.1
设节点(X,Y,Z)中的XY分级是在区间和上的四十九个随机数,Z是函数Z=7-3x3e在(X,Y)的值,拟合点(XI,YI)中的XI=-3:0.2:3,
YI=-二.5:0.贰:3.五.个别用2元拟合方法中如今邻内插法、三角基线性内插法、三角基2次内插法和MATLAB四网格化坐标方法计算在(XI,YI)处的值,作出它们的图形,并与被拟和曲面进行比较.

解  (一)方今邻内插法.输入程序

>> x=rand(50,1);

y=rand(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.^二); %在各类随机点(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-三 x^三 exp(-x^② – y^2)
的曲面和节点的图形’)

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

hold on                     %在现阶段图形上添加新图形.

plot三(X,Y,Z, ‘bo’)            %用兰色小圆圈画出每一个节点(X,Y,Z).

hold of                     %说尽在现阶段图形上添加新图形.

运维后显示屏呈现用近年来邻内插法拟合函数Z=7-3x3e在两组分歧节点处的曲面及其插值ZI(略).

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

输入程序

>> x=rand(50,1);

y=rand(50,1); %变通五11个1元均匀分布随机数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.^二 – 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)             %作2元拟合图形.

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

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

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

hold on                     %在当下图形上添加新图形.

plot三(X,Y,Z, ‘bo’)            %用兰色小圆圈画出各类节点(X,Y,Z).

hold of                     %扫尾在当下图形上添加新图形.

运行后荧屏彰显用三角基线性内插法拟合函数Z=7-3x3e在两组不一致节点处的曲面和节点的图样及其插值ZI(略).

(叁)三角基二次内插法.

输入程序

>> x=rand(50,1);

y=rand(50,壹); %变更五十七个1元均匀分布随机数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.^贰 – Y.^二); %在各样随机点(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-三 x^3 exp(-x^二 – y^二)
的曲面和节点的图形’)

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

hold on                     %在近年来图形上添加新图形.

plot三(X,Y,Z, ‘bo’)            %用兰色小圆圈画出每一个节点(X,Y,Z).

hold of                     %实以往如今图形上添加新图形.

运营后显示屏突显用三角基一次内插法拟合函数Z=7-3x3e在两组不相同节点处的曲面和节点的图片及其插值ZI(略).

(四)MATLAB肆网格化坐标方法.

输入程序

>> x=rand(50,1);

y=rand(50,壹); %变迁4二十一个壹元均匀分布随机数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.^贰); %在每种随机点(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, ‘v四’) %乘除在每一个插值点(XI,YI)处的插值ZI.

mesh(XI,YI, ZI)             %作贰元拟合图形.

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

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

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

hold on                     %在此时此刻图形上添加新图形.

plot叁(X,Y,Z, ‘bo’)            %用兰色小圆圈画出各样节点(X,Y,Z).

hold of                     %告终在此时此刻图形上添加新图形.

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

(伍)作被拟合曲面*Z=7-3x*3e和节点的图形.

输入程序

>> x=rand(50,1);

y=rand(50,1); %变型四15个一元均匀分布随机数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^二 – y^2) 的曲面和节点的图形’)

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

hold on                     %在近年来图形上添加新图形.

plot叁(X,Y,Z, ‘bo’)            %用兰色小圆圈画出各种节点(X,Y,Z).

hold of                     %甘休在近期图形上添加新图形.

运维后显示器展现被拟合函数Z=7-3x3e的曲面和节点的图样及其函数值ZI(略).

 

柒.九   随机数据点上的元拟合及其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-三X^三Y(Z+一)exp(-X^二 – Y^二- Z^2) ‘);

hold on

colorbar(‘horiz’)

view([-30  45])

运作后显示屏展现安慕希线性拟合值及其图形(略).

 

例7.9.2
 
设节点(X,Y,Z,W)中的X,YZ分别是在区间和,Y=Z上的1四个随机数,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^二 – Y^2- Z^2)’);

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

运营后显示器呈现长富线性拟合值及其图形(略).