首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用复数求Riemann Zeta函数

用复数求Riemann Zeta函数
EN

Code Golf用户
提问于 2016-03-10 16:27:34
回答 1查看 2.9K关注 0票数 11

Introduction

我发现这个问题关闭是因为它不清楚,但这是一个好主意。我会尽我所能把这件事变成一个明确的挑战。

Riemann Zeta函数是一个特殊的函数,它定义为

去复杂的飞机。有许多等价的公式,这使它有趣的代码高尔夫。

挑战

编写一个程序,以2个浮点数作为输入(复数的实部和虚部),并在这一点上计算Riemann函数。

规则

  • 通过控制台或函数输入和返回值输入和输出
  • 内置复数是不允许的,使用浮点数(数字,双,.)
  • 没有数学函数,除了+ - * / pow log和实值三角函数(如果你想要积分,使用伽马函数,.必须将此函数定义包含在代码中)
  • 输入:2个浮标
  • 产出:2个浮标
  • 您的代码必须包含在任意大小时提供理论上任意精度的值。
  • 输入1的行为并不重要(这是这个函数的唯一极点)。

以字节为单位的最短代码获胜!

示例输入输出

输入:

2,0

输出:

1.6449340668482266,0

输入:

1,1

输出:

0.5821580597520037,-0.9268485643308071

输入:

-1,0

输出:

-0.08333333333333559,0

EN

回答 1

Code Golf用户

发布于 2016-03-14 18:58:01

Python-385

这是http://mathworld.wolfram.com/RiemannZetaFunction.html中等式21的一个简单的实现--它使用Python的约定作为可选参数;如果您想要指定一个精度,可以将第三个参数传递给函数,否则它默认使用1e-24。

代码语言:javascript
复制
import numpy as N
def z(r,i,E=1e-24):
 R=0;I=0;n=0;
 while(True):
  a=0;b=0;m=2**(-n-1)
  for k in range(0,n+1):
   M=(-1)**k*N.product([x/(x-(n-k))for x in range(n-k+1,n+1)]);A=(k+1)**-r;t=-i*N.log(k+1);a+=M*A*N.cos(t);b+=M*A*N.sin(t)
  a*=m;b*=m;R+=a;I+=b;n+=1
  if a*a+b*b<E:break
 A=2**(1-r);t=-i*N.log(2);a=1-A*N.cos(t);b=-A*N.sin(t);d=a*a+b*b;a=a/d;b=-b/d
 print(R*a-I*b,R*b+I*a)
票数 8
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/75277

复制
相关文章

相似问题

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