模式识别与智能信息处理实践实验报告

模式识别与智能信息处理实践实验报告
模式识别与智能信息处理实践实验报告

《模式识别与智能信息处理实践》实验报告书

专业:

学号:

姓名:

计算机科学与工程学院

2011.6.20

实验一聚类分析

一、实验目的

通过聚类分析实验,加深对聚类分析基本思想、方法的理解和掌握。

二、实验内容

了解动态、静态聚类算法的特点;

熟练掌握k-均值算法或层次聚类算法;

编写能对实际模式样本正确分类的算法程序。

掌握动态聚类算法的基本思想;

认识类别数、初始类心的选择对k-均值算法聚类结果的影响;

编写能对实际模式样本正确分类的k-均值算法程序。

三、方法手段

设类别数为k,选取k个初始聚类中心,按最小距离原则将各模式分配到k

类中的某一类,不断地计算类心和调整各模式的类别使每个模式特征矢量到其所

属类别中心的距离平方之和最小。

四、k-均值算法

(1)从D中随机取k个元素,作为k个簇的各自的中心。

(2)分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到

相异度最低的簇。

(3)根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有

元素各自维度的算术平均数。

(4)将D中全部元素按照新的中心重新聚类。

(5)重复第4步,直到聚类结果不再变化。

五、k-均值程序运行结果

(1)改变初始类心,观察对聚类结果的影响

若选初始类心是[1 2 3]时的结果为其分为1类共39个,分为2类共61个,分为3类共50个,其中被分为第1类的样本为{51 53 78 101 103

104 105 106 108 109 110 111 112 113 116 117 118 119 121 123 125 126 129 130 131 132 133 135 136 137 138 140 141 142 144 145 146 148 149},被分为第2

类的样本为{52 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 102 107 114 115 120 122 124 127 128 134 139 143 147 150},被分为第3类的样本为{1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50}。

若选初始类心是[2 4 5]时其聚类结果为其分为1类共96个,分为2类共

22个,分为3类共个32,其中被分为第1类的样本为{51 52 53 54 55 56 57 59 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 95 96 97 98 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150},被分为第2类的样本为{2 3 4 7 9 10 13 14 25 26 30 31 35 39 42 43 46 48 58 61 94 99},被分为第3类的样

本为{1 5 6 8 11 12 15 16 17 18 19 20 21 22 23 24 27 28 29 32 33 34 36 37 38 40 41 44 45 47 49 50}。

可见,初始类心的选择对于K均值算法的影响较大。

(2)改变类别数k,比较其对类内距离平方和的大小的影响

若k=3且选初始类心是[1 2 3]时,其最终各类中心的距离为[1.1657 0.8230 4.0783],若k=4且选初始类心是[1 2 3 4]时,其最终各类中心的距

离为[1.3049 0.4917 4.0783 1.3928],可见,改变类别数k,其对类

内距离平方和的大小有直接的影响,且k越大, 其类内距离平方和距离越小。

六、实验总结

影响k-均值算法结果的因素有:初始类心的选择以及k值的选择,且k-均值算法适用于k值已知的情况,即类别号已知的情况。

七、Kmeans程序

function y=my_Kmeans(k,mid)

k=3;%类数

mid=[1 2 3]; %随便给三个聚类中心

%从文本文件读入数据放入X中

X=load('iris.txt','height','weight');

num=size(X,1);%获得X维数大小

for i=1:k

Z(i,:)=X(mid(i),:);%获取k个聚类中心的初始坐标

end

%计算新的聚类中心,K-均值算法的核心部分

temp=[];

while(~isequal(Z,temp)) %聚类中心是否变化,若不变化则停止循环

temp=Z;

class=cell(k,1);%初始化类样本class

value=cell(k,1);%初始化类样本的坐标value

for j=1:num

for t=1:k

D(t)=dist(X(j,:),Z(t,:)');%计算每个样本到类中心的距离

[minu,index]=min(D);%求出离聚类中心最小的一个样本

end

class{index}=cat(1,class{index},j);%将该样本归于一类

value{index}=cat(1,value{index},X(j,:));%存放该类样本的坐标

end

for i=1:k

Z(i,:)=mean(value{i});%计算k类样本的均值,更新聚类中心

end

end

celldisp(class);%显示Kmeans聚类结果

D %显示最终类间距离

实验二判别域代数界面方程法

一、实验目的

通过实验加深对判别域代数界面方程法基本思想、方法的认识,了解线性判别函数的分类能力,熟练掌握感知器算法,或H-K算法,或累积势函数分类法,以及它们各自的适用条件,加深对有监督训练、线性可分、解空间、权空间等概念的理解,编写能对实际模式样本正确分类的算法程序。

二、实验内容

编写能对实际模式样本正确分类的感知器算法,或H-K算法,或累积势函数分类法的算法程序,能对实际模式样本进行正确分类。

三、方法手段:

设已知类别模式特征矢量集为{x

1,x

2

,…,x

N

},类别数为c。

感知器算法是基于一次准则函数的梯度下降法。从任意初始解矢量w

出发,

利用产生错分的样本对解矢量进行迭代校正:w

k =w

k-1

+ρx

i

,i=1,2,…,c,

k=0,1,2…,ρ=常数,从而解得线性判决函数d(x)=w’x的解矢量w.

四、感知器算法

1、算法思想

校正方法实际上是最优化技术中的负梯度下降法。该算法也是人工神经网络理论中的线性阈值神经元的学习算法。

2、算法原理步骤

设给定一个增广的训练模式集{}N x x x ,,,2

1,其中每个模式类别已知,它们分属1ω类和2ω类。

⑴ 置步数1=k ,令增量=ρ某正的常数,分别赋给增广权矢量初值)1(w

各分量较小的任意值。

⑵ 输入训练模式k x 。 ⑶ 计算判别函数值k x k w )('。 ⑷ 调整增广权矢量,规则是 ① 如果1ω∈k x 和0)(≤'k x k w ,则k x k w k w

ρ+=+)()1(;(偏小,故加) ② 如果2ω∈k x 和0)(≥'k x k w ,则k x k w k w ρ-=+)()1(;(偏大,故减) ③ 如果1ω∈k x 和0)(>'k x k w ,或2ω∈k

x 和0)(<'k x k w

,则)()1(k w k w

=+。(分类正确,不校正)

⑸ 令1+=k k 。如果N k ≤,返至⑵。如果N k >,检验判别函数x w

'对N x x x

,,,21是否都能正确分类。若是,结束;若不是,令1=k ,返至⑵。

如果训练模式已经符号规范化,即2ω∈k x 已乘以-1(包括增广分量1),

则校正权矢量的规则可统一为

???ρ+=+k x k w k w k w )()()1( )(0)()

