Usar Fsolve en Python
Este artículo explorará cómo podemos usar fsolve
para encontrar una solución en Python. También exploraremos los escenarios en los que se usa y un código de muestra para comprender mejor cómo y cuándo se puede usar para alcanzar un determinado tipo de resultado.
Comencemos por entender qué es fsolve
y por qué se usa.
la función fsolve
en Python
Las ecuaciones son las raíces de la ciencia de datos y ayudan a los científicos de datos, matemáticos, ingenieros químicos y médicos a dar sentido a los diversos escenarios con los que se enfrentan a diario. Ahora, con las computadoras envueltas en nuestra vida cotidiana, se vuelve más difícil resolver secuencialmente ecuaciones basadas en una escala mayor.
El fsolve
de Python facilita que estos profesionales y otros resuelvan estas ecuaciones utilizando diferentes módulos que ofrecen las bibliotecas de Python. fsolve
es esencialmente un módulo SciPy que devuelve las raíces de ecuaciones no lineales.
Hay varios parámetros que ofrece fsolve
para varios escenarios. Estos se pueden ubicar fácilmente directamente desde la documentación de SciPy disponible en línea.
Así es como se ve la lista completa de parámetros para fsolve
:
Código de ejemplo:
scipy.optimize.fsolve(
func,
x0,
args=(),
fprime=None,
full_output=0,
col_deriv=0,
xtol=1.49012e-08,
maxfev=0,
band=None,
epsfcn=None,
factor=100,
diag=None,
)
Puede encontrar una explicación detallada de todos los parámetros y lo que implica cada uno en la documentación de SciPy. Sin embargo, haremos un resumen breve pero fácil de entender de estos parámetros:
Parámetro | Descripción |
---|---|
func , invocable f(x, *args) |
Esta es esencialmente la descripción de una función que toma uno o más, posiblemente argumentos vectoriales, y devuelve un valor con la misma longitud que el argumento. |
x0 , ndarray |
Este argumento significa cuál es la estimación inicial de las raíces de la función f(x)=0 . |
args , tupla (opcional) |
Estos son los argumentos adicionales que pueden ser necesarios para la función. |
fprime , invocable f(x, *args) (opcional) |
Esta es una función para calcular el valor estimado del jacobiano de la función con las derivadas en las filas. |
full_output , bool (opcional) |
Esto devuelve cualquier valor de salida opcional si se cumple una condición o es Verdadero. |
col_deriv , booleano (opcional) |
A través de este argumento, especifica si la función jacobiana calcula o no las derivadas de las columnas. Según la documentación de SciPy, esto es más rápido debido a la ausencia de una operación de transposición. |
xtol , flotante (opcional) |
Este argumento permitirá que la función termine un cálculo basado en la mayor parte del error relativo entre dos valores iterados consecutivos. |
maxfev , int (opcional) |
Esto define el número máximo de llamadas a la función. |
banda , tupla (opcional) |
Esto es para cuando fprime está configurado en Ninguno . La matriz de Jacobi se considera en bandas si el argumento se establece en una secuencia de dos que contiene el número de subdiagonales y superdiagonales dentro de la matriz. |
epsfcn , flotante (opcional) |
Si fprime se establece en Ninguno , este argumento contendrá la longitud de pasos adecuada para la aproximación de la diferencia directa del jacobiano. Se supone que los errores relativos en las funciones son del orden de la precisión de la máquina si el epsfcn es menor que la precisión de la máquina. |
factor , float (opcional) |
Este argumento determina el límite del paso inicial y debe estar entre (0.1, 100). |
diag , secuencia (opcional) |
Estas entradas N-positivas sirven como factor de escala para las variables. |
Use la función fsolve
para encontrar soluciones en Python
Como probablemente ya sepa, fsolve
se puede usar para varias ecuaciones no lineales en diferentes escenarios. Exploremos algunos ejemplos de código simples para comprender mejor cómo se puede usar fsolve
:
Hallar las raíces de la ecuación x+2cos(x)
con punto de partida -0,2
Código de ejemplo:
from math import cos
import scipy.optimize
def func(x):
y = x + 2 * cos(x)
return y
y = scipy.optimize.fsolve(func, 0.2)
print(y)
En este código, importamos la función cos
de la gran biblioteca math
en Python y optimizamos
desde scipy
(fuente de fsolve
). A continuación, definimos nuestra ecuación y la almacenamos en y
en el método func
.
Después de que nuestra ecuación se inicialice correctamente, simplemente usamos fsolve
para llamar al método (func)
que contiene la ecuación. En el segundo argumento, definimos el punto de partida de la ecuación.
El resultado se almacena luego en una variable y
, impresa para la salida.
La salida del código:
[-1.02986653]
Resolver una ecuación con puntos de partida 0 y 2
Código de ejemplo:
from math import cos
import scipy.optimize
def func(x):
y = [x[1] * x[0] - x[1] - 6, x[0] * cos(x[1]) - 3]
return y
x0 = scipy.optimize.fsolve(func, [0, 2])
print(x0)
En este código, seguimos los mismos pasos que el Código 1 importando cos
y scipy.optimize
de las bibliotecas math
y scipy
de Python. Continuamos con el siguiente paso definiendo una ecuación en un método llamado func
.
Luego llamamos a este método un argumento en la función fsolve
y le proporcionamos los dos puntos de inicio, 0 y 2, que luego se almacenan e imprimen en una variable llamada x0
.
La salida del código:
[6.49943036 1.09102209]
Encuentre las Raíces de la Ecuación 4sin(y)-4
Con el Punto de Inicio 0.3
Código de ejemplo:
from math import sin
import scipy.optimize
def func(y):
x = 4 * sin(y) - 4
return x
x = scipy.optimize.fsolve(func, 0.3)
print(x)
En este código de ejemplo, importamos sin
de la biblioteca math
en lugar de cos
. La estructura del código sigue siendo la misma que en los ejemplos anteriores, donde también importamos scipy.optimize
para fsolve
y luego definimos una ecuación dentro de un método func
.
Llamamos a este método un argumento en fsolve
con un punto de partida de 0.3. El valor resultante se almacena en la variable x
y se imprime para la salida.
La salida del código:
[1.57079633]
En este artículo, aprendimos que fsolve
se usa para encontrar las raíces de ecuaciones no lineales, sobre los diferentes tipos de parámetros que fsolve
puede tomar y lo que implica cada uno. Además, revisamos algunos ejemplos prácticos de fsolve
y estudiamos cómo se puede usar en su código.
Ahora que ha repasado la teoría y los ejemplos prácticos de código de cómo se utiliza fsolve
para derivar una solución, es hora de crear su propio código para explorar más a fondo el funcionamiento de fsolve
.
Esperamos que encuentre este artículo útil para comprender cómo usar fsolve
para resolver problemas en Python.
My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.
LinkedIn