0

こんにちは私の問題は、私のデータセットが単調に増加していることですが、データの終わりに向かって、以下のように見えx[i-1] = x[i]ます。これにより、値が単調に増加していないと見なされるため、GSL でエラーが発生します。この問題の解決策、修正、または回避策はありますか?

値はすでに倍精度です。この特定のデータ セットは 9.86553e-06 で始まり、.999999 で終わります。

唯一の解決策は、for ループ内のすべての値をオフセットすることでしょうか?

0.999981
0.999981
0.999981
0.999982
0.999982
0.999983
0.999983
0.999983
0.999984
0.999984
0.999985
0.999985
0.999985
4

2 に答える 2

2

同様の問題がありました。単純な条件演算子 (if ステートメント) によって重複を削除しましたが、これは最終結果に影響しませんでした (MatLab によってチェックされました)。ただし、これは少し問題固有の可能性があります。

于 2013-03-06T18:21:33.693 に答える
1

倍精度が許容する限界に本当に到達した場合 (デルタが < マシン イプシロン)、そのままのデータでできることは何もありません。x データ単調に増加していません。むしろ、それらが生成された場所に戻って、何らかの変換を適用して、テールの差を大きくする必要があります。または、スカラー係数を掛けて、その場で x 値間を補間することもできます。完了したら、因数を元に戻します。

編集: tr(x) = (x-0.5)^3 は、スペースを空けるのにかなりうまくいくかもしれません、または tr(x) = tan( (x-0.5)*pi )。ただし、後者の場合は極端な値に注意する必要があります。そしてもちろん、これらの変換は、実行しようとしている分析を台無しにする可能性があるため、スカラー係数が答えになる可能性があります。明らかに、分析が不変である変換でなければなりません。定数を追加することも可能です。

于 2012-09-18T15:29:45.107 に答える