如何解决如何转换此SageMath代码以在Python中运行?
要使此代码在Python中运行,我需要做什么?我从here获得了代码。如果我在CoCalc的SageMath工作簿中运行它,则无需调整即可使用。导入鼠尾草和numpy后在Python中运行它时,会出现各种名称和属性错误。
def mean_x(factor,values):
return sum([cos(2*pi*v/factor) for v in values])/len(values)
def mean_y(factor,values):
return sum([sin(2*pi*v/factor) for v in values])/len(values)
def calculatePeriodAppeal(factor,values):
mx = mean_x(factor,values)
my = mean_y(factor,values)
appeal = sqrt(mx^2+my^2)
return appeal
def calculateBestLinear(factor,values).n()
my = mean_y(factor,values).n()
y0 = factor*atan2(my,mx)/(2*pi).n()
err = 1-sqrt(mx^2+my^2).n()
return [factor*x + y0,err]
def calculateGCDAppeal(factor,values)
appeal = 1 - sqrt((mx-1)^2+my^2)/2
return appeal
testSeq = [0,125,211,287,408,520,650,735,816,942,1060]
gcd = calculateGCDAppeal(x,testSeq)
agcd = find_local_maximum(gcd,2,100)
print(agcd)
plot(gcd,(x,100))
解决方法
第一个错误是
RuntimeError: Use ** for exponentiation,not '^',which means xor
in Python,and has the wrong precedence.
一旦修复,就会丢失各种导入内容。
使用Sage的import_statements
函数查找它们。
sage: import_statements(x)
from sage.calculus.predefined import x
sage: import_statements(sum)
from sage.misc.functional import symbolic_sum
sage: import_statements(cos)
from sage.functions.trig import cos
sage: import_statements(sin)
from sage.functions.trig import sin
最后,代码可能类似于:
from sage.calculus.predefined import x
from sage.misc.functional import symbolic_sum as sum
from sage.functions.trig import cos,sin
def mean_x(factor,values):
return sum(cos(2*pi*v/factor) for v in values) / len(values)
def mean_y(factor,values):
return sum(sin(2*pi*v/factor) for v in values) / len(values)
def calculatePeriodAppeal(factor,values):
mx = mean_x(factor,values)
my = mean_y(factor,values)
appeal = sqrt(mx**2 + my**2)
return appeal
def calculateBestLinear(factor,values).n()
my = mean_y(factor,values).n()
y0 = factor*atan2(my,mx)/(2*pi).n()
err = 1-sqrt(mx**2 + my**2).n()
return [factor*x + y0,err]
def calculateGCDAppeal(factor,values)
appeal = 1 - sqrt((mx - 1)**2 + my**2)/2
return appeal
testSeq = [0,125,211,287,408,520,650,735,816,942,1060]
gcd = calculateGCDAppeal(x,testSeq)
agcd = find_local_maximum(gcd,2,100)
print(agcd)
plot(gcd,(x,100))
在Ask Sage中搜索“ import_statements”,那里有一些答案 对此主题进行更详细的介绍。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。