プロが教える店舗&オフィスのセキュリティ対策術

y=ax+bx^2+cx^3+dx^4+ex^5+fx^6+gx^7+hx^8(a~hは定数で具体的な数値が与えられる)
これをx=(yの関数)、つまり逆関数の形で表す方法はありませんでしょうか。

ちなみに、上式はある曲線の近似式で、0<x<400の範囲では、任意のxに対するyの値はひとつに定まります。
とある実験でこの式を使っているのですが、任意のyの値に対するxの値を求める際に使用できる式が欲しいというのがこの質問の意図です。

現状はExcelを使って、与えられたyに対応するxの値を当てずっぽで探すか、ソルバーでxを逆算させる方法をとっていますが、良く使う式なので、可能であればyを入力するとxを一発で計算してくれる式が欲しいのです。

ご教示を宜しくお願い致します。

A 回答 (6件)

楕円関数や超幾何関数などの超関数を用いた解の表現(公式)はあるようですが、おそらく非常に煩雑な計算になるでしょう。

代数的に解ける場合もあるようですが、yを任意に与えるのであれば、また係数も近似したものであれば変わる可能性もあるでしょうから望みはないものと思われます。

通常は実数解だけならニュートン法による数値解法が早くて手軽な方法です。収束は速いので超関数の計算(これも数値計算)より計算量は格段に小さいでしょう。特に関数の振る舞いがわかっており、変域が固定されていて解がひとつしかないならなおさらです。ソルバーもいろいろあるでしょうが、あまり一般的な全ての根を求めるようなものでなければ速いものもあります。
というわけで、「一発」というのは計算機では意味を成しません。初等関数で数表が用意されたもの以外は(部分的にはそれでさえ)すべて逐次近似の数値計算ですから。
ニュートン法、
http://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A5% …
のアルゴリズムは非常に簡単で、容易に試せますからお勧めします。精度も計算機の丸め誤差付近まで上げることができます。実用上は5-6桁もあれば充分でしょう。

どうしてもと言うのであれば、ご存知かもしれませんが、他には無限級数展開があります。
y = Σ[k=1,8]a(k)x^k
に対して y に数値を与えたとき、z = By とおき、|z|<1 となるように適当な B を与えます。
z = Σ[k=1,8]b(k)x^k
b(k)=Ba(k)
ここで、
x = Σ[k=1,∞]c(k)z^k
とすれば、
z = Σ[k=1,8]b(k)( Σ[j=1,∞]c(j)z^j )^k
係数の比較により、
c(1)=1/b(1)
c(2)=-b(2)/b(1)^3
c(3)=(2b(2)^2-b(1)b(3))/b(1)^5
.....
これは多項展開を使って順次計算できますが、それをやるのは骨ですので、解の当たりをつけるぐらいに使うのが良いと思われます。収束の速さはわかりません。お勧めはできませんね。
    • good
    • 1

>>... 2次関数y=x^2のx>0部分のような単調な曲線 .....



たとえば、おおまかに「直線近似」しておき、与えられたy に対応する近似解を求め、Newton 流の逐次収束で
所望範囲内の解が得られそうですね。
    • good
    • 0

> ただこの式の0<x<400の範囲については、2次関数y=x^2のx>0部分のような単調な曲線なのです。


> 外見的には、何かやりようがありそうな気がしております。

高次方程式に代数的な解があるか否かを考える際に重要なのは、
単調性などの解析的性質ではなく、多項式の対称性です。
単調であれば、解の唯一性が保証されますから、様々の数値解法が
安心して使えますが、それは所詮、近似解に過ぎません。

> yを入力するとxを一発で計算してくれる式が欲しいのです。

が可能かどうか検討するには、係数の具体的な値を挙げないと…
    • good
    • 0

定数項が0なので、実質、7次方程式ですね。

ExcelのVBAでプログラムを組んで数値的に計算するのが一番、手っ取り早いです。いろいろな方法がありますが、0から400の間に唯一解があることが確認済みなのなら、2分法でやるのがいいと思います。
http://ja.wikipedia.org/wiki/%E4%BA%8C%E5%88%86% …
    • good
    • 0

>>y=ax+bx^2+cx^3+dx^4+ex^5+fx^6+gx^7+hx^8 .... ある曲線の近似式で、0<x<400の範囲では、任意のxに対するyの値はひとつに定まります。

.....

コメントが当たり前すぎて、役にたちません。
「任意の y に対する x の値が一つに定まるか否か」のほうが問題なのです。
この形の y というだけでは、x = 0 のほかにも 7 つの実根がある可能性を否定できませんね。

たとえば、「y は x の単調関数」とかの条件でもあれば、攻め方があるのかも......。
    • good
    • 0
この回答へのお礼

>コメントが当たり前すぎて、役にたちません。
すみません。
a~hまでの定数を全部書いても良いのですが、ものすごく桁が大きいでやめてしまいました。

この式の0<x<400の範囲については、2次関数y=x^2のx>0部分のような単調な曲線なのです。よってこの範囲については、任意の y に対する x の値はひとつに定まります。 ただし400を超えると極大点が登場し、そこからyの値を現象に転じます。

何か攻め方がありますかね?。
ご回答ありがとうございました。

お礼日時:2009/01/11 00:57

8次方程式の解を方程式の係数の式で表したい、ということでしょうか?


一般に、5次以上の方程式の解は係数の四則演算、およびべき乗根で表すことができないことが、証明されています。
初等的でない(四則、べき乗根以外)方法でもしかしたら表すことができるのかもしれませんが、残念ながら、そういう話は聞いたことがありません。
    • good
    • 1
この回答へのお礼

5次以上の方程式の解は係数の四則演算、およびべき乗根で表すことができないことが、証明されています。

それは重々承知しております。
ただこの式の0<x<400の範囲については、2次関数y=x^2のx>0部分のような単調な曲線なのです。
外見的には、何かやりようがありそうな気がしております。

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

お礼日時:2009/01/11 00:51

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