24小时热门版块排行榜    

查看: 335  |  回复: 0

dengmin155

新虫 (初入文坛)

[求助] 这个程序怎么改啊 指针

这个程序是用来进行矩阵对角化的,但是,编译好后,一旦输入有零的矩阵元后,就会发生指令使得内存不可读的错误,如果矩阵中没有零元素,就很好用,这是采用雅可比方法编写的~求大侠相助!!

#include
#include
#include
#include
class jacobi
{private:
        int flag,i,iteration,j,k,n,b,h;
        double csa,eps1,eps2,eps3,p,q,s1,s2,sna,spq,sum,temp;
        double  *eigen,**a,**t;
public:
        jacobi()
        {
                iteration=0;flag=1;
                eps1=1e-10;eps2=1e-10;eps3=1e-10;
       
        }
void solution ();
~jacobi()
        {
         delete [] eigen;
         for (i=0;i; }
     delete [] a;
         for (i=0;i; }
        delete [] t;
        }
};

void main()
{        jacobi eigenpair;
        eigenpair.solution();

}


void jacobi::solution()
{ cout<<"输入矩阵阶数:";
cin>>n;
eigen=new double [n];
for (i=0;i=0.0; }
a=new double*[n];
for(i=0;i=new double [n];}
t=new double*[n];
for (i=0;i=new double [n];}
for (i=0;i for (j=0;j {t[j]=0.0;a[j]=0.0; }
for (i=0;i for (j=i;j {       
        cout<<"\n输入a["<         cin>>a[j];
    a[j]=a[j];
}
cout<<"输入矩阵结束"< s1=0.0;sum=0.0;
for (i=0;i         {       
                t=1.0;
                s1+=a*a;
                sum+=a;

        }
do
{
        iteration++;
        for(i=0;i                 for(j=(i+1);j                 {
                        if(fabs(a[j])[j]=0.0; a[j]=0;}
                        else
                        {
                                q=fabs(a-a[j][j]);
                                if (q>eps2)
                                {   b=i;h=j;
                                        p=2*a[j]*q/(a-a[j][j]);
                                        spq=sqrt(p*p+q*q);
                                        csa=sqrt((1+q/spq)/2);
                                        sna=p/(2*csa*spq);
                                }
                        else
                        {       
                                csa=0.707107;sna=csa;
                        }
                        for(k=0;k                         {        temp=t[k];
                                t[k]=temp*csa+t[k][j]*sna;
                                t[k][j]=temp*sna-t[k][j]*csa;
                       
                        }


             temp=a;
                         a=temp*csa*csa+a[h][h]*sna*sna+2*a[h]*csa*sna;
             a[h][h]=temp*sna*sna+a[h][h]*csa*csa-2*a[h]*csa*sna;
             a[h]=0;a[h]=0;
                         for(k=0;k                                  if((k!=b)&&(k!=h))
                                 {
                                         temp=a[k];
                                     a[k]=temp*csa+a[h][k]*sna;
                                     a[h][k]=temp*sna-1*a[h][k]*csa;//这里有点问题

                                 }

                        for        (k=0;k                                 if((k!=b)&&(k!=h))
                                {       
                                        temp=a[k];
                                        a[k]=temp*csa+a[k][h]*sna;//有问题,这里要注意a[h]的索引标的问题
                                        a[k][h]=temp*sna-1*a[k][h]*csa;
                                }


                         
                        }
                       
                }
        s2=0.0;
        for (i=0;i         {
                eigen=a;
                s2+=eigen*eigen;
        }
        if (fabs(1-s1/s2)         else { s1=s2;}

        }while(flag==1);

for (i=0;i {
        cout<<"\n特征值["<< }
cout<<"\n收敛于"< cout<<"\n输入矩阵的迹="< sum=0.0;
for(i=0;i; }
cout<<"\n特征值之和="< cout<<"\n特征向量是:"< cout.precision (4);
for(j=0;j         {
      cout<<"\n特征向量["<           for (i=0;i[j]<          
          cout<         }
system("pause";
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 dengmin155 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[公派出国] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +4 ttH3f1oA6ace 2026-11-04 8/400 2026-11-05 20:23 by qL1cU46YIdK0
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 kvewwGtKktqB 2026-11-04 12/600 2026-11-05 20:21 by qL1cU46YIdK0
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +4 hNpp4Y2CGvSC 2026-11-04 11/550 2026-11-05 20:21 by qL1cU46YIdK0
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +5 ncTVBM6AOJHF 2026-11-04 12/600 2026-11-05 20:10 by qL1cU46YIdK0
[考博] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +6 ncTVBM6AOJHF 2026-11-04 9/450 2026-11-05 20:10 by qL1cU46YIdK0
[考研] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 ttH3f1oA6ace 2026-11-04 11/550 2026-11-05 17:58 by My20PsvIExYO
[考博] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 kvewwGtKktqB 2026-11-04 8/400 2026-11-05 17:47 by My20PsvIExYO
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +5 kvewwGtKktqB 2026-11-04 13/650 2026-11-05 17:47 by My20PsvIExYO
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 ncTVBM6AOJHF 2026-11-04 14/700 2026-11-05 17:36 by My20PsvIExYO
[考研] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +5 ncTVBM6AOJHF 2026-11-04 10/500 2026-11-05 17:36 by My20PsvIExYO
[硕博家园] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 ncTVBM6AOJHF 2026-11-04 9/450 2026-11-05 17:25 by My20PsvIExYO
[公派出国] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +6 ncTVBM6AOJHF 2026-11-04 19/950 2026-11-05 17:25 by My20PsvIExYO
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +6 ncTVBM6AOJHF 2026-11-04 16/800 2026-11-05 17:25 by My20PsvIExYO
[考研] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 ncTVBM6AOJHF 2026-11-04 13/650 2026-11-05 17:15 by My20PsvIExYO
[基金申请] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 ELBZ6WwEaRj6 2026-11-04 7/350 2026-11-05 16:08 by My20PsvIExYO
[公派出国] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 ELBZ6WwEaRj6 2026-11-04 7/350 2026-11-05 16:08 by My20PsvIExYO
[考研] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 ttH3f1oA6ace 2026-11-04 9/450 2026-11-05 15:46 by My20PsvIExYO
[公派出国] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +5 ncTVBM6AOJHF 2026-11-04 9/450 2026-11-05 15:13 by My20PsvIExYO
[教师之家] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 ncTVBM6AOJHF 2026-11-04 12/600 2026-11-05 11:10 by PYZmcHr5kSaq
[基金申请] 各位基础老师们,看完中央《从严治党》的决定后,对学术界更加有信心了吧 +5 iaeyuan 2026-11-01 5/250 2026-11-04 14:43 by jinchengzi
信息提示
请填处理意见