Ir para conteúdo
Fórum Script Brasil

User F

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre User F

User F's Achievements

0

Reputação

  1. Estou tentando fazer um programa em gauss seidel pra faculdade e não esta funcionando, gostaria que alguém me desse um auxilio... a matriz A ficaria A00 A01 A02 x0 B0 A10 A11 A12 * x1 = B1 A20 A21 A22 x2 B2 aí ficaria considerando x0=0 , x1=0 e x2=0 pelo que o usuario definirá ao ser perguntado com o valor encontrado de x0 encontrado considerando x1=0 e x2 =0, eu iria jogar pra achar x1 da segunda linha, e com o valor encontrado de x0 e x1 eu iria encontrar x 2 da terceira linha e assim sucessivamente por uma quantidade de interações (repetições) até chegar na aproximação destes... O programa tá dando looping, gostaria de saber qual o problema. a00 * x0 + a01*x1 + a02*x2 = b0 x0 = ( b0 - a01*x1 - a02*x2 )/ x0 #include<iostream> #define N 3 // tamanho da matriz using namespace std; int main(){ double A[N][N]; // MAtriz double B[N]; // Resultado double X[N]; // coluna X int max; cout<<"\n Entre com os valores da Matriz A \n"; for(int a=0;a<N;a++){ for(int b=0;b<N;b++) cin >> A[a][b]; } cout <<"\nDigite os valores da Matriz B \n "; for(int c=0;c<N;c++) cin>>B[c]; cout <<"\n qual o numero de interacoes q você deseja? "; cin >> max; cout << "\n Digite os valores iniciais de X "; cin >> X[N]; //tem que ser iguais a zero //parte que calcula numa matriz 3 por 3 e imprime /* for(int k=0;k<max;k++){ //aqui calcula pela matriz 3x3 , mas não se eu mudar o valor de N X[0]=1/A[0][0] * (B[0]-A[0][1]*X[1]-A[0][2]*X[2]); X[1]=1/A[1][1] * (B[1]-A[1][0]*X[0]-A[1][2]*X[2]); X[2]=1/A[2][2] * (B[2]-A[2][0]*X[0]-A[2][1]*X[1]); cout<<"\n"<<X[0]<<"\t"<<X[1]<<"\t"<<X[2]; }*/ //parte que deve calcular qualquer tamanho de matriz escolhida: int p=0, w=0, k=0 ,z=0; for(int k=0;k<max;k++){ //vai fazer k iterações até max quantidade for(int i=0;i<N;i++) for(int j=0;j<N;j++){ //varrer a matriz A[i][j] e B[i][j] segundo a operacao double Soma_e=0,Soma_d=0; //Soma_e : soma de termos pela esquerda //Soma_d : soma de termos pela direita if(i==j){ //somente os a[0][0] , a[1][1] e a[2][2] possuem os X´s interessados do{ k = k +(j-1); //utiliza k e z para não subistiuir i e j... z = z +(i-1); //...com os novos valores assumidos na soma Soma_e = Soma_e + A[i][k]*X[z]; //soma dos valores vao se acumular }while ( 0<k<(N-1) || 0<z<(N-1) ); //o valor de [i] e [j] não podem exceder a matriz... //...como considerar o programa A[-2][-5] dentro da operacao. //...se N=3, com k=2 vai sair do laço do{ p = p +(i+1); w = w +(j+1); Soma_d = Soma_d + A[i][p]*X[w]; }while ( 0<p<(N-1) || 0<w<(N-1) ); X[i] = ( B[i] - Soma_e - Soma_d )/A[i][i]; } else {} cout<<"\n"<<X[0]<<"\t"<<X[1]<<"\t"<<X[2]; } } system("pause>>null"); return 0; } Abraço.
×
×
  • Criar Novo...