23JON
@23JON (23 JON)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

ζ(2)の値を調べる

Q&A

前回に続き数理のプログラミングについて質問です。

今回はゼータ関数についての質問で、
image.png
の、s=2についての値を調べてみたいのですが、実行回数をどんな値にしても

$ ./a.out
ζ(2)の値を求めます。
試行回数を入力して下さい: 2
ζ(2)=1.000000000

と、1となってしまいます。(試行回数が2の場合、1/1+1/4=1.25となるはず。)

私は以下のようにプログラミングをしたのですが、どの部分が変なのかがよくわからなかったので質問している次第です。

#include <stdio.h>

double sum(int n)
{
  int i;
  double s;
  s=0.0;
  for(i=1;i<=n;i++){
    s=s+(1/(i*i));
  }
  return s;
}


int main(void)
{
  int i,n;
  printf("ζ(2)の値を求めます。\n");
  printf("試行回数を入力して下さい: ");  scanf("%d",&n);

  printf("ζ(2)=%.9f\n",sum(n));
  return 0;
}

ζ(2)のプログラムをもとに、ζ(n) (n>2   n=1は∞と発散するらしい。)を作成したいので、ご回答頂けたらとても助かります。

0

1Answer

sum関数のs=s+(1/(i*i));の箇所、1/(i*i)の結果が整数になっています。
よって、
s=s+((double)1/(i*i));または
s=s+(1.0/(i*i));と修正すれば期待通りの結果になります。

0Like

Your answer might help someone💌