# import <Foundation/Foundation.h>
double newton_sqrt(double n)
{
if(n < 0.0)
{
return nan(NULL);
}
const double A = n;
double a = A;
for(int i = 0 ; i < 10 ; ++i)
{
double minus = (a * a - A) / (2.0 * a);
a = a - minus;
if(minus <= DBL_EPSILON)
{
break;
}
}
return a;
}
int main(int argc, const char * argv[])
{
for(int i = 0 ; i < 10000 ; ++i)
{
double a = sqrt(i);
double b = newton_sqrt(i);
double diff = ABS(a - b);
printf("n = %i, result = %f, %f, diff = %f\n", i, a, b, diff);
}
return 0;
}
キチンと考え方を書きたい。そうしないとこんなのはただのマスターベーションで終わってしまう。
ちゃんと図をつくったら書きます。(とかなんとかいってほったらかしてすんません
しかしニュートン法とかいうかっこいい名前の割にコードを見ると拍子抜けするくらい短いものである