24小时热门版块排行榜    

查看: 301  |  回复: 1

sleefd

新虫 (初入文坛)

[求助] 求讲解一下,下面jacobi算法代码的具体实现思路

int jcb(double a[][200],double tzz[200],double v[][200],double eps,int jt,int rows)
  
//jacobi求实对称矩阵的特征值和特征向量
//a 为原矩阵,v为特征向量,tzz为特征值,eps为精度,jt为最大迭代次数
{
        int i,j,p,q,l;
        double fm,cn,sn,omega,x,y,d;
//        double temp;
        l=1;       
        for(i=0;i         {
                v=1.0;
                for(j=0;j                         if(i!=j) v[j]=0;
        }
        while(true)
        {               
                fm=0.0;
                for(i=0;i<=rows-1;i++)
                        for(j=0;j<=i-1;j++)
                        {
                                d=fabs(a[j]);
                                if((i!=j)&&(d>fm))   //取最大的a[p][q]
                                {
                                        fm=d;p=i;q=j;}
                        }
            if(fm                 {  
                       
                        for(i=0;i                         {
                       tzz=a;
                       //printf("%lf \n",a);
                        }
                        return(1);
                        break;
                }
                if(l>jt) //如果不能求解
                {
                        for(i=0;i                         {
                       tzz=a;
                       //printf("%lf \n",a);
                        }
                        return(-1);
                    break;
                }               
                l=l+1;         //记录迭代次数               
                x=-a[p][q];
                y=(a[q][q]-a[p][p])/2.0;
                omega=x/sqrt(x*x+y*y);
                if(y<0.0) omega=-omega;
                sn=1.0+sqrt(1.0-omega*omega);  
                sn=omega/sqrt(2.0*sn);  //正弦
                cn=sqrt(1.0-sn*sn);  //余弦
                fm=a[p][p];
                a[p][p]=fm*cn*cn+a[q][q]*sn*sn+a[p][q]*omega;
                a[q][q]=fm*sn*sn+a[q][q]*cn*cn-a[p][q]*omega;
                a[p][q]=y*omega+a[p][q]*(2*cn*cn-1);
                a[q][p]=a[p][q];
                for(j=0;j<=rows-1;j++)
                        if((j!=p)&&(j!=q))
                        {                                       
                                fm=a[p][j];
                                a[p][j]=fm*cn+a[q][j]*sn;
                                a[q][j]=-fm*sn+a[q][j]*cn;
                        }
                for(i=0;i<=rows-1;i++)
                        if((i!=p)&&(i!=q))
                        {
                                fm=a[p];
                                a[p]=fm*cn+a[q]*sn;
                                a[q]=-fm*sn+a[q]*cn;
                        }
                for(i=0;i<=rows-1;i++)
                {
                        fm=v[p];
                        v[p]=fm*cn+v[q]*sn;
                        v[q]=-fm*sn+v[q]*cn;
                               
                }
        }
}
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sleefd

新虫 (初入文坛)

我感觉好像是松弛迭代的写法。
但是我不知道那个omega是什么意思,是怎么估计的
还有正弦,余弦的作用。
求前辈们指点一下。
2楼2012-05-22 17:56:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 sleefd 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 听说今天filecode变了 +18 布布和一二 2026-08-06 32/1600 2026-08-07 00:37 by ywclong81
[基金申请] 基金中了 +6 laoda193707 2026-08-06 6/300 2026-08-06 23:34 by dragonxp
[基金申请] filecode +10 等待解的谜 2026-08-06 14/700 2026-08-06 21:16 by zhanghaozhu
[基金申请] 固定端突然变了,今天 +3 archvillain 2026-08-06 7/350 2026-08-06 21:05 by archvillain
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 6/300 2026-08-06 20:19 by 苏知砚
[有机交流] 一个有机合成实验室都需要哪些设备? 50+3 kf2781974 2026-07-31 12/600 2026-08-06 15:11 by eddyin
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[教师之家] 咨询面上基金 +4 李长云 2026-07-31 7/350 2026-08-06 11:20 by 李长云
[基金申请] 影响面上的因素 +8 布布和一二 2026-08-05 11/550 2026-08-06 10:41 by 宝贝虫子
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +9 archvillain 2026-08-04 11/550 2026-08-05 20:06 by wlwhappy
[基金申请] 面上再次挂了,太难了,躺也躺不了,倦也卷不过,小学校之殇! +22 低垂的野花 2026-07-31 30/1500 2026-08-05 18:03 by 低垂的野花
[基金申请] 好消息?这个有何含义??? +8 Tide man 2026-08-05 10/500 2026-08-05 16:14 by xmuxiaoyu
[考博] 【2027博士申请】纳米药物递送方向 20+3 13586093586 2026-08-03 4/200 2026-08-05 09:59 by lfy8008
[基金申请] 有没有H口的?有收到消息的吗? +3 超级海虾 2026-08-04 3/150 2026-08-04 17:26 by 学教育滴
[论文投稿] 十年后又回来了,论文投稿求助 +3 哈哈114477 2026-08-01 3/150 2026-08-04 15:40 by tegsgjy20
[基金申请] 纯娱乐,不喜欢勿喷 +7 Tide man 2026-08-04 10/500 2026-08-04 15:10 by loufangrui
[基金申请] 面上提前没消息,有中的吗 +14 archvillain 2026-08-02 18/900 2026-08-04 14:42 by archvillain
[基金申请] 娱乐 +4 Tide man 2026-08-03 4/200 2026-08-04 11:51 by wgch518
[基金申请] 什么时候能放榜呀? +3 Jacob678 2026-08-03 3/150 2026-08-03 16:14 by gltch
信息提示
请填处理意见