• ベストアンサー

この超越方程式解の解き方

sinh(λl)*cos(λl)+sin(λl)*cosh(λl)+(λl)*{cosh(λl)*cos(λl)-1}=0   (l=L) という式で、λlを求めるのですが、cosh*cosで割ったり、パソコンで数字を当てたりしてみましたが解くことができません。もう少し短い式だったなら解けたかもしれないのですが・・・。 どなたかこの式の行き着く先、もしくは解の求め方を教えてください。

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

  • ベストアンサー
  • siegmund
  • ベストアンサー率64% (701/1090)
回答No.3

元の方程式の左辺を f(x) と書きます. y = f(x) のグラフが x 軸を切るところの x の値が 元の方程式 f(x) = 0 の解です. だから y = f(x) のグラフを描いてみれば様子がわかるということです. ところで,f(x) には cosh(x) や sinh(x) が含まれていて, cosh(x) = (1/2) (e^x + e^(-x)) sinh(x) = (1/2) (e^x - e^(-x)) ですから,x が大きくなると e^x が効いて cosh(x) や sinh(x) の値はべらぼうに大きくなります. で,sin(x) や cos(x) がありますから, f(x) の関数値は正になったり負になったりするでしょう. つまり,x が少し変化するとき, f(x) の値は 10^10 から -10^10 まで変化する, などということが起こります(数値は,例えば,ということです) これではグラフはまともに描けません. 諸悪の根元は e^x がどんどん大きくなることにありますから, e^x で割っておけば良いわけです. e^x はゼロになりませんから,方程式としては f(x) = 0 も f(x)/e^x = 0 も同じことです. g(x) = f(x)/e^x のグラフなら,f(x) の時みたいなことは起こりません. ただし, cosh(x)/e^x という表現にしますと, べらぼうに大きな値 cosh(x) をやっぱりべらぼうに大きい e^x で割る, ということになり,数値処理上のトラブルの元です(ここらへんは処理系に依存します). cosh(x)/e^x を書き直して cosh(x)/e^x = (1/2) (1+e^(-2x)) としておけば, そういう問題は起こりません. 式の上では等価な表現でも,数値計算をするときは多少注意が必要です.

その他の回答 (6)

回答No.7

ExcelでNewton法をするには次の様にするとできます。 (1) 1列目のセルA1 に解の初期値を入力する。 (2) 解きたい方程式が f(x)=0 であるとき、2列目のセルA2 に   =A1-f(A1)/f '(A1)  を数式として入力する。 (3) ドラッグアンドコピーで2列目の数式を繰り返しの回数だけ   下のセルにコピーする。 ここでf(x)=cos(x)sinh(x)+sin(x)cosh(x)+x*(cosh(x)cos(x)-1) とすると f '(x)=3cosh(x)cos(x)-x*cosh(x)sin(x)+x*sinh(x)cos(x)-1 なのでA1, B1, C1,…のセルに PI()/2, 3*PI()/2, 5*PI()/2…と入力し、A2 に  =A1-(COS(A1)*SINH(A1)+SIN(A1)*COSH(A1)+A1*(COSH(A1)*COS(A1)-1))/(3*COSH(A1)*COS(A1)-A1*COSH(A1)*SIN(A1)+A1*SINH(A1)*COS(A1)) と入力し、他のセルにコピーするとできます。

回答No.6

No.3 の回答は(cosh(x)*cos(x)-1) を(cos(x)*cos(x)-1)と見誤ったための間違いでした。さてxが少し大きくなるとsinh(x)やcosh(x)がかかっていない項を無視すると  cos(x)*sinh(x) + (sin(x)+x*cos(x))cosh(x) = 0 で近似できるでしょう。さらにsinh(x) とcosh(x) をほぼ等しいとすると  x = -1 - tan(x) y=x と y= -1 - tan(x) のグラフを書くと分かるように交点はほぼ-tan(x)が発散する  x= π/2, 3π/2, 5π/2, … になります。 x=0 以外の解の第1近似としてはこれを取るのがよいでしょう。これを初期値としてニュートン法で計算すると  x= 1.71081, 4.89277, 7.96446, … となりました.

回答No.5

下の私の回答は誤りです。申し訳ありません。やり直します。

回答No.4

xが少し大きくなるとsinh(x)やcosh(x)は x*(cos^2(x)-1)より圧倒的に大きくなるから方程式は  cos(x)*sinh(x) + sin(x)*cosh(x) = 0 で近似できるでしょう。さらにsinh(x) とcosh(x) をほぼ等しいとすると  cos(x) + sin(x) = √2 sin(x + π/4) = 0 より  x= 3π/4, 7π/4, 11π/4, 15π/4, … x=0 以外の解の第1近似としてはこれを取るのがよいでしょう。これを初期値としてニュートン法で計算すると  x= 2.09422, 5.31304, 8.63829, 11.7810 … となりましたが…

  • siegmund
  • ベストアンサー率64% (701/1090)
回答No.2

siegmund です. > Excelで解く場合はどのようにやればよろしいんでしょうか? ツール => ソルバー でできるようですが, 私は使ったことがありません. 詳しい方,よろしくお願いします. f(x) のグラフを描いてみると様子がわかるはずですが, No.1 で書きましたように,関数値は指数関数的に増えて値が爆発するので, f(x) そのものではなく g(x) ≡ f(x) / e^x のグラフを描くのがよろしいでしょう. 単に cosh(x)/e^x としてしまってはトラブルの元ですから cosh(x)/e^x = (1/2){1+e^(-2x)} のように書き換えておくのがベターと思います.

whnbatto
質問者

お礼

難しい質問に回答してくださってありがとうございました。実言うと回答見ても理解できてません。すいません。

  • siegmund
  • ベストアンサー率64% (701/1090)
回答No.1

面倒なので λl の代わりに x と書きます. 一目見てわかることは ○ x=0 が解になっている. ○ 正負対称の解がある(x=a が解なら x=-a も解) ですが,もちろん一般解を求めるのは不可能です. 以下,x>0 に話を限り, 方程式の左辺を f(x) とします. x が大きいとき sinh(x) ~ cosh(x) ~ (1/2)e^x ですから, 式の形からして f(x) は非常に激しく振動する関数になっていて おそらく無限個の解があるでしょう. 手抜きで Mathematica の FindRoot にやらせました. 0 に近い解(10 以下のもの)は x=0, 1.71888, 4.89277, 7.96446, ... でした.

whnbatto
質問者

補足

Mathematicaなどは全く分からなくExcelしか分からないのですが、Excelで解く場合はどのようにやればよろしいんでしょうか?

関連するQ&A