• 大小: 3KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-10-02
  • 语言: Matlab
  • 标签: MATLAB  

资源简介

经典jacobi法求解特征值特征向量,MATLAB代码实现。。

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#define pi 3.1415926

ifstream fin(“input.txt“ios::in);
  ofstream fout(“output.txt“ios::out);
 

int sign(double x)
{
if(x>0)
return 1;
else if(x=0)
return 0;
else 
return -1;
}
void main()
{
int ijknpq;
double egtcso;
double summax;
double **A**B**R**r;
    
fin>>n; 
fin>>e; 
    fout<<“经典jacobi法 求矩阵的全部特征值与特征向量(终止条件ε为“<    A=new double*[n+1];
B=new double*[n+1];
    R=new double*[n+1];
r=new double*[n+1];

for(i=1;i {
A[i]=new double[n+1];
B[i]=new double[n+1];
R[i]=new double[n+1];
r[i]=new double[n+1];
}
  

    for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
            fin>>A[i][j];
r[i][j]=0;
R[i][i]=0;
}

for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
fin>>R[i][j];


for(k=1;;k++)
{
fout< fout< fout<<“第“<
max=0;
for(i=1;i<=n;i++)                        //在矩阵右上角找模最大值的值
{
for(j=i+1;j<=n;j++)
if(A[i][j]>=0)
{
if(A[i][j]-max>e)
{
   max=A[i][j];
                    q=j;
p=i;
}
}
else
{
                   if((-A[i][j]-max)>e)
{
   max=-(A[i][j]);
                    q=j;
p=i;
   }
}


fout<<“模最大值的下标为: p=“< fout<<“模最大值对应的数值为: “<
if (fabs(A[p][p]-A[q][q])>e)                            //A[p][p]!=A[q][q]时
{    
            g=(A[p][p]-A[q][q])/(2*A[p][q]);                    //(3.2.19)
t=sign(g)*(-fabs(g)+sqrt(1+pow(g2)));              //(3.2.18)
c=1/sqrt(1+pow(t2));                               //(3.2.16)
s=t*c;                                              //(3.2.17)
fout<<“A[p][p]!=A[q][q]“< }
else                                                      //A[p][p]=A[q][q]时
{
o=(pi/4)*sign(A[p][q]);
c=cos(o);
s=sin(o);
}
       
fout<<“sin和cos的值分别为 “<
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
B[i][j]=A[i][j];


B[p][p]=A[p][p]*c*c+A[q][q]*s*s+A[p][q]*(2*c*s);          //(3.2.9)
B[q][q]=A[p][p]*s*s+A[q][q]*c*c-A[p][q]*(2*c*s);
B[p][q]=(A[q][q]-A[p][p])*s*c+A[p][q]*(1-2*s*s);
B[q][p]=B[p][q];



for(i=1;i<=n;i++)                                          //(3.2.10)
{
if(i!=p&&i!=q)
{

B[p][i]=A[i][p]*c+A[i][q]*s;
B[i][p]=B[p][i];
B[q][i]=-1*A[i][p]*s+A[i][q]*c;
B[i][q]=B[q][i];
}
}

        for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
A[i][j]=B[i][j];

    fout< fout<<“经计算得,A为:“< for(i=1;i<=n;i++)
{
fout< for(j=1;j<=n;j++)
fout< }

        for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
r[

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件         58  2010-10-28 20:09  经典jacobi法\(yi)3.2.2经典jacobi法 p89\input.txt

     文件       4225  2010-10-28 20:09  经典jacobi法\(yi)3.2.2经典jacobi法 p89\output.txt

     文件       4080  2010-10-11 19:44  经典jacobi法\(yi)3.2.2经典jacobi法 p89\yi经典jacobi法 求矩阵的全部特征值与特征向量.cpp

     目录          0  2018-12-19 11:23  经典jacobi法\(yi)3.2.2经典jacobi法 p89

     目录          0  2018-12-19 11:23  经典jacobi法

----------- ---------  ---------- -----  ----

                 8363                    5


评论

共有 条评论