⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jacobitezhengzhieight2.m

📁 数值分析方法,主要里面涵盖了计算方法方面matlab程序!
💻 M
字号:
clear;
clc;
eps=1e-5;
N=0;
A=[5,-4,1;
    -4,6,-4;
    1,-4,7];
[m,n]=size(A);
while (1)
   N=N+1;
   B=abs(A);
   max=B(1,2);
   t=1;k=2;
   for i=1:m-1
       for j=i+1:n
           if (B(i,j)>max)
               max=B(i,j);
               t=i;
               k=j;
           end
       end
   end
   if max<eps
       break;
   end
   max=A(t,k);
   fprintf('max=%f,i=%d,j=%d\n',max,t,k);
   if A(t,t)~=A(k,k)
       jz=1/2*(atan(2*A(t,k)/(A(t,t)-A(k,k))));
   elseif A(t,t)==A(k,k)&A(t,k)>0
       jz=pi/4;
   elseif A(t,t)==A(k,k)&A(t,k)<0
       jz=-pi/4;
   end
   fprintf('第%d次旋转角度为:%f\n',N,jz*180/pi);
   A1=A;
   for l=1:n
       A1(t,l)=A(t,l)*cos(jz)+A(k,l)*sin(jz);
   end
   for l=1:n
       A1(l,t)=A(t,l)*cos(jz)+A(k,l)*sin(jz);
   end
   for l=1:n
       A1(k,l)=-A(t,l)*sin(jz)+A(k,l)*cos(jz);
   end
   for l=1:n
       A1(l,k)=-A(t,l)*sin(jz)+A(k,l)*cos(jz);
   end
   A1(t,t)=A(t,t)*(cos(jz)^2)+A(k,k)*(sin(jz)^2)+A(t,k)*sin(2*jz);
   A1(k,k)=A(t,t)*(sin(jz)^2)+A(k,k)*(cos(jz)^2)-A(t,k)*sin(2*jz);
   A1(t,k)=0;
   A1(k,t)=0;
   A=A1;
end
for i=1:n
    Y(i)=A(i,i);
end 
%输出特征值
Y'

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -