1 votos

Resolución de sistemas de ecuaciones no lineales con MATLAB

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.

1voto

John Puntos 9543

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:

enter image description here

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.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X