• ベストアンサー

指数関数の逆関数について

a,b,c1,c2,u1,u2は定数、x,yは変数、eはexpで、 a,b,c1,c2,u1,u2の全ての定数が異なります。 また、abc1c2u1u2≠0 ae^(-((x-u1)/c1)^2)+be^(-((x-u2)/c2)^4)=y の逆関数を求めたいのですが、解けなくて困っています。 どなたか解る方いらっしゃいますでしょうか? 教えていただけるとありがたいです。 よろしくお願いします。

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

  • ベストアンサー
  • info22
  • ベストアンサー率55% (2225/4034)
回答No.9

#1,#3です。 >a=7.39 >b=2.72 >u1=489 >c1=82.3 >u2=489 >c2=44.4 >0≦x≦489 における元の関数のグラフを見ると マクロ(アバウト)に見ると平均値u=u1=u2の正規分布密度関数f(x)の形状に似ています。 しかし、x≦uの広範囲にわたりf(x)をマクローリン展開やフーリエ級数展開はできても、逆関数f^(-1)(x)の方はx<<uになるとf'(x)>>1になって、級数展開が困難になる(収束性が悪くなる)ため、逆関数の展開は実用上計算誤差が大きくなってメリットがありません。 今回のケースも正規分布密度関数と形状が似ていますので逆関数をマクローリン展開してもべき乗関数展開では、0<ae^(-(u1/c1)^2)+be^(-(u2/c2)^4)≦x≦u=489の範囲で y'がx<<1およびx~u1=u2=a+dで 非常に大きくなりますので級数の収束が非常に悪くなるます。展開項数を制限すれば近似誤差が大きくなることを意味しまします。 具体的には y<300でy'>>1 y~489でもy'>>1 y=489でy'=∞ y=350~650位のところで比較的 y'が通常扱う数値の大きさの数値になります。 これをxの範囲で考えると x=ae^(-(u1/c1)^2)+be^(-(u2/c2)^4)>0 ←これはxの下限 からx≦0.1ではy'>>1となって級数展開の近似度が低下します(項数の打ち切りで)。 また x≧10でもy'>>1となって級数展開の近似度が低下します(項数の打ち切りで)。 したがって、 0<x≦489の範囲を単一のテイラー展開で逆関数を表すのは、実用的ではないでしょう。実用的にはxの範囲をy' が y'>>1の領域とy'がそうでない領域に分割し、各分割区間で別の逆関数近似式をして、逆関数の近似式を求めた方が良いでしょう。 具体的には、分割区間をいくつに分かるか、分割の境界をどう定めるか、の問題が発生します。分割すればするほど、各区間でのベキ級数展開項数を減らすことができます。でも今回の逆関数の近似ではテイラー展開では余り効率的ではありません。 適当と思われる区間分割による逆関数の近似式を求める方法としては、3次スプライン曲線補間による逆関数の近似曲線を導出して、逆関数として使うのが今回の逆関数を求める問題に適しているかと思います。 具体的には 0<ae^(-(u1/c1)^2)+be^(-(u2/c2)^4)≦x≦u=489の範囲で y=ae^(-((x-u1)/c1)^2)+be^(-((x-u2)/c2)^4) xを均等に分割して(間隔Δx≒20~30程度)…(●)、それに対するyを計算し、 そのxとyを交換したテーブルに対して3次スプライン近似曲線群{Sj(x)}を求めてやれば、それで逆関数y=g(x)の関数として使えるでしょう。 各Sj(x)はxの3次多項式になります。区間ごとにSj(x)が滑らかに曲線が連結され、xの分割区間のy'が急峻な所は細かく分割すること((●)の分割が該当)で近似誤差が小さくなります。3次スプライン近似ではx,yのテーブルの座標を近似曲線{Sj(x)}が全て通ります(テーブルの座標点では誤差=0ということです)。 3次スプライン補間関数{Sj(x)}の求め方については以下を参照下さい。 近似精度(補間精度)や関数の形状によって、それに合った分割数や分割の仕方を行って具体的な補間関数群{Sj(x)}を求めて逆関数g(x)=f^(-1)(x)の近似関数として使います。 http://next1.cc.it-hiroshima.ac.jp/MULTIMEDIA/numeanal1/node16.html http://akita-nct.jp/~yamamoto/lecture/2004/5E/interpolation/text/html/node3.html 補間精度の考え方 http://www.cannula.jp/hokan.html エクセルでのスプライン補間 http://homepage1.nifty.com/gfk/Spline.htm

