• 締切済み

パソコンを使って数列の和を求めたいのですが…

1/1+1/2+1/3+…+1/n という数列の和をある数まで求めたいのですが、エクセルだと自動なようで結構手間がかかります。nがすごく大きい数字を想定しているので… となるとやはりプログラムしかないでしょうか? もし知ってる方いたらどのような方法が1番効率的かを教えてもらいたいです。 これをどのカテゴリに書き込もうか迷いました。もしここが不適当であれば指摘してください。適切なところに移動します。

みんなの回答

  • kabaokaba
  • ベストアンサー率51% (724/1416)
回答No.7

>Perlというのはフリーのものなのか教えていただけないでしょうか? 少しはぐぐったりや本屋をみたりしましょう. 世界でもっとも知られたスクリプト言語の一つ といってもいいものです. 2,000,000項まで100桁だと 16.08587 36534 25731 44079 83596 06834 26424 47242 06398 10456 27571 48488 06287 47115 04466 60207 26898 69831 19070 76574 って感じのようです. 計算時間は1時間以上かかってますので, まあ,あまり実用的ではありません. 現実的には,きっちり精度を考えて 近似計算するのが筋でしょう. #それにしても・・・発散が遅いとは知ってたけども #ここまで遅いとは(^^;

全文を見る
すると、全ての回答が全文表示されます。
  • kabaokaba
  • ベストアンサー率51% (724/1416)
回答No.6

> となるとやはりプログラムしかないでしょうか? そうなります.桁数が大きくなると エクセルとか使うと誤差が大きくなりすぎるでしょう. まじめに「数値計算」するなら誤差評価も必要です. けどまあ,時間がかかってもいいなら,スクリプト言語で 任意精度の実数演算をサポートしてるものを使えば それなりに計算できます. 例えば,1+1/2+・・・+1/10000 の値の小数点以下100位までは 10.78760 60360 44382 26417 84779 04851 60533 48592 62945 57769 17183 89460 95668 16020 24943 15950 68001 25127 29008 08825 となるようです. この計算をさせたPerlのスクリプトを乗っけておきます. スピードは遅いです. use strict; use warnings; use Math::BigFloat; Math::BigFloat->accuracy(110);##少し大きめに110桁 my $x= Math::BigFloat->new(1); for (1..10000){##ここの10000が1/10000を表わす $x = $x+Math::BigFloat->new(1)->bdiv($_); } print $x->bround(110);##110桁で丸める

tria---
質問者

お礼

ありがとうございます!! まだ見ているのであればPerlというのはフリーのものなのか教えていただけないでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • nakaizu
  • ベストアンサー率48% (203/415)
回答No.5

nの数値と要求されている精度はどのくらいなのですか? 1/1+1/2+…+1/n=S(n) とすると よく知られているように lim(n→∞)(S(n)-log n)=γ(オイラー定数0.577215664901532…) なので、log n+γで大体の数値はわかります。(log は自然対数です) 誤差は1/(2n) くらいです。 もっと精度が必要ならばもう少し精度のたかい近似値計算法もあります。

全文を見る
すると、全ての回答が全文表示されます。
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.4

excelの有効桁数は15桁です。 1/n<10^-15より大きい n なら加算しても答えは同じです。増えません。 それまでにも桁落ちがあるので、15桁の精度は得られません。 精度が必要ならπを求めるような何らかの工夫をするか、 どこかで妥協するしかないでしょう。 プログラムしても事情は同じです。

全文を見る
すると、全ての回答が全文表示されます。
  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.3

n がすごく大きいと Excel だと桁落ちしちゃうんじゃないかな? Excel の有効桁数とか知らないけど。具体的にどのくらいの「大きさ」を想定しているのですか?

全文を見る
すると、全ての回答が全文表示されます。
noname#58440
noname#58440
回答No.2

  数秒で済む手順を教えます。 A1セルをコピーします(Ctrlを押しながらCが便利) コピーしたらそのまま(A1セルのまま) ShiftとCtrlをおしたまま下矢印(↓)キーを押す。 Enterを押す これでA1~A65536までコピーが完了します。  

全文を見る
すると、全ての回答が全文表示されます。
noname#58440
noname#58440
回答No.1

  excelなら簡単です とりあえず1/1~1/65535まで足す方法 A1セルに =1/row() と入力してこのセルを下方向の最後までコピー A65536セルに =sum(A1:A65535) これで1/1+1/2+1/3……+1/65535 ができました。 こらにB列C列を利用すればもっと沢山計算できます。  

tria---
質問者

お礼

その方法でやりましたが、”と入力してこのセルを下方向の最後までコピー”の部分が激しく面倒くさく、手間がかかってしまうために今回質問をしてみました。 2000000項くらいまでこれで足してみたんですが全然足りないんです…

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 数列の和を教えて下さい

    以下の数列の和を教えて下さい。 n^kをnのk乗とした場合 数列   2^1、2^3、2^5、…、2^(2k-1) (k:自然数) どうしてもわかりません。おねがいいたします。

  • 数列の和の公式

    n×a^nの数列の和の公式を教えてください。(0<a<1の定数、nは自然数)

  • 数列

    連続で投稿してしまうことをお許しください 2の倍数でも3の倍数でもない自然数全体を小さい順に並べてできる数列を a_1,a_2,a_3,・・・・・,a_n,・・・とする (1)a_100をもとめる (2)1003は数列{a_n}の第何項か? (3)mを自然数とするとき数列{a_n}の初項から第2m項までの和を求めよ。 (1)a_100=300かしら?適当にやったらうまくいった? (2)1003-500-334-167=169 169項?(n(2)=500,n(3)=334,n(6)=167) (3)1から2mまでの和から2の倍数の和を引いて、3の倍数の和を引いて6の倍数の和を足す。 2の倍数や3の倍数、6の倍数のシグマの計算式が立てられない。 mが3kのとき、3k+1のとき、3k+2のときで場合分け?

  • 2つの数列の共通項の和

    次の問題が分かりません。解説をお願いいたします。 an=n^2である数列{an}と bn=3n-2である数列{bn}の いずれにも含まれる項を小さいものから並べた数列を{cn}とする。 Nを自然数とするとき、数列{cn}の初項から第2N項までの和を求めよ。 ご回答よろしくお願いいたします。 (cnが、3の倍数でない自然数の二乗の項であるということは分かったのですが、それをどのように式にすればいいかが分かりません。)

  • 群数列教えてください

    群数列 |1|3,5|7,9,11|13,15,17,19|21,・・・ において (1)第n群の最初の数をnを用いて表せ (2)第n群に含まれる数の和を求めよ (3)351は第何群の何番目の数か 群数列 |1|1,2|1,2,3|1,2,3,4|1,・・・ において (1)この数列の第100項を求めよ (2)初項から第100項までの和を求めよ 群数列 1|2,3|4,5,6,7|8,9,10,11,12,13,14,15|16,・・・ において (1)第15群の4番目の数を求めよ (2)第n群に入る数の和を求めよ (3)1000は第何群の何番目の数か    どれか1つでもいいので、 できれば細かいところまで詳しく解き方を教えてください。 どうしたらいいのか見当もつきません...

  • 数列

    (1),(2,3),(4,6,5),(8,12,10,7),(16,24,20,14,9),(32,48,40,28,18,11),… という群数列がある 第n群中にあるn個の数の和を求めよ 和SnはS(n+1)=2Sn+2n+1を満たすと回答に書いてあるのですが何故分かるのでしょうか? 確かめればあってることは分かるのですが、和の数列1,5,15,37,85,177,…を見てもこの漸化式が思い浮かびそうにないのですが、慣れなのでしょうか?

  • 等比数列の逆数の和について

    初項1、公比2、項数nの等差数列で、ぎゃく数の和が、2_n -2/2_n-1になるはずなのですが、計算ができません。 途中式とともに教えていただけるとありがたいです。

  • 数列の問題を教えてください

    数列が苦手で、解法が分かりません。 下記の問題の解答を教えてください。 お願いします。 1.n を自然数とする。   3^n のすべての正の約数の和が3280になるときの n を求めよ。   ≪答:7≫ 2.-1<a<0<b とする。   3数 -1,a,b は適当な順に並べると等差数列になる。   また、ある順に並べると等比数列にもなる。    このときの a,b を求めよ。   ≪答:a=-1/4, b=1/2≫ 3.3ケタの正の奇数の2乗の和を求めよ。   ≪答:166499850≫ よろしくお願いします。

  • 数列の問題です(SPI)

    SPIの問題です。 数が次のように並んでいます。  3、9、27、81、243、… (1)第6項はいくらか (2)第1項から第6項までの和はいくらか この問題でしたら計算で何とか解けるのですが、もっと高度(例えば第15項を求めよ、とか、第1項から15項までの和といった問題)になると、やり方がわかりません。3の累乗の数列ですが、どなたか、この数列の一般項やn項までの和を求める式や効率のよいやり方をご教示頂けますでしょうか。宜しくお願いします。

  • ナベアツ数列

    適当に思いついた感じの問題なんですが 世界のナベアツは3の倍数と3のつく数字だけアホになるという。 そこで自然数において3の倍数と3のつく数字だけを集めた数列N= {3,6,9,12,13...}を考えたとき、数列Nの2008番目の要 素はいくらになるか。 こういった、規則性のない数列に対して何番目の要素の値を求めるとい う操作は単純に数えていくしかないのでしょうか? くだらない質問ですみません。よろしくお願いします。