首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找是否使用了三角函数并跟踪符号变量

查找是否使用了三角函数并跟踪符号变量
EN

Stack Overflow用户
提问于 2017-03-22 16:44:37
回答 2查看 57关注 0票数 2

我将有数据,使用学位作为三角函数。

我将使用渐变,因为它使用弧度的三角函数,我希望能够转换和使用学位。

但是,我不知道哪个符号变量被用作三角函数的输入。

所以,我会有这样的东西:

代码语言:javascript
复制
import sympy
from sympy import mpmath

a = 2
b = 30
a,b = sympy.symbols('a b')
expr = 'sqrt(a + cos(b))'
expres = sympy.sympify(expr)

print(expres.atoms(sympy.cos))

b30,它是按度数表示的(因此,在cos(b)计算中,它必须是度,而不是渐近预期的弧度)。

但是,就像我说过的,下一次程序运行时,它将为trigonometric.Or使用另一个符号变量,多个三角函数。

我想,如果使用atoms,以便在表达式中找到是否有三角函数functions.And,那么在任何使用相应符号变量的地方,都要使用度而不是弧度。

有办法这样做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-22 19:27:58

可以说,避免此问题的最干净的方法是告诉sympify对选定的符号/字符串使用自定义定义,例如:

代码语言:javascript
复制
from sympy.abc import *
from sympy import sin, pi, Lambda, sympify

sin_degree = Lambda(x, sin(x*pi/180))
degree_trigs = {"sin": sin_degree}

expr_string = "sin(a) + sin(b**d + exp(c))"
expr = sympify(expr_string, locals=degree_trigs)
print(expr)

这将返回:

代码语言:javascript
复制
sin(pi*a/180) + sin(pi*(b**d/180 + exp(c)/180))
票数 2
EN

Stack Overflow用户

发布于 2017-03-22 17:34:37

您可以在函数中使用subs,例如:

代码语言:javascript
复制
from sympy.abc import *
from sympy import sin, exp, pi, Lambda

sin_degree = Lambda(x, sin(x*pi/180))

expr = sin(a) + sin(b**d + exp(c))
print( expr.subs(sin,sin_degree) )

这将返回:

代码语言:javascript
复制
sin(pi*a/180) + sin(pi*(b**d/180 + exp(c)/180))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42957862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档