重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

A 回答 (7件)

元の方程式の左辺を 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)) としておけば,
そういう問題は起こりません.

式の上では等価な表現でも,数値計算をするときは多少注意が必要です.
    • good
    • 0

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))
と入力し、他のセルにコピーするとできます。
    • good
    • 0

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, …
となりました.
    • good
    • 0

下の私の回答は誤りです。

申し訳ありません。やり直します。
    • good
    • 0

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 …
となりましたが…
    • good
    • 0

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)} のように書き換えておくのがベターと思います.
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/09/17 00:53

面倒なので λ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, ...
でした.

この回答への補足

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

補足日時:2005/09/11 22:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!