C/C++の宿題やらせてください。8代目。
■ このスレッドは過去ログ倉庫に格納されています
0442デフォルトの名無しさん
NGNG#include <math.h>
#include <stdlib.h>
#include <stdio.h>
double
newton(double (*f)(double), double (*df)(double), double x, double h, int imax)
{
int c;
while (fabs(f(x))>h && c<imax){x -= f(x)/df(x); c++;}
return c>=imax ? 0.0/0.0 : x;
}
#define IMAX 1000
double f(double x){return tan(x)-pow(x,x);}
double df(double x){return tan(x)*tan(x)-pow(x,x)*(log(x)-1)+1;}
int
main(int argc, char **argv)
{
double x,y,h;
if (argc<3) {fprintf(stderr, "usage: %s x0 delta\n", argv[0]); return 1;}
sscanf(argv[1], "%lf", &x); sscanf(argv[2], "%lf", &h);
y = newton(f, df, x, h, IMAX);
if (y == y) printf("%.10e\n", y); else printf("failed\n");
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています