C言語の質問です
ニュートン法のプログラムを組んだのですがPAD図が描けなくて困ってます
どなたか回答お願いします
/*
newton.c: ニュートン法
*/
#include <stdio.h> // printf, fprintf, fgets, sscanf
#include <math.h> // fabs
double a; //グローバル変数
double f(double x) //fは関数f(x)
{
return x * x - a; //f(x)=x~2-a
}
double df(double x) //dfはf(x)の導関数f’(x)
{
return 2 * x; //df(x)/dx = 2x
}
double newton(double x, double (*f)(double), double (*df)(double), double eps)
{
int n = 0; //初期化
double x0, err; //x0は初期値
printf("# n, x, err\n");
printf("%4d, % .15e\n", n, x);
do {
n++;
x0 = x;
x = x0 - f(x0) / df(x0); //切片でy=0、x=x1
err = fabs(x-x0);
printf("%4d, % .8e, % .15e\n", n, x, err);
} while (err >= eps);
return x;
}
/*メインルーチン*/
int main(void)
{
double x, eps = 1.0e-10; //収束条件
char s[128];
fprintf(stderr, " a = "); fgets(s, 128, stdin); sscanf(s, "%lf", &a);
while (a <= 0.0) {
fprintf(stderr, "'a' には正の数を入れてください。\n");
fprintf(stderr, " a = "); fgets(s, 128, stdin); sscanf(s, "%lf", &a);
}
x = (a + 1.0) / 2.0;
x = newton(x, f, df, eps); //ニュートン法の実装
printf("\n# √(%e) = % .15e\n", a, x);
return 0;
}
補足
入力ミスしていたので #include <stdio.h> #include <stdlib.h> int main (void){ double a[5]={0.0,4.0,0.0,-5.0,1.0}; double x; int i,j,k,n; n=4; x=0.75; for(i=1;i<=n;i++) printf("%10.5f ,",a[i]); printf("\n"); for (i=1; i<=n+1; i++) printf("----------") printf("\n"); while(n>=1){ for(i=1; i<=n; i++) a[i]=a[i-1]*x+a[i]; for(i=1; i<=n; i++) prontf("%10.5f ,"a[i]); printf("\n"); n=n-1; } return 0; } これは何を計算するためのプログラムですか? また出力結果はそのようになりますか? わかる範囲でよいので教えてください。