標籤

C (1) maple (2) Matlab (11) paper (1) python (14)

2011年9月7日 星期三

高斯消去法 C

#include<stdio.h>
#include<stdlib.h>
int main(){
    int n=3,i,j,k;
    float a[n][n+1],A,Q[n+1];

//input a[i][j] b[i]
    for (i=0;i<n;i++) {
        for (j=0;j<n;j++){
            printf("a[%d][%d]= ",i+1,j+1);
            scanf("%f",&a[i][j]);
        }
    }
    for(k=0;k<n;k++)
    {
        printf("b[%d]=",k);
        scanf("%f",&a[k][n]);
    }
    //輸出
    for (i=0;i<n;i++) {
        for (j=0;j<n+1;j++){
            printf("%5.2f",a[i][j]);}
            printf("\n");}

//高斯消去法
    for (i=0;i<n;i++){
         if(a[i][i]==0){
           j=i+1;
           while(a[j][i]==0){
               j++;
           }
           if(n<=j){printf("bye");return;}
           printf("%d",j);
           for(k=0;k<n+1;k++){Q[k]=a[i][k];a[i][k]=a[j][k];a[j][k]=Q[k];}}

    //高斯消去法
      for(j=0;j<n;j++){
            if (i!=j){
                //row vector +/-
                A=a[j][i]/a[i][i];
                for (k=0;k<n+1;k++){
                    a[j][k]=((-1)*(A))*a[i][k]+a[j][k];}}}}


printf("--------------------------------------------\n");
    for (i=0;i<n;i++) {
        for (j=0;j<n+1;j++){
            printf("%10.2f",a[i][j]);}
            printf("\n");}

    return 0;
            }

5 則留言:

  1. 可以問一下為什麼要用#include嗎?
    因為我幾乎沒有看到筆者使用內的指令阿

    回覆刪除
    回覆
    1. 因為...-_-我其實是亂加上去的 哈哈哈哈
      我很不專業阿XD

      刪除
    2. 因為之前很習慣就把一串include弄上去,
      那時候還沒思考會不會用到,很抱歉拉 造成你的困擾

      刪除
    3. 喔喔 了解 感謝筆者分享~~~

      刪除