(0)(错误分类若正确分类若≤'>'k k x k w x k w

在用全部模式训练完一轮后只要还有模式被判错,则需要进行第二轮迭代,用全部训练模式再训练一次,建立新的权矢量。如果对训练模式还有错分的,则

进行第三轮迭代,余类推,直至对所有训练模式均能正确分类为止,此时的w 即

为所求的权矢量。

五、感知器算法实验结果

(1)改变权矢量初值,观察对算法的影响

已知w1:X1=(0 0)’,X2=(1 0)’,X3=(1 1)’,X4=(1 2)’;

w2:X5=(1 3)’,X6=(2 3)’,X7=(3 2)’,X8=(3 3)’,

若步长因子ρ=1不变,权初始值取w=[0 0 0],则需迭代eth0=15步,若权初始值取w=[1 1 1],则需迭代eth0=18步,可见,权初始值选取的不同,将直接导致算法的收敛速度不同。

(2)改变步长因子ρ,观察对算法的影响

若权初始值取w=[0 0 0]不变,取步长因子ρ=1,则需迭代eth0=15步,若取步长因子ρ=0.1,则需迭代eth0=16步,可见,步长因子ρ选取的不同,也将直接导致算法的收敛速度不同。

(3)算法的适用性

若已知w1:X1=(1 3)’,X2=(2 3)’,X3=(1 1)’,X4=(1 2)’;

w2:X5=(0 0)’,X6=(1 0)’,X7=(3 2)’,X8=(3 3)’,则导致该程序死循环,可见,感知器算法只适用两类样本线性可分的条件下(图1),若希望在两类样本线性不可分的条件下,构造一判决平面,则可考虑使用势函数。

图1 感知器算法分类结果

图2 线性不可分的情况

六、实验程序

function y=my_preception(W1,W2)

%感知器算法,对两类问题生成线性判别函数

%注意:前提是两类可线性判别,否则将死循环%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

W1=[0 0;1 0;1 1;1 2];%w1类中的样本

W2=[1 3;2 3;3 2;3 3];%w2类中的样本

%%%%%%初始化

w=[0 0 0]; %任取w初值

c=1; %任取校正增量系数c=1;

%%%%%%感知器算法部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%增广样本w1和w2乘(-1)

[m,n]=size(W1);

for i=1:m

W1(:,n+1)=1;%w1增广

end

[m,n]=size(W2);

for i=1:m

W2(:,n+1)=1;%w2增广

end

W2=-W2;%取反

%将增广向量转换成元组,便于处理

M=ones(1,m);

w1=mat2cell(W1,M,n+1);

w2=mat2cell(W2,M,n+1);

X=cat(1,w1,w2);%合并两类增广样本%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

eth0=0; %迭代次数

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%感知器算法核心部分

[m,n]=size(X);

temp1=[];temp2=1;%随意两个赋不等的值

while(~isequal(temp1,temp2)) %判断权值是否变换化,若不变化,则终止循环 eth0=eth0+1;

temp2=temp1;

clear temp1;%不清除此变量不行啊!!

for i=1:m

temp1{i,1}=w;

if(w*X{i}'<=0) %w乘X{i}的转置

w=w+c*X{i}; %若小于0更新权值

end

end

end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

w %显示线性分类器权值

eth0 %显示迭代次数

实验三 Bayes 分类器设计

一、实验目的

通过实验,加深对统计判决与概率密度估计基本思想、方法的认识,了解影响Bayes 分类器性能的因素,掌握基于Bayes 决策理论的随机模式分类的原理和方法。

二、实验内容

设计Bayes 决策理论的随机模式分类器。

三、方法手段

Bayes 分类器的基本思想是依据类的概率、概密,按照某种准则使分类结果从统计上讲是最佳的。换言之,根据类的概率、概密将模式空间划分成若干个子空间,在此基础上形成模式分类的判决规则。准则函数不同,所导出的判决规则就不同,分类结果也不同。使用哪种准则或方法应根据具体问题来确定。

四、Bayes 算法

1.实验原理

多元正太分布的概率密度函数由下式定义

1

1

2211()exp ()()2(2)T d p X X X μμπ-??=--∑-????

∑ 由最小错误概率判决规则,可得采用如下的函数作为判别函数

()(|)(),

1,2,,i i i g x p X P i N ωω==

这里,()i P ω为类别i ω发生的先验概率,(|)i p X ω为类别i ω的类条件概率密度函数,而N 为类别数。

设类别i ω,i=1,2,……,N 的类条件概率密度函数(|)i p X ω,i=1,2,……,N 服从正态分布,即有(|)i p X ω~(,)i i N μ∑,那么上式就可以写为

112

2

()1()exp ()(),

1,2,,2(2)T i i d P g X X X i N ωμμπ-??=

--∑-=????

由于对数函数为单调变化的函数,用上式右端取对数后得到的新的判别函数替代原来的判别函数()i g X 不会改变相应分类器的性能。因此,可取

111()()()ln ()ln ln(2)222

T i i i i i i d

g X X X P μμωπ-=--∑-+-∑-

显然,上式中的第二项与样本所属类别无关,将其从判别函数中消去,不会

改变分类结果。这样,判别函数()i g X 可简化为以下形式

111

()()()ln ()ln 22

T i i i i i i g X X X P μμω-=--∑-+-∑

2.实验步骤

1、求出两类样本的均值

11,2i

X i

X i N ω

μ∈

=

=∑

2、求每一类样本的协方差矩阵

1

1()()

,1,21i i

i N w w i jk

lj j lk k l i s x x j k N μμ==--=-∑

式中,l 代表样本在类中的序号,其中

lj x 代表i w 类的第l 个样本,第j 个特征值;

i

w j μ代表i w 类的i N 个样品第j 个特征的平均值

lk x 代表i w 类的第l 个样品,第k 个特征值;

i

w k μ代表i w 类的i N 个样品第k 个特征的平均值。

i w 类的协方差矩阵为

1112

2122i i

i

i

i ??∑∑∑= ?

∑∑?? 3、计算出每一类的协方差矩阵的逆矩阵1i -∑以及协方差矩阵的行列式i ∑ 4、求出每一类的先验概率

()/1,2i i P N N i ω≈=

5、将各个数值代入判别函数

111

()()()ln ()ln 22

T i i i i i i g X X X P μμω-=--∑-+-∑

判别边界为

12()()0g X g X -=

五、Bayes 分类器实验结果

已知(图1)数据a=[0.3760 0.0240 0.2440 -0.1740 0.0460 -0.3940 0.3760 0.7720 0.2660 0.5080 -0.4380 -0.0640 0.8160 0.5960 0.1120 0.3540 0.8380 -0.7680 0.4200 -0.7900];其满足正态分布(图2), 1. 最小错误率贝叶斯决策

图1 样本数据

图2 样本的类条件概率

根据最小错误率准侧,计算其后验条件概率(图3),通过程序运行出结果细胞分类结果为:

1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0,其中,0为判成正常细胞,1为判成异常细胞。

图3 后验条件概率

2. 最小风险贝叶斯决策

根据最小风险判别准侧,其损失函数赋值为r=[0 1000 0;200 0 0],则计算其条件风险概率(图4)通过程序运行出结果细胞分类结果为:

1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1,其中,0为判成正常细胞,1为判成异常细胞。

图4 条件风险概率

3.两类分类器结果不同原因分析

由最小错误率的贝叶斯判决和基于最小风险的贝叶斯判决得出图形中的分类结果可以看出,样本0.0240,0.2440等在前者中被分为“正常细胞”,在后者

被分为“异常细胞”,分类结果不同。因为在给予最小风险贝叶斯判决中,影响决策结果的因素多了损失r这一项,所以当结合最小风险贝叶斯决策表进行计算时,‘损失’起了主导作用,导致出现两者结果的不一致。

六、Bayes分类器程序代码

function y=my_bayes(n,a)

%%%%%%%%%%%%%最小错误率贝叶斯决策

% 构造实验数据

n=20; % 样本数

a=(round(100*rand(n,1))/100)*2.2-0.9;

% 样本数为n,特征数为1,数据在-0.9与1.3之间

figure

plot(1:n,a,'rx')

xlabel('样本数');

ylabel('生化化验值');

title('样本数据:生化化验值');

pause;

% 先验概率

P=[0.9 0.1];

% 作类条件概率密度曲线p(x|wi)

x=-0.9:0.01:1.3;

px(1,:)=(1/(sqrt(2*pi)*0.3))*exp(-0.5*(x/0.3).^2 );

px(2,:)=(1/(sqrt(2*pi)*0.1))*exp(-0.5*((x-1)/0.1 ).^2);

figure;

plot(x,px(1,:),'b',x,px(2,:),'r--');

xlabel('生化化验值');

ylabel('概率密度');

title('类条件概率密度曲线')

axis tight;

pause;

% 作后验概率曲线

for i=1:2

pwx(i,:)=px(i,:)*P(i)./(px(1,:)*P(1)+px(2,:)*P(2));

end

figure;

plot(x,pwx(1,:),'b',x,pwx(2,:),'r--');

xlabel('生化化验值');

ylabel('后验概率');

title('后验概率曲线')

axis tight;

pause;

% 计算给定生化化验值的类条件概率密度曲线

for j=1:n

s=a(j);

PXW1=spline(x,px(1,:),s);

PXW2=spline(x,px(2,:),s);

PXW=[PXW1,PXW2];

disp('样本')

s

%计算后验概率,判断输出

for i=1:2

Pwx(i)=PXW(i)*P(i)/(PXW(1)*P(1)+PXW(2)*P(2));

end

disp('后验概率 P(wi|x)=')

Pwx

plot(x,pwx(1,:),'b',x,pwx(2,:),'r--');

xlabel('生化化验值');

ylabel('后验概率');

title('后验概率曲线')

hold on

plot(s,Pwx(1),'or',s,Pwx(2),'ob');

axis tight;

hold off

if Pwx(1)>Pwx(2)

w(j,1)=s;

disp('正常人')

else

w(j,2)=s;

disp('感染病人')

end

pause;

end

disp('========================================') disp('正常人感染病人')

w

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%最小风险贝叶斯

n=20; % 样本数

figure

plot(1:n,a,'rx')

xlabel('样本数');

ylabel('生化化验值');

title('样本数据:生化化验值');

pause;

% 先验概率

P=[0.9 0.1];

% 作类条件概率密度曲线p(x|wi)

x=-0.9:0.01:1.3;

px(1,:)=(1/(sqrt(2*pi)*0.3))*exp(-0.5*(x/0.3).^2 );

px(2,:)=(1/(sqrt(2*pi)*0.1))*exp(-0.5*((x-1)/0.1 ).^2);

figure;

plot(x,px(1,:),'b',x,px(2,:),'r--');

xlabel('生化化验值');

ylabel('概率密度');

title('类条件概率密度曲线')

axis tight;

pause;

% 作后验概率曲线

for i=1:2

pwx(i,:)=px(i,:)*P(i)./(px(1,:)*P(1)+px(2,:)*P(2));

end

figure;

plot(x,pwx(1,:),'b',x,pwx(2,:),'r--');

xlabel('生化化验值');

ylabel('后验概率');

title('后验概率曲线')

axis tight;

pause;

% 损失函数

r=[0 1000 0;200 0 0];

%作条件风险曲线

for i=1:2

R(i,:)=r(i,1)*pwx(1,:)+r(i,2)*pwx(2,:);

end

figure;

plot(x,R(1,:),'b',x,R(2,:),'r--');

xlabel('生化化验值');

ylabel('条件风险');

title('条件风险曲线')

axis tight;

pause;

% 计算给定生化化验值的条件风险

for j=1:n

s=a(j);

PXW1=spline(x,px(1,:),s);

PXW2=spline(x,px(2,:),s);

PXW=[PXW1,PXW2];

disp('样本')

s

%计算后验概率

for i=1:2

Pwx(i)=PXW(i)*P(i)/(PXW(1)*P(1)+PXW(2)*P(2));

end

%计算条件风险,判断输出 for i=1:2

Rx(i,:)=r(i,1)*Pwx(1)+r(i,2)*Pwx(2);%%%%% end

disp('条件风险 R(ai|x)=')

Rx

plot(x,R(1,:),'b',x,R(2,:),'r--');

xlabel('生化化验值');

ylabel('条件风险');

title('条件风险曲线')

hold on

plot(s,Rx(1),'or',s,Rx(2),'ob');

axis tight;

hold off

if Rx(1)>Rx(2)

w(j,1)=s;

disp('正常人')

else

w(j,2)=s;

disp('感染病人')

end

pause;

end

disp('========================================') disp('正常人感染病人')

w

实验四特征提取与选择

一、实验目的

通过实验加深对特征提取与选择原理、方法的认识,编写基于离散K-L变换的特征提取程序,或分支定界特征挑选算法程序,掌握离散K-L变换原理、特点。编写基于离散K-L变换的特征提取程序。

二、实验内容

编写基于离散K-L变换的特征提取程序,主要使用主成分分析法(PCA)进行图像识别。

三、方法手段:

设n维特征矢量x=(x

1,x

2

,…,x

n

)’,其均值矢量m=E[x],协方差矩阵

C=E[(x-m)(x-m)’],设λ

1≥λ

2

≥…≥λ

n

是C的本征值,t

i

是λ

i

对应的本征矢量,

i=1,2,…,n. x经标准正交矩阵T’=(t

1,t

2

,…,t

n

)’正交变换后成为矢量

y=(y

1,y

2

,…,y

n

)’,即,y= T’x。这种正交变换称为离散K-L变换(间记为DKLT)。

DKLT的性质:

(1)变换后y各分量正交或不相关;

(2)变换后y各分量的方差更趋于不均匀,可分性强于x;

(3)最佳逼近性,即,若用y的前d

当n较大时,由DKLT的性质(2),可以用y的前d

特征脸方法是基于K-L变换的人脸识别方法,K-L变换是图像压缩的一种最优正交变换。高维的图像空间经过K-L变换后得到一组新的正交基,保留其中重要的正交基,由这些基可以张成低维线性空间。如果假设人脸在这些低维线性空间的投影具有可分性,就可以将这些投影用作识别的特征矢量,这就是特征脸方法用于人脸识别的基本思想。在人脸识别中,可以用离散K-L变换对人脸图像的原始空间进行转换,即构造人脸图像数据集的协方差矩阵,对之进行正交变换,求出协方差矩阵的特征向量,再依据特征值的大小对这些特征向量进行排序,每一个向量表示人脸图像中一个不同数量的变量,这些特征向量表示特征的一个集合,它们共同表示一个人脸图像。在人脸识别领域,人们常称这些特征向量为特征脸。每一个体人脸图像都可以确切地表示为一组特征脸的线性组合。这样我们首先通过有指导的训练(给定训练样本集已知分类)得到样本集在特征脸空间中的坐标。训练完成后,输入待辨识图像,求得在特征脸空间的坐标,采用最近邻法,就可以实现人脸识别。一般说K-L变换是均方差意义下的最佳变换,理论推导如下。

假设任何信号X 都可以被表示为:

∑∞

==1i i i u c X ,其中?

??≠==j i j

i u u j T

i

,0,1 (1.1)

K-L 变换是一种正交变换,即将一个向量X ,在某一种坐标系统中得描述,转换成用另一种基向量组成的坐标系表示。这组基向量是正交的,其中每个坐标基向量用u i 表示,c i 为其分量数值,变换的目的是如何将(1.1)表示的无限多维基向量系统改成有限d 维坐标系近似。如X 的近似值或者估计量表示为:

∑==d

i i i u c X 1

? (1.2)

要使向量X 的估计量误差小,即使引起的均方误差

[]

)?()?(X X X

X E T --=ε (1.3) 为最小,而K-L 变换就实现了这个目的,下面详细证明。

求某一个数据X 的相应的ci 值,可以通过X 与对应某个基u i 的点积来计算。由于不同的基之间是相互正交的,这个点积值就是c i 的值,即X

u c T i i =,如果我

们要求一组系数c i ,并将其表示成一个向量形式T c c C ,...),(21=,则我们可以

得:

UX X u u C T T =???

?

? ??=...21 (1.4)

则U 就是一个变换矩阵,其中每一行是某一个正交基向量的转置,由X 计算C 称为对X 的分解。反过来,如果我们希望用C 重构信号X ,则根据(1.2),它是各个成分

之和。如果我们将重构信号表示为T d

x x x X ),...,,(?21=,则 ()C

U c c c u u u x x X T d d d =?

?????

?

??=?????

??= 21211,..,,? (1.5) 我们称∑∞

+==-1?d i i i u c X X 为残差,带进(1.3)中我们可以得到:

[

][][]

∑∑∑∞+=∞+=∞+==?=--=12

11)?()?(d i i d i d j T j j T i i T c E u c u c E X X X X E ε

另外:i T

j j T i j j j j T i

T i i u X u u c u c u

X u c ∑∑∞

=∞=====11,故:

[

][

]

∑∑

+=∞

+=∞

+=∞

+=ψ===11112

][d i i

T i d i i T

T

i

d i i T

T

i

d i i

u u u XX E u u XX u E c E 欲使该均方误差为最小,就变成在保证正交变换的条件下,使ε最小的问题,设一函数: ,并对其进行求导可得:

∞+==-ψ,...,1,0)(d i u I i i λ (1.6)

可见向量u i 应是ψ矩阵的特征值i λ的特征向量,而此时截断误差为

∑∞

+==1d i i λε,如将按其大小顺序排列,即 ≥≥≥≥d λλλ21,则取前d 项特征值对应的特征向量组成的坐标系,可使向量的均方误差为最小。满足上述条件的变换就是K-L 变换。

五,K-L 变换人脸识别实验结果分析 1.数据准备

本实验数据是ORL 标准人脸数据库数据

1)给定样本集,在这里样本集的大小为400,一共是40人,每人10张图片。我选取每人5张图片一共200张作为训练集,训练集的大小是可选的,它的大小将直接影响到识别的正确率,在后面我对采用不同大小的训练集进行识别的正确率进行了统计。

2)确定采用何种产生矩阵,有总体散布矩阵{()()}T E x x μμ--和类间散布矩阵1

