Witam. Mam za zadanie dowieść poprawność algorytmu obliczającego średnią harmoniczną N liczb. Wygląda to tak:
s:=a[1];
for i=2 to N do
s:=i/((1/s)/(i-1)+1/a[i]);
Zmieniłem ten kod na pętlę while i wygląda on teraz tak:
s:=a[1];
i:=2;
while i=<N do
begin
s:=i/((1/s)/(i-1)+1/a[i]);
i:=i+1;
end;
Warunek końcowy ma postać:
n
{s=N / Σ 1/a[k]
k=1
Ustaliłem, że niezmiennik pętli powinien wyglądać tak:
i-1
P={s=N / Σ 1/a[k]
k=1
I teraz mam problem, bo nie wychodzi mi przekształcenie (P^B) w taki sposób, żeby móc wykonać instrukcję podstawienia za s. Czy ktoś może mi pomóc w jakiś sposób?