top
ニュートン法
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/**関数z**/
float z(float x)
{
return x*x-2;
}
/**傾き(dz/dx)**/
float dz(float x)
{
return -2*x;
}
int main()
{
/**変数を決めた**/
float x,x1,sa,gosa;
printf("初期値=");
scanf("%f",&x);
printf("gosa=");
scanf("%f",&gosa);
/**x1の値を求める**/
x1=x+z(x)/dz(x);
sa=fabs(x1-x);
/**繰り返す**/
while(gosa<sa)
{
x=x1;
x1=x+z(x)/dz(x);
sa=fabs(x1-x);
}
printf("x= %f=%e\n",x1,x1);
return (EXIT_SUCCESS);
}