0()()()p T b i i i i S p ωμμμμ-==--∑,后面的例子程序中分别采用了这两种产生矩

阵,并进行了识别正确率的比较。

3)根据产生矩阵计算出特征脸,这里要用到奇异值分解,其基本原理就是通过计算较低维数矩阵的特征值与特征向量而间接求出较高维数矩阵的特征向量(特征脸),从而达到简化计算的目的。

4)分别求得训练集中各图像在特征脸空间中的坐标。

2.识别过程

首先求得待辨识图像相对于训练集平均脸的差值图像,然后求得该图像在特征脸空间中的坐标,最后采用最近邻法对图像进行归类。

3.实验结果

1)训练样本的过程中生成的一些特征脸(图1)。

∑∞+=∞+=--ψ=11)1()(d i i T i i d i i T i i u u u u u g λ

图1 训练样本的过程中生成的一些特征脸2)识别的正确率统计

图2 基于两种产生矩阵的识别正确率统计

4.实验结论

通过对分别采用类间散布矩阵和总体散布矩阵为产生矩阵的K-L变换进行人脸识别的正确率的统计可以看出,应用总体散布矩阵作为产生矩阵的K-L变换进行人脸识别的正确率明显要高。我想主要是因为类间散布矩阵采用每个人的平均图像向量组成训练集,来生成特征脸空间,计算量较之采用总体散布矩阵作为产生矩阵的K-L变换计算量又进一步减少,但是它忽略了每个人的图像的多样性,造成识别率低。以总体散布矩阵作为产生矩阵的K-L变换进行人脸识别的计算量较之采用类间散布矩阵作为产生矩阵的K-L变换要大一些,但是它充分考虑了每个人图像的多样性,使得识别率相对较高。