yuike1111
質問者

お礼

詳細な方法、ありがとうございます。 近似関数をつくることという発想がなかったので、その方向で進めてみたいと考えています。

その他の回答 (9)

noname#101087
noname#101087
回答No.10

>>x が実数なら、w > 0 z < 1 でなければならない。 >.... 上記の部分がわかりませんでした。  ((x-u)/c1)^2 = w   | w = -LN(z)        …(1)  ((x-u2)/c2)^4 = k*w^2   |  k = (c1/c2)^4  e^(-w) = z                    …(2) という変数の書き換えで  y = az + bz^(kw)   | w = -LN(z)        …(3) になる。 x が実数なら、(1) から明らかなように w≧0 、(2) から明らかなように z≦1 . …ということでした。 1≧z>0 の範囲で、(3) の y は 0 から a+b へ単調増大。区間 (0, a+b] 内の y を与えれば、非負の w が得られる。  ・Newton は収束が速い。 dy = {a + bkwz^(kw-1)}*dz  ・まともな逐次代入は収束が遅い。中間値を逐次代入すれば Newton 並み。 …というわけです。  

yuike1111
質問者

お礼

ご返答、ありがとうございます。 ご返答が遅くなりまして、申し訳ありませんでした。

noname#101087
noname#101087
回答No.8

> w = ((x-u)/c1)^2 >の解 x は一価じゃなさそう。 見落とし続きで、#6 へ蛇足追加。             ↓ >0≦x≦489   …(B) 開区間 (0, a+b) 内の y を与えれば、非負の w が得られる。(別スレッドの、Newton や逐次代入)  w = ((x-u)/c1)^2 の解は  x = u±c1*sqrt(w) だから、  u<c1*sqrt(w) であれば (B) の非負限定で x が一意的に…。  

noname#252183
noname#252183
回答No.7

