Cómo cambiar el atributo mul
Inicio
Aprender
Practicar
Actividades
Herramientas
TVP
Volver al sitio web de Tencent Cloud
Cómo resolver "No hay ningún atributo "cos "" en el objeto mul"
Original publicado
mkrieger1 modificado el 2021- 08-02
python
sympy
¿Cómo resolver problemas multiobjetivo?
importar sympy como sym
desde sympy importar lambdify
x = sym.Symbol('x')
n = sym. derivada_f = f. diff(x)
n = sym.Symbol('x')
n = sym.diff(x)
derivada_f = lambdify (x, derivada_f)
x = float(input('x:'))
imprimir(derivada_f(x))
imprimir(derivada_f)
Copiar
Si ingreso 2, el resultado esperado debería ser 2*cos(2*x).
Vistas 42 Seguidores 0 Votos 0
Inicial
2 Respuestas
Votos altos
Operación
p>
Aceptado por JohanC
Aceptado el 2021-08-02
Respondido el 2021-08-02
Número de Votos 2
Su código contiene muchos malentendidos. Uno de los problemas es una regla general de programación importante: intente utilizar diferentes nombres de variables para variables con diferentes significados. Por lo tanto, x no debe asignarse a un número de punto flotante porque anteriormente era una variable simbólica, y derivada_f es una expresión simbólica y no debe asignarse al resultado de lambdify.
Tenga en cuenta que el mundo simbólico de sympy no combina bien con el mundo numérico de funciones no asintóticas. Por ejemplo, las funciones creadas con lambdify ya no pueden acceder al símbolo n.
El código lambdify(x, derive_f) contiene un error. div derivada_f es una expresión simbólica que contiene dos variables simbólicas (x y n), por lo que requiere llamar a derivada_f_x_n = lambdify((x,n),div derivada_f) (que también le da al resultado un nombre diferente). Después, puedes usar la expresión numérica derivada_f_x_n(7,8), pero ya no puedes usar argumentos simbólicos.
Lambdify no es suficiente para sus necesidades. Para obtener la derivación con x sustituido, llame a .subs(x, new_value) directamente en la versión simbólica de derivada_f Salida: n*cos(2.0*n)
Tenga en cuenta también que las aproximaciones asintóticamente favorecen fuertemente el uso de expresiones simbólicas exactas, y el uso de números de punto flotante conduce inevitablemente a aproximaciones. Se recomienda utilizar números enteros, fracciones asintóticas (sym.S(1)/2) o expresiones simbólicas (sym.sqrt(5)) siempre que sea posible.
También puedes usar la función exportada de x y reemplazarla con n
print(f.diff(x).subs(n, 2))
copiar
Salida: 2*cos(2*x)
Para utilizar esta función en futuros cálculos numéricos, después de la sustitución, solo hay una variable simbólica (x): p >
g = lambdify(x, f.diff(x).subs(n, 2))
Copiar
Puedes escribir help(g) para ver qué genera código fuente: luego puede usar g para crear gráficos matplotlib. Después de lambdify, ya nada es simbólico.