六,实验程序

function y=mypca()

%%%%%%%%%%%%%%%%%%%%%%%%%PCA算法对人脸图像处理提取主成分程序

path = ['D:\PCA\']; % ['D:\PCA\ORL']

%读取图像

numimage=400; %40*10=400张人脸

imagepath=[path 'ORL\ORL001' '.bmp']; %第一张人脸文件的路径及文件名:D:\PCA\ORL\ORL001.bmp immatrix=imread(imagepath); % 读入第一张人脸文件,构成矩阵immatrix

[m,n]=size(immatrix); % 计算矩阵immatrix的行数m、列数n

DATA = uint8 (rand(m*n, numimage)); %随机生成m*n行、numimage列的矩阵,并取uint8

for i=1:numimage

s1=floor(i/100); % 取整,求第3位

tem=rem(i,100); % i除以100的余数,取后两位

s2=floor(tem/10); % 取第2位

s3=rem(tem,10); % 取第1位

imagepath=[path 'ORL\ORL' int2str(s1) int2str(s2) int2str(s3) '.bmp']; % 构成图像文件的路径即文件名

immatrix=imread(imagepath); % 读入每一张人脸文件,构成矩阵immatrix

imVector=reshape(immatrix,m*n,1); % 将矩阵immatrix转化为一个列向量,长度为m*n

DATA(:,i)=imVector; % 将列向量imVector依次加入到DATA矩阵的列中.DATA先随机生成过的end

clear i;clear j;

save DATA DATA; % 保存DATA

mn=mean(double(DATA'))'; % 计算DATA的行向量的均值

save mn mn; % 保存DATA的行向量的均值

%image substracted by mean of all train images

DATAzeromean=double(DATA)-repmat(mn,1,numimage);

save DATAzeromean DATAzeromean;

clear DATA;

L=DATAzeromean'*DATAzeromean;

[V,D]=eig(L);

enginvalue=diag(D);

[enginvalue,ix]=sort(enginvalue);%按升序排列矩阵元素

ix=flipud(ix);%从上到下翻转矩阵,即按降序

V=V(:,ix); %对V的特征向量位置调整

facespace=DATAzeromean*V; %脸空间

for t=1:numimage

facespace(:,t)=facespace(:,t)/norm(facespace(:,t));%Normalisation to unit length

end

subdim=200;

facespace=facespace(:,1:subdim);%选择子特征向量的协方差矩阵---facespace是400*200维,即前200个样本

projdata=facespace'*DATAzeromean;

save projdata projdata;

save facespace facespace;

datareconstruct=facespace*projdata;

fprintf('正在保存 Wakesplace中的图片数据\n');

save datareconstruct datareconstruct;

for i=1:numimage

imdata=datareconstruct(:,i);

imdata=reshape(imdata,m,n);

imwrite(imdata,[int2str(i) '.bmp'],'bmp');%得到重构图像1.bmp---400.bmp

end

操作系统上机实验报告(西电)

操作系统上机题目 一、题目 实验1:LINUX/UNIX Shell部分 (一)系统基本命令 1.登陆系统,输入whoami 和pwd ,确定自己的登录名和当前目录; 登录名yuanye ,当前目录/home/yuanye 2.显示自己的注册目录?命令在哪里? a.键入echo $HOME,确认自己的主目录;主目录为/home/yuanye b.键入echo $PA TH,记下自己看到的目录表;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games c.键入which abcd,看看得到的错误信息; 再键入which ls 和which vi,对比刚刚得到的结果的目录是否在a.、b. 两题看到的目录表中; /bin/ls /usr/bin/vi 3.ls 和cd 的使用: a.键入ls,ls -l ,ls -a ,ls -al 四条命令,观察输出,说明四种不同使用方式的区别。 1. examples.desktop 公共的模板视频图片文档音乐桌面; 总计32 2.-rw-r--r-- 1 yuanye yuanye 357 2011-03-22 22:15 examples.desktop drwxr-xr-x 2 yuanye yuanye 4096 2011-03-22 23:25 公共的 drwxr-xr-x 2 yuanye yuanye 4096 2011-03-22 23:25 模板 drwxr-xr-x 2 yuanye yuanye 4096 2011-03-22 23:25 视频 drwxr-xr-x 2 yuanye yuanye 4096 2011-03-22 23:25 图片 drwxr-xr-x 2 yuanye yuanye 4096 2011-03-22 23:25 文档 drwxr-xr-x 2 yuanye yuanye 4096 2011-03-22 23:25 音乐 drwxr-xr-x 2 yuanye yuanye 4096 2011-03-22 23:25 桌面 3. . .fontconfig .local .Xauthority .. .gconf .mozilla .xsession-errors .bash_logout .gconfd .nautilus 公共的 .bashrc .gksu.lock .profile 模板 .cache .gnome2 .pulse 视频 .chewing .gnome2_private .pulse-cookie 图片 .config .gnupg .recently-used.xbel 文档 .dbus .gstreamer-0.10 .scim 音乐 .dmrc .gtk-bookmarks .sudo_as_admin_successful 桌面 .esd_auth .gvfs .update-manager-core

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

模式识别第二次上机实验报告

北京科技大学计算机与通信工程学院 模式分类第二次上机实验报告 姓名:XXXXXX 学号:00000000 班级:电信11 时间:2014-04-16

一、实验目的 1.掌握支持向量机(SVM)的原理、核函数类型选择以及核参数选择原则等; 二、实验内容 2.准备好数据,首先要把数据转换成Libsvm软件包要求的数据格式为: label index1:value1 index2:value2 ... 其中对于分类来说label为类标识,指定数据的种类;对于回归来说label为目标值。(我主要要用到回归) Index是从1开始的自然数,value是每一维的特征值。 该过程可以自己使用excel或者编写程序来完成,也可以使用网络上的FormatDataLibsvm.xls来完成。FormatDataLibsvm.xls使用说明: 先将数据按照下列格式存放(注意label放最后面): value1 value2 label value1 value2 label 然后将以上数据粘贴到FormatDataLibsvm.xls中的最左上角单元格,接着工具->宏执行行FormatDataToLibsvm宏。就可以得到libsvm要求的数据格式。将该数据存放到文本文件中进行下一步的处理。 3.对数据进行归一化。 该过程要用到libsvm软件包中的svm-scale.exe Svm-scale用法: 用法:svmscale [-l lower] [-u upper] [-y y_lower y_upper] [-s save_filename] [-r restore_filename] filename (缺省值:lower = -1,upper = 1,没有对y进行缩放)其中,-l:数据下限标记;lower:缩放后数据下限;-u:数据上限标记;upper:缩放后数据上限;-y:是否对目标值同时进行缩放;y_lower为下限值,y_upper为上限值;(回归需要对目标进行缩放,因此该参数可以设定为–y -1 1 )-s save_filename:表示将缩放的规则保存为文件save_filename;-r restore_filename:表示将缩放规则文件restore_filename载入后按此缩放;filename:待缩放的数据文件(要求满足前面所述的格式)。缩放规则文件可以用文本浏览器打开,看到其格式为: y lower upper min max x lower upper index1 min1 max1 index2 min2 max2 其中的lower 与upper 与使用时所设置的lower 与upper 含义相同;index 表示特征序号;min 转换前该特征的最小值;max 转换前该特征的最大值。数据集的缩放结果在此情况下通过DOS窗口输出,当然也可以通过DOS的文件重定向符号“>”将结果另存为指定的文件。该文件中的参数可用于最后面对目标值的反归一化。反归一化的公式为: (Value-lower)*(max-min)/(upper - lower)+lower 其中value为归一化后的值,其他参数与前面介绍的相同。 建议将训练数据集与测试数据集放在同一个文本文件中一起归一化,然后再将归一化结果分成训练集和测试集。 4.训练数据,生成模型。 用法:svmtrain [options] training_set_file [model_file] 其中,options(操作参数):可用的选项即表示的涵义如下所示-s svm类型:设置SVM 类型,默

《 Windows7 操作系统》实验报告

实验(一) Windows 7基本操作 一、实验目的 1.掌握文件和文件夹基本操作。 2.掌握“资源管理器”和“计算机”基本操作。 二、实验要求 1.请将操作结果用Alt+Print Screen组合键截图粘贴在题目之后。 2.实验完成后,请将实验报告保存并提交。 三、实验内容 1.文件或文件夹的管理(提示:此题自行操作一遍即可,无需抓图)★期末机试必考题★ (1) 在D:盘根目录上创建一个名为“上机实验”的文件夹,在“上机实验”文件夹中创建1个名为“操作系统上机实验”的空白文件夹和2个分别名为“2.xlsx”和“3.pptx”的空白文件,在“操作系统上机实验”文件夹中创建一个名为“1.docx”的空白文件。 (2) 将“1.docx”改名为“介绍信.docx”;将“上机实验”改名为“作业”。 (3) 在“作业”文件夹中分别尝试选择一个文件、同时选择两个文件、一次同时选择所有文件和文件夹。 (4) 将“介绍信.docx”复制到C:盘根目录。 (5) 将D:盘根目录中的“作业”文件夹移动到C:盘根目录。 (6) 将“作业”文件夹中的“2.xlsx”文件删除放入“回收站”。 (7) 还原被删除的“2.xlsx”文件到原位置。 2.搜索文件或文件夹,要求如下: 查找C盘上所有以大写字母“A”开头,文件大小在10KB以上的文本文件。(提示:搜索时,可以使用“?”和“*”。“?”表示任意一个字符,“*”表示任意多个字符。)

3. 在桌面上为C:盘根目录下的“作业”文件夹创建一个桌面快捷方式。★期末机试必考题★ 3.“计算机”或“资源管理器”的使用 (1) 在“资源管理器”窗口,设置以详细信息方式显示C:\WINDOWS中所有文件和文件夹,使所有图标按类型排列显示,并不显示文件扩展名。(提示:三步操作全部做完后,将窗口中显示的最终设置结果抓一张图片即可) (2) 将C:盘根目录中“介绍信.docx”的文件属性设置为“只读”和“隐藏”,并设置在窗口中显示“隐藏属性”的文件或文件夹。(提示:请将“文件夹”对话框中选项设置效果与C:盘根目录中该文件图标呈现的半透明显示效果截取在一整张桌面图片中即可) 4.回收站的设置 设置删除文件后,不将其移入回收站中,而是直接彻底删除功能。

模式识别实验报告

模式识别实验报告

————————————————————————————————作者:————————————————————————————————日期:

实验报告 实验课程名称:模式识别 姓名:王宇班级: 20110813 学号: 2011081325 实验名称规范程度原理叙述实验过程实验结果实验成绩 图像的贝叶斯分类 K均值聚类算法 神经网络模式识别 平均成绩 折合成绩 注:1、每个实验中各项成绩按照5分制评定,实验成绩为各项总和 2、平均成绩取各项实验平均成绩 3、折合成绩按照教学大纲要求的百分比进行折合 2014年 6月

实验一、 图像的贝叶斯分类 一、实验目的 将模式识别方法与图像处理技术相结合,掌握利用最小错分概率贝叶斯分类器进行图像分类的基本方法,通过实验加深对基本概念的理解。 二、实验仪器设备及软件 HP D538、MATLAB 三、实验原理 概念: 阈值化分割算法是计算机视觉中的常用算法,对灰度图象的阈值分割就是先确定一个处于图像灰度取值范围内的灰度阈值,然后将图像中每个像素的灰度值与这个阈值相比较。并根据比较的结果将对应的像素划分为两类,灰度值大于阈值的像素划分为一类,小于阈值的划分为另一类,等于阈值的可任意划分到两类中的任何一类。 最常用的模型可描述如下:假设图像由具有单峰灰度分布的目标和背景组成,处于目标和背景内部相邻像素间的灰度值是高度相关的,但处于目标和背景交界处两边的像素灰度值有较大差别,此时,图像的灰度直方图基本上可看作是由分别对应于目标和背景的两个单峰直方图混合构成。而且这两个分布应大小接近,且均值足够远,方差足够小,这种情况下直方图呈现较明显的双峰。类似地,如果图像中包含多个单峰灰度目标,则直方图可能呈现较明显的多峰。 上述图像模型只是理想情况,有时图像中目标和背景的灰度值有部分交错。这时如用全局阈值进行分割必然会产生一定的误差。分割误差包括将目标分为背景和将背景分为目标两大类。实际应用中应尽量减小错误分割的概率,常用的一种方法为选取最优阈值。这里所谓的最优阈值,就是指能使误分割概率最小的分割阈值。图像的直方图可以看成是对灰度值概率分布密度函数的一种近似。如一幅图像中只包含目标和背景两类灰度区域,那么直方图所代表的灰度值概率密度函数可以表示为目标和背景两类灰度值概率密度函数的加权和。如果概率密度函数形式已知,就有可能计算出使目标和背景两类误分割概率最小的最优阈值。 假设目标与背景两类像素值均服从正态分布且混有加性高斯噪声,上述分类问题可以使用模式识别中的最小错分概率贝叶斯分类器来解决。以1p 与2p 分别表示目标与背景的灰度分布概率密度函数,1P 与2P 分别表示两类的先验概率,则图像的混合概率密度函数可用下式表示为

操作系统上机实验报告

大连理工大学实验报告 学院(系):专业:班级: 姓名:学号:组:___ 实验时间:实验室:实验台: 指导教师签字:成绩: 实验名称:进程控制 一、实验目的和要求 (1)进一步加强对进程概念的理解,明确进程和程序的区别 (2)进一步认识并发执行的实质 二、实验环境 在windows平台上,cygwin模拟UNIX运行环境 三、实验内容 (1) getpid()---获取进程的pid 每个进程都执行自己独立的程序,打印自己的pid; (2) getpid()---获取进程的pid 每个进程都执行自己独立的程序,打印自己的pid; 父进程打印两个子进程的pid;

(3)写一个命令处理程序,能处理max(m,n), min(m,n),average(m,n,l)这几个命令(使用exec函数族)。 Max函数 Min函数 Average函数 Exec函数族调用 四、程序代码 五、运行结果 六、实验结果与分析 七、体会 通过这次上机,我了解了fork函数的运行方法,同时更深刻的了解了进程的并行执行的本质,印证了在课堂上学习的理论知识。同时通过编写实验内容(3)的命令处理程序,学会了exec函数族工作原理和使用方法。通过这次上机实验让我加深了对课堂上学习的理论知识的理解,收获很多。

大连理工大学实验报告 学院(系):专业:班级: 姓名:学号:组:___ 实验时间:实验室:实验台: 指导教师签字:成绩: 实验名称:进程通讯 一、实验目的和要求 了解和熟悉UNIX支持的共享存储区机制 二、实验环境 在windows平台上,cygwin模拟UNIX运行环境 三.实验内容 编写一段程序, 使其用共享存储区来实现两个进程之间的进程通讯。进程A创建一个长度为512字节的共享内存,并显示写入该共享内存的数据;进程B将共享内存附加到自己的地址空间,并向共享内存中写入数据。 四、程序代码 五、运行结果 六、实验结果与分析 七、体会

数值分析上机实验报告

数值分析上机实验报告

《数值分析》上机实验报告 1.用Newton 法求方程 X 7-X 4+14=0 在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。 1.1 理论依据: 设函数在有限区间[a ,b]上二阶导数存在,且满足条件 {}α?上的惟一解在区间平方收敛于方程所生的迭代序列 迭代过程由则对任意初始近似值达到的一个中使是其中上不变号 在区间],[0)(3,2,1,0,) (') ()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20 )()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f a b c f x f b a x f b f x f k k k k k k ==- ==∈≤-≠>+ 令 )9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3 2 2 5 333647>?''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f 故以1.9为起点 ?? ?? ? ='- =+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。当前后两个的差<=ε时,就认为求出了近似的根。本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C语言程序原代码: #include #include main() {double x2,f,f1; double x1=1.9; //取初值为1.9 do {x2=x1; f=pow(x2,7)-28*pow(x2,4)+14; f1=7*pow(x2,6)-4*28*pow(x2,3); x1=x2-f/f1;} while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数printf("计算结果:x=%f\n",x1);} 1.3 运行结果: 1.4 MATLAB上机程序 function y=Newton(f,df,x0,eps,M) d=0; for k=1:M if feval(df,x0)==0 d=2;break else x1=x0-feval(f,x0)/feval(df,x0); end e=abs(x1-x0); x0=x1; if e<=eps&&abs(feval(f,x1))<=eps d=1;break end end

操作系统实验报告生产者与消费者问题模拟

操作系统上机实验报告 实验名称: 生产者与消费者问题模拟 实验目的: 通过模拟生产者消费者问题理解进程或线程之间的同步与互斥。 实验内容: 1、设计一个环形缓冲区,大小为10,生产者依次向其中写入1到20,每个缓冲区中存放一个数字,消费者从中依次读取数字。 2、相应的信号量; 3、生产者和消费者可按如下两种方式之一设计; (1)设计成两个进程; (2)设计成一个进程内的两个线程。 4、根据实验结果理解信号量的工作原理,进程或线程的同步\互斥关系。 实验步骤及分析: 一.管道 (一)管道定义 所谓管道,是指能够连接一个写进程和一个读进程的、并允许它们以生产者—消费者方式进行通信的一个共享文件,又称为pipe文件。由写进程从管道的写入端(句柄1)将数据写入管道,而读进程则从管道的读出端(句柄0)读出数据。(二)所涉及的系统调用 1、pipe( ) 建立一无名管道。 系统调用格式 pipe(filedes) 参数定义 int pipe(filedes); int filedes[2]; 其中,filedes[1]是写入端,filedes[0]是读出端。 该函数使用头文件如下: #include #inlcude #include 2、read( ) : 系统调用格式 read(fd,buf,nbyte) 功能:从fd所指示的文件中读出nbyte个字节的数据,并将它们送至由指针buf 所指示的缓冲区中。如该文件被加锁,等待,直到锁打开为止。 参数定义:

int read(fd,buf,nbyte); int fd; char *buf; unsigned nbyte; 3、write( ) 系统调用格式 read(fd,buf,nbyte) 功能:把nbyte 个字节的数据,从buf所指向的缓冲区写到由fd所指向的文件中。如文件加锁,暂停写入,直至开锁。 参数定义同read( )。 (三)参考程序 #include #include #include int pid1,pid2; main( ) { int fd[2]; char outpipe[100],inpipe[100]; pipe(fd); /*创建一个管道*/ while ((pid1=fork( ))==-1); if(pid1==0) { lockf(fd[1],1,0); /*把串放入数组outpipe中*/ sprintf(outpipe,child 1 is using pipe!); /* 向管道写长为50字节的串*/ write(fd[1],outpipe,50); sleep(5); /*自我阻塞5秒*/ lockf(fd[1],0,0); exit(0); } else { while((pid2=fork( ))==-1); if(pid2==0) { lockf(fd[1],1,0); /*互斥*/ sprintf(outpipe,child 2 is using pipe!); write(fd[1],outpipe,50); sleep(5); lockf(fd[1],0,0);

数值分析拉格朗日插值法上机实验报告

课题一:拉格朗日插值法 1.实验目的 1.学习和掌握拉格朗日插值多项式。 2.运用拉格朗日插值多项式进行计算。 2.实验过程 作出插值点(1.00,0.00),(-1.00,-3.00),(2.00,4.00)二、算法步骤 已知:某些点的坐标以及点数。 输入:条件点数以及这些点的坐标。 输出:根据给定的点求出其对应的拉格朗日插值多项式的值。 3.程序流程: (1)输入已知点的个数; (2)分别输入已知点的X坐标; (3)分别输入已知点的Y坐标; 程序如下: #include #include #include float lagrange(float *x,float *y,float xx,int n) /*拉格朗日

插值算法*/ { int i,j; float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项*/ a=(float*)malloc(n*sizeof(float)); for(i=0;i<=n-1;i++) { a[i]=y[i]; for(j=0;j<=n-1;j++) if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]); yy+=a[i]; } free(a); return yy; } int main() { int i; int n; float x[20],y[20],xx,yy; printf("Input n:");

scanf("%d",&n); if(n<=0) { printf("Error! The value of n must in (0,20)."); getch();return 1; } for(i=0;i<=n-1;i++) { printf("x[%d]:",i); scanf("%f",&x[i]); } printf("\n"); for(i=0;i<=n-1;i++) { printf("y[%d]:",i);scanf("%f",&y[i]); } printf("\n"); printf("Input xx:"); scanf("%f",&xx); yy=lagrange(x,y,xx,n); printf("x=%f,y=%f\n",xx,yy); getch(); } 举例如下:已知当x=1,-1,2时f(x)=0,-3,4,求f(1.5)的值。

数值分析实验报告1

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

《模式识别》实验报告

《模式识别》实验报告 一、数据生成与绘图实验 1.高斯发生器。用均值为m,协方差矩阵为S 的高斯分布生成N个l 维向量。 设置均值 T m=-1,0 ?? ??,协方差为[1,1/2;1/2,1]; 代码: m=[-1;0]; S=[1,1/2;1/2,1]; mvnrnd(m,S,8) 结果显示: ans = -0.4623 3.3678 0.8339 3.3153 -3.2588 -2.2985 -0.1378 3.0594 -0.6812 0.7876 -2.3077 -0.7085 -1.4336 0.4022 -0.6574 -0.0062 2.高斯函数计算。编写一个计算已知向量x的高斯分布(m, s)值的Matlab函数。 均值与协方差与第一题相同,因此代码如下: x=[1;1]; z=1/((2*pi)^0.5*det(S)^0.5)*exp(-0.5*(x-m)'*inv(S)*(x-m)) 显示结果: z = 0.0623 3.由高斯分布类生成数据集。编写一个Matlab 函数,生成N 个l维向量数据集,它们是基于c个本体的高斯分布(mi , si ),对应先验概率Pi ,i= 1,……,c。 M文件如下: function [X,Y] = generate_gauss_classes(m,S,P,N) [r,c]=size(m); X=[]; Y=[]; for j=1:c t=mvnrnd(m(:,j),S(:,:,j),fix(P(j)*N)); X=[X t]; Y=[Y ones(1,fix(P(j)*N))*j]; end end

调用指令如下: m1=[1;1]; m2=[12;8]; m3=[16;1]; S1=[4,0;0,4]; S2=[4,0;0,4]; S3=[4,0;0,4]; m=[m1,m2,m3]; S(:,:,1)=S1; S(:,:,2)=S2; S(:,:,3)=S3; P=[1/3,1/3,1/3]; N=10; [X,Y] = generate_gauss_classes(m,S,P,N) 二、贝叶斯决策上机实验 1.(a)由均值向量m1=[1;1],m2=[7;7],m3=[15;1],方差矩阵S 的正态分布形成三个等(先验)概率的类,再基于这三个类,生成并绘制一个N=1000 的二维向量的数据集。 (b)当类的先验概率定义为向量P =[0.6,0.3,0.1],重复(a)。 (c)仔细分析每个类向量形成的聚类的形状、向量数量的特点及分布参数的影响。 M文件代码如下: function plotData(P) m1=[1;1]; S1=[12,0;0,1]; m2=[7;7]; S2=[8,3;3,2]; m3=[15;1]; S3=[2,0;0,2]; N=1000; r1=mvnrnd(m1,S1,fix(P(1)*N)); r2=mvnrnd(m2,S2,fix(P(2)*N)); r3=mvnrnd(m3,S3,fix(P(3)*N)); figure(1); plot(r1(:,1),r1(:,2),'r.'); hold on; plot(r2(:,1),r2(:,2),'g.'); hold on; plot(r3(:,1),r3(:,2),'b.'); end (a)调用指令: P=[1/3,1/3,1/3];

数值分析实验报告模板

数值分析实验报告模板 篇一:数值分析实验报告(一)(完整) 数值分析实验报告 1 2 3 4 5 篇二:数值分析实验报告 实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。即若x0 偏离所求根较远,Newton法可能发散的结论。并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收

敛,但精度不够。熟悉Matlab语言编程,学习编程要点。体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk) 产生逼近解x*的迭代数列{xk},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 xk?1?xk?rf(xk) 'f(xk) 其中r为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x);

模式识别实验报告(一二)

信息与通信工程学院 模式识别实验报告 班级: 姓名: 学号: 日期:2011年12月

实验一、Bayes 分类器设计 一、实验目的: 1.对模式识别有一个初步的理解 2.能够根据自己的设计对贝叶斯决策理论算法有一个深刻地认识 3.理解二类分类器的设计原理 二、实验条件: matlab 软件 三、实验原理: 最小风险贝叶斯决策可按下列步骤进行: 1)在已知 ) (i P ω, ) (i X P ω,i=1,…,c 及给出待识别的X 的情况下,根据贝叶斯公式计 算出后验概率: ∑== c j i i i i i P X P P X P X P 1 ) ()() ()()(ωωωωω j=1,…,x 2)利用计算出的后验概率及决策表,按下面的公式计算出采取i a ,i=1,…,a 的条件风险 ∑== c j j j i i X P a X a R 1 )(),()(ωω λ,i=1,2,…,a 3)对(2)中得到的a 个条件风险值) (X a R i ,i=1,…,a 进行比较,找出使其条件风险最小的 决策k a ,即()() 1,min k i i a R a x R a x == 则 k a 就是最小风险贝叶斯决策。 四、实验内容 假定某个局部区域细胞识别中正常(1ω)和非正常(2ω)两类先验概率分别为 正常状态:P (1ω)=; 异常状态:P (2ω)=。 现有一系列待观察的细胞,其观察值为x : 已知先验概率是的曲线如下图:

)|(1ωx p )|(2ωx p 类条件概率分布正态分布分别为(-2,)(2,4)试对观察的结果 进行分类。 五、实验步骤: 1.用matlab 完成分类器的设计,说明文字程序相应语句,子程序有调用过程。 2.根据例子画出后验概率的分布曲线以及分类的结果示意图。 3.最小风险贝叶斯决策,决策表如下: 结果,并比较两个结果。 六、实验代码 1.最小错误率贝叶斯决策 x=[ ] pw1=; pw2=; e1=-2; a1=; e2=2;a2=2; m=numel(x); %得到待测细胞个数 pw1_x=zeros(1,m); %存放对w1的后验概率矩阵 pw2_x=zeros(1,m); %存放对w2的后验概率矩阵

操作系统实验报告18038

福州大学数学与计算机科学(软件)学院 实验报告 课程名称:计算机操作系统 学号:221100218 姓名: 专业:软件工程 年级:2011级 学期:2012学年第2学期 2013年10 月24 日

实验一 Linux操作系统的使用和分析 一、实验目的 本实验主要学习和掌握Linux操作系统的基本应用。通过本实验,学生能够熟练掌握Linux环境下各种基本操作命令接口的应用。从系统安全角度出发,学习掌握系统的基本安全优化和配置,在操作系统层次进行有效安全加固,提高Linux系统的安全性能。通过本次实验,有助于学生进一步理解操作系统原理中的相关内容,加深认识。 二、实验要求 1、熟练掌握Linux系统的基本操作命令。 2、熟悉Linux 系统的基本配置。 3、实现Linux系统的安全加固。 4、掌握一种以上的网络应用软件的安装、配置与应用。 三、实验内容 系统的启动,如图: 关闭使用shutdowm 还有列出文件夹内的信息ls,cp复制拷贝,touch创建文件命令等等 ①下载文件压缩包pro.gz,解压如图:

②然后修改安装路径: ③之后用make编译文件 ④在安装路径/home/liaoenrui/11里的etc中修改文件的组名和用户名: 将groud 命名也命名为ftp,然后用groudadd和useradd命令将这两个添加在该目录的sbin目录下:

⑤最后运行文件,./profile即可 四、实验总结 通过本次的操作系统的上机实验,我熟练了Linux系统的基本操作命令,并且对安装文件有更深入的了解,比如在上述安装过程中对于通过froftpd来架构linux的ftp,由于之前都是用window系统,所以对于这些非常的生疏,因此在请教了多人和上网查询之后,终于有所了解,并且成功的将此实验顺利完成。在本次实验中,我发现自己的动手能力又有很大的提高,相信以后继续努力的话会有更大的进步,当然这也要归功于老师的教导。 参考文献 [1] Neil Maththew Richard Stones Linux 程序设计第四版人民邮电出版社 [2] 周茜,赵明生.中文文本分类中的特征选择研究[J].中文信息学报,2003,Vol.18 No.3

(完整版)哈工大-数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式 产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x); y=-x*x-sin(x); 写成如上形式即可,下面给出主程序。 二分法源程序: clear %%%给定求解区间 b=1.5; a=0;

