コンピュータ初級 クラス2) aseda.jp.pptVIP

  • 0
  • 0
  • 约1.97千字
  • 约 19页
  • 2017-01-06 发布于天津
  • 举报
IT入門B2 ー 方程式の反復解法 ー *  授業内容  反復解法 ニュートン法 プログラムの作成 演習  非線形方程式  連立一次方程式を解く場合には,ガウスの消去法等といった直接解法により解の計算ができる. 非線形方程式を解く場合は直接解法が存在しないため,反復解法を用いて解を数値的に計算する. 今回の授業では,反復解法の中でもよく知られたニュートン法を用いて方程式の解を求めるプログラムを作成する.  反復解法  方程式 が与えられたとする. 適当な初期値 から出発し, のある解 に収束する列 をつくり, が に十分近づいたときに計算を打ち切り を近似解とする. 収束の判定は,ある微小な値 に対し,例えば次のような条件 とする: このとき,上の条件がすべて満たされても, が成り立つとは限らない.  ニュートン法  ― 非線形方程式を解くための反復解法の一つ. を1回連続微分可能な関数とし,方程式 を解くことを考える. 適当な初期点 を選び,これを方程式の最初の近似解とする. ただし, とする. このとき     ならば, を修正し とし,方程式 のより良い近似解となるようにする.  ニュートン法  f を のまわりでTaylor展開すると, となる.ここで, として1次の項で打ち切ると, と近似できる.このとき,(右辺 = 0) になってほしいわけだから, と定まる.よって, である.  ニュートン法  ここで, とおくと,上式は と書ける. これを繰り返して一般化すると となる.この反復解法をニュートン法と呼ぶ.  ニュートン法  ニュートン法により得られる点列 が点 に収束したとする. このとき となる.すなわち したがって, が の解となっていることがわかる.  ニュートン法  - 幾何学的な解釈 - 曲線 上の点 における接線 とx軸との交点のx座標 を求める操作の反復を行っている.  ニュートン法  - 参考 - を定数として とする. 反復解法として を用いる方法を簡易ニュートン法と呼ぶ. とする場合や,r を のなんらかの近似とする場合が多い.  プログラムの作成  以下の例題を解くためのプログラムを作成してみよう. より, とすると であり, で定まる反復により解を求める. 方程式 の解をニュートン法により求める. 例 題  プログラムの作成  ? の計算: はそれぞれ で与えられている.これらの値の計算には, をそれぞれ 関数として定義することにしよう. を以下のような関数として定義できる: も同様に関数名func_d()等として定義してみよう. double func(double x) { double y; y = x – 1.2*exp(-x); return y; }  プログラムの作成  このとき,関数func()をmain関数等から呼び出すことでf (x)の値 を計算できる. double func(double x) { double y; y = x – 1.2*exp(-x); return y; } int main(void) { double f, x; x = 1.0; f = func(x); ← fにf (x)の値が代入される …  プログラムの作成  ニュートン法では,適当な初期点 を選び,上式にしたがってi の値を順次変化させながら次の点を次々と計算する. 適当な停止条件を満たしたところで計算を止め,そのときの値を解とする. ?初期点の設定: 現在いる点を表す変数xをdouble型で宣言し,xに適当な値を代入. ?ニュートン法の反復: while文,for文等の繰り返し処理を利用して反復を実現する. int main(void) { double x; … x = 1.0; … *

文档评论(0)

1亿VIP精品文档

相关文档