Var542
Сообщений: 1
Оценки: 0
Присоединился: 2009-12-13 14:55:34.883333
|
Задание: решить уравнение f(x,g)=0 методом итераций, если f(x)=gcosx-(e^x)/2 c=1, d=2, m=10, Eps=0,001 промежуток [0;1] программный код: program pr2; uses crt; var a,b,h,g,f1a,FI1a,k,c,x,x1,d,eps,Qmax,g_max,f1b,FI1b,eps1,FIx:real; m,i,z:integer; begin clrscr; {ввод значений переменных} write('a='); read(a); write('b='); read(b); write('c='); read©; write('d='); read(d); write('m='); read(m); write('eps='); read(eps1); clrscr; {работа с переменными} h:=(d-c)/m; g:=c; {g-первое значение параметра функции} for i:=1 to (m+1) do begin f1a:=-g*sin(a)-EXP(a)/2; if abs(Qmax)<abs(f1a) then Qmax:=abs(f1a); f1b:=-g*sin(b)-EXP(b)/2; if abs(Qmax)<abs(f1b) then Qmax:=abs(f1b); k:=round(Qmax/2); FI1a:=1+(g*sin(a)-EXP(a)/2)/2; FI1b:=1+(g*sin(b)-EXP(b)/2)/2; if abs(FI1a)<abs(FI1b) then g_max:=abs(FI1b) else g_max:=abs(FI1a); eps:=eps1*((1-g_max))/g_max; z:=0; x:=g_max; repeat FIx:=x-(g*cos(x)-EXP(x)/2)/2; x1:=FIx; z:=z+1; writeln('x1=',x1:9:7); writeln('Fi(x1)=',FIx:9:7); until abs(FIx-x1)<=eps; {изменение параметра функции} g:=c+i*h; end; readkey; end.программа зацикливается, а без этой строки: g:=c+i*h; прога работает, но не изменяются значения и по моему, я что-то не то сделал. можете помочь? и если вас не затруднит выложите скан-коды для построения таблицы
|