Sumatorios para programar un programa

Estas ultimas semanas se me han presentado diversos problemas matemáticos para realizar programas en lenguaje C.
El problema es que en dicho enunciado me presentan fórmulas sumatorias las cuales no se como exactamente "leerlas o entenderlas" para yo saber posteriormente como programarlo en C.
El problema va relacionado con matrices, en concreto la descomposición de una matriz usando el método LDLT.

Se me presenta dichas fórmulas:

Se que tengo que trabajar con bucles for pero no logro entender las fórmulas para saber que rango debería de tener cada variable.

Me gustaría si es posible que me explicarán como puedo entender dichas fórmulas para luego ser programado y si hay algún truco general para fórmulas sumatorias para saber exactamente con que rango van los bucles for en cada variable.

Notar no estoy buscando la solución al problema sino la manera de entender los rangos de las variables i relaciones para los bucles. En general tras investigar he entendido como se realiza dicha fórmula pero no como pasarlo a programación C usando bucles for.

1

1 respuesta

Respuesta
1

Es bastante sencillo interpretar los sumatorios como bucles for si sigues cierta regla mnemotécnica:

1) La parte de abajo de la sumatoria sería dónde comienza el bucle.

2) La parte superior de la sumatoria sería cuando termina el bucle.

3) Al ser una sumatoria y sin especificar nada más, el incremento se realizará de 1 en 1.

4) Todo lo que esté en el interior se irá sumando a un resultado que se devolverá desde una función o simplemente almacenando este valor en un resultado.

Por lo tanto, la primera sumatoria quedaría como algo así:

int result = 0;
for (int j = 0; j <= k-1; j++){
  result += pow(l[k][j], 2) * d[j][j];
}

Si desarrollamos esto un poco más tenemos que la primera línea de la fórmula quedaría de la siguiente manera:

for (int k = 0; k <= n - 1; k++) {
  d[k][k] = a[k][k] - getFirstSumatoryValue(k);
  l[k][k] = 1;
}
int getFirstSumatoryValue(int k) {
  int result = 0;
  for (int j = 0; j <= k - 1; j++) {
    result += (pow(l[k][j], 2) * d[j][j]);
  }
  return result;
}

Hace tiempo que no toco C++ y no estoy seguro de que la sintáxis esté 100% perfecta pero esa sería la idea.

Acabo de fijarme que en tu pregunta decías que ibas a programar en C no en C++.

Las diferencias son mínimas y creo que puedes adaptar todo lo que escribí ahí de C++ a C sin mucho problema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas