B3C1C2C3B4C1C2C3
C1 1 3 1/3 C1 1 1/3 5 C2 1/3 1 7 C2 3 1 7 C3 3 1/7 1 C3 1/5 1/7 1 B5C1C2C3B6C1C2C3
C1 1 1 7 C1 1 7 9 C2 1 1 7 C2 1/7 1 1 C3 1/7 1/7 1 C3 1/9 1 1
(层次总排序)如下表所示。 研究 发展 待遇 同事 地理 单位 准则 课题 前途 情况 位置 名气 0.1507 0.1792 0.1886 0.0472 0.1464 0.2879 准则层权值 方案层 工作1 0.13650.09740.24260.27900.46670.7986 单排序 工作2 0.62500.33310.08790.64910.46670.1049 权值 工作3 0.23850.56950.66940.07190.06670.0965 根据层次总排序权值,该生最满意的工作为工作1。 计算程序如下: clc
a=[1,1,1,4,1,1/2 1,1,2,4,1,1/2 1,1/2,1,5,3,1/2
1/4,1/4,1/5,1,1/3,1/3 1,1,1/3,3,1,1 2,2,2,3,3,1];
[x,y]=eig(a);lamda=max(diag(y)); [i,j]=find(y==lamda);
ci1=(lamda-6)/5;cr1=ci1/1.24 w1=x(:,j)/sum(x(:,j))
b1=[1,1/4,1/2;4,1,3;2,1/3,1];
[x,y]=eig(b1);lamda=max(diag(y)); [i,j]=find(y==lamda);
ci21=(lamda-3)/2;cr21=ci21/0.58 w21=x(:,j)/sum(x(:,j))
b2=[1 1/4 1/5;4 1 1/2;5 2 1]; [x,y]=eig(b2);lamda=max(diag(y)); [i,j]=find(y==lamda);
ci22=(lamda-3)/2;cr22=ci22/0.58 w22=x(:,j)/sum(x(:,j))
b3=[1 3 1/3;1/3 1 1/7;3 7 1]; [x,y]=eig(b3);lamda=max(diag(y)); [i,j]=find(y==lamda);
ci23=(lamda-3)/2;cr23=ci23/0.58 w23=x(:,j)/sum(x(:,j))
b4=[1 1/3 5;3 1 7;1/5 1/7 1]; [x,y]=eig(b4);lamda=max(diag(y)); [i,j]=find(y==lamda);
总排序权值 0.3952 0.2996 0.3052 ci24=(lamda-3)/2;cr24=ci24/0.58 w24=x(:,j)/sum(x(:,j))
b5=[1 1 7;1 1 7;1/7 1/7 1]; [x,y]=eig(b5);lamda=max(diag(y)); [i,j]=find(y==lamda);
ci25=(lamda-3)/2;cr25=ci25/0.58 w25=x(:,j)/sum(x(:,j))
b6=[1 7 9;1/7 1 1 ;1/9 1 1]; [x,y]=eig(b6);lamda=max(diag(y)); [i,j]=find(y==lamda);
ci26=(lamda-3)/2;cr26=ci26/0.58 w26=x(:,j)/sum(x(:,j))
w_sum=[w21,w22,w23,w24,w25,w26]*w1 ci=[ci21,ci22,ci23,ci24,ci25,ci26]; cr=ci*w1/sum(0.58*w1)
习 题 八
1. 若发现一成对比较矩阵A的非一致性较为严重,应如何寻找引起非一致性的元素?例如,设已构造了成对比较矩阵
??1A??5?1??31?3?516?
?11?6?(i)对A作一致性检验。
(ii)如A的非一致性较严重,应如何作修正。
第九章 插值与拟合
插值:求过已知有限个数据点的近似函数。
拟合:已知有限个数据点,求近似函数,不要求过已知数据点,只要求在某种意义下它在这些点上的总偏差最小。
插值和拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者的数学方法上是完全不同的。而面对一个实际问题,究竟应该用插值还是拟合,有时容易确定,有时则并不明显。 §1 插值方法
下面介绍几种基本的、常用的插值:拉格朗日多项式插值、牛顿插值、分段线性插值、Hermite插值和三次样条插值。
1.1 拉格朗日多项式插值 1.1.1 插值多项式
用多项式作为研究插值的工具,称为代数插值。其基本问题是:已知函数f(x)在区间[a,b]上n?1个不同点x0,x1,?,xn处的函数值yi?f(xi)(i?0,1,?,n),求一个至多n次多项式
?n(x)?a0?a1x???anxn (1) 使其在给定点处与f(x)同值,即满足插值条件
?n(xi)?f(xi)?yi(i?0,1,?,n) (2)
?n(x)称为插值多项式,xi(i?0,1,?,n)称为插值节点,简称节点,[a,b]称为插值
区间。从几何上看,n次多项式插值就是过n?1个点(xi,f(xi))(i?0,1,?,n),作一条多项式曲线y??n(x)近似曲线y?f(x)。
n次多项式(1)有n?1个待定系数,由插值条件(2)恰好给出n?1个方程
2n?a0?a1x0?a2x0???anx0?y0?2n?a0?a1x1?a2x1???anx1?y1 (3) ?? ? ? ?a?ax?ax2???axn?y1n2nnnn?0记此方程组的系数矩阵为A,则
1x0det(A)?1x12x0?nx0x12?x1n???????2n1xnxn?xn
是范德蒙特(Vandermonde)行列式。当x0,x1,?,xn互不相同时,此行列式值不为零。因此方程组(3)有唯一解。这表明,只要n?1个节点互不相同,满足插值要求(2)
的插值多项式(1)是唯一的。
插值多项式与被插函数之间的差
Rn(x)?f(x)??n(x) 称为截断误差,又称为插值余项。当f(x)充分光滑时,
f(n?1)(?)Rn(x)?f(x)?Ln(x)??n?1(x),??(a,b)
(n?1)!其中?n?1(x)??(x?xj?0nj)。
1.1.2拉格朗日插值多项式
实际上比较方便的作法不是解方程(3)求待定系数,而是先构造一组基函数
li(x)?(x?x0)?(x?xi?1)(x?xi?1)?(x?xn)
(xi?x0)?(xi?xi?1)(xi?xi?1)?(xi?xn)nx?xj?? , (i?0,1,?,n)
x?xj?0ijj?ili(x)是n次多项式,满足
?0li(xj)???1令
nj?ij?i
?n?x?xj??Ln(x)??yili(x)??yi?? (4) ?i?0i?0?j?0xi?xj??j?i?n上式称为n次Lagrange插值多项式,由方程(3)解的唯一性,n?1个节点的n次Lagrange插值多项式存在唯一。
1.1.3 用Matlab作Lagrange插值
Matlab中没有现成的Lagrange插值函数,必须编写一个M文件实现Lagrange插值。
设n个节点数据以数组x0,y0输入(注意Matlat的数组下标从1开始),m个插值点以数组x输入,输出数组y为m个插值。编写一个名为lagrange.m的M文件: function y=lagrange(x0,y0,x); n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j)); end end
s=p*y0(k)+s; end
y(i)=s; end
1.2 牛顿(Newton)插值
在导出Newton公式前,先介绍公式表示中所需要用到的差商、差分的概念及性质。
1.2.1 差商
定义 设有函数f(x),x0,x1,x2,?为一系列互不相等的点,称
f(xi)?f(xj)xi?xj即
(i?j)为f(x)关于点xi,xj一阶差商(也称均差)记为f[xi,xj],
f[xi,xj]?f(xi)?f(xj)xi?xj
称一阶差商的差商
f[xi,xj]?f[xj,xk]xi?xk为f(x)关于点xi,xj,xk的二阶差商,记为f[xi,xj,xk]。一般地,称 f[x0,x1,?,xk?1]?f[x1,x2,?,xk]
x0?xk为f(x)关于点x0,x1,?,xk的k阶差商,记为
f[x0,x1,?,xk?1]?f[x1,x2,?,xk]f[x0,x1,?,xk]?
x0?xk容易证明,差商具有下述性质: f[xi,xj]?f[xj,xi]
f[xi,xj,xk]?f[xi,xk,xj]?f[xj,xi,xk]
1.2.2 Newton插值公式 线性插值公式可表成
?1(x)?f(x0)?(x?x0)f[x0,x1]
称为一次Newton插值多项式。一般地,由各阶差商的定义,依次可得
f(x)?f(x0)?(x?x0)f[x,x0]
f[x,x0]?f[x0,x1]?(x?x1)f[x,x0,x1]
f[x,x0,x1]?f[x0,x1,x2]?(x?x2)f[x,x0,x1,x2]
??
f[x,x0,?,xn?1]?f[x0,x1,?,xn]?(x?xn)f[x,x0,?,xn]
将以上各式分别乘以1,(x?x0),(x?x0)(x?x1),?,(x?x0)(x?x1)?(x?xn?1),然后相加并消去两边相等的部分,即得
f(x)?f(x0)?(x?x0)f[x0,x1]?? ?(x?x0)(x?x1)?(x?xn?1)f[x0,x1,?,xn] ?(x?x0)(x?x1)?(x?xn)f[x,x0,x1,?,xn]记
Nn(x)?f(x0)?(x?x0)f[x0,x1]?? ?(x?x0)(x?x1)?(x?xn?1)f[x0,x1,?,xn]Rn(x)?(x?x0)(x?x1)?(x?xn)f[x,x0,x1,?,xn]
??n?1(x)f[x,x0,x1,?,xn]显然,Nn(x)是至多n次的多项式,且满足插值条件,因而它是f(x)的n次插值多项式。这种形式的插值多项式称为Newton插值多项式。Rn(x)称为Newton插值
余项。
Newton插值的优点是:每增加一个节点,插值多项式只增加一项,即
Nn?1(x)?Nn(x)?(x?x0)?(x?xn)f[x0,x1,?,xn?1]
因而便于递推运算。而且Newton插值的计算量小于Lagrange插值。
由插值多项式的唯一性可知,Newton插值余项与Lagrange余项也是相等的,即
Rn(x)??n?1(x)f[x,x0,x1,?,xn]f(n?1)(?)??n?1(x)(n?1)!由此可得差商与导数的关系
??(a,b)
f(n)(?)f[x0,x1,?,xn]?
n!其中??(?,?),??min{xi},??max{xi}。
0?i?n0?i?n1.2.3 差分