2

質問する前に、問題の背景を説明します。

私の PIC 18F アセンブラ ルーチンは、Rntc と T°C の関係を解決します。ただし、精度はせいぜい 3 桁です。

アセンブラーの例で使用した NTC 基準抵抗は、25°C の温度に対応する 10000 オームです。

3 桁しかないため、式の解は =xF6 ,d246 となります。T の表示には、24 と 6 の間の小数点が表示されます。

T の計算時間は、ニュートン近似を含めて約 800us です。この計算時間は、MPlab C よりもはるかに優れているように見えます

方程式 y = 9.228*x*x-840.852*x+25236.82 の sqrt を計算するアセンブラー ルーチンは、b2-4ac のスケーリングの問題に遭遇します。 a=9 を使用する必要があります。b=840 c=25236

Q1 整数を使用していますが、24 ビット演算を使用して上記の数値を計算するためのトリックはありますか?

4

1 に答える 1

5

約10ビット以上の精度が本当に必要だとは思いません。

方程式sqrt(a* x^2 + b*x + c)x=178..1196 は、ほぼ線形の応答を示します。ルックアップ テーブルを使用して区分線形近似を行う必要さえありません。

線形方程式は y=3.03x-129

EDIT : 0.03*x ~= 8/256 * x;
したがってy=a+(a<<1)+(a>>5) - 131; // 8/256 = 0.03125 to be precise.

定数を 131 に変更して、誤差を平均ゼロまで微調整します。プロットは、相対誤差 (左) と絶対誤差 (右) を示しています。180<x<1200

相対誤差と絶対誤差

于 2012-11-24T10:42:59.103 に答える