1 / 6

連立一次方程式の解法(1)

連立一次方程式の解法(1). 連立二元 一次方程式. クラメール ( Cramer )の公式. 元の 数が大きくなると行列式の計算は困難. 連立一次方程式の解法( 2). 連立 n 元 一次方程式. 第一式を a 11 で割って、 a k1 倍して第 k 式から引く. 第二式を a’ 22 で割って、 a’ k2 倍して第 k 式から引く. 以降 同様 の 処理 を繰り返す. 連立一次方程式の解法 (3 ). 第 n 式を a n-1,n 倍して上の式(第 n-1 式)から引く. 第 n 式を a n-2,n 倍し 、 第 n-1 式 を a n-2,n-1 倍し て

mareo
Download Presentation

連立一次方程式の解法(1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 連立一次方程式の解法(1) 連立二元一次方程式 クラメール(Cramer)の公式 元の数が大きくなると行列式の計算は困難

  2. 連立一次方程式の解法(2) 連立n元一次方程式 第一式をa11で割って、ak1倍して第k式から引く 第二式をa’22で割って、a’k2倍して第k式から引く 以降同様の処理を繰り返す

  3. 連立一次方程式の解法(3) 第n式をan-1,n倍して上の式(第n-1式)から引く 第n式をan-2,n倍し、第n-1式をan-2,n-1倍して 上の式(第n-2式)から引く 以降同様の処理を繰り返す ガウス(Gauss)の消去法

  4. 連立一次方程式の解法(4) ガウスの消去法で連立方程式を解く外部関数: gauss.f コマンドプロンプトで次のコマンドを入力 [s2………]$ cp~takizawa/gauss.f. 半角スペースとピリオドを忘れずに!! [s2………]$ ls でファイルリストを表示、「gauss.f」がコピーされていることを確認 gauss.f の呼び出し利用するメインプログラム(例えば prog10.f)を自分で作成し、 [s2………]$ gfortranprog10.fgauss.f としてプログラムをコンパイル

  5. 連立一次方程式の解法(5) ガウスの消去法で連立方程式を解く外部関数: gauss.f 関数の引数 functiongsnelm(mat, vec, dim, mxdim) Integer::dim, mxdim, gsnelm double precision::mat(mxdim,mxdim),vec(mxdim) gsnelm → 解が求まったら「0」、解がない時は「0」以外の値を返す関数 dim→ 連立方程式の数(元の数) mxdim→ メインプログラムで宣言された配列の数(mxdim≧ dim) mat → 連立方程式の係数(aij)行列を表す二次元配列 vec→ 連立方程式の右辺(bk)を表す一次元配列

  6. 連立一次方程式の解法(6) ガウスの消去法で連立方程式を解く外部関数: gauss.f メインプログラムの例 連立三元方程式を解く場合 integer::dim,mxdm,gsnelm,rc doubel precision::mat(5,5),vec(5) dim=3 mxdm=5 mat(1,1)=1.0d+0 mat(1,2)=3.0d+0 ・・・ mat(3,3)=2.0d+0 vec(1)=12.0d0 ・・・ rc=gsnelm(mat,vec,dim,mxdm) ・・・ if (rc==0) then print *,’x(1)=‘,vec(1) print *,’x(2)=‘,vec(2) ・・・ endif ・・・ 必ず一致させる!

More Related