No2 Lycaon です。 お礼欄のコメント読みました。 確かにこの定数と範囲なら、元関数も逆関数も単調増加、つまり逆関数がありましたね。(下図) >数値計算での解法とは、どのような解法なのですか? >具体的に教えていただけると、ありがたいです。 Excel でマクロ(Visual Basic Editor)を使って解く方法を記します。(出力部分以外はVB6 でも同じコードで動きます。) Excel 2000 で作りましたが、それより新しいバージョンなら動く筈です。 質問者様が Excel をどこまでご存知か一々訊ねていては話が進まないので、対象を広げ Excel の入門者でマクロは全然使えないレベルの方に判るように、手順のみ記しました。 ★☆★☆★☆★☆★☆★☆★☆★☆ 【1】新しい Excel Book を開く。開いた空白シートの名前が "Sheet1" であることを確認。 【2】「ツール」-「マクロ」-「Visual Basic Editor」 をクリック(以下全て左クリック。)。 【3】 左上の「VBA project」-「Microsoft Excel Objects」-「Sheet1(Sheet1)」 をクリック。 【4】 右に大きな白紙画面(VBE画面)が出たら、次のコードをコピペして下さい。 Sub reverse() Dim x As Double, f1 As Double, f2 As Double, y(500) As Double Sheets("Sheet1").Activate With ActiveSheet .Cells.Clear '---------- .Cells(1, 1).Value = "【元関数】" .Cells(2, 1).Value = "x" .Cells(2, 2).Value = "y" .Cells(2, 3).Value = "f1" .Cells(2, 4).Value = "f2" For x = 0 To 489 f1 = 7.39 * Exp(-((x - 489) / 82.3) ^ 2) f2 = 2.72 * Exp(-((x - 489) / 44.4) ^ 4) y(x) = f1+ f2 .Cells(x + 3, 1).Value = x .Cells(x + 3, 2).Value = y(x) .Cells(x + 3, 3).Value = f1 .Cells(x + 3, 4).Value = f2 Next '---------- .Cells(494, 1).Value = "【逆関数】" .Cells(495, 1).Value = "y" .Cells(495, 2).Value = "x" For x = 0 To 489 .Cells(x + 496, 1).Value = y(x) .Cells(x + 496, 2).Value = x Next End With '--------- MsgBox ("終了") End Sub 【5】Sheet1のメニューバーに、右向き黒三角があるかを確認。 なければ、「表示」-「ツールバー」-「Visual Basic」をクリック。 右向き黒三角が出たら、クリック。「Sheet1.reverse」が選ばれているので「実行」させる。 【6】「終了」というメッセージが出る。 Sheet1 の 3~492 行に、x、y、元関数の右辺第1項、第2項が 4列に分けて計算されている筈。 Sheet1 の 496~985 行に、逆関数のx、yが 2列に分けて計算されている筈。(見出しの x,y は元のままです。) 【7】Sheet1 の A3セル(値は0)をクリック。Shiftキーを押し、そのまま「End」「↓」「→」キーを押して、A3~B492 セルを反転。 【8】メニューバーの(柱状)グラフのアイコンをクリック。(なければ「表示」-「ツールバー」-「標準」。) 「グラフの種類」-「散布図」で幾つかある中から好きな表示形式を選ぶ。 【9】できたグラフを右クリック。「グラフエリアの書式設定」でグラフの色・フォント・目盛などを適当に変える。 【10】Sheet1 の A496セル(値は 3.44E-15)をクリック。Shiftキーを押し、そのまま「End」「↓」「→」キーを押して、A496~B985 セルを反転。 【11】上の【9】【10】と同じ操作。(以上)

yuike1111
質問者

お礼

詳細でわかりやすい御説明ありがとうございました。 手順通り進めたところ、lycaonさんとおなじようなグラフを作ることができました。 確かに、逆関数は図のような形をつくりますね。

noname#101087
noname#101087
回答No.6

>ae^(-((x-u1)/c1)^2)+be^(-((x-u2)/c2)^4)=y >以下の定数や条件で求めたいと考えています。 >a=7.39 >b=2.72 >u1=489 >c1=82.3 >u2=489 >c2=44.4 >0≦x≦489 u1 = u2 = u とし、例によって w = ((x-u)/c1)^2 とする。  ((x-u2)/c2)^4 = k*w^2   : k = (c1/c2)^4  e^(-w) = z     ↓  y = az + bz^(kw)  : w = -LN(z) …(A) x が実数なら、w > 0 z < 1 でなければならない。 式(A) をプロットしてみると、y は +0 から a+b に到る単調増加な曲線。(逆関数の領域?) 開区間 (0, a+b) 内の y を与えれば、非負の w が得られるけど、  w = ((x-u)/c1)^2 の解 x は一価じゃなさそう。

yuike1111
質問者

お礼

>x が実数なら、w > 0 z < 1 でなければならない。 勉強不足で申し訳ありません。 上記の部分がわかりませんでした。

noname#101087
noname#101087
回答No.5

No.4 です。 関数が微妙に変わったの見逃してました! 見逃してくだされ。  

yuike1111
質問者

お礼

いえ、こちらこそいつもお答えいただいて助かります。 ありがとうございます!!

noname#101087
noname#101087
回答No.4

