演算法導論28(矩陣運算)

2021-07-03 12:01:21 字數 1055 閱讀 8086

28.1 求解線性方程組ax

=b,p

a=lu

⇒lux

=pb⇒

ly=p

b,ux

=y

28.2 矩陣求逆ax

=e⇒a

xi=e

iaxi

=ei,

pa=l

u⇒ly

i=pe

i,ux

i=yi

28.3 對稱正定矩陣和最小二乘逼近

推論28.6:乙個對稱正定矩陣的lu

分解永遠不會出現除數為0的情形。

最小二乘逼近at

ac=a

ty⇒c

=(at

a)−1

aty⇒

a+=(

ata)

−1at

,c=a

+y

vector

lupsolve(vector

> l,vector

> u,vector

pi,vector

b)//lu分解

void ludecomposition(vector

> a,vector

> &l,vector

> &u)

for(int i=0;ifor(int j=0;j0;

}for(int k=0;kfor(int i=k+1;ifor(int i=k+1;ifor(int j=k+1;j//lup分解

bool lupdecomposition(vector

> &a,vector

&pi)

}if(p==0)return

false;

swap(pi[k],pi[k0]);

for(int i=0;ifor(int i=k+1;ifor(int j=k+1;jreturn

true;

}

演算法導論 矩陣乘法strassen演算法

矩陣運算在做科 算時是必不可少的,如果採用matlab來計算,這倒也容易。但是如果是自己寫c或者c 一般而言,需要做三次迴圈,其時間複雜度就是o n 3 上圖給出了我們一般會採用的方法,就是對應元素相乘和相加。如果把c a b進行分解,可以看出,這裡需要進行8次的乘法運算 分別是 r a e b g...

演算法導論 矩陣鏈乘法

問題描述 給定有n個連乘矩陣的維數,要求計算其採用最優計算次序時所用的乘法次數,即所要求計算的乘法次數最少。例如,給定三個連乘矩陣的維數分別是10 100,100 5和5 50,採用 a1a2 a3,乘法次數為10 100 5 10 5 50 7500次,而採用a1 a2a3 乘法次數為100 5 ...

演算法導論 矩陣相乘(一)

矩陣的相乘,這個計算方法就直接看下面的原始碼實現 void mul array int a array array size int b array array size int c array array size int size 這個是最暴力的方法,演算法本身就是按照定義來進行計算的,這裡提一...