Me he encontrado con un sistema no lineal de ecuaciones que hay que resolver. El sistema de ecuaciones se puede escribir como: $$Ax + \exp(x) = b$$ con $b$ un conocido $N\times 1$ matriz, $A$ un conocido $N\times N$ matriz, y $x$ lo desconocido $N\times 1$ vector que hay que resolver. La dirección $\exp$ se define por elementos en $x$ vector. He intentado buscar en el manual de Matlab pero me cuesta encontrar como resolver este tipo de ecuaciones con Matlab, espero que alguien me pueda ayudar.
Respuesta
¿Demasiados anuncios?La función se puede escribir de la forma
$$ f \left( x \right) = A x + \exp \left( x \right) - b $$
Lo que equivale a lo anterior una vez que una raíz de $ f \left( x \right) $ se encuentra.
Se podría utilizar Método Newton para encontrar raíces.
En Jacobiano (Como la Transposición de Gradiente) de $ f \left( x \right) $ viene dado por:
$$ J \left( f \left( x \right) \right) = A + diag \left( \exp \left( x \right) \right) $$
Por lo tanto la iteración newton viene dada por:
$$ {x}^{k + 1} = {x}^{k} - { J \left( f \left( {x}^{k} \right) \right) }^{-1} f \left( {x}^{k} \right) $$
Puede ver el código en mi Matemáticas Q1462386 Repositorio GitHub que incluye la derivación analítica y numérica del jacobiano.
Este es el resultado de una carrera:
Presta atención que mientras encuentra una raíz para este problema hay más de 1 raíz por lo tanto la solución es una de muchas y depende del punto inicial.