>ae^(-((x-u1)/c1)^2)+be^(-((x-u2)/c2)^4)=y 前例を踏襲。  ((x-u1)/c1)^2 = w …(1) として、  y = ae^(-w) + be^(-w^2) さらに、e^(-w) = z とすれば、  y = az + b(z^w)  : w = -LN(z) …(2) ここまで詰めても、逆関数には手が届きません。x が実数値になる範囲だけでも。 さしあたり a, b は正(非零)とすると、式(2) にて e^(-w) = z > 0 .また、w > 0 になるには、z < 1 . この範囲で式(2) をプロットしてみると、y は +0 から a+b に到る単調増加な曲線。 …てな調子で探るしかなさそう。  

yuike1111
質問者

お礼

ご返答、ありがとうございます。 説明不足で申し訳ありませんでした。 一応、以下の定数や条件で求めたいと考えています。 a=7.39 b=2.72 u1=489 c1=82.3 u2=489 c2=44.4 0≦x≦489 この条件だとプロットすると1対1となるのですが...。 やはり、難しいでしょうか?

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.3

#1です。 A#1の最後から2番目の文に誤植がありましたので訂正しておきます。 >しかし、その逆関数が所等関数で記述できるかは保証の限りではありません。 誤:所等関数 正:初等関数 なお、係数によってyの値によってxが4個存在する例のグラフを添付しておきます。 a=-3,b=4,c1=-1,c2=3,u1=2,u2=3の場合、黒い曲線が元のグラフでyの値よりxが0個~4個の値を持ちます。 この曲線のyとxを入れ替えた曲線が青い曲線です。 xの値によりyの値が最大4個が存在します。 このyの青線の曲線の方程式を y=g(x) の形で表現することは不可能でしょう。 つまり黒線の曲線の逆関数が存在しないということを表しています。

yuike1111
質問者

お礼

なるほど。 この図を見ると、逆関数が1対1でなければ、ならない理由がはっきりと理解できます。 青線で見たとき、関数で表せない事がすごく解ります。

noname#252183
noname#252183
回答No.2

y=ae^(-((x-u1)/c1)^2) + be^(-((x-u2)/c2)^4) に具体的数値 u1=1, u2=2, c1=3, c2=4, a=5, b=6 を入れて Excel で作図してみました。左図の赤線。 そのxとyを入れ替えたのが右図の赤線です。 各定数が上の組み合わせなら、1つのxに2つのyがあるので逆関数はなし。 変数の範囲を限定すれば、例えば左図でx≦0 に限れば、グラフの横転後にy≦0 部分でx対yが1対1対応になるので、逆関数あり。 勿論 各定数が別の組み合わせなら、別のグラフになります。 exp の中がxの 2乗と 4乗なので、#1 さんご記述の通り、逆関数をy=f(x) の形で求めることは不可能でしょう。 具体的に係数を与えて Excel などで数値計算するのが、採りうる唯一の解法と思います。

yuike1111
質問者

お礼

画像を含めたご回答、ありがとうございます。 また、説明不足を申し訳ありませんでした。 具体的な定数として、以下の定数、条件で求めたいと考えています。 a=7.39 b=2.72 u1=489 c1=82.3 u2=489 c2=44.4 0≦x≦489 この条件だとプロットすると1対1対応となるのではなります。 >exp の中がxの 2乗と 4乗なので、#1 さんご記述の通り、逆関数をy=f(x) の形で求めることは不可能でしょう。 やはり、expの中に2乗や4乗が含まれると難しいですか...。 >Excel などで数値計算するのが、採りうる唯一の解法と思います。 数値計算での解法とは、どのような解法なのですか? 具体的に教えていただけると、ありがたいです。

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.1

