ニュートン・ラフソン法
をテンプレートにして作成
[
トップ
|
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
2分法は指定した区間内の解は必ず求めるものの,解の収束は遅...
関数&ref(rf_newton.eq1.gif,nolink,70%);が連続で微分可能関...
解の初期値を&ref(rf_newton.eq2.gif,nolink,70%);とする.
&ref(rf_newton.eq3.gif,nolink,70%);での関数&ref(rf_newton...
#ref(rf_newton.eq4.gif,nolink,70%)
となる.この接線が&ref(rf_newton.eq5.gif,nolink,70%);軸と...
#ref(rf_newton.eq7.gif,nolink,70%)
&ref(rf_newton.eq8.gif,nolink,70%);を次の近似値として同様...
この方法をニュートン・ラフソン法(Newton-Raphson method),...
ニュートン法の式は以下となる.
#ref(rf_newton.eq9.gif,nolink,70%)
反復回数を多くすると限りなく&ref(rf_newton.eq10.gif,nolin...
反復を終了するための収束条件は,
#ref(rf_newton.eq11.gif,nolink,70%)
となる.
ニュートン法は2分法と異なり解のある区間でなく初期近似値1...
しかし,&ref(rf_newton.eq1.gif,nolink,70%);だけでなくその...
|&ref(newton.jpg,,100%);|
|CENTER:図2 ニュートン法|
ニュートン法のコード例を以下に示す.
#code(C){{
/*!
* ニュートン・ラフソン法(Newton-Raphson method)
* @param[in] func 関数値を与える関数ポインタ
* @param[inout] x 探索開始位置を受け取り,解を返す
* @param[inout] max_iter 最大反復数(反復終了後,実際の反...
* @param[inout] eps 許容誤差(反復終了後,実際の誤差を返す)
* @return 1:成功,0:失敗
*/
int newton(double func(const double), double dfunc(const ...
double &x, int &max_iter, double &eps)
{
double f, df, dx;
int k;
for(k = 0; k < max_iter; ++k){
f = func(x);
df = dfunc(x);
x = xn-f/df;
// 収束判定
dx = fabs(f/df);
if(dx < eps || fabs(f) < eps){
max_iter = k; eps = dx;
return 1;
}
}
max_iter = k; eps = dx;
return 0;
}
}}
終了行:
2分法は指定した区間内の解は必ず求めるものの,解の収束は遅...
関数&ref(rf_newton.eq1.gif,nolink,70%);が連続で微分可能関...
解の初期値を&ref(rf_newton.eq2.gif,nolink,70%);とする.
&ref(rf_newton.eq3.gif,nolink,70%);での関数&ref(rf_newton...
#ref(rf_newton.eq4.gif,nolink,70%)
となる.この接線が&ref(rf_newton.eq5.gif,nolink,70%);軸と...
#ref(rf_newton.eq7.gif,nolink,70%)
&ref(rf_newton.eq8.gif,nolink,70%);を次の近似値として同様...
この方法をニュートン・ラフソン法(Newton-Raphson method),...
ニュートン法の式は以下となる.
#ref(rf_newton.eq9.gif,nolink,70%)
反復回数を多くすると限りなく&ref(rf_newton.eq10.gif,nolin...
反復を終了するための収束条件は,
#ref(rf_newton.eq11.gif,nolink,70%)
となる.
ニュートン法は2分法と異なり解のある区間でなく初期近似値1...
しかし,&ref(rf_newton.eq1.gif,nolink,70%);だけでなくその...
|&ref(newton.jpg,,100%);|
|CENTER:図2 ニュートン法|
ニュートン法のコード例を以下に示す.
#code(C){{
/*!
* ニュートン・ラフソン法(Newton-Raphson method)
* @param[in] func 関数値を与える関数ポインタ
* @param[inout] x 探索開始位置を受け取り,解を返す
* @param[inout] max_iter 最大反復数(反復終了後,実際の反...
* @param[inout] eps 許容誤差(反復終了後,実際の誤差を返す)
* @return 1:成功,0:失敗
*/
int newton(double func(const double), double dfunc(const ...
double &x, int &max_iter, double &eps)
{
double f, df, dx;
int k;
for(k = 0; k < max_iter; ++k){
f = func(x);
df = dfunc(x);
x = xn-f/df;
// 収束判定
dx = fabs(f/df);
if(dx < eps || fabs(f) < eps){
max_iter = k; eps = dx;
return 1;
}
}
max_iter = k; eps = dx;
return 0;
}
}}
ページ名: