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);
}