逆関数が存在するための条件や逆関数の定義を確認してください。 y=f(x)の逆関数は xとyを入れ替えて x=f(y)とし、この時のxを与えた時にyが一意に決まるなら 逆関数y=g(x)=f^(-1)(x)で定義できます。 しかし、一意に決まらない場合は逆関数が定義できない、つまり 逆関数が存在しないことになります。 このことを元の関数 y=f(x)で考えると、任意のyに対して f(x)=yを満たすxがただ1つだけ存在することを意味します。 なので ae^(-((x-u1)/c1)^2)+be^(-((x-u2)/c2)^4)=y …(■) で考えれば y=dなどとした時にxが高々1つしか存在しないことが逆関数の存在条件になります。 (■)の関数に付いては、与えられた係数の条件では、yの値によってはxが0~6個まで存在しますので、逆関数の存在条件を満たしませんので、逆関数が存在しない場合が含まれ、一般的な逆関数の式を求めることは不可能です。 係数条件や変数の範囲を制限して、部分的な範囲で逆関数の条件を満たすことが出来れば、その部分的な範囲での逆関数の定義は可能ですが、 yに対してただ1個のxが一意的に定まるような条件やxの範囲を決めるためには、定数がたくさんありすぎて困難を伴うでしょう。 特定な定数のセットに対してなら、xの範囲を限定すれば、その範囲での逆関数が定義できるでしょう。しかし、その逆関数が所等関数で記述できるかは保証の限りではありません。その場合、数値計算で逆関数の近似曲線を求めることは可能でしょう。

yuike1111
質問者

お礼

ご回答、ありがとうございます。 >逆関数が存在するための条件や逆関数の定義を確認してください。 すみませんでした。 逆関数に対する、きちんとした認識がありませんでした。 [変数xに対してただ1つの値yが定まる。]という点について認識不足でした。 >係数条件や変数の範囲を制限して、部分的な範囲で逆関数の条件を満たすことが出来れば、その部分的な範囲での逆関数の定義は可能ですが、 yに対してただ1個のxが一意的に定まるような条件やxの範囲を決めるためには、定数がたくさんありすぎて困難を伴うでしょう。 説明不足で申し訳ありません。 一応、定数や条件の補足として、 a=7.39 b=2.72 u1=489 c1=82.3 u2=489 c2=44.4 0≦x≦489 において求めたいと考えています。 プロットすると、一応x,yは一対一で決まると思うのですが、この条件下でも難しいでしょうか? >数値計算で逆関数の近似曲線を求めることは可能でしょう。 申し訳ありませんが、この方法について少し詳しく知りたいです。

関連するQ&A

  • 指数関数の方程式の解き方について

    a,b,c,d,uは定数、xは変数、eはexp a≠b≠c≠d≠u≠0 の時、 ae^(-((x-u)/c)^2)+be^(-((x-u)/c)^4)=d の式のxの解を求めたいのですが、どのようにすればいいのかわかりません。 どなたか解き方のわかる方はいらっしゃいますでしょうか? 教えていただけると、ありがたいです。 よろしくお願いします。

  • 指数関数の方程式の解き方(訂正)

    a,b,c,d,r,s,tは定数,eはexp、xは変数 r>0,s>0,t>0,d>0,r≠s≠t,a≠0,b≠0,c≠0。 上記の条件の時、 ae^(-x/r) + be^(-x/s) + ce^(-x/t) = d の式で xの解を求めたいのですが、解けません。 解き方分かる方いらっしゃいますでしょうか? 宜しくお願いします

  • 分布関数

    参考書の解説一部抜粋 F(x^2+y^2+z^2)=F(x^2)F(y^2)F(z^2)のとき、この式の関係は exp(a+b+c)=(e^a)(e^b)(e^c) のように満たされる。したがった、分布関数は F(x^2)=Aexp(-kx^2) の関数形となる。Aとkは定数 定数Aは規格化条件 ∫[-∞,∞]f(x)dx=1 となる。 F(x^2)=Aexp(-kx^2)を規格化すると A∫[-∞,∞]exp(-kx^2)dx=A(π/k)^(1/2)=1 A=(k/π)^(1/2) 質問 (1)なぜ、F(x^2)=Aexp(-kx^2)の関数形となるのですか? そもそも、なぜF(x^2+y^2+z^2)=F(x^2)F(y^2)F(z^2)のとき、この式の関係はexp(a+b+c)=(e^a)(e^b)(e^c)のように満たされるのですか? (2)なぜ、A∫[-∞,∞]exp(-kx^2)dx=A(π/k)^(1/2)=1となるのですか? πはどこからでてきたのですか?

  • 畳み込み積分をする和の密度関数の問題に困ってます。。。

    畳み込み積分をする和の密度関数の問題に困ってます。。。 aを正の定数とする。実数値をとる確率変数X、Yが独立に密度関数 f(x)=ae^(-ax)(x≧0),0(x<0), g(y)=(a+1)e^(-(a+1)y)(y≧0),0(y<0), に従うとき、その和の密度関数U=X+Yを求めよ という問題です。。。 畳み込みの公式にいれてみたのですが、最後まで計算ができない(eが発散してしまいました) お願いします

  • 指数分布について

    確率変数Xが次のような密度関数をもつ指数分布に従っているとき 密度関数 f(x)=3exp(-3x)   t≧0   =0        t≦0 このとき 確率変数U=exp(-3X)と定義するときに、Uの従う分布はどうなるかを求めたいのですが、どうすればよいのでしょうか?? まずUの分布関数を求めて、微分をしようとしているのですが。 P(U<x)=P(exp(-3X)<x)=P(T>-1/3logx) このときの積分範囲は0からになるのでしょうか?? そうするとUの分布関数は1になり、密度は0になるということでしょうか?

  • 逆関数が分かりません;;

    黄チャートの例題12番です。 a,b,cを定数とする関数y=(bx+c)/(x+a)が逆関数をもつための条件と、その逆関数がもとの関数と一致するための条件を、それぞれ求めよ。 解答 y=(bx+c)/(x+a)=(c-ab)/(x+a)+b だからy=(bx+c)/(x+a)が逆関数をもつ条件は c-abノットイコール0 このとき、y=(bx+c)/(x+a)の値域は yノットイコールb である。 以下省略 なんでy=(bx+c)/(x+a)の値域は yノットイコールb なんですか?

  • 微分方程式の解き方

    すいません、以下の微分方程式の解法が分かる方教えて下さい。 宜しくお願いします。 専門外で困っています。 yはxの関数として、 y'' + A*y' = B*exp(-y) A,Bは定数、y'' = d^2y/dx^2, y' = dy/dx 初期条件 x=0, y'=0 ----------------------- Ae610様; <中略> e^y = u・・・とおくと、 u' = y'・e^y u" = y'・y'・e^y + y"・e^y       -- となるのでは?

  • エクセルで三次関数をつくりたいのですが

    検量線を三次関数で書きたいというヒトから質問を受けたのですが、 y=4E-11x^3-3E-7x^2+0.0007x というような式をエクセルで作成する場合、こんな式の作り方で合っているのでしょうか? y=a(exp(1)+b)x^3+c(exp(1)+d)x^2+ex a=4 b=-11 c=-3 d=-7 e=0.0007 また、基本的なことですが「E」とは自然対数の底(≒2.71828)で合っていますか?

  • 自己相関関数について

     exp(-(x/a)^2)の自己相関関数の相関値が1から1/eまで落ちる長さは2aだと思います。  exp(-(x^2+y^2)/a^2)の自己相関関数の相関値が1から1/eまで落ちる長さはaを使ってどのようにあらわされるのでしょうか?感覚的には2aよりも小さい気がするのですが、、 よろしくお願いします。

  • ガウシアン関数へのフィッティングについて

    現在、ガウシアン関数y=a+b*exp(-(x-c)^2/d^2)に下記のようなデータを使用しフィッティングを行いたいのですが、 手法やパラメータa,b,c,dの求め方がわかりません。 どなたか教えていただけませんか。 よろしくお願いいたします。 (x,y)={ 48.800 6092 48.805 6105 48.810 5942 48.815 6000 48.820 6021 48.825 6127 48.830 6131 48.835 6169 48.840 6146 48.845 6077 48.850 6141 48.855 6236 48.860 6115 48.865 6179 48.870 6296 48.875 6176 48.880 6272 48.885 6294 .....}