IT入門B2 ー 連立一次方程式 ー.

Slides:



Advertisements
Similar presentations
Absolute Orientation. Absolute Orientation の問題 二つの座標系の間における剛体 (rigid body) 変換を復元す る問題である。 例えば: 2 台のステレオカメラから得られた3次元情報の間の関 係を推定する問題。 2 台のステレオカメラから得られた3次元情報の間の関.
Advertisements

大規模な三角 Toeplitz 線形方 程式の高速解法とその応用 ○ 安村 修一(法政大学 4 年) 李 磊(法政大学) 日本応用数理学会「行列・固有値の解法とその応用」研究部会 第6回研究会.
1 線形代数学. 2 履修にあたって 電子情報システム学科 必修 2005 年度1セメスタ開講 担当 草苅良至 (電子情報システム学科) 教官室: G I 511 内線: 2095 質問等は上記のいずれかに行なうこと。 注意計算用のノートを準備すること。
IT 入門 B2 ー 連立一次方程式( 2 ) ー. ガウスの消去法の問題点 – 浮動小数点数の特殊な値 – 数学関数 ピボット選択つきガウスの消去法 演習 授 業 内 容 授 業 内 容.
コンピュータ基礎実験 第1 0回 コンピュータープログラミン グ ( C 言語)(8) 1.乱数(復習) 2.配列とその利用.
原子動力工学特論 課題2 交通電子機械工学専攻 2003310 齋藤 泰治.
データ解析
配列の宣言 配列要素の初期値 配列の上限 メモリ領域 多次元配列 配列の応用
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
Problem J Tile Puzzle 原案:野田 担当:平野,吉田,泉,松本.
C言語 配列 2016年 吉田研究室.
4.3 連立1次方程式   Ax = b   (23) と書くことができる。
数個、数十個のデータ点から その特徴をつかむ
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
本時の目標 連立方程式の加減法のしかたを理解し、加減法を用いて連立方程式を解くことができる。
プログラミング論 I 行列の演算
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
連立一次方程式 a11x1+a12x2+a13x3+...+a1nxn= b1
3 一次関数 1章 一次関数とグラフ §3 一次関数の式を求めること          (3時間).
原子動力工学特論 課題 3、4 交通電子機械工学専攻   齋藤 泰治.
常微分方程式と偏微分方程式 1.常微分方程式 独立変数が一個のもの 振動の運動方程式 2.偏微分方程式 独立変数が二個以上のもの
C言語 配列 2016年 吉田研究室.
情報科学 第7回 数値解析(2).
問題 1 フィボナッチ数列 xn は次で定義される。
コンピュータープログラミング (C言語)(8) 1.乱数(復習) 2.配列とその利用
第二回 連立1次方程式の解法 内容 目標 連立1次方程式の掃出し法 初期基底を求める 連立1次方程式を掃出し法を用いてExcelで解析する
構造体.
数値解析シラバス C言語環境と数値解析の概要(1回) 方程式の根(1回) 連立一次方程式(2回) 補間と近似(2回) 数値積分(1回)
応用数理工学特論 第5回 計算理工学専攻 張研究室 山本有作.
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
第7回 条件による繰り返し.
情報科学 第7回 数値解析(2).
数学 ---> 抽象化、一般化 より複雑な関係ー>解析学 一次関数 y=ax+b より多くの要素ー>線形代数 x y f(x) y1 x1
C言語講座 第3回 ポインタ、配列.
プログラムの制御構造 選択・繰り返し.
プログラミング2 関数
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
プログラミング演習I 行列計算と線形方程式の求解
LU分解を用いた連立一次方程式.
高度プログラミング演習 (03).
知能情報工学演習I 第12回(後半第6回) 課題の回答
第7回 条件による繰り返し.
「R入門」  5.7 行列に対する諸機能  10月23日 (木) 発表者 大城亜里沙.
導電性高分子材料の電子状態計算に現れる連立一次方程式に対する 並列直接解法の高性能化
ポリゴンメッシュ (2) - 変形と簡略化- 東京大学 精密工学専攻 大竹豊 資料および授業の情報は :
高度プログラミング演習 (05).
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
配列変数とポインタ 静的確保と動的確保 ポインタ配列 2次元配列 時間計測 第1回レポートの課題
プログラミング 3 2 次元配列.
データ解析 静岡大学工学部 安藤和敏
連立一次方程式 a11x1+a12x2+a13x3+...+a1nxn= b1
行列式 方程式の解 Cramerの公式 余因数展開.
回帰分析(Regression Analysis)
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
精密工学科プログラミング基礎 第7回資料 (11/27実施)
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
2008年6月5日 非線形方程式の近似解 2分法,はさみうち法,Newton-Raphson法)
ニュートン法による 非線型方程式の解.
Cプログラミング演習 ニュートン法による方程式の求解.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
3 一次関数 1章 一次関数とグラフ §4 方程式とグラフ         (3時間).
プログラミング基礎a 第5回 C言語によるプログラミング入門 配列と文字列
プログラミング入門2 第5回 配列 変数宣言、初期化について
第4回 配列.
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
第5回 配列.
プログラミング演習I 補講用課題
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

