3次式

y=Ax^3+Bx+C


x=
の形に書き換えたいのですが、解法がさっぱりわかりません。
(x^3はxの3乗と思ってください)
類似の質問を検索してみても、回答中の参照先サイトがなくなっていたり、
難解すぎて理解できなかったりで解決しませんでした。

解法のわかる方、改めて教えていただけないでしょうか。


いまはエクセルのゴールシーク機能を使って、yの値からxの値を求めているのですが、
数が多いのでとても手間がかかります。
複数のyの値を、1操作でゴールシークできれば、あえて逆関数をもとめる必要もないんですが。
そういう手段もあれば教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

三次関数のx^2の係数が0であることに着目すれば、”カルダノの公式”そのものです。



”カルダノの公式”で検索してください。内容は理解できなくても、手順どおりにやればエクセルに実装できます。

反復法だと、”ニュートン法”もヒントになるでしょう。
    • good
    • 0
この回答へのお礼

とりあえずエクセルで回答させることができました。ありがとうございました。

ただ虚数が発生するとエクセルではエラーになってしまうので、100%完成まではこぎつけてません。
そこらへんをもうちょっとつめてみます。

お礼日時:2011/04/25 10:21

マクロを作る手ですかね。


function gyakukansu(a,b,c,y)
を自分で作れば、excelのセルの中から(組み込みの関数と同じように)利用できます。複数の解を出力するためには、
DIM solution(0 to 2)
solution(0) = ...
solution(1) = ....
solution(2) = ....
gyakukansu = solution
のようにして配列を返すようにすればOKです。スプレッドシート上では、複数の数値を返す組み込み関数(minverseとかlinestとか)を使うのと同じ要領で利用します。

じゃ、マクロの中身です。
y = A x^3 + Bx + C
の逆関数ってのは、
x^3 + (B/A)x + (C-y)/A = 0
という方程式の実数解を求めていることに他なりません。
p = B/A
q = (C-y)/A
f(x) = x^3 + px + q
(ちなみに、y = a x^3 + b x^2 + cx + d の場合も、x=X-b/(3a)と変数変換すればこの形に帰着します。(チルンハウス変換))
とおくと、方程式は
f(x) = 0
これを、解がどこにあるかによって分類します。そのために、fをxで微分したもの
f'(x) = 3(x^2)+p
を考えておきます。f'(x)=0となるxでf(x)は極大か極小になるわけですね。

(1) p>0 → f(x)には極大・極小がない。なので、f(x)=0には1つの実数解と2つの虚数解がある。
 (1-1) q>0 → x<0の範囲に唯一の実数解がある。
 (1-2) q=0 → x=0が唯一の実数解。
 (1-3) q<0 → x>0の範囲に唯一の実数解がある。
(2) p=0 → x=(qの符号)×(|q|^(1/3))が唯一の実数解。
(3) p<0 → f(x)には極大・極小がひとつずつある。f'(x)=0を解いて
極大fmax = f(-√(-p/3))
極小fmin = f(√(-p/3))
であると分かります。そして、
 (3-1) fmin >0 → x<-√(-p/3)の範囲に唯一の実数解がある。
 (3-2) fmin = 0 → 二重解 x=√(-p/3)のほかにもうひとつ、x<-√(-p/3)の範囲に実数解がある。
 (3-3) fmax > 0 > fmin → x<-√(-p/3)の範囲、-√(-p/3)<x<√(-p/3)の範囲、および、
                x>√(-p/3)の範囲にそれぞれひとつずつ実数解がある。
 (3-4) fmax = 0 → 二重解 x=-√(-p/3)のほかにもうひとつ、x>√(-p/3)の範囲に実数解がある。
 (3-5) 0 > fmax → x>√(-p/3)の範囲に唯一の実数解がある。


 「ある範囲に唯一の実数解がある」というその解の数値計算は簡単で、ニュートン法が使えます。すなわち:
