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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2010, 15:49   #1
leshij
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 14
Печаль Метод итераций через процедуру

Всем привет. Дано такое задание, что решить уравнение: fx=3x^4+4x^3-12x^2+1 нужно решить его 4-мя методами в Delphi. Тремя методами вышло, а вот итерации всё не выходят.
И решить надо используя процедуру.
Помогите, подскажите как, так как уже перечитанно уйма литературы, но как-то не доходит всё ещё как решить. Да и в нете если и есть по этому методу, то через функцию, а надо через процедуру.

Не совсем доходит...
leshij вне форума Ответить с цитированием
Старый 04.12.2010, 16:29   #2
Gambler
Игрок
Форумчанин
 
Аватар для Gambler
 
Регистрация: 29.10.2006
Сообщений: 367
По умолчанию

алгоритм расскажи. Поможем реализовать.
Жизнь всегда игра. Но смерть - не всегда поражение.

#define true (Math.random()>0.5) //Удачной отладки
Gambler вне форума Ответить с цитированием
Старый 04.12.2010, 16:37   #3
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Метод итераций
Код:
program nn;
 type f=function (z:real):real;
 var x, eps, s:real;

 function tralialia (x:real):real; far;
 begin
   tralialia:=(sin(x)/2)+1;
 end;

 function otvet (operation:f; eps:real):real;
 var itt:integer;
 z:real;
 begin
 z:=0;
 itt:=0;
 otvet:=operation (z);
 repeat
    z:=x;
    x:=operation (z);
    otvet:=x;
    inc (itt);
 until abs (z-x)<eps;
 end;
 begin
  writeln ('Vvedit tochnist');
  readln (eps);
  s:=otvet (tralialia, eps);
  writeln (S:0:10);
  readln;
 end.
ответ и есть нужная функция) в процедуру переделай сам)
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 04.12.2010, 16:51   #4
leshij
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 14
По умолчанию

алгоритм таков что:
исходная f(x)=0
из исходной выводим x=g(x)
x=x0 (любое значение делаем стартовым из интервала [a,b]
x1=g(x0)
x2=g(x1)
...
xi=g(xi-1)
покудо abs(f(xi))<eps

Код:
 function fx(x:single):single;
 begin
  fx:=3*sqr(x)*sqr(x)+4*x*sqr(x)-12*sqr(x)+1;
  end;
  function gx(x:single):single;
  begin
   gx:= (12*sqr(x)-4*x*sqr(x)-1)/3;
   end;

Procedure iteraciji(a:single;var xx:yyy;
                            var itt:byte);
 var    i:integer;
 fc:single;

 begin
 i:=0;

 k[i]:=a;
 repeat
  k[i+1]:=gx(k[i]);
  fc:=fx(k[i+1]);
  i:=i+1;
 

  until   abs(gx(k[i]))<eps;

   if abs(fc)>eps then xx:=floattostrf(k[i+1],fffixed,18,6)
    else
      xx:='net korna';
      itt:=i;

  end;

procedure TForm1.Button2Click(Sender: TObject);
var
 i:byte;
begin
   eps:=strtofloat(edit4.text);
 for i:=1 to nk do
   begin
  iteraciji(a[i],xiteraciji, iter_iteraciji);
  stringgrid2.cells[7,i]:=xiteraciji;
  stringgrid2.cells[8,i]:=inttostr(iter_iteraciji);
  end;
запускаю, ввожу данные и выкидывает с Floating point overflow на строчку где fx в функции написанно

Последний раз редактировалось leshij; 04.12.2010 в 16:54.
leshij вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод простых итераций dimitriy91 Общие вопросы C/C++ 0 25.10.2010 15:49
Метод итераций Masip Общие вопросы Delphi 4 10.06.2010 18:42
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08
Метод итераций и метод Зейделя prikolist Общие вопросы C/C++ 40 18.06.2009 17:40
Метод итераций и комбинированный метод prikolist Общие вопросы C/C++ 2 16.06.2009 20:51