青木@東京大学です。 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