適切な出発値x[0]を与えて、
x[n+1] = x[n] - f(x[n])/f'(x[n])
を繰り返せば、x[n]が解に収束する。最初もたついても、収束しはじめるととても速くて、繰り返す度に有効数字の桁数がおおむね倍になって行きます。なので|f(x[n])/f'(x[n])|がうんと小さくなったら打ち切れば良いわけです。

 出発値は「範囲内であって範囲の境界から適当に離れたところ」をx[0]にすれば良い。適当って、(だいたい何でもいいんですけど、小さい定数だと|p|が0に近い場合にx[1]が大はずれの値になってなかなか収束が始まらないんで)たとえば(|q|^(1/3))+1ぐらい離れたところとか。
 ただし、(3-3)における「-√(-p/3)<x<√(-p/3)の範囲にある解」を探す場合だけは、「適当に」じゃカオスに陥ることがありますんで、この場合は変曲点(f''(x)=0となるx)であるx=0を出発値にします。
    • good
    • 0
この回答へのお礼

マクロは触れたことが無いのでちょっと勉強してみます。
ありがとうございました。

お礼日時:2011/04/25 10:18

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q3次方程式の逆関数の求め方

現在、逆関数について学んでおります。
2次方程式までの逆関数は、定義域と値域に注意して、xとyを入れ替えるというのが基本でしたが、3次関数になるとどのように求めていけばよいのでしょうか?
おおむねのグラフの概形は、y=xと対象なので分かるのですが、どのような関数の式になるのかが分かりません。
具体的には、y=x^3+x^2-2x という関数です。ネットを検索してみたのですが、あまり情報が少ないので、よろしくお願いいたします。

Aベストアンサー

#1です。

>>早速自分なりに解いてみました。

すごいですね!
私も解いた事はありますが、TEXTを追うだけで精一杯でした。
殆んど記憶がありません。
たしか2次の項を消去したような・・・
立方根ωが現れるはずですが。
X^3+Y^3+Z^3-3XYZ
=(X+Y+Z)(X+ωY+(ω^2)Z)(X+(ω^2)Y+ωZ)
を使用した解法もあるようです。
岡潔氏が,
<解法を忘れたので解きだしたら3日で出来た。>
との逸話が御座います。

場合わけについては、試験でなければ、あまり厳密にやらなくて出来そうな気がします。
<元のf(x)の関数がy=0の時のxの値>ではありません。
グラフをかくと、増減が変化するのは下記のA、Bの時です。
Y=X^3+X^2-2X
Y’=3(X^2)+2Xー2=0
の解をA,Bとして
A,Bを境界に<3区間>にわける事にはなりますが、
3(X^2)+2Xー2は因数分解できないので、
A、Bのままで形式的に解くような気がします。

>>これをどのように使うのでしょうか
方程式なら、Yは現れませんが逆関数だと。
X^3+X^2-2XーY=0
となりますの、Yがどのように影響してくるかは判りません。
理論的には解ける、とだけ書けません。
申しわけありません。

#1です。

>>早速自分なりに解いてみました。

すごいですね!
私も解いた事はありますが、TEXTを追うだけで精一杯でした。
殆んど記憶がありません。
たしか2次の項を消去したような・・・
立方根ωが現れるはずですが。
X^3+Y^3+Z^3-3XYZ
=(X+Y+Z)(X+ωY+(ω^2)Z)(X+(ω^2)Y+ωZ)
を使用した解法もあるようです。
岡潔氏が,
<解法を忘れたので解きだしたら3日で出来た。>
との逸話が御座います。

場合わけについては、試験でなければ、あまり厳...続きを読む

QExcel関数式の逆関数式を教えて下さい。

ExcelでLogを使った関数式を作ったのですが
その式の逆関数で答えを求めるには、どんな関数式
をあてはめれば良いか判らなくなってきました。

式 log(セル値/1)

セル値は任意で変化したものを入力します。

上記の式の逆関数、電卓では10のx乗に該当する
Excelの関数式を何方か教えて頂けませんか?

お願いします。

Aベストアンサー

10のA1乗は、

=POWER(10,A1)
=10^A1

いずれかです。

Q多項式の変換

お世話になります。
多項式y=a0x^0 + a1x^1 + a2x^2 + ... + anx^nという多項式があります。(a0...anは定数)

