プロが教えるわが家の防犯対策術!

指数関数 連立方程式 未知数3個(A1,A2,a)
I(x1)=A1*exp(-a*x1)+A2*exp(a*x1)
I(x2)=A1*exp(-a*x2)+A2*exp(a*x2)
I(x2)=A1*exp(-a*x1)+A2*exp(a*x3)

上の三本の連立方程式があります。未知数は3個で、x1~x3とI(x1)~I(x3)は既知です。この式を解くにはどのようにすればよいでしょうか。紙とペンだけで解けるのでしょうか。教えていただければ嬉しいです。

A 回答 (8件)

少々、逆行。



>(x1,x2,x3)=(1.5, 4.5, 7.5)
>(I1,I2,I3)=(6.350E-04, 5.937E-04, 5.293E-04)
>という値を用いたときは、aを求めることができませんでした。この場合は収束しないのでしょうか?

解存否テストの一案です。

 {x1,x2}, {I1,I2} から勘定した {A1, A2} の正負から、
  両者 (A1, A2) が異符号なら、可解。
  両者が同符号なら、I = A1*e^(-ax) + A2*e^(ax) は極値 Ie をもち、I3 が範囲内なら可解。
  範囲外なら不可解。

引用例は、I3 範囲外で不可解。
 A1, A2 同符号。
 Ie = 5.8938E-04 (極小)、I3 = 5.293E-04 が Ie 未満。

…らしいので、ご吟味ください。
  
    • good
    • 0

>(x1,x2,x3,x4,x5)と(I1,I2,I3,I4,I5)がわかっているとき、五本の式がたてられると思います。

これらすべてを満たすaを求めるためにはどうすればよいのでしょうか。

三本でも解の無い場合があるとすると、次善策は最少誤差解を求めること、などでしょうね。
   
    • good
    • 0
この回答へのお礼

なるほど、近似させるということですね。

話が少し複雑になり、先ほどの式が、
I1(*) = A1(*)*exp(-a*x1) + A2(*)*exp(a*x1)   …(1)
I2(*) = A1(*)*exp(-a*x2) + A2(*)*exp(a*x2)   …(2)
I3(*) = A1(*)*exp(-a*x3) + A2(*)*exp(a*x3)   …(3)
のように複素数であるとしたときも、同じように解けるのでしょうか。
I1(*)~I3(*)とA1(*)~A2(*)は複素数を表しています。

既知の値が以下のとき、スプレッドシートで計算したのですが解を得ることができませんでした。何か問題があるのでしょうか。
x1=0.93935, I1(*)=(4.3834E-04, 3.7610E-04)
x2=3.9373, I2(*)=(4.3358E-04, 3.0994E-04)
x3=6.9252, I3(*)=(4.0656E-04, 2.8938E-04)

お礼日時:2010/07/26 17:54

>.... (x1,x2,x3)=(1.5, 4.5, 7.5) (I1,I2,I3)=(6.350E-04, 5.937E-04, 5.293E-04) という値を用いたときは、aを求めることができませんでした。



解の存在条件は手に余りますが、この例は解が無さそうです。

a の非負範囲で、1 未満あるいは 1 以上を探せば充分なはずですね。
I3 のずれが正負反転しておれば解があるはずですが、この例には無いみたいです。
     

この回答への補足

x1=1.05E+00I_1=6.708E-04
x2=4.15E+00I_2=5.396E-04
x3=7.15E+00I_3=4.405E-04
x4=1.01E+01I_4=3.95E-04
x5=1.31E+01I_5=4.07E-04
x6=1.61E+01I_6=4.22E-04

という値を用いています。

補足日時:2010/07/25 15:48
    • good
    • 0
この回答へのお礼

返答が遅れて申し訳ありません。
条件によって解が存在しないこともあるのですね。

(x1,x2,x3,x4,x5)と(I1,I2,I3,I4,I5)がわかっているとき、五本の式がたてられると思います。これらすべてを満たすaを求めるためにはどうすればよいのでしょうか。
先ほどまでのやり方ですと、式が3本あれば解は求まるのですが、他の条件も満たすように解くためにはどうすればよいのかわかりません。

お礼日時:2010/07/25 15:43

>(x1,x2,x3)=(1,4,7)


>(I1,I2,I3)=(8.450E-04, 6.912E-04, 5.893E-04) という値を用いております。.....

キーボードから a を変えていき、EXCEL の桁数で、

 A1 = 8.3014047946053E-04
 A2 = 7.9528368724024E-05
 a = 0.09105652556823

と求まりました。

I3 との誤差は、3E-18 。

チェックしてみてください。
  
    • good
    • 0