%%%误差 R=1; k=0;%迭代次数初值 while (R>5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end x=c%给出解 Newton法及改进的Newton法源程序:clear %%%% 输入函数 f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f);

《大学计算机基础》上机实验报告

《大学计算机基础》 上机实验报告 班级: 姓名: 学号: 授课教师: 日期:年月日

目录 一、Windows操作系统基本操作 ............................. - 1 - 二、Word文字处理基本操作 ................................ - 4 - 三、Excel电子表格基本操作 ............................... - 6 - 四、PowerPoint幻灯片基本操作 ............................ - 8 - 五、网页设计基本操作..................................... - 9 - 六、Access数据库基本操作 ............................... - 10 - 上机实验作业要求: ○1在实验报告纸上手写并粘贴实验结果; ○2每人将所有作业装订在一起(要包封面); ○3全部上机实验结束后全班统一上交; ○4作业内容不得重复、输入的数据需要有差别。

实验名称一、Windows操作系统基本操作 实验目的1、掌握Windows的基本操作方法。 2、学会使用“画图”和PrntScr快捷键。 3、学会使用“计算器”和Word基本操作。 实验内容 1、日历标注 利用“画图”和Word软件,截取计算机上日历的图片并用文字、颜色、图框等标注出近期的节假日及其名称,并将结果显示保存在下面(参考下面样图)。 运行结果是: 主要操作步骤是: 2、科学计算 利用“计算器”和Word软件,计算下列题目,并将结果截图保存在下面(参考样图)。 ○1使用科学型计算器,求8!、sin(8)、90、74、20、67、39、400、50.23、ln(785)的平均值、和值,并用科学计数法显示。 运行结果是: ②将以下十、八、十六进制数转换为二进制数:(894.8125)10、(37.5)8、(2C.4B)16 运行结果是:(需要下载使用“唯美计算器”) ○3计算下列二进制数的加法与乘法:101.1+11.11;1101*1011 运行结果是:(参考样图) 写出主要操作步骤: 3、实验心得体会

