標籤

C (1) Matlab (11) maple (2) paper (1) python (14)
顯示具有 C 標籤的文章。 顯示所有文章
顯示具有 C 標籤的文章。 顯示所有文章

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;
            }