IT入門B2 ー 連立一次方程式 ー

 授 業 内 容  行列,ベクトルの表現法と行列の演算 連立一次方程式の解法 ガウスの消去法 具体例 前進消去 後退代入 ピボット選択 演習

行列,ベクトルの表現法 C言語で,行列やベクトルを表現するには? ベクトル:配列の利用 double x[N];  行列,ベクトルの表現法  C言語で,行列やベクトルを表現するには? ベクトル:配列の利用 double x[N]; ⇒ x[0]~x[N-1]のN個の要素を確保 行列:2次元配列の利用 double a[N][N]; ⇒ a[0][0], a[0][1], … , a[0][N-1], a[1][0], a[1][1], … , a[1][N-1], …… a[N-1][0], a[N-1][1], … , a[N-1][N-1] の(N×N)個の要素を確保

行列,ベクトルの表現 #include <stdio.h> int main(void) { int i, j; double x[3] = {-33.0, 9.0, 6.0}; double a[3][3] = {{2.0, 4.0, 6.0}, {3.0, 8.0, 7.0}, {5.0, 7.0, 21.0}}; printf("x = \n"); for (i=0; i<3; i++) { printf("%6.2f\n", x[i]); } printf("a = \n"); for (i=0; i<3; i++) { for (j=0; j<3; j++) { printf(" %.2f", a[i][j]); } printf("\n"); return 0;

行列の演算 n×n行列 A と n次元ベクトル x の積を計算するプログラムを作ってみよう.  行列の演算  n×n行列 A と n次元ベクトル x の積を計算するプログラムを作ってみよう. 計算結果を n次元ベクトル y に代入することにすると, これを具体的に記述すると,

ベクトル y の各成分は と記述できる. ベクトル y の計算 for(i = 0; i < n; i++){ の計算 }

各成分 の計算: 各項 ( j =0,1,…,n-1)の総和を計算する. 成分 の計算 y[i] = 0.0; 各成分 の計算: 各項 ( j =0,1,…,n-1)の総和を計算する. 成分 の計算 y[i] = 0.0; for(j = 0; j < n; j++){ y[i] += a[i][j]*x[j]; } y[i] += a[i][j]*x[j]; は y[i] = y[i] + a[i][j]*x[j]; と同じ意味.

まとめると,行列 A とベクトル x の積 y を計算するプログラムは以下のようにして実現できる: for(i = 0; i < n; i++){ y[i] = 0.0; for(j = 0; j < n; j++){ y[i] += a[i][j]*x[j]; }

 演 習  以下の行列 A とベクトル x の積( )を計算するプログラムを作ってみよう: 

連立一次方程式の解法 直接解法 ガウスの消去法 LU分解法 … 反復解法 ヤコビ法 ガウス・ザイデル法  連立一次方程式の解法  直接解法 ガウスの消去法 LU分解法 … 反復解法 ヤコビ法 ガウス・ザイデル法 ガウスの消去法を用いて連立一次方程式の解を計算する プログラムを作成しよう

 ガウスの消去法  まず,具体例として3元連立方程式 を解くことを考えよう.

[第1列消去] ②,③からxを消去: ②-①×3/2 ③-①×5/2 ① ② ③ ① ②’ ③ ① ②’ ③’

[第2列消去] ③’からyを消去: ③’-②’×(-3/2) 各列の係数を順次消去していく:前進消去 ① ②’ ③’ ① ②’ ③”

③”から z = 6 zの値を②’に代入し y = 9 y, zの値を①に代入し x = -33 求まった変数の値を順次代入しながら 解を計算する:後退代入 ① ②’ ③”

ガウスの消去法 前進消去と後退代入の組み合わせにより連立一次方程式の 解を求める手法 以下,連立一次方程式  ガウスの消去法  前進消去と後退代入の組み合わせにより連立一次方程式の 解を求める手法 以下,連立一次方程式 の解を計算するプログラムを作成することを目標とする.

前進消去のプログラムでの実現 に対し,第0列消去,第1列消去,… と繰り返し, 同じ解を持つ以下の方程式へと変形する:

前進消去のプログラムでの実現 に対し,第k列消去を,k = 0, 1, 2, … , (n-2) について 繰り返し行えばよい. 前進消去 for(k=0; k<=n-2; k++){ 第k列消去 }

前進消去のプログラムでの実現 [第k列消去]

[第k列消去]

[第k列消去] 第k列消去 for (i=k+1; i<=n-1; i++) { r = a[i][k]/a[k][k]; for (j=k+1; j<=n-1; j++) { a[i][j] = a[i][j] – a[k][j]*r; } b[i] = b[i] – b[k]*r;

後退代入のプログラムでの実現 第(n-1)行: 第(n-2)行: 第 i 行:

後退代入のプログラムでの実現 for (i=n-1; i>=0; i--) { } 考えてみよう

 演 習  ガウスの消去法を実現するプログラムを完成させて,下記の連立一次方程式の解を計算してみよう: ただし