- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ガウスの消去法 nt.math.se.tmu.ac.jp
ガウスの消去法 (Gaussian elimination) ガウスの消去法とは… 連立方程式系を解く基本的なアルゴリズム 簡単な例 これらを方程式を同時に満たす変数の値を求める. 場合によっては,解がないことや,いくつもあることもある. (例えば のように2つの方程式が矛盾する時や, 2つの方程式が同じとか,方程式の数より変数の個数が多い時) 方程式の個数と変数の個数は等しいものとし,解があるときは一意な解を求める. * 方程式に対して解を変えないで実行出来る操作 方程式の入れかえ:明らかに,方程式を書き下す順番は解に影響しない行列の表現では,この操作は行列(と右辺のベクトル)の行の入れかえに対応する. 変数名のつけかえ:この操作は,行列の上では列の入れかえに対応する(列iとjを入れかえた時は変数 と も入れかえなければならない) 式の定数倍:行列(と右辺のベクトル)上のある行を定数倍する 2つの式の和:2つの式の和をとり、一方の式をその和と入れかえる 例 添字を使って変数名をつける 3つ以上の変数の場合も扱いやすいように 2式=1式-2式 3式=2式-2×3式 3式=1式+3式 3式より 2式に代入 1式に代入 この例はガウスの消去法の2つの基本的段階を示している. 第1段階は前進消去段階で,系統的に変数を処理していき, 対角要素より下の要素がすべてゼロになるよう変換する. この処理は,三角化とよばれることもある. 第2段階は後退代入段階で,第1段階でえられた三角行列を使って変数の値を計算する. 方法の概略 一般に,N個の未知数をもつN個の方程式からなる解く系を解く これらの方程式は行列を使うと1つの式 すなわち, のように書ける.ただし は係数行列, は変数, は方程式の右辺を表す. の要素は の行と一緒に扱われるので, を の第 列と みなし の行列を用いて両者を保持すると便利である. 前進消去は次のようにまとめられる. はじめに,第1式に適当な数を掛けたものを第1式以外の 各式に対し加えて,第1式以外から第1変数を消去する. 次に,第2式に適当な数を掛けたものを第3式から第N式の それぞれに対して加えて,第1,2以外の各式から第2変数 を消去する. 次にはじめの3式以外のすべての式から第3変数を消去す るというようにする. 第i変数を第j式 から消去する時は,第i式を 倍したものを第j式から引く. この処理は次のコードのようにもっと簡潔に書ける. for (i=1;i=N;i++) for (j=i+1;j=N;j++) for (k=N+1;k=i;k--) a[j][k] -=a[i][k]* a[j][i]/a[i][i]; #計算時間は に比例 #同じ行の他の要素を計算する前 に # a[i][j]を壊さないよう逆方向に進む a[i][i]はゼロ,またはゼロによる割算が発生した場合は... その外側のループでi行を適当な(i+1とNの間の)行と入れかえて,a[i][i]がゼロでないようにすれば解決 (そのような行が見つからないときには,その行列は特異.すなわち一意な解が存在しない) 第i列の対角要素より下の要素を消去するのに使われる要素a[i][i]を枢軸とよぶ. 実際には,第i列で非ゼロ要素をもつ行を探すだけでなく,第i列で絶対値が最大の要素をもつ行を使うのがよい. なぜなら,行の定数倍に使われる枢軸要素が非常に小さい と,大きな計算誤差が生じることがあるからである. a[i][i]が非常に小さいと,第i変数を第j式から消去する時に 使われるスケーリング因子a[j][i]/ a[i][i]が非常に大きくなる. 実際,それは係数が小さく見えるほどまでに大きくなり, a[j][i]の値が丸め差のために歪んでしまうこともある. 例: 0.001 -6 =-6.001 3 +5 =2 eliminate() { int i,j,k,max; float t;
文档评论(0)