function [x,XA]=GaussXQByOrder(A,b)
%高斯顺序消元法
N = size(A);
n = N(1);
for i=1:(n-1)
for j=(i+1):n
if(A(i,i)==0)
disp('对角元素为0!'); %防止对角元素为0
return;
end
l = A(j,i);
m = A(i,i);
A(j,1:n)=A(j,1:n)-lA(i,1:n)/m; %消元方程
b(j)=b(j)-lb(i)/m;
end
end
x=SolveUpTriangle(A,b); %通用的求上三角系数矩阵线性方程组的函数
XA = A; %消元后的系数矩阵
function x=SolveUpTriangle(A,b)
N=size(A);
n=N(1);
for i=n:-1:1
if(i<n)
s=A(i,(i+1):n)x((i+1):n,1);
else
s=0;
end
x(i,1)=(b(i)-s)/A(i,i);
end
程序如上,自己算吧。这个东西应该尝试自己编程
聚类分析的概念主要是来自多元统计分析,例如,考虑二维坐标系上有散落的许多点,这时,需要对散点进行合理的分类,就需要聚类方面的知识。模糊聚类分析方法主要针对的是这样的问题:对于样本空间P中的元素含有多个属性,要求对其中的元素进行合理的分类。最终可以以聚类图的形式加以呈现,而聚类图可以以手式和自动生成两种方式进行,这里采用自动生成方式,亦是本文的程序实现过程中的一个关键环节。 这里所实现的基本的模糊聚类的主要过程是一些成文的方法,在此简述如下: 对于待分类的一个样本集U=,设其中的每个元素有m项指标,则可以用m维向量描述样本,即:ui=(i=1,2,,n)。则其相应的模糊聚类按下列步骤进行:1) 标准化处理,将数据压缩至(0-1)区间上,这部分内容相对简单,介绍略。(参[1])2) 建立模糊关系:这里比较重要的环节之一,首先是根据“距离”或其它进行比较的观点及方法建立模糊相似矩阵,主要的“距离”有:Hamming 距离: d(i,j)=sum(abs(x(i,k)-x(j,k))) | k from 1 to m (| k from 1 to m表示求和式中的系数k由1增至m,下同)Euclid 距离: d(i,j)=sum((x(i,k)-x(j,k))^2) | k from 1 to m 非距离方法中,最经典的就是一个夹角余弦法: 最终进行模糊聚类分析的是要求对一个模糊等价矩阵进行聚类分析,而由相似矩阵变换到等价矩阵,由于相似矩阵已满足对称性及自反性,并不一定满足传递性,则变换过程主要进行对相似矩阵进行满足传递性的 *** 作。使关系满足传递性的算法中,最出名的,就是Washall算法了,又称传递闭包法(它的思想在最短路的Floyd算法中亦被使用了)。 算法相当简洁明了,复杂度稍大:O(log2(n)n^3),其实就是把一个方阵的自乘 *** 作,只不过这里用集合 *** 作的交和并取代了原先矩阵 *** 作中的和+ *** 作,如下:(matlab代码)%--washall enclosure algorithm--%unchanged=0;while unchanged==0 unchanged=1; %--sigma:i=1:n(combine(conj(cArr(i,k),cArr(k,j)))) for i=1:cArrSize for j=1:cArrSize mergeVal=0; for k=1:cArrSize if(cArr(i,k)<=cArr(k,j)&&cArr(i,k)>mergeVal) mergeVal=cArr(i,k); elseif(cArr(i,k)>cArr(k,j)&&cArr(k,j)>mergeVal) mergeVal=cArr(k,j); end end if(mergeVal>cArr(i,j)) copyCArr(i,j)=mergeVal; unchanged=0; else copyCArr(i,j)=cArr(i,j); end end end %--copy back--% for i=1:cArrSize for j=1:cArrSize cArr(i,j)=copyCArr(i,j); end endend
调试信息说的很明确了,xn的下标越界
第一个循环中 xn=xn(5:1) %xn是一个15的double阵(或者叫行向量)
第二次循环时 k=6, M=5 xn=xn(6:-1:2) %注意此时xn下标取值为1~5
因此在解释执行xn=xn(6)时机器不知怎么办,于是就出错了……
递归顾名思义就是程序在执行过程中需要自己调用自己,比较经典递归的是求一个数的阶乘下面是我在MATLA下写的阶乘算法程序,采用了递,你可以体会下
建立controlm的M文件
function y=control(x)
if x==1
y=1;
else
y=xcontrol(x-1);
end
然后在命令窗口中输入
>> control(5)
ans =
120
这样就可以用MATLAB实现递归,主要的还是程序思想,如果思想对了,用程序实现自己的想法那就可以了
以上就是关于用matlab 编写高斯顺序消元法求解下面方程组的程序及并计算结果全部的内容,包括:用matlab 编写高斯顺序消元法求解下面方程组的程序及并计算结果、matlab中聚类算法、matlab关于LMS算法的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)