Dzień dobry! Piszę program, który ma dokonać eliminację Gaussa macierzy A. Piszę to w Octave/Matlab.
Postęp czyniłem dopóki nie trzeba było umieścić w programie jakiejkolwiek pętli for albo while. Jakąkolwiek z tych 2 pętli wstawię do programu to mam error i wskazaną linijkę ze słowem "while/for". Nawet jak skopiuję przykładową pętlę dawaną przez Octave po użyciu "help for" albo "help while", to tak się dzieje.
- wszystkie średniki w programie są ok.
- nie powtarzam nazwy zmiennych
- daję endfor/endwhile po zakończeniu pętli.
function [R,p,q] = ROZKLAD(A,s)
[m,n]=size(A);
if (m<n||m>n) error('Macierz nie jest kwadratowa');
if (det(A)==0)
error('Macierz ma zerowy wyznacznik');
endif
endif
n=size(A,1);
c=s;
switch (c)
case 0
{
disp('Bez wyboru elementu glownego');
R=A;
p=[1:n];
q=[1:n];
## Do tego momentu wszystko dziala,
## musze uzyc petli aby zeschodkowac ta macierz a nie moge tego zrobic.,
k=1;
while (k<n) k++;
##{ ;##for i = k+1:n do
##R(i,k)=R(i,k)/R(k,k);
##endfor;
##for j= (k+1):n do {
## R(i,j)=R(i,j)-R(i,k)/R(k,j);}
##endfor;
##}
endwhile
## od tego momentu znow wszystko dziala
}
;
case 1
{
}
;
case 2
{
}
;
otherwise error('Wprowadzono zla wartosc s');
endswitch
disp(R);
disp(p);
disp(q);
endfunction
Parametr s określa czy schodkowanie bez pivotngu/z pivotingiem w kolumnie czy z pivotingiem w wierszu i kolumnie. p oraz q to wektory od macierzy permutacji, ale w moim przypadku bez pivotingu one nie grają roli.