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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2009, 18:38   #1
Hellgrom
Новичок
Джуниор
 
Регистрация: 02.05.2009
Сообщений: 2
По умолчанию Метод итерации для уравнений

Помогите пожалуйста.Нужно оформить метод в качестве процедуры.Заголовок процедуры, реализующей метод, должен иметь вид

Procedure metod (a,b,eps:single; f:fun; var x, fx:single);
Где
a, b – левая и правая границы корня,
eps – абсолютная погрешность вычисления,
f – функция, реализующая функцию f(x),
x – найденный корень,
fx – значение функции в корне

вот сама программа


Код:
{$N+}
Program metod_iteracie;
uses CRT;

const
      max_iter=2; {максимальное количество итераций}
      a=-2;
      b=-1;
      a1=2.8;
      b1=4 ;

Var
 i:integer;
 x1,x01,eps,eps1,x,x0:single;


Function Fun(x:single):single;
begin
 Fun:=2*x*x*x+3*x*x+4*x+5;
end;
Function Fun1(x1:single):single;
begin
 Fun1:=x1+ln(x1)-0.125*exp(x1);
end;

begin 
 clrscr;
 Writeln('Первое уравнение 2*x*x*x+3*x*x+4*x+5) ');
 Writeln('Второе уравнение x+ln(x)-0.125*exp(x)');
 Writeln;
 Writeln('Введите точность вычислений eps для перовго уравнения=');
 readln(eps);
 Writeln('Введите точность вычислений eps для второго уравнения=');
 readln(eps1);
 repeat
   Write('Введите приближённое значение корня первого уравнения x= ');
   readln (x);
 until (x>a) and (x<=b);
 repeat
   Write('Введите приближённое значение корня первого уравнения  x1= ');
   readln(x1);
 until (x1>a1)    and (x1<b1);
 begin {сам метод}
  i:=0;
  repeat
    x0:=x;
    x:=x0+Fun(x0);
    inc(i);
    Writeln('---Итерация',i:3,'   x=',x:6:4);
    Writeln;
    Writeln('F(x)=',Fun(x):6:4);
    Writeln('Точность=',abs(x-x0):6:4);
  until (abs(x-x0)<=eps) or (i>max_iter);

  if(abs(x-x0)<=eps) then
    Writeln('Ответ: X=',x:6:4)
  else
    Writeln('Ответ не найден!За,',max_iter:0,'шагов итерация не сошлась);
 end;

  Writeln;
  writeln;
  writeln;
 begin
  i:=0;
  repeat
    x01:=x1;
    x1:=x01+Fun1(x01);
    inc(i);
    Writeln('---Итерация ',i:3,'   x1=',x1:6:4);
    Writeln;
    Writeln('F(x1)=',Fun(x1):6:4);
    Writeln(' Точность=',abs(x1-x01):6:4);
  until (abs(x1-x01)<=eps1) or (i>max_iter);

 if (abs(x1-x01)<=eps1) then
   Writeln('ЋвўҐв: X=',x1:6:4)
 else
   Writeln('Ответ не найден!За,',max_iter:0,'шагов итерация не сошлась');
end;
end.
Hellgrom вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Qu 1.0 - программа для решения квадратных уравнений DM_bite Софт 5 20.03.2010 22:37
метод для задержки времени wwwbaltazor JavaScript, Ajax 2 23.03.2009 22:30
Программа для решения ситем нелинейных уравнений Appolinaria Помощь студентам 1 09.03.2009 18:53
помогите пожалуйста! нужна программа для решения уравнений. MatrixN2 Помощь студентам 1 06.03.2009 12:29
Изменение расширения файла при каждой итерации Jack Torrance Помощь студентам 3 18.12.2007 23:24