Ich habe ein problem mit mein code.

Write your question here.


























1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
GAUSS INVERSA:GAUSS INVERSA:GAUSS INVERSA:GAUSS INVERSA:GAUSS INVERSA:GAUSS INVERSA:GAUSS INVERSA:
  /** HACER ALUMNO */

  /** INICIALIZAMOS EL VECTOR DEL PIVOTE */
  for(int k=0;k<A.dim1();k++) piv[k]=k;

  /** CONVERTIMOS EL SISTEMA EN UNO TRIANGULAR USANDO EL METODO DE GAUSS */
  for(int k=0;k<A.dim1();k++){
    /** DETECTAMOS EL MAXIMO DE LA DIAGONAL HACIA ABAJO */
    real max=fabs(Acopy[piv[k]][k]);
    int kmax=k;
    for(int m=k+1;m<A.dim1();m++){
      if(fabs(Acopy[piv[m]][k])>max){
        max=fabs(Acopy[piv[m]][k]);
        kmax=m;
      }
    }
    /** CAMBIAMOS EL PIVOTE SI FUERA NECESARIO */
    if(kmax!=k){
      int paso=piv[kmax];
      piv[kmax]=piv[k];
      piv[k]=paso;
    }
    /** CONVERTIMOS EN 0 DE LA DIAGONAL HACIA ABAJO */
    for(int j=k+1;j<A.dim1();j++){
          real mul=-Acopy[piv[j]][k]/Acopy[piv[k]][k];
          Acopy[piv[j]][k]=0.;
          for(int n=k+1;n<A.dim1();n++) Acopy[piv[j]][n]+=mul*Acopy[piv[k]][n];
          for(int n=0;n<A.dim1();n++) B[piv[j]][n]+=mul*B[piv[k]][n];
    }
  }

  /** REMONTE PARA CALCULAR TODOS LOS ELEMENTOS DE LA MATRIZ A_1 POR COLUMNAS A PARTIR DE B*/
  for(int k=A.dim1()-1;k>=0;k--){
    if(Acopy[piv[k]][k]==0.) return Array2D<real>();
    for(int n=0;n<A.dim1();n++){
      A_1[k][n]=B[piv[k]][n];
      for(int l=k+1;l<Acopy.dim1();l++)
        A_1[k][n]-= Acopy[piv[k]][l]*A_1[l][n];
      A_1[k][n]/=Acopy[piv[k]][k];
    }
  }

GAUSS:GAUSS:GAUSS:GAUSS:GAUSS:GAUSS:GAUSS:GAUSS:GAUSS:GAUSS:GAUSS:GAUSS:GAUSS:GAUSS:GAUSS:GAUSS:

  /** HACER ALUMNO */
  //cout<<b<< endl;
   for(int k=0;k<A.dim1();k++) piv[k]=k;//definir

  for(int k=0;k<A.dim1();k++){

    real max=fabs(A1[piv[k]][k]);
    int kmax=k;
    for(int m=k+1;m<A.dim1();m++){
      if(fabs(A1[piv[m]][k])>max){
        max=fabs(A1[piv[m]][k]);
        kmax=m;
      }
    }

    if(kmax!=k){
      int paso=piv[kmax];
      piv[kmax]=piv[k];
      piv[k]=paso;
    }

    for(int n=k+1;n<A.dim1();n++){
        real mul=A1[piv[n]][k]/A1[piv[k]][k];
        A1[piv[n]][k]=0.;
        for (int q=k+1;q<A.dim1();q++)A1[piv[n]][q]=A1[piv[n]][q]-mul*A1[piv[k]][q];
        b1[piv[n]]+=-mul*b1[piv[k]];

        }


  }


    for (int h=b1.dim()-1;h>=0;h--){
        u[h]=b1[piv[h]];
        for(int m=h+1;m<b1.dim();m++){
           u[h]=u[h]-(A1[piv[h]][m]*u[m]);
        }

        if(A1[piv[h]][h]==0.)return Array1D<real>();
        u[h]=u[h]/(A1[piv[h]][h]);

    }
Last edited on
1) In English, please.

2) http://www.cplusplus.com/forum/beginner/178013/

3) Please describe the problem you're having with your code. If you won't bother to even give a little bit of information, most of us won't bother wading through your code, no matter how organized it is.
closed account (48T7M4Gy)
1 ) In English , bitte.

2) http://www.cplusplus.com/forum/beginner/178013/

3) Bitte beschreiben Sie das Problem, die Sie haben mit Ihrem Code . Wenn Sie sich nicht die Mühe , auch nur ein wenig von Informationen zu geben , werden die meisten von uns nicht die Mühe, waten durch Ihren Code , egal, wie die organisierte es ist.
Can you translate to english?
Topic archived. No new replies allowed.