给你提供一种很专业的数值算法“幂法”,这是专门用来算矩阵最大特征值的经典算法。“幂法“的算法过程其实很简单,就是拿一个向量,不停地用a乘,最后就会慢慢趋近于最大特征值对应的特征向量。“幂法”在矩阵拥有唯一最大特征值的前提下,迭代足够多次,就一定能收敛的,可以用线性代数的矩阵相似性原理证明。我这段代码迭代了100次,取了随便一个向量[100000]'作为初始值(一般是取个随机向量,其实没啥大差别)。a=[111/4333;111/4333;441555;1/31/31/5122;1/31/31/51/213;1/31/31/51/21/31];v=[100000]';fori=1:100v=a*v;v=v/sqrt(sum(v.^2));endlamda=sqrt(sum((a*v).^2))/sqrt(sum(v.^2))v结果:lamda=你会发现,和内置算法的eigs命令求出的结果是一样的。>>eigs(a)ans=最大特征值同样是。
直接plot3(x,y,z)就行了,比如:
x=0:pi/50:10*pi;
>> y=sin(x);
>> z=cos(x);
>> plot3(x,y,z)
matlab求解矩阵的最大特征值及对应的正规化特征向量:[V, D] = eig(A);D = diag(D); % 特征值[D, idx] = sort(D, 'descend');V = V(:, idx); % 特征向量矩阵这样,D(1)是最大特征值,V(:,1)是最大特征向量只会这些了。
x=y=[X,Y]=meshgrid(x,y)%生成x-y平面的自变量“格点”矩阵Z= %根据Z=f(x,y),surf(X,Y,Z)%绘制曲面图
186 浏览 3 回答
303 浏览 3 回答
168 浏览 3 回答
353 浏览 3 回答
328 浏览 4 回答
308 浏览 7 回答
180 浏览 6 回答
176 浏览 4 回答
163 浏览 3 回答
174 浏览 6 回答
235 浏览 5 回答
105 浏览 2 回答
141 浏览 5 回答
275 浏览 5 回答
159 浏览 9 回答
272 浏览 3 回答
195 浏览 2 回答
221 浏览 5 回答
352 浏览 3 回答
269 浏览 8 回答
116 浏览 2 回答
303 浏览 6 回答
289 浏览 7 回答
318 浏览 2 回答
248 浏览 4 回答