lukasz.proszek.info

Powrót do listy plików

forwardsubstitution.c

#include<stdio.h>
#include<math.h>
#include<ctype.h>
#define NWIER 50

typedef double typ;

int main(){
         double **L;
         double *b;
         double *x;
         double temp;
         int i,j;

        L = (typ **)calloc(NWIER,sizeof(typ));
        for(i=0; i<NWIER; i++){
                 L[i] = (typ *)calloc(NWIER,sizeof(typ));
        }//for i
   
        b= (typ **)calloc(NWIER,sizeof(typ));
        x= (typ **)calloc(NWIER,sizeof(typ));

        for(i=0;i<NWIER;i++){
                 for(j=0;j<NWIER;j++){
                                if(j<=i){
                                         L[i][j]=cos(.1*(2*NWIER+2-i-j));
//                                       printf("L[%i][%i]=%f\n",i,j,L[i][j]);
                                }//if j>=i
                                else{
                                         L[i][j]=0;
                                }
                                
                 }//for j
        }//for i

        for(i=0;i<NWIER;i++){
                 x[i]=0;
                 b[i]=1;
        }
        
//      printf("%f,%f,%f",x[NWIER-1],b[NWIER-1],L[NWIER-1][NWIER-1]);
//      x[0]=b[0]/L[0][0];
//      ^- niepotrzebne bo x[0]=(b[0] - L[0][0]*(x[0]=0))/L[0][0]
//      czyli x[0]= b[0]/L[0][0]
        
//fortuna-mecukow 5.3.2 str 200
        for(j=0;j<NWIER;j++){
                 temp=0.;
                 for(i=0;i<j;i++){
                                temp+=L[j][i]*x[i];
                 }
                 x[j]=(b[j]-temp)/L[j][j];
        }
        
for(i=0;i<NWIER;i++)
         printf("%.10f\n",x[i]);

return 0;
}


syntax highlighted by Code2HTML, v. 0.9.1
kod przerobiony z HTML na XHTML za pomocą HTML Tidy for Linux/x86