Red de conocimiento informático - Conocimiento informático - Cómo cambiar el atributo mul

Cómo cambiar el atributo mul

Iniciar sesión

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):

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.