Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

подскажите в чём ошибка:

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Первый вопрос] >> подскажите в чём ошибка:
Имя
Сообщение << Старые топики   Новые топики >>
подскажите в чём ошибка: - 2009-12-13 15:02:56.093333   
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;

прога работает, но не изменяются значения

и по моему, я что-то не то сделал.

можете помочь? и если вас не затруднит выложите скан-коды для построения таблицы






Post #: 1
Страниц:  [1]
Все форумы >> [Первый вопрос] >> подскажите в чём ошибка:







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.