2) Nweton法は過去ログで何度か答えてます。
Windows10、VS2017Community、C言語
コード:
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
/* --- f(x) 関数定義 --- */
double f(double x)
{
/* x^2-sinx=0 */
return x*x - sin(x);
}
double Df(double x)
{
/* 微分 2x-cosx=0 */
return 2*x - cos(x);
}
/* ---ニュートン法--- */
/* ---f:関数, x:初期値--- */
double newton(double(*fx)(double), double x)
{
double eps = 0.000001;
double xx;
do {
xx = x;
x = x - f(x) / Df(x);
printf("x = %f\n", x);
} while (fabs(x - xx) > eps);
return x;
}
int main()
{
double x;
x = 1;
printf("初期値 x=%f\n", x);
printf("ANS = %f\n", newton(f, x));
return 0;
}
コード:
1>------ ビルド開始: プロジェクト: ConsoleApplication1, 構成: Debug Win32 ------
1>c1.c
1>ConsoleApplication1.vcxproj -> D:\z17a\07\13\ConsoleApplication1\Debug\ConsoleApplication1.exe
1>ConsoleApplication1.vcxproj -> D:\z17a\07\13\ConsoleApplication1\Debug\ConsoleApplication1.pdb (Partial PDB)
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
コード:
初期値 x=1.000000
x = 0.89140
x = 0.87698
x = 0.87673
x = 0.87673
ANS = 0.876726
続行するには何かキーを押してください . . .