Witam, siedzę już nad tym od tygodnia po 9h dziennie, głowa mi już pęka dosłownie i nie przesadzam, część w pracy próbuję, potem od 17 aż do teraz... kolejny dzień... zmieniam kod, szukam rozwiązań po necie, co rusz zaczynam od nowa i znowu źle, i źle i źle... i znowu od początku... mam już dosyć a czas jest do jutra...
Pewna pani 'profesor' na studiach zaocznych bawi się w przedszkole i grozi karami za źle napisany kod... musi być tak jak ona chce i jak jest w instrukcji, inaczej będzie kara dodatkowe równanie do obliczenia. I nie możemy się odzywać i proponować swoich rozwiazań bo za każdą próbę obniży ocenę, na zajęciach też nie mozemy pytać bo wszystko jest w instrukcji.
To tak z wyżalania się.... studia to jedna wielka pier$%^&na parodia, przepraszam ale głowa mi już pęka. Zaznaczam że studiuje zaocznie... sami dorośli ludzie...
Ehh.... do rzeczy...
Tutaj troche chaosu jaki ta Pani mi napisała w zaszycie:
Chodzi wzór numer 32 muszę go (w parze z kolegą który uznał że rezygnuje... więc jestem sam) przerobić na kod programu:
Jak czegoś nie ma to są zmienne globalne (poniżej pastebina do kodu całego dałem
void liczSiedela() {
double s1 = 0, s2 = 0;
int licznik = 0;
double suma = 1;
do {
suma = 0;
for (int i = 0; i < n; i++) {
s1 = 0;
s2 = 0;
if(licznik == 0) {
xk1[i] = beta[i];
suma = 1;
}
else {
x[i] = xk1[i];
for (int j = 0; j < (i - 1); j++)
s1 += alfa[i][j] * x[j];
for (int j = i + 1; j < n; j++)
s2 += alfa[i][j] * x[j];
// cout << s1 << " " << s2 << endl;
xk1[i] = s1 + s2 + beta[i];
suma += fabs(xk1[i] - x[i]);
}
cout << xk1[i] << " " << x[i] << " " << fabs(xk1[i] - x[i]) << " " << epsilon << endl;
}
licznik++;
cout << suma << endl;
cout << suma/N << endl;
cout << endl;
} while (suma/N > epsilon && licznik < MLI);
}
Coś mało? Pisałem to tydzień....
Cały mój kod: https://pastebin.com/SyqG4vPa
Tutaj kod funkcji liczącej który po kilku modyfikacjach DZIAŁA ale on jest w inny sposób niż ona chce i to właśnie nie przejdzie....
https://pastebin.com/4DsEGXbY
Przykładowa macierz a i wektor b:
https://pastebin.com/b0tAirMh
Ta macierz powyżej ma się obliczyć w 6 iteracjach i to jest "odpowiedź" jeżeli powyższą macierz z wektorem rozwiążę w 6 iteracji i epsilon zakończy sprawę to jest dobrze... Sprawdziłem to na tym "działającym kodzie" który udało mi sięzmodyfikować trochę pod moje rzeczy i działa ale na moim co sam piszę w końcu coś tam jest przypominającego to co ma być ale jest ŹLE
Zalecenia które mi nabazgrała że ledwo się odczytam w zeszycie, trochę chaos ale mniejwięcej moze trochę uzupełni to co siew kodzie dzieje
-Tworzę x[i] = {1,1,1,1,1}
-Najpierw przypisuję tak jak we wzorze do każdego xk1[i] iteracji pierwszej beta[i]
-Zaczynam pętlę do while
-x[i] = xk1[i] - stare xk1[i] przypisuje do x[i] i licze na nowo xk1[i]
-obliczam xk1[i] ze wzoru 32
-jeżeli stop iteracji jest miejszy od epsilon to wypisuję ostateczny zestaw x
-jeżeli nie to zaczynam ponownie do while, więc na starcie wyniki zapisywane są do x[i] a xk1[i] będzie na nowo liczony i tak aż to stopu iteracji albo 30 iteracji.
Nie wiem czego ja tam nie rozumiem... mam wrażenie że całkiem wszystko jest bezsensu i totalnie źle to jak dla mnie jest to kopia tego wzoru z instrukcji... wręcz dokładna... i nie mam pojęcia co tam jest źle. Naprawdę przerabiałem to milion razy, głowa mnie boli tak że nawet leki uspokajające nie pomagają, a ja dalej nie mam pomysłu...
Byłbym wdzięczny za jakąkolwiek pomoc, próbuję wytłumaczenia, miejsce gdzie robię błąd... cokolwiek co mi chociaż trochę wskaże co tam jest źle
Jak na moje tam jest wszystko tip top i właśnie to jest problem bo nie wiem co robię źle, a mam wrażenie że wszystko jest dobrze :(
Trochę chaos ale jestem zdesperowany :((( Pomocy ;/
Jak coś chcecie dopytać to pytajcie, odpowiem na wszystko
Zdesperowany zacząłem szukać po forach... bo nie wiem w co ręce włożyć ;/