- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 sympy 求偏导数,我想将其转换为函数,以便我可以替换值并估计 t_1、t_2 的某些值处的导数。我使用的代码如下:
import sympy as sp
import numpy as np
from sympy import init_printing
init_printing()
t_1,t_2,X_1,X_2,Y_1,Y_2,X_c1,X_c2,Y_c1,Y_c2,a_1,a_2,psi_1,psi_2,b_1,b_2= sp.symbols('t_1 t_2 X_1 X_2 Y_1 Y_2 X_c1 X_c2 Y_c1 Y_c2 a_1 a_2 psi_1 psi_2 b_1 b_2')
X_1=X_c1 + (a_1 * sp.cos(t_1) * sp.cos(psi_1)) - ((b_1) * sp.sin(t_1)* sp.sin(psi_1))
X_2=X_c2 + (a_2 * sp.cos(t_2) * sp.cos(psi_2)) - ((b_2) * sp.sin(t_2)* sp.sin(psi_2))
Y_1=Y_c1 + (a_1 * sp.cos(t_1) * sp.sin(psi_1)) + ((b_1) * sp.sin(t_1)* sp.cos(psi_1))
Y_2=Y_c2 + (a_2 * sp.cos(t_2) * sp.sin(psi_2)) + ((b_2) * sp.sin(t_2)* sp.sin(psi_2))
D=(((X_2-X_1)**2) + ((Y_2-Y_1)**2))**0.5
y_1=sp.diff(D,t_1)
y_2=sp.diff(D,t_2)
f=sp.lambdify(t_1, y_1, "numpy")
g=sp.lambdify(t_2, y_2, "numpy")
当我尝试用一个值替换 t_1 时,
f(np.pi/2)
我收到以下错误:
AttributeError Traceback (most recent call last)
<ipython-input-26-f37892b21c8b> in <module>()
----> 1 f(np.pi/2)
/users/vishnu/anaconda3/lib/python3.5/site-packages/numpy /__init__.py in <lambda>(_Dummy_23)
AttributeError: 'Symbol' object has no attribute 'cos'
我引用了以下链接:
What causes this error (AttributeError: 'Mul' object has no attribute 'cos') in Python?
但我认为我导入的 numpy 和 sympy 与这些链接中提到的情况不同,它们并没有发生冲突。感谢您的帮助。
最佳答案
这种类型的错误发生在您调用 np.cos(a_symbol)
时,它显然将 numpy 的底层转换为 a_symbol.cos()
。
lambdify
用于数值计算 - 它将所有 sp
调用替换为 np
调用。但你所做的是象征性的。这足以解决您的问题:
f1 = lambda t: y_1.subs({t_1: t})
f2 = lambda t: y_2.subs({t_2: t})
关于python-3.x - 对 numpy 的同情导致 AttributeError : 'Symbol' object has no attribute 'cos' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39753260/
来自 sympy solve() 的解决方案是否以某种方式排序?它是从最小到最大的解决方案吗? 如何强制解决方案的非负性? 在我的问题中,我需要独特的最小正解决方案。我感谢所有的帮助 最佳答案 它们不
我从 sympy python 库开始。 如果,我有这个表达式 from sympy.abc import a,b,c,p,q e = p * ( a + b ) + q * ( a + c ) 如何
当 Sympy 生成 C 代码时, 有没有办法对表达式中的 pow(或 powf)出现强制执行 CSE 优化? 例如,这个代码片段 c, s = symbols('c s') myexpr = c**
请考虑以下脚本;我们如何使用 python 计算 h 关于 f 的李导数? import sympy as sym x, y, L, u , v = sym.symbols('x y L u v')
我正在尝试求解这三个方程: a1 + a2 = b1 a2 + a3 = b2 b1 + b2 = c1 我为随机选择的三个变量生成值(不允许组合 b1、b2 和 c1),所以我可能有 a1 = 5、
我找不到让 SymPy 将 cos(a)*cos(b) 之类的乘积展开为角和的三角函数之和的方法。 from sympy import * init_printing() wrf,wlo,t = sy
lambdify Sympy 的函数只能将我们的表达式转换为 lambda 函数。 x, y = symbols('x y') expr = x + 2*y f = lambdify(x, expr)
from sympy import * x, alpha = symbols('x alpha') latex(alpha/x) Out[1]: '\\frac{\\alpha}{x}' 这在 lat
我对为什么以下代码的答案是 10 而不是 1 感到困惑。有人可以帮助我了解 lambdify 发生了什么或者是什么导致了错误答案吗? import sympy from sympy.utilities
基于我发现的示例 here ,我正在尝试从使用 sumpy.diag 创建的对角矩阵创建函数 myM = Matrix([ [x1, 4, 4], [4, x2, 4], [4, 4, x3]])
我是一名优秀的程序员,十分优秀!