lunes, 30 de julio de 2012

Método de jacobi en c++

#include<stdio.h>
#include<conio.h>
#include<math.h>

void llenarm(float matrizA[100][100],int n){
for(int i=0;i<=n-1;i++){
for(int j=0;j<=n-1;j++){
printf("Ingresar A[%d][%d]=",i,j);
scanf("%f",&matrizA[i][j]);}
}
}   
void llenarv(float matrizB[100],int n){
for(int j=0;j<=n-1;j++){
printf("Ingresar B[%d]=",j);
scanf("%f",&matrizB[j]);}
}
void llenaraprox(float maprox[100],int n){
for(int j=0;j<=n-1;j++){
printf("Ingresar X[%d]=",j);
scanf("%f",&maprox[j]);}
}
void mostrar(float matrizB[100],int n){
for(int j=0;j<=n-1;j++){
printf("nn");         
printf("t%f",matrizB[j]);}

}
void mostrar2(float matriz[100][100],float B[100],int n){                         
for(int i=0;i<=n-1;i++){
printf("nn");         
for(int j=0;j<=n-1;j++){
printf("t%f",matriz[i][j]);}
printf("t%f",B[i]);
}               
}

//El metodo de Jacobi con las condiciondes dadas.
void jacobi(float A[100][100],float B[100],float X0[100],float X[100],float max,int n){
int t=1;
while(t<=max){
for(int i=0;i<n;i++){
float suma=0;
for(int j=0;j<n;j++){
if(j!=i)
{suma=suma+A[i][j]*X0[j];}
}
X[i]=(B[i]-suma)/A[i][i];
}

for(int k=0;k<=n-1;k++){
X0[k]=X[k];}      
t++; 

}               
}
int main(){
float A[100][100],B[100],X0[100],X[100],tol; 
int n,max;
printf("tttResolucion de Sistemas AX=Bn");
printf("ttt   METODO DE JACOBIn");
printf("nIngresar numero de incognitas: ");
scanf("%d",&n);
printf("nIngresar el numero maximo de iteraciones: ");
scanf("%d",&max);
printf("nINGRESAR A:n");
llenarm(A,n);
printf("nINGRESAR B:n");
llenarv(B,n);
printf("nIngresar Aproximacion Inicial X0: n");
llenaraprox(X0,n);
printf("nEl Sistema ingresado es:n");
mostrar2(A,B,n);
printf("nnDespues de %d iteracionesn",max);
printf("nLas soluciones aproximadas son:n");
jacobi(A,B,X0,X,max,n);
mostrar(X,n);
getch();
getch();