数值分析实验报告总结

数值分析实验报告总结 随着电子计算机的普及与发展,科学计算已成为现代科 学的重要组成部分,因而数值计算方法的内容也愈来愈广泛和丰富。通过本学期的学习,主要掌握了一些数值方法的基本原理、具体算法,并通过编程在计算机上来实现这些算法。 算法算法是指由基本算术运算及运算顺序的规定构成的完 整的解题步骤。算法可以使用框图、算法语言、数学语言、自然语言来进行描述。具有的特征:正确性、有穷性、适用范围广、运算工作量少、使用资源少、逻辑结构简单、便于实现、计算结果可靠。 误差 计算机的计算结果通常是近似的,因此算法必有误差, 并且应能估计误差。误差是指近似值与真正值之差。绝对误差是指近似值与真正值之差或差的绝对值;相对误差:是指近似值与真正值之比或比的绝对值。误差来源见表 第三章泛函分析泛函分析概要 泛函分析是研究“函数的函数”、函数空间和它们之间 变换的一门较新的数学分支,隶属分析数学。它以各种学科

如果 a 是相容范数,且任何满足 为具体背景,在集合的基础上,把客观世界中的研究对象抽 范数 范数,是具有“长度”概念的函数。在线性代数、泛函 分析及相关的数学领域,泛函是一个函数,其为矢量空间内 的所有矢量赋予非零的正长度或大小。这里以 Cn 空间为例, Rn 空间类似。最常用的范数就是 P-范数。那么 当P 取1, 2 ,s 的时候分别是以下几种最简单的情形: 其中2-范数就是通常意义下的距离。 对于这些范数有以下不等式: 1 < n1/2 另外,若p 和q 是赫德尔共轭指标,即 1/p+1/q=1 么有赫德尔不等式: II = ||xH*y| 当p=q=2时就是柯西-许瓦兹不等式 般来讲矩阵范数除了正定性,齐次性和三角不等式之 矩阵范数通常也称为相容范数。 象为元素和空间。女口:距离空间,赋范线性空间, 内积空间。 1-范数: 1= x1 + x2 +?+ xn 2-范数: x 2=1/2 8 -范数: 8 =max oo ,那 外,还规定其必须满足相容性: 所以

相关文档
最新文档