1. SIS Lab
  2. >
  3. Blog
  4. >
  5. 数理情報学4 pivot 枢軸選択つきガウスの消去法

数理情報学4 pivot 枢軸選択つきガウスの消去法

更新日:2018.06.20 作成日:2008.06.06
#include

#define N 4

main() {
double a[N][N],b[N],ell,a_max;
int pivot[N],i,j,k,m,m_opt,k_step_old;
//初期設定
a[0][0]= 1.0; a[0][1]= 1.0; a[0][2]= 1.0; a[0][3]= 1.0;
    a[1][0]= 1.0; a[1][1]= 1.0; a[1][2]= 2.0; a[1][3]= 2.0;
    a[2][0]= 1.0; a[2][1]= 2.0; a[2][2]= -1.0; a[2][3]= 2.0;

    a[3][0]= 1.0; a[3][1]= 2.0; a[3][2]= 2.0; a[3][3]= -1.0;

    b[0]= 1.0; b[1]= 2.0; b[2]= 1.0; b[3]= 2.0; 

    //仮のピボット選択
    for(i=0;ia_max){
                a_max = fabs(a[pivot[m]][k]);
                m_opt = m;
            }
        }

        /* m_opt != kのとき「k段のピポット」と「m_opt段のピポット」を交換 */
        if(m_opt != k){
            k_step_old = pivot[k];
            pivot[k] = pivot[m_opt];
            pivot[m_opt] = k_step_old;
        }

        //前進消去
        for(m=k+1;m=0;m--){
        for(j=N-1;j>m;j--){
            b[pivot[m]] =  b[pivot[m]] -a[pivot[m]][j]*b[pivot[j]];
        }

        b[pivot[m]] =  b[pivot[m]]/a[pivot[m]][m];

    }
    printf("%f\n",b[pivot[0]]);
    printf("%f\n",b[pivot[1]]);
    printf("%f\n",b[pivot[2]]);
    printf("%f\n",b[pivot[3]]);
}
B! Pocket
スポンサーリンク

Related contents

TECH

2008.11.28

processingによる可視化

TECH

2008.10.12

施設引き継ぎ資料

TECH

2008.08.30

文系的IT業と理系的IT業

TECH

2008.06.30

プログラム

TECH

2008.06.03

シュレディンガーの猫

TECH

2008.05.31

Java 今の時間を表示させる

TECH

2010.01.22

Scalaスケーラブルプログラミング

TECH

2010.01.20

Flexでウェブアルバムが作りたい!!(5)