Witam,
znajomy dostał od prowadzącego na uczelni zadanie do wykonania (załącznik), a ja staram się mu je rozwiązać. Polega ono na znalezieniu koncentracji składnika c dla podanego równania.
Metodą jaką wybrałem jest metoda Newtona. Napisałem kod w Pascalu niestety nie do końca działa on tak jak bym chciał. Przy wprowadzeniu wartości początkowej c dla której algorytm ma zacząć obliczać miejsce zerowe i dokładności program wiesza się jeśli dokładność jest większa niż 0.001. Nie wiem czy to wina mojego słabego laptopa czy to jakiś błąd w kodzie. Bardzo proszę o pomoc.
program Untitled;
uses crt;
type
tablica = array[1..100000] of real;
var
c: tablica;
Q,cin,k,K1,V,f,g,z,eps: real;
n: integer;
begin
clrscr;
WriteLn('Program oblicza koncentracje koncowa skladnika c w reaktorze z idealnym wymieszaniem metoda Newtona.');
Write('Podaj Q: ');
ReadLn(Q);
Write('Podaj cin: ');
ReadLn(cin);
Write('Podaj k: ');
ReadLn(k);
Write('Podaj K1: ');
ReadLn(K1);
Write('Podaj V: ');
ReadLn(V);
Write('Podaj x: ');
ReadLn(c[1]);
Write('Podaj dokladnosc obliczen: ');
ReadLn(eps);
n:=1;
repeat
f:=Q*c[n]+2*Q*K1*c[n]*c[n]+Q*K1*K1*c[n]*c[n]*c[n]-Q*cin-2*Q*cin*K1*c[n]-Q*cin*K1*K1*c[n]*c[n]+V*k*c[n];
g:=Q+4*Q*K1*c[n]+3*Q*K1*K1*c[n]*c[n]-2*Q*cin*K1-2*Q*cin*K1*K1*c[n]+V*k;
c[n+1]:=c[n]+(f/g);
z:=c[n+1]-c[n];
until
z<eps;
WriteLn('Szukane stezenie c wynosi: ',c[n+1]);
ReadLn();
end.