この多項式をx=の形で表現したいのですが、どういった知識またはテクニックで実現するのでしょうか?

ある曲線(多項式で表現)をy=xの直線に対して線対称な曲線にしたく、このようなことを考えています。

y=x^2+1 程度のものなら x = ±√(y-1)として簡単にもとまりますが・・・


アドバイスよろしくお願いします。

Aベストアンサー

一般に、と言うのは無理でしょう。
おっしゃるのは結局#2さんのご指摘の通り一般の代数方程式を解く事と同値ですが、ガロアとアーベルの研究から良く知られているように、一般に5次以上の代数方程式の、根号による一般解は存在しないのですから。
http://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%AD%E3%82%A2%E7%90%86%E8%AB%96
ただし、解の公式が無いのではありません。このあたりの事情と方法については
http://ja.wikipedia.org/wiki/%E4%BB%A3%E6%95%B0%E6%96%B9%E7%A8%8B%E5%BC%8F
ここの「代数方程式の解法」の項を参照して下さい。ただし、数値的解法からは正確な値は出ませんが・・・・
いずれにせよnの値が違えば、その度に違う公式があって、一般のnに対する一般的な公式、というものは存在しません。
また、一般に解は複素数になりますから、グラフを描くのに適切でもありません。そういう意味ではx=に直すのはあまり意味がない場合も多いと思います。

一般に、と言うのは無理でしょう。
おっしゃるのは結局#2さんのご指摘の通り一般の代数方程式を解く事と同値ですが、ガロアとアーベルの研究から良く知られているように、一般に5次以上の代数方程式の、根号による一般解は存在しないのですから。
http://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%AD%E3%82%A2%E7%90%86%E8%AB%96
ただし、解の公式が無いのではありません。このあたりの事情と方法については
http://ja.wikipedia.org/wiki/%E4%BB%A3%E6%95%B0%E6%96%B9%E7%A8%8B%E5%BC%8F
ここの「代数方程式の...続きを読む

Q逆関数の求め方

f(x)=x^2の逆関数って
どう計算したらy=√xになるんですか?

計算過程を教えてください!
答えが合わなくて困ってます。

Aベストアンサー

もう良い回答が出ていますが。
この問題には2点ポイントがあります。

まず、
f(x)=x^2
Y=x^2
ですよね。
ここでYに初期条件が出てきます。
Y=x^2なのでY≧0という条件が手に入ります。
問題文にx、Yは実数だという条件が通常はあるハズです。

この初期条件を見落とさないという感覚は意外と身に付かず
東大に合格する学生でも秋ぐらいまで、できない事も多いです。
繰り返し問題を解くことでこの感覚は身に付きますので、頑張ってください。
この問題の難しいポイントはここにあります。
あとは機械的に解くだけです。

逆関数はx、Yを逆に書いて解けば良いので
x=Y^2 Y=±√x
これと初期条件Y≧0より
Y=√xとなります。

Qエクセルの関数による近似式の求め方

(1)1,2,3,4 (2)5,6,7,8
(1)と(2)の二つの数字があります。
(1)をx軸、(2)をy軸としてエクセルの関数の式のみでy=a*x^2+b*x+cを求める事は可能ですか?
現状は(1)(x軸)と(2)(y軸)からグラフを書き近似曲線を描かせ、2次の多項式を表示させているんですが、大量にデータがあり、この作業に大変時間を要しています。調べに調べた結果、y=a*x+bの形は関数で表示可能なことは確認取れているんですが、2次の式は未だ発見できません。
非常に困っています。回答の方よろしくお願いします。また何か不明な点があったら何でも言って下さい。

Aベストアンサー

y の範囲 A2:A10
x の範囲 B2:B10
として、
C2=B2^2
C10までコピー。

と、しておけば
係数 a =INDEX(LINEST(A2:A10,B2:C10),1)
係数 b =INDEX(LINEST(A2:A10,B2:C10),2)
定数 c =INDEX(LINEST(A2:A10,B2:C10),3)

QExcelで3次方程式を解く方法

