Misalkan adalah matriks padat dan Anda harus menyelesaikan , . Jika adalah cukup besar maka tidak ada yang salah dalamn × n A x i = b i i = 1 ... m mAn×n Axi=bii=1…mm
V = inv(A);
...
x = V*b;
Flops adalah untuk dan untuk , oleh karena itu untuk menentukan nilai impas untuk beberapa eksperimen diperlukan ...O ( n 2 ) mO(n3)inv(A)
O(n2)V*b
m
>> n = 5000;
>> A = randn(n,n);
>> x = randn(n,1);
>> b = A*x;
>> rcond(A)
ans =
1.3837e-06
>> tic, xm = A\b; toc
Elapsed time is 1.907102 seconds.
>> tic, [L,U] = lu(A); toc
Elapsed time is 1.818247 seconds.
>> tic, xl = U\(L\b); toc
Elapsed time is 0.399051 seconds.
>> tic, [L,U,p] = lu(A,'vector'); toc
Elapsed time is 1.581756 seconds.
>> tic, xp = U\(L\b(p)); toc
Elapsed time is 0.060203 seconds.
>> tic, V=inv(A); toc
Elapsed time is 7.614582 seconds.
>> tic, xv = V*b; toc
Elapsed time is 0.011499 seconds.
>> [norm(xm-x), norm(xp-x), norm(xl-x), norm(xv-x)] ./ norm(x)
ans =
1.0e-11 *
0.1912 0.1912 0.1912 0.6183
Dalam contoh sepele ini pra-perhitungan lebih baik daripada maju dan mundur solusi untuk . L U m > 125A−1LUm>125
Beberapa catatan
Untuk analisis stabilitas dan kesalahan, silakan lihat komentar untuk jawaban yang berbeda ini , terutama yang oleh VictorLiu.
Waktu yang diusulkan sama sekali tidak "ilmiah", tetapi dimaksudkan untuk menunjukkan bahwa pendekatan yang diusulkan dalam jawaban oleh Milind R, sementara itu masuk akal jika diimplementasikan dalam C atau Fortran dengan memanggil subrutin LAPACK dan BLAS yang relevan, mungkin terbukti tidak begitu efektif di Matlab, bahkan untuk .m≪n
Pengaturan waktu dilakukan dengan Matlab R2011b pada komputer 12 inti dengan rata-rata beban UNIX 5 yang cukup konstan; tic, toc
waktu terbaik dari tiga probe.