• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数の点(x,y)を通る曲線を,指数関数(y = a^x + c)ので近似するときの計算方法)

複数の点を通る曲線の指数関数近似の計算方法

このQ&Aのポイント
  • 複数の点(x, y)を通る曲線を指数関数(y = a^x + c)で近似する方法について学びましょう。
  • 指数関数の近似には、与えられた座標点を利用して指数aと定数cを求める必要があります。
  • また、未知の変数が2つ(aとc)の場合、2つの近似座標があれば指数関数を確定することができます。

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

  • ベストアンサー
  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.2

補足(1) a^50(a^950-1)-25 = 0 を解けばいいですが、 excelでやるなら、ソルバーの機能を使えばいいでしょう。 正直、私はexcelには詳しくないので 「excel ソルバー」とかで検索してみるといいと思います。 補足(2) 普通は最小二乗法を使います。excelでやるならこれもソルバーでできます。 http://homepage1.nifty.com/gfk/square_solver.htm に、N次関数で近似する例が載っていますが、指数関数で近似する場合も同様にできます。

merusaia
質問者

お礼

大変的確な補足,ありがとうございました. excelを使いこなすと,最小二乗法の計算も容易にできるのですね. 参考URLも非常にわかりやすいサイトを選んでもらい,本当に助かりました. rabbit_catさんの回答で満足したので, ここで回答を締め切りたいと思います. ありがとうございました.

その他の回答 (1)

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

>※ちなみに,指数関数y=a^x+cは,座標が最低何個わかればaとcが求まるのでしょうか?  >未知の変数の数は2個(aとc)なので,2個あれば確定するのでしょうか. その通り。 というわけで、未知数がa,cの2個で、座標1 (x1,y1)=(50,5)、座標2 (x2,y2)=(1000,30)の2点が与えられているので、近似ではなくて、厳密にこの2点を通るように、aとcを決められます。 1.ちゃんとcも無視しないで、座標1を代入すると, 5 = a^50 + c … (1) 1.cを無視しないで、座標2を代入すると, 30 = a^1000 + c … (2) というわけで、(1)と(2)を連立させてa,cについて解けばいいです。 実際に解くのは数値計算しかないですが、 a = 1.0030570062962585087533299236029851259021224685666… c = 3.8351210713869479819882604408568938733579605262382… といった感じになります。

merusaia
質問者

お礼

>rabbit_catさん 夜分遅くに,迅速な回答,どうもありがとうございました. とても助かりましたm(_ _)m. >1.ちゃんとcも無視しないで、座標1を代入すると, そうでした….なんでcを無視し続けちゃったんだろ><;.. 単に連立一次方程式の理屈でした….気づかせていただき,ありがとうございます . 続いての質問で誠に恐縮ですが, 関連する(1)~(2)の教えていただけると幸いです. >実際に解くのは数値計算しかないですが、 (1)他の任意の値でも,aとcを(プログラム上で)計算したいので, もしよろしければ,計算する手段(方程式/Excel/フリーソフトでも可)を教えていただけないでしょうか?   人が見た時の計算過程は,おそらく   (2)-(1) = 25 = a^1000-a^50 = a^50(a^950-1)とやりますが,   これだとaが少数だと人間の手には負えませんし,   教えていただいた精度のaを求める計算手段(「a=***」となる式)は,   私の力では探せませんでした. (2)また,N個になる場合の近似曲線を求める場合は, スマートに計算するには,何らかの方程式に当てはめるのだと思いますが, 指数関数用の近似方程式などはあるのでしょうか?   ちなみに,対数関数(y = log_a(x)+c)の近似方法も知りたいのですが…,   (2個の座標がわかれば,連立方程式でa,cは確定することはわかりました.)   これは欲張りなので,もう少し自分で調べてみます. 長文になってしまい申し訳ありません. わかる範囲だけの回答,短くで結構です. ※なお,適切な方程式/ソフトが無い場合は, 今は特に処理速度に拘っているわけではないので, いっそ自分で総当たりをするプログラムを作って出そうと思っています.

関連するQ&A