突然長い時間(TAO)西(KE)のために学習する文化レッスン後に発見、彼はガウスの消去を忘れてしまった(私が弱すぎますよ
だから、今日は学ぶために(ガオはこの事を見て
ガウス - ヨルダンの(ヨルダン)消去法!
(以下は、いくつかの学位を切り替え)
数学的には、ガウスの消去(又は翻訳:ガウスの消去法)は、プログラミングは、線形代数におけるアルゴリズムである、線形方程式を解くために使用されます。
しかし、このアルゴリズムは非常に複雑で、一般的に使用されていない減算消去法、マトリックスの決定順位、逆行列が可逆正方形決定されます。ただし、
100万人以上の方程式、アルゴリズムは非常に時間の節約になります。いくつかの偉大な方程式は通常、解決するための反復法と派手な排除を使用しています。使用される場合、
マトリックス中ながら、ガウス消去法「ラダーライン形成」を生成します ガウスの消去は、の方程式と何千解決するために、コンピュータで使用することができ
未知数。いくつかの方法はまた、具体的方程式の係数のいくつかに対処するように設計されていることは、特別な構成を有している[1]。
強いグッド!
しかし、馬は非常に簡単なアルゴリズムを感じています
怠惰なバー上だから私のこんにゃく
おそらくアイデアはこれです:
1.「主成分を」(どうやらこの朱元が不明オーバー選択の余地はいけません)検索
2.この方程式係数の主要要素
減算3.除去は、他の方程式の未知がいっぱい排除で
前記対角行列(異なる三角行列を有するガウス消去)するまで、上記の手順を繰り返し
しかし、実際には、それを行う過程で、左側の行列の行列になることで、右の行列は元の行列の行列スパイシーのこの時点で疲れています!
ここではポジションペーパーが十分ではありません、私は書いていない/ドゥカーレ(GUGU区
この権利に滞在するためのコード:(試験後はるかに毒性が低いミルク)
トピック出典:羅区P3389 [テンプレート]テストステロン♂アダムス消去法
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 ダブル [ 110 ] [ 110 ]。 INT のmain() { int型のn; scanf関数(" %のD "、&N) 以下のために(int型 i = 1 ; iが<= N; ++ I) { ため(INT J = 1 ; J <= N + 1 ; ++ j)は { scanf関数(" %のLF "、および[I] [J]) ; } } のために(intです i = 1 ; iが<= N; ++ I) { int型 MAXX = I。 用(int型 J = I + 1、J <= N; ++ j)の 場合(ファブ([I] [J]) -ファブ([MAXX] [J]))MAXX = J。 用(INT J = 1 ; J <= N + 1 ; ++ j)を スワップ([MAXX] [j]は、[I] [J])。 もし(![I] [I]) { coutの << " ノーソリューション" << てendl; リターン 0 ; } 他 { ため(INT J = 1 ; J <= N; ++ j)は 、{ もし(I == j)は続けます。 二重 TEMP = [J] [I] / [I] [I]。 用(int型 K = I + 1、K <= N + 1 ; ++ K) { [j]が[k]が - = [I] [K] * TEMP。 } } [i]が[N + 1 ] / = [I] [I]。 } } のための(INTi = 1 ; iは= N <; ++ I) { のprintf(" %.2lfする\ n "、[I] [N + 1 ])。 } }