| 478 |   |  | 
                      
                      
                        |   | 478 | Sistem linearnih enačb lahko rešujemo na različne načine. Klasična Gaussova eliminacijska metoda se pri konkretnih problemih pokaže kot počasna (N^3^ operacij). Predlagana metoda, ki se v praksi tudi največ uporablja za reševanje sistema enačb je ''Lower/Upper'' dekompozicija, ki ima časovno zahtevnost 1/3N^3^. Reševanje sistema po tej metodi se sestoji iz | 
                      
                        |   | 479 | dveh korakov: | 
                      
                        |   | 480 |  | 
                      
                        |   | 481 |   1. '''decomposition''', ki razdeli matriko '''M''' na dve matriki (zgornja / spodnja), katerih produkt je '''M'''.  | 
                      
                        |   | 482 |   Obe matriki sta shranjeni v matriki '''M''', le da je zgornji del matrike '''M''' matrika '''U''', spodnji pa matrika '''L'''. | 
                      
                        |   | 483 |    | 
                      
                        |   | 484 |   2. '''backsubstitution''', ki množi desno stran enačbe z zgornjo | 
                      
                        |   | 485 |   matriko in pri tem izračuna neznane linearne spremenljivke. | 
                      
                        |   | 486 |  | 
                      
                        |   | 487 | Rešujemo sistem enačb velikosti ''N''. Matrika ''M'' predstavlja levo stran sistema enačb. ''N'' opisuje velikost matrike ''M''. ''indx'' je celoštevilčni vektor permutacij v matriki ''M'' in se prenaša naprej v podprogram ''lubksb'', kateri zahteva še desno stran sistema enačb v vektorju ''u''. Po izračunu se rezultat nahaja v vektorju ''u''. Prejšnje vrednosti matrike ''M'' in vektorja ''u'' se ne ohranijo! Potek izračuna sistema linearnih enačb prikazuje naslednji primer, ki izpiše rezultat: | 
                      
                        |   | 488 |  | 
                      
                        |   | 489 | {{{ | 
                      
                        |   | 490 | u[0]= 1 | 
                      
                        |   | 491 | u[1]= 2 | 
                      
                        |   | 492 | u[2]= 3 | 
                      
                        |   | 493 | u[3]= 4 | 
                      
                        |   | 494 | u[4]= 5 | 
                      
                        |   | 495 | }}} | 
                      
                        |   | 496 |  | 
                      
                        |   | 497 | {{{ | 
                      
                        |   | 498 | #!c | 
                      
                        |   | 499 | /******   M*u=b   ******/ | 
                      
                        |   | 500 | #include <stdio.h> | 
                      
                        |   | 501 | #include <stdlib.h> | 
                      
                        |   | 502 | #include "lupack.h" | 
                      
                        |   | 503 |  | 
                      
                        |   | 504 | #define N 5 | 
                      
                        |   | 505 |  | 
                      
                        |   | 506 | float M[N*N]={2,  3,  0,  0,  0, | 
                      
                        |   | 507 |               3,  0,  4,  0,  6, | 
                      
                        |   | 508 |               0, -1, -3,  2,  0, | 
                      
                        |   | 509 |               0,  0,  1,  0,  0, | 
                      
                        |   | 510 |               0,  4,  2,  0,  1}; | 
                      
                        |   | 511 |  | 
                      
                        |   | 512 | float b[N]={8, 45, -3, 3, 19}; | 
                      
                        |   | 513 |  | 
                      
                        |   | 514 | int main() | 
                      
                        |   | 515 | { | 
                      
                        |   | 516 |   int i; | 
                      
                        |   | 517 |   int *indx; | 
                      
                        |   | 518 |   float d; | 
                      
                        |   | 519 |   | 
                      
                        |   | 520 |   indx=(int *)malloc(N*sizeof(int)); | 
                      
                        |   | 521 |   ludcmp(M, N, indx, &d); | 
                      
                        |   | 522 |   lubksb(M, N, indx, b); | 
                      
                        |   | 523 |   free(indx); | 
                      
                        |   | 524 |  | 
                      
                        |   | 525 |   for(i=0;i<N;i++) | 
                      
                        |   | 526 |   { | 
                      
                        |   | 527 |     printf("u[%d]= %g\n", i, b [i]); | 
                      
                        |   | 528 |   } | 
                      
                        |   | 529 |   return 0; | 
                      
                        |   | 530 | }  | 
                      
                        |   | 531 | }}} | 
                      
                        |   | 532 |  | 
                      
                        |   | 533 | Kodo za reševanje sistema linearnih enačb v jeziku C lupack.c uporabimo kot zunanje podprograme. | 
                      
                        |   | 534 |  | 
                      
                        |   | 535 | Programe lahko dobimo s klikom na naslednje povezave: | 
                      
                        |   | 536 |  | 
                      
                        |   | 537 | [http://www.lecad.uni-lj.si:8000/vaje/attachment/wiki/c-intro/example-lin.c example-lin.c] - ''Primer reševanja sistema linearnih enačb'' | 
                      
                        |   | 538 |  | 
                      
                        |   | 539 | [http://www.lecad.uni-lj.si:8000/vaje/attachment/wiki/c-intro/lupack.c lupack.c] - ''Obvezen dokument za reševanje sistema linearnih enačb'' | 
                      
                        |   | 540 |  | 
                      
                        |   | 541 | [http://www.lecad.uni-lj.si:8000/vaje/attachment/wiki/c-intro/lupack.h lupack.h] - ''Obvezen dokument za reševanje sistema linearnih enačb'' | 
                      
                        |   | 542 |  | 
                      
                        |   | 543 |  | 
                      
                        |   | 544 |  |