無限大-無限大の計算の仕方

このQ&Aのポイント
  • ExcelやVBAを使って無限大-無限大の計算を行う方法について教えてください
  • Excelでは有効数字を15桁以上にすることができないため、計算がうまくできません。正確には1/3=0.33333に収束するはずです
  • Matlabなどの他のプログラムソフトウェアを使わずに、無限大-無限大の計算を行うために計算の順番を工夫する方法を教えてください
回答を見る
  • ベストアンサー

無限大-無限大の計算の仕方

無限大-無限大の計算の仕方 Excel2010を使っています。 (coth x /x) - (1/ x^2) という関数をExcelあるいはVBAを使ってプロットしたいのですが x → 0で無限大-無限大の計算となるため けた落ちしてしまって、うまく計算することができません。 正確には1/3 = 0.33333という値に収束するはずです。 Excelでは有効数字を15桁以上にすることができないそうで、これが問題となっています。 Matlabなどの他のプログラムソフトウェアを使わずに この計算を行いたいのですがどうすれば良いでしょうか? 恐らく、計算の順番を工夫すれば計算できると思うのですが どなたか教えて下さい。

  • YURUE
  • お礼率18% (72/379)

質問者が選んだベストアンサー

  • ベストアンサー
noname#221368
noname#221368
回答No.2

 cosh,sinh,cothの定義は、当然ご存知だと思うのですが、これらはe^xのよって定義されます。またコンピューターの中では、e^xは基本的に、マクローリン級数、   e^x=1+x+1/2!・x^2++1/3!・x^3++1/4!・x^4++1/5!・x^5+・・・   (1) で計算されます。  またExcelに限らずコンピューターの中では、有効数字は15~16桁です。これはCPUのレジスターが、最大で20くらいの桁数しか持ってないからです。なので必要精度が15~16桁を越えれば、必然的に桁落ちが起きます。  そういう目で(1)を見て下さい。例えば、x=10^(-6)なら、(1)の2項目のxまでなら何とかなりますが、3項目はx^2なので10^(-12)となり、それに1/2!=1/2までかかってるので、もう桁落ちし兼ねません。4項目以降は確実に0と、CPUに解釈されます。そうすると結果の精度は、6桁程度と覚悟すべきです。15桁のフル桁は実現されません。  (1)のような無限級数のxは、0に近いほど(絶対値が小さいほど)数値的に正しい結果を与えそうですが、有限桁数しか持たない機械的なコンピューターには、こういう事情もあります  確認のため、実際にExcel2010でやってみました。結果は、x=10^(-3)辺りが良い所です。それ以上に小さいxについては、#1さんの方法が、実用的と思います。 http://ja.wikipedia.org/wiki/%E5%8F%8C%E6%9B%B2%E7%B7%9A%E9%96%A2%E6%95%B0

その他の回答 (1)

  • f272
  • ベストアンサー率46% (7994/17083)
回答No.1

cothxを展開してやればどうかな? A1をx,B1を(coth x /x) - (1/ x^2)とすれば B1=1/3-A1^2/45+2*A1^4/945-2*A1^6/9450+2*A1^8/93555-A1^10/462021