この回答へのお礼

計算式が間違っていたようです。同じような解が得られました。
ご回答ありがとうございます。

一方、
(x1,x2,x3)=(1.5, 4.5, 7.5)
(I1,I2,I3)=(6.350E-04, 5.937E-04, 5.293E-04)
という値を用いたときは、aを求めることができませんでした。この場合は収束しないのでしょうか?解が求まらないというのは、何が原因なのでしょうか。

お礼日時:2010/07/23 01:05

 I1 =A1*exp(-a*x1) + A2*exp(a*x1)   …(1)


 I2 = A1*exp(-a*x2) + A2*exp(a*x2)   …(2)
 I3 = A1*exp(-a*x3) + A2*exp(a*x3)   …(3)

まず、任意の a を与えて式 (1), (2) から {A1, A2} を求めさせます。
(ふつうの線形連立方程式)
その {a, A1, A2} を使い、式 (3)
 A1*exp(-a*x3) + A2*exp(a*x3)   …(4)
を勘定させます。

当然ながら、勝手に与えた a では式 (4) の結果が I3 と一致しません。

ここまでスプレッドシートに組み込んでおき、あとは a - 入力値を変えていき I3 に近づける、という素朴な試行結果です。
a - 微係数を使い Neweton 式に逐次収束させる手もありそうですが、そこまで手がまわりませんでした。
   
    • good
    • 0
この回答へのお礼

度々の回答ありがとうございます。
今、
(x1,x2,x3)=(1,4,7)
(I1,I2,I3)=(8.450E-04, 6.912E-04, 5.893E-04)
という値を用いております。
ご説明いただいたとおりに初期値aを(1),(2)式に代入してA,Bを求め、(3)式の右辺に代入して5.893E-04に近づくようにスプレッドシートで計算しました。
しかし、「仮の解が見つかりません。」というエラーメッセージが出ました。
収束させるためにオプションでパラメータを変更したのですが、それでも解が得られません。
解が見つからないということは有り得るのでしょうか。それとも計算式が間違っているのでしょうか。
教えていただけないでしょうか。

お礼日時:2010/07/21 21:41

> Ik =B*cosh(a*Xk) + C*sinh(a*Xk)   k = 1,2,3



cosh, sinh への書き換えは「有害無益」だったようで…。

もとのままのほうが、収束は速い。
 Ik = B*(yk)^(-a) + C*(yk)^(a)   k = 1,2,3.  yk = e^(xk)
   
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

失礼いたしました。おっしゃるとおり式は
> I1 = A1*exp(-a*x1) + A2*exp(a*x1)
> I2 = A1*exp(-a*x2) + A2*exp(a*x2)
> I3 = A1*exp(-a*x3) + A2*exp(a*x3)
が正しいです。


> これは、スプレッドシートを使った試行。
> a を変えると B, C がそれに追随して変わるようになってるわけです。
初期値の探索は、自分で予測しながら適当に定めていけばよいのでしょうか。
このスプレッドシートはどのような手法・方法で作成しているのでしょうか。

お礼日時:2010/07/20 14:38

肝心なことを書き忘れてました。



>・ a に初期値を与えて、式 (1), (2) へ代入し、B, C を求める。
>・ その {B, C} を式 (3) の右辺へ代入してみる。
  その値を 10 に近づけるように、初期 a を変えていく。
   ↑
 これは、スプレッドシートを使った試行。
 a を変えると B, C がそれに追随して変わるようになってるわけです。
 
    • good
    • 0

たぶん、


 I1 =A1*exp(-a*x1) + A2*exp(a*x1)
 I2 = A1*exp(-a*x2) + A2*exp(a*x2)
 I3 = A1*exp(-a*x3) + A2*exp(a*x3)
なのでしょうね。

解の存在すら判然とせず、筆算じゃ無理でしょう。

難問はスキップして、例題のトライアルだけでも。

 Ik =B*cosh(a*Xk) + C*sinh(a*Xk)   k = 1,2,3
に書き換えたサンプルです。

 2 = B*cosh(a*2) + C*sinh(a*2)   …(1)
 4 = B*cosh(a*2.5) + C*sinh(a*2.5)   …(2)
 10 = B*cosh(a*3) + C*sinh(a*3)   …(3)

・ a に初期値を与えて、式 (1), (2) へ代入し、B, C を求める。
・ その {B, C} を式 (3) の右辺へ代入してみる。
  その値を 10 に近づけるように、初期 a を変えていく。

サンプルの近似解は、
 {a, B, C} ≒ {1.9248473001, 26.000, -25.938}
でした。
もとの式達へ入れてみて。
   
    • good
    • 0

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