1458741916 始めはAが1であるが、2時間後にBが2となった場合、1時間後の時点ではどの程度であったかを大まかに補完する方法を探しています。

単純に加重平均としてしまうと線形になりますが、今回は添付の図のように山なりな曲線としたいです。

このような事を実現するアルゴリズムの名前や数式を教えて頂けますでしょうか。
よろしくお願いいたします。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2016/03/30 23:10:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:cdaotg No.1

回答回数123ベストアンサー獲得回数35

ポイント50pt

「アルゴリズムの名前」が存在するかは分かりませんでしたので、数式だけの回答です。

図を拝見したところ、下記の条件のようでしたのでその前提で回答させて頂きます。

1. オレンジのカーブは円弧
2. オレンジのカーブは点Bで傾きが0になる

まず、条件2から円弧の中心のx座標は2となります。
そこで、この円弧の式は下記のとおりとなります。

(x-2)^2+(y-y_0)^2=r^2

ただし、y_0が円弧の中心のy座標、rが半径とします。

次に、この円弧は点(0,1)と点(2,2)を通るので、下記の式が成り立ちます。

(0-2)^2+(1-y_0)^2=r^2
(2-2)^2+(2-y_0)^2=r^2

まず、2番めの式を解くとr=2-y_0となります。
これを1番目の式に代入して解くとy_0=-0.5となり、これを上の行の式に代入しr=2.5も求まります。

よって、円弧の式は(x-2)^2+(y+0.5)^2=2.5^2となります。

後は、任意のxを上記の式に代入して解けば、その時点でのyの値が求まります。


オレンジが円弧ではなく他の曲線の場合であっても、

1. 曲線の式を未知の変数(今回の例ではy_0r)込みで記述する。
2. 曲線の満たすべき条件(通る点や、傾きが0になる点)から、未知の変数を決定する。

というステップで解決可能かと思います。

他1件のコメントを見る
id:cdaotg

>頂いた式をそのまま使うと上下反転した凹型となりました。
あれ、式が間違っていましたか。
最後の式を解くと「y=√(2.5^2-(x-2)^2)-0.5」になりませんか?

2016/03/24 18:54:39
id:yoshi-ken

すみません、式の対応を間違えたようです。

2016/03/24 19:51:36
id:yoshi-ken

複数の地点の間を補間するアルゴリズムの選定をしております。

2次関数で補完した場合のシミュレーションを行うと、上がって下がってまた上がる際の動きで不自然な線を描くことに気づきました。

そこで、スプライン補間や地点数が多ければ指数平滑法が必要になってくると考えています。

そういった物の中で、どういったものがどういった時に最適であるのかご教示頂けると幸いです。

id:uunfo No.2

回答回数63ベストアンサー獲得回数6

ポイント50pt

直線で結べばいいでしょう。
それがだめだっていう理由が1つも提示されてないのだから。

  • id:NAPORIN
    なんで山なりになるってわかるのかな。根拠がわからないけど、
    ルートXの式に似てるね。二次曲線を横にして半分に割ったようなやつ。
    でも曲線を描く式なんて、ルート以外の指数関数も、反比例(を途中で切り取ったもの)も、なんだって考えられる。
    境界条件くらいはわかるといいんだけどね。
  • id:cdaotg
    単純に「n地点を全て通る曲線」を描きたいだけなら「n次曲線」でOKですが、それではおそらく期待した結果にはなりませんよね。

    http://aidiary.hatenablog.com/entry/20100327/1269657354

    ここにあるように、各地点のデータにノイズが乗っていると、期待していない結果になります。
    「関数近似」とか「回帰」で検索すると、色々情報が出てきます。

    曲線の満たす条件がわかれば、どんな関数で近似するのがベストかわかるのですが。
    (例えば、周期的に上下するならsin関数を適当に変形すればOKでしょう。)
  • id:yoshi-ken
    各地点のデータに外れ値が混じることもありますし、周期性もありません。
    そしてその点は2つ以上で、数百になる事もあります。そのため境界条件は定められなさそうです。

    まずは移動平均で均して突出値を丸め込んだ後に3次関数補間を行おうかと現状は考えております。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません