Powrót do listy plików
backsubstitution.c
#include<stdio.h>
#include<math.h>
#include<ctype.h>
#define NWIER 50
typedef double typ;
int main(){
double **U;
double *b;
double *x;
double temp;
int i,j;
U = (typ **)calloc(NWIER,sizeof(typ));
for(i=0; i<NWIER; i++){
U[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){
U[i][j]=cos(.1*(i+j));
// printf("U[%i][%i]=%f\n",i,j,U[i][j]);
}//if j>=i
else{
U[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],U[NWIER-1][NWIER-1]);
// x[NWIER-1]=b[NWIER-1]/U[NWIER-1][NWIER-1];
// ^- niepotrzebne bo x[49]=(b[49] - U[49][49]*(x[49]=0))/U[49][49]
// czyli x[49]= b[49]/U[49][49]
// printf("%f,%f,%f",x[NWIER-1],b[NWIER-1],U[NWIER-1][NWIER-1]);
//fortuna-mecukow 5.3.2 str 200
for(j=NWIER-1;j>=0;j--){
temp=0.;
for(i=NWIER-1;i>j;i--){
temp+=U[j][i]*x[i];
}
x[j]=(b[j]-temp)/U[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
Materiały z Metod Numerycznych udostępnione zostały na zasadach licencji GPL w wersji 2.