Układy równań - macierze
-
- Użytkownik
- Posty: 81
- Rejestracja: 6 sty 2011, o 13:11
- Płeć: Kobieta
- Lokalizacja: Krakow
- Pomógł: 1 raz
Układy równań - macierze
Napisz program rozwiązujący oznaczony układ równan. Nie wolno użyć żadnej biblioteki matematycznej i metody wyznaczników. Liczbę niewiadomych oraz współczynniki definuje użytkownik. (Program ma być napisany w języku C).
Układy równań - macierze
układ n równań liniowych można potraktować jako n płaszczyzn w przestrzeni n-wymiarowej
weźmy jakieś pierwsze przybliżenie, powiedzmy początek układu współrzędnych
a teraz rzućmy ten punkt na pierwszą płaszczyznę
otrzymany punkt rzućmy na drugą
itd.
po rzucie na ostatnią, rzućmy na pierwszą
itd
Z pewnością wymyśliłem koło, ale...
p1=krok(p))
D=sqrt(sum(i=1,N,(p1-p)^2)) \przesunięcie
p=p1;
weźmy jakieś pierwsze przybliżenie, powiedzmy początek układu współrzędnych
a teraz rzućmy ten punkt na pierwszą płaszczyznę
otrzymany punkt rzućmy na drugą
itd.
po rzucie na ostatnią, rzućmy na pierwszą
itd
Z pewnością wymyśliłem koło, ale...
- Czy ten proces jest zawsze zbieżny?
po n rzutach otrzymamy punkt odległy o poprzedniego o pewne D, jak daleko jesteśmy od dokładnego rozwiązania?
Kod: Zaznacz cały
\dane V[N,N], D[N]
\ indeksy od 1 nie od 0 jak np. w języku C
krok(P)={
for(n=1,N,
q=vector(N,i,
P[i] -
V[n,i]* (
sum(j=1,N, V[n,j]*P[j]) -
D[n]
) /
sum(j=1,N, V[n,j]^2); \to można policzyć tylko raz
);
P=q
);
P
}
p=vector(N,i,0.0); \ pierwsze przybliżenie
\ a to można iterować
D=sqrt(sum(i=1,N,(p1-p)^2)) \przesunięcie
p=p1;