関連するQ&A

  • 積分計算の矛盾

    y=x^(-1/2)の関数なのですが、 この関数をx=0からx=n(n>0とする)まで積分すると 結果は2√nになるかと思いますが グラフを書いて面積を考えると、無限大に発散する気がします。 しかし計算上は収束します。 これは一体どう理解したらよろしいのでしょうか?

  • 数値計算上での対数計算について

    大学で卒研課題としてMATLABというソフトを使った電磁波の数値計算を行っています。 いま問題となっているのは、解析値X(生データ)を[dB]にするため、log_10(X)をとるのですが、この際Xの値が1.0に極めて近いとき(例えば:X=0.9997)のときの誤差が、ほかのときの値の誤差にくらべ、3桁程度大きくなってしまいます。 数値計算において対数計算がマクローリン展開を用いていることまではわかったのですが、誤差の原因についてはまったく見当がつきません。 どなたか、参考になりそうな文献、サイト等をご存知でしたら教えてください。 宜しくお願いします。

  • 一松信先生の「初等関数の数値計算」について

    下記のサイトに、一松信「初等関数の数値計算」(教育出版)先生の著書がります。 項6.3.3の問題の前に、下記の記述があります。 その中で『この部分の近似値を計算する際には特別の配慮をする必要がある』と有りますが、 桁落を含めて、私には残念ながら意味が解かりませんの、説明をお願いできないでしょうか。 尚、級数の計算はWindowsのjavaで行うことが出来ました。 ======================================== 但しこれでも不十分な部分がある。図6.3 はsin x の値(実線) と,Maclaurin 展開式(6.6) を用い た近似値の相対誤差(破線) をプロットしたものであるが,ちょうどsin x ≈ 0 となる部分で,相対 誤差が著しく増大しているのが分かる。これは展開式の計算で桁落ちが発生していることを示して いる。従って,この部分の近似値を計算する際には特別の配慮をする必要がある。 ======================================== http://na-inet.jp/nasoft/chap06.pdf 以上

  • 数字の桁はいくつまで?

    数字の桁は「百・千・万・億・兆・無限大数・不可思議」などがありますが、正確なところ、どのような順番で、何桁まであるのでしょうか? 以前から興味がありました。 教えてください。

  • 必ず4桁の自然数に収束する計算式は?

    最初に任意の定数(自然数)を決めます。 それをある決まった演算の組み合わせ(四則だけだったと思います。)で計算します。 その演算とは例えば×3÷2+1のようなものです。 その答えをさらに定数として上記の計算を繰り返すと、ある決まった同一の値に必ず収束するというものです。 例えば任意の定数をAとして、演算の組み合わせをP()とします。 そして次のように無限に繰り返していきます。 P(A)=B P(B)=C P(C)=D  ・  ・  ・ P(*)=X P(X)=X という意味です。 このような演算P()をご存知の方はいらっしゃいませんか? Xはかすかな記憶では、多分4桁の自然数になったと思うのですが。

  • matlabでの長時間の計算について

    すみません、現在matlabで数値解析を行っております。 質問を以下にまとめたので、よろしければアドバイスをお願いします。 -------------------------------------------------------------- matlabで数十分かかると考えられる計算を行おうとしています。 その場合、計算後の大容量のデータは一般的にどのように保存すべきでしょうか? これまで、パラメータを50個用意してそれぞれ計算を行い、 後に見比べるために、目的の変数の値をプロットし、画像(角度などを指定してjpegに)として保存していました。 (for文を使って一定量パラメータを変化させる毎に、saveasを使ってグラフを保存していた。) 今まではパラメータ1つあたり数十秒程度で済む計算だったのでこれでも良かったのですが、 今後はパラメータ1個あたりに対しかかる計算時間が数十分になります。。 そこで、今までと同じように保存していくやり方では、もしグラフの保存方法(角度など)を間違えてしまった場合に かなりの損失になってしまうと思ったので質問しました。。 何か効果的なデータの保存の仕方はありませんでしょうか? 以後もパラメータをfor文を使って一定量変化させ、50個用意して計算していこうと思うのですが・・ 一応現状で考えているのは、saveを使ってworkspace内の変数(全て)をそれぞれ保存していくというものです。 何かその他に効果的なデータの保存方法などありましたら是非教えてください。 -------------------------------------------------------------- 上記のように、 計算時間のかかる計算をmatlabを使って行おうと考えているのですが、 計算機を走らせている間、動作が著しく重くなり、ほとんど他の作業が出来なくなります。 (これは避けられませんよね・・?) 私はmatlabを学校で使っているので、帰宅する際、計算機を走らせて帰ろうと考えています。 (節電家でなくてすみません。。) 問題は途中でメモリ不足などで計算がストップしてしまわないかということです・・ 一応、パラメータを変える毎に初期化すべき変数はzerosを使って初期化しているのですが、 パラメータ毎の目的の変数(6つ)は、多いとそれぞれ10^6×200ほどの配列となる可能性があります。 せっかく手間暇かけて走らせたのに、途中でメモリ不足などと表示されたら辛いなぁと思い・・ 現在使っている計算機はubuntu11.04で、メモリは992.8MiBなのですが、やはりこの計算機だと際どいでしょうか・・? -------------------------------------------------------------- コードに関する質問なのですが・・ uが50000000*200の配列で、それぞれの要素に値が入っているとします。 これをそのまま1行目~50000000行目まで、順にグラフにプロットすると、かなりの時間がかかるので、 1行目から、一定数(例えば100)毎の行の配列を グラフにプロットさせたいのですが、やり方がわかりません・・ x = -10: 10: 200 ; t = 0: 100: 50000000 ; waterfall(x,t,u) ; とするとエラーが出ます。 どなたか訂正出来る方、お願いします。。 waterfall以外でも全然構いません。 -------------------------------------------------------------- 以上長々と質問すみませんでした。。 どなたかご指導頂けると助かります・・ あと、分類というのがよくわからなかったので、その他となっています・・ ごめんなさい。。

  • Excelでの逆関数計算

    ご確認したいのですが、ExcelのMINVERSE関数を使用して逆関数の計算を行っているのですが、52桁以上の計算になると#VALUE!になり計算できなくなります。 できれば200桁くらいの計算を行いたいのですが、何かよい方法または、実行方法はないでしょうか? 私は、 Whinndouzu XP Microsoft Office Excel 2003 を使用しています。

  • Excel を使った合計、平均など

    1桁おきの計算、2桁おきの計算など VBA あるいは そのほかを使った計算方法はあるようですが Excel のみでできる方法はあるのでしょうか あるようでしたら是非教えてください 1 2 3 4 5 とある場合 通常では 15 となりますが 1行おきだと     9となります 2 行おきだと     5となります よろしくお願いいたします。 .

  • Excelで「10桁の自然数×10桁の自然数」を計算する方法

    Excelで「10桁の自然数×10桁の自然数」を関数を組み合わせるか、VBAで組むかして、計算する方法をお分かりになる方おられませんでしょうか?(計算結果は文字列として得られることになると思いますが、それでかまいません。) こうすればできる、というアイデアだけでもかまいませんので、よろしくお願いいたします。

  • C言語での桁落ち

    C言語での桁落ちの以下のプログラムを教えてください f(x)=xの5乗-ルート(1+xの10乗)+1/2×ルート(1+xの10乗) x=0,1,2・・・50 における f(x) の値を求めよ. そのまま計算した場合と式を変形して正確に計算した場合を比較せよ(一つのプログラムで両方計算). のプログラムを教えてください。