Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 13:44   #1
хаскер
Новичок
Джуниор
 
Регистрация: 21.12.2011
Сообщений: 3
По умолчанию метод простых итераций

Код:
Uses CRT;
 
Function F(x:real):real;
begin
  F:=sqrt(1-x)+cos(sqrt(1-x))   end;
Var Eps,fl,f2,x,xl,x2,
A,B:Real;
    N,i:Integer;
Begin
     ClrScr;
     Repeat
           WriteLn(' Введите границы интервала :');
           Write('A=  '); ReadLn (A);
           Write('B=  '); ReadLn (b);
           if  A>=B  then  WriteLn('Границы интервала заданы некорректно!');
     Until  A  <  B;
     WriteLn;
 
Repeat
      WriteLn('Укажите необходимую точность вычислений:') ;
      Write ('Eps= ');  ReadLn (Eps);
      if Eps<= 0 then WriteLn('Eps может иметь только положительные значения! ');
Until Eps > 0;
WriteLn;
 
WriteLn ( 'Метод простых интераций: ' ) ;
N:=Round((B-A)/eps  +  0.5); xl:=A; fl:=F(xl);
for  i:=  1 to N  do  begin
     x2:= xl+(B - A) / N;
     f2:= F(x2);
     if  fl*f2  <= 0 then  WriteLn('Нуль функции на x=  ',(x2  +  xl)/2 :12 :8);
     xl:= x2;   fl:= f2 ;
end;
WriteLn (' Выполнено  ' ,   N,   ' шагов.');  WriteLn;
ReadLn;
End.
Само мое решение, но препод сказал что метод не реализован и в таком методе не используется FOR, гуглил довольно долго, и не нашел ни одной темы, где была бы полностью описана программа.
Прошу написать код метода простых итераций для паскаля

Последний раз редактировалось Stilet; 30.12.2012 в 11:53.
хаскер вне форума Ответить с цитированием
Старый 21.12.2011, 14:19   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

конечно не используется вы ж точность вводите
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 21.12.2011, 16:29   #3
хаскер
Новичок
Джуниор
 
Регистрация: 21.12.2011
Сообщений: 3
По умолчанию

не могли бы написать код цикла?
чтобы находил х0 и подставлял его в функцию и это будет х1
потом х1 в исходную функцию и это будет х2
и т.д.
хаскер вне форума Ответить с цитированием
Старый 21.12.2011, 16:41   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Все уже давно написано
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 21.12.2011, 16:46   #5
хаскер
Новичок
Джуниор
 
Регистрация: 21.12.2011
Сообщений: 3
По умолчанию

значит я плохо искал
благодарю
хаскер вне форума Ответить с цитированием
Старый 21.12.2011, 17:01   #6
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

хаскер, не мешало бы разобраться с самим алгоритмом метода простых итераций (желетельно еще до кодирования, на бумажке - так много вещей проясняется).
Вот код для паскаля, правда функция здесь другая, но ничего, свою вставите, а еще дооформите по вкусу и т.д.
Код:
uses crt;
var a,b,x1,x2,eps: real;
begin
 clrscr;
 writeln('Vvedite levuyu granitsu interala');
 readln(a);
 writeln('Vvedite pravuyu granitsu interala');
 readln(b);
 writeln('Vvedite tochnost');
 readln(eps);
 x1:=(b+a)/2;
 repeat
  x2:=x1;
  x1:=ln(exp(-x1)+2);   { <---- Siuda vstavliat svoyu functciyu }
 until abs((x1-x2)/x2)<=eps;
 writeln('KOPEHb= ',x1:8:4);
 readln;
end.
З.Ы. И потом Mad_Cat прав - тема избитая.
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 30.12.2012, 03:30   #7
wolfkb
 
Регистрация: 15.12.2010
Сообщений: 3
По умолчанию

Цитата:
Сообщение от tsar_ Посмотреть сообщение
хаскер, не мешало бы разобраться с самим алгоритмом метода простых итераций (желетельно еще до кодирования, на бумажке - так много вещей проясняется).
Вот код для паскаля, правда функция здесь другая, но ничего, свою вставите, а еще дооформите по вкусу и т.д.
Код:
uses crt;
var a,b,x1,x2,eps: real;
begin
 clrscr;
 writeln('Vvedite levuyu granitsu interala');
 readln(a);
 writeln('Vvedite pravuyu granitsu interala');
 readln(b);
 writeln('Vvedite tochnost');
 readln(eps);
 x1:=(b+a)/2;
 repeat
  x2:=x1;
  x1:=ln(exp(-x1)+2);   { <---- Siuda vstavliat svoyu functciyu }
 until abs((x1-x2)/x2)<=eps;
 writeln('KOPEHb= ',x1:8:4);
 readln;
end.
З.Ы. И потом Mad_Cat прав - тема избитая.
Это не метод итераций, это метод половинного деления? Или я ошибаюсь?
wolfkb вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод простых итераций Su-34 Помощь студентам 0 07.12.2011 16:11
метод простых итераций, с++ kaljan775 Помощь студентам 0 08.03.2011 16:55
Метод простых итераций bloodargus Общие вопросы C/C++ 0 24.11.2010 19:20
Метод простых итераций bloodargus Общие вопросы C/C++ 1 20.11.2010 12:48
метод простых итераций dimitriy91 Общие вопросы C/C++ 0 25.10.2010 15:49