2

私はこの形式のデータを持っています:

  • x=1 の場合、y は {1,4,6,7,9,18,16,19} のいずれかです
  • x=2 の場合、y は {1,5,7,4} のいずれかです
  • x=3 の場合、y は {2,6,4,8,2} のいずれかです
  • ....
  • x=100 の場合、y は {2,7,89,4,5} のいずれかです

各セットの値の 1 つだけが正しい値で、残りはランダム ノイズです。

正しい値は、パラメーターが不明な正弦関数を表すことを知っています。各セットから 1 つずつ、値の正しい組み合わせを見つけるにはどうすればよいですか? 「巡回セールスマン」の組み合わせ最適化アルゴリズムのようなものを探しています

4

4 に答える 4

2

カーブ フィッティングを実行しようとしています。これには、カーブをフィッティングするカーブのタイプ (線形、多項式など) に応じていくつかのアルゴリズムがあります。正弦曲線(フーリエ近似)に特定のアルゴリズムがあるかどうかはわかりませんが、最初のアイデアは、正弦の多項式近似で多項式フィッティングアルゴリズムを使用することです。

別の大規模なプログラムの過程でこれを行う必要があるのか​​、それともこのタスクを単独で実行しようとしているのだろうか。もしそうなら、統計パッケージを使用する方がはるかに良いでしょう。私の好みはRです。データをインポートし、曲線を当てはめ、グラフを数行で描画できます。R をバッチモードで使用して、スクリプトやプログラムから呼び出すこともできます (これは私がよく行うことです)。

于 2010-08-14T18:42:17.973 に答える
2

それは、「正確に」が何を意味するか、および事前に何を知っているかによって異なります。周波数 w が分かっていて、正弦波に偏りがないことがわかっている場合、方程式は次のようになります。

a cos(w * x) + b sin(w * x)

異なる x 値にある 2 つの (x,y) ポイントを使用して、a と b を見つけ、生成された曲線を他のすべてのポイントと照合します。最小数の y 観測値を持つ 2 つの x 値を選択し、すべての y に対して試します。バイアスがある場合、つまりあなたの方程式は

a cos(w * x) + b sin(w * x) + c

3 つの x 値を見る必要があります。

頻度がわからない場合は、同じ手法を試すことができます。残念ながら、解は一意ではない可能性があります。適合する w が複数ある可能性があります。

編集 私があなたの問題を理解しているように、各 x には実際の y 値があり、間違った値がたくさんあります。あなたは本当の価値を見つけたいと思っています。これを行う最善の方法は、少数の点で曲線を当てはめ、曲線が他のセットの y 値に適合するかどうかを確認することです。

すべての x 値が有効な y 値を持っていない場合、同じ手法が適用されますが、はるかに大きなペア、トリプル、またはクワッドのセット (基本的に、異なる y 値を持つポイントのすべてのペア、トリプル、またはクワッド) を調べる必要があります。

あなたの問題が何か他のものであり、私がそうであると思われる場合は、それを指定してください.

  1. 正弦波を定義します。ほとんどの人は、それを形式の関数を意味すると考えていますa cos(w * x) + b sin(w * x) + c。意味が異なる場合は、それを指定してください。

2 成功がどのように見えるかを正確に指定します。100 ポイントではなく 10 ポイントの例がいいでしょう。

これが組み合わせ最適化とどう関係するのかは非常に不明です。

于 2010-08-14T19:18:15.107 に答える
0

正弦波とは、nステップで増加し、nステップで減少する関数などを意味しますか?その場合、アップリンクとダウンリンクで接続されたノードのシーケンスとしてデータをモデル化できます。各ノード(yの可能な値)について、昇順または降順のリンクのみのチェーンの長さと終了値を記録します(ノードごとに複数のチェーンがあります)。次に、初期オフセットを法として、同じ長さと反対方向の連続した実行をスキャンします。

于 2010-08-16T21:34:35.687 に答える
0

正弦方程式は非常に一般的であるため、すべてのyのランダムな値をとると、条件を指定しない限り、これらの値を正弦関数に適合させることができます。周波数<100またはすべてのパラメータは整数であり、理論的にノイズとデータを区別することはできないため、最初にデータソース/実験からそのような条件を見つけることに取り組みます。

于 2010-08-15T05:19:07.063 に答える