3次方程式には解の公式が存在していて、この公式をExcelのセルに入力して、係数を入れれば答えが出るようにしたいのですが、どうも複素数の3乗根が取り扱えないようでエラーとなってしまいます。 実数解を持つことは分かっている場合でも、計算途中で複素数の3乗根が出てくるので答えが出ません。 これを回避する方法をご存知でしたら教えてください。

Aベストアンサー

複素数 x + iy の 3乗根を求めるなら, 極座標で r e^(iθ) としてから r^(1/3) e^(iθ/3) = r^(1/3) cos (θ/3) + i r^(1/3) sin (θ/3) とするのが簡単かな.
r = (x^2 + y^2)^(1/2), θ = atan2(x, y) です.
x = y = 0 だと困りますが, まあなんとかしてください.

Qエクセルで3次式の検量線のyからxの求め方

吸光度測定で検量線を引いて、そこからサンプル濃度を求めたいのですが、
エクセルで作成した近似曲線は3次式が一番フィットしました。
直線回帰の場合はy切片を引いて、傾きで割ればよいですが、
3次式の検量線の場合は、どのようにしてyの値(吸光度)から
xの値(濃度)を求めればよいか教えてください。
具体的には、
y = 2.11x3 - 4.81x2 + 2.93x + 0.0277の式で
y = 0.150の時に、x値を求めたいです。
xyが逆の検量線を書いて、計算もしてみましたが、
近似曲線では数値が微妙に違ってくる気がしています。
よろしくお願いします。

Aベストアンサー

アグリゲーションを起こす場合、1次で近似できないことはあります。しかし、3次近似というのはどうでしょう?

なぜ3次近似になるか、メカニズムを考えなければなりません。

計算は、その後のことと思います。

(近似できればよい、というものではありません)

QExcel近似曲線の仕組みについて

Excelグラフの近似曲線についての質問です。

業務でグラフを作成し、近似曲線を出す予定ですが、
Excelの近似曲線はどういった仕組みを使って書き込む方法がありますか?
当方は最小二乗法で書き込む方法しか存じ上げておりませんが、
それ以外にExcelグラフで近似曲線を求める方法はありますか?

業務上精度が悪いと使用できないため、もし他に近似曲線を出せる方法があれば
それも教えて頂きたいです。


よろしくお願いいたします。

Aベストアンサー

どういった近似をしたいのか不明なので,近似全般についてお話しします。

エクセルでは「最小二乗法」を使った近似と,他に「移動平均」を利用することも出来ます。
一般的な意味での「近似曲線」としては,定式化に応じて
・線形近似(直線近似)
・多項式の近似(二次以上の近似)
・指数近似
・対数近似
・累乗近似
などが出来ますが,いずれも最小二乗法を使っているので,基本的な計算方法や精度は同じです。
「グラフに近似曲線を追加する」だけなら,グラフを描いてプロットを右クリック,近似曲線の追加によって希望の近似曲線を追加します。
近似曲線のオプションで「R2」と「近似式」を表示させ,原則としてはR2の値が0.8以上であれば概ね信頼できる近似だと判定します。



>業務上精度が悪いと使用できない

しばしば寄せられるご相談ですが,グラフに表示させた近似曲線の式を「近似値の計算」に使ってはいけません。

「近似値を計算したい」が目的であれば,
・簡単な直線近似なら,FORECAST関数
・一次を含む多項式近似ならTREND関数
・指数近似ならGROWTH関数
を使います。

「近似式のパラメータ(近似係数)を得たい」のが目的であれば
・直線近似ならSLOPE関数とINTERCEPT関数
・多項式近似ならLINEST関数
・指数近似ならLOGEST関数
を使います。具体的な計算方法は,各関数のヘルプをよく読んで計算してください。



参考:
たとえば
A2:A11にXの数値
B2:B11にYの数値
があるとすると
C2に
=LN(A2)
D2に
=LN(B2)
を置いて11行までコピー

=SLOPE(B2:B11,A2:A11)と=INTERCEPT(B2:B11,A2:A11)で線形近似のパラメータ
=SLOPE(D2:D11,A2:A11)と=EXP(INTERCEPT(D2:D11,A2:A11))で指数近似のパラメータ
=SLOPE(B2:B11,C2:C11)と=INTERCEPT(B2:B11,C2:C11)で対数近似のパラメータ
=SLOPE(D2:D11,C2:C11)と=EXP(INTERCEPT(D2:D11,C2:C11))で累乗近似のパラメータ
をそれぞれ得ることも出来ます。


#補足
Excel2002までの近似曲線の計算式にはバグがあるので,近似の計算をしたいときにはExcel2003以降を利用する必要があります。
またExcel2003以降でも,グラフに表示させた近似式には計算間違いしたパラメータが現れる場合があります。


#既にオナカイッパイと思いますので,多項式近似の計算の仕方は下記などを参考に。
http://atiboh.sub.jp/t09takoushiki2.html

どういった近似をしたいのか不明なので,近似全般についてお話しします。

エクセルでは「最小二乗法」を使った近似と,他に「移動平均」を利用することも出来ます。
一般的な意味での「近似曲線」としては,定式化に応じて
・線形近似(直線近似)
・多項式の近似(二次以上の近似)
・指数近似
・対数近似
・累乗近似
などが出来ますが,いずれも最小二乗法を使っているので,基本的な計算方法や精度は同じです。
「グラフに近似曲線を追加する」だけなら,グラフを描いてプロットを右クリック,近似曲線の追加...続きを読む

Qエクセルの指数近似曲線の式から値を計算する

有るデータを元に指数近似曲線を描かせると「y = 2E+08e-0.098x R² = 0.9847」と出ました。
インターネット等を参考にしてエクセルで値を計算させようとして以下の式を作りましたが計算結果が全く元データと合いません、何が間違っているのでしょうか?教えて下さい。
y = 2E+08e-0.098x⇒y=2*POWER(10,8)*EXP((-0.098*x))

Aベストアンサー

質問者様はグラフに表示された数式と同じワークシートの数式を正しく作成されています。
(実際の数式ではyはなくxのところにセル参照が入っているのですよね)
元データと合わない原因ですが、グラフに表示された数式の係数の精度不足ではないでしょうか。
それが原因であれば、グラフに表示された数式の表示形式を変更して係数の精度を上げ、その数値でワークシートの数式を作り直せば多くの場合解決します。
どのような数値でも精度良く表示するためには、表示形式を指数にして小数点以下14桁にするとよいと思います。

ご存知かもしれませんが、以下念のためグラフに表示された数式の表示の変更方法を説明します。
Excel2003とExcel2007についての解説となりますが他のバージョンも大きくは違わないと思いますのでそこのところの対応はよろしくお願いいたします。
1.グラフに表示された数式を右クリック
2.2003なら「データラベルの書式設定」をクリック、2007なら「近似曲線ラベルの書式設定」を左クリックする。
3.書式設定のダイアログが出るので、「表示形式」を左クリック(2003は上、2007は左上。最初からクリックされた状態になっている可能性あり。)
4.「分類」(表示形式)の「指数」を左クリック。(「数値」はNG)
5.「小数点以下の桁数」を14にする。(最大30だが「分類」(表示形式)が「指数」ならば15以上は無意味。Excelの精度が15桁であるため。)
6.「OK」を左クリック

なお、質問者様の作成された式の「2*POWER(10,8)」の部分ですが、「2*10^8」「2E+08」「2e8」などとしても数式の値としては同じになります。

質問者様はグラフに表示された数式と同じワークシートの数式を正しく作成されています。
(実際の数式ではyはなくxのところにセル参照が入っているのですよね)
元データと合わない原因ですが、グラフに表示された数式の係数の精度不足ではないでしょうか。
それが原因であれば、グラフに表示された数式の表示形式を変更して係数の精度を上げ、その数値でワークシートの数式を作り直せば多くの場合解決します。
どのような数値でも精度良く表示するためには、表示形式を指数にして小数点以下14桁にするとよいと思...続きを読む


人気Q&Aランキング