制御ループが高周波で実行されており、サイクルごとに平方根を計算する必要があります。一般的な平方根関数は正常に機能しますが、時間がかかりすぎます。私が取っている平方根の値は各サイクルであまり変化しないので、収束して正しい結果を追跡する反復平方根を見つけたいと思います。このようにして、多くではなく、各タイムステップで単一の反復を実行できます。
問題は、入力が変更されているときに、私が見たすべての反復平方根法がおそらく失敗することです。特に、入力がゼロになり、その後再び増加すると問題が発生するようです。メソッドは、ゼロの推測から開始することを好みません。
私の入力範囲は0〜4.5で、0.01前後の精度が必要なので、0.01のインクリメント/デクリメントを使用すると時間がかかりすぎる可能性があります。ほとんどの場合、10サイクル以下で収束する必要があります。
参考までに、16/32ビットの固定小数点を使用しています。入力は16ビットq12です。マイクロコントローラー上にあるので、ルックアップテーブルに1Kを使用することに興味はありません。コードもSimulinkモデルから生成され、それらのテーブルルックアップ関数はかなりオーバーヘッドでいっぱいです。
これに対する良い解決策はありますか?