青木@東京大学です。
Sun, 17 Nov 2002 09:22:48 +0900 の
[H8-ML(2353)] アークサインの求め方 について。
>AKI−H8/3048用のCコンパイラには、asin(x)(アークサイン)が
>無いので
>作りました。数学の本にあった級数展開式です。
マクローリン展開は原点から離れると精度落ちますからね。
>他の関数(sin,cos、exp、log、powなど)は、精度良くできたので残
>念でありません。
どのくらいの精度が必要なのでしょう?
あまり「コンピュータ的」精度ではないですが、気賀康夫著「電卓に強くなる」
(ブルーバックス,1977)を参考にこんなコードを書いてみました。
参考まで。
#define M_PI 3.14159265358979
double sqrt(double x);
double sin(double x);
double cos(double x);
double acos(double x){
return sqrt( 6.740327 - sqrt( 18.258 + 27.174 * x ));
}
double asin(double x){
return (M_PI/2.0) - acos(x);
}
int main(){
double x;
int i;
for(i=0;i<=10;i++){
x = i * 0.1;
printf("x:%lf ", x);
printf("acos(x):%lf (%lf) " , acos(x),x-cos(acos(x)) );
printf("asin(x):%lf (%lf)\n", asin(x),x-sin(asin(x)) );
}
}
------------------------------------------------------------
東京大学大学院工学系研究科 / (有)ナセ工企 青木 茂
mailto:saoki@xxxxxxxxxxxx
mailto:aoki@xxxxxxxxxxxxxxxxxxxxxx
mailto:shig@xxxxxxxxxxxxxxx