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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2015, 17:41   #1
Триш
Пользователь
 
Регистрация: 13.05.2015
Сообщений: 18
По умолчанию помогите написать программу по итерационным циклам!!!

ааа.JPG
не могу разобраться с формулой
в чем ошибки
Код:
Program Lab4;
 Var
  x,y0, yn1, eps: real;
  yn: integer;
 Begin
  x:=2;
  eps:=0.01;
  y0:=1;
  y0:=yn;
  yn1:=yn-((sqr(x-1)+sqr(yn-2)-9)*(-2+yn));
  writeln('При х=',x,' и eps=',eps);
  while abs(yn1-yn) > eps do
    begin
      Inc(yn);
      yn1:=yn-((sqr(x-1)+sqr(yn-2)-9)*(-2+yn));
    end;
  writeln('yn=', yn:6, ' yn1=', yn1:6:2);
 End.

Последний раз редактировалось Аватар; 13.05.2015 в 18:55.
Триш вне форума Ответить с цитированием
Старый 13.05.2015, 18:01   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

А что непонятно?
x=2
F(x,y)=(x-1)^2+(y-2)^2-9
F'y(x,y)=dF/dy=2(y-2)
сначала y=1, потом подставляете в итерационную формулу , получаете следующее y= - 2,5 , и т.д. В конце концов y = -0.828427125.

С помощью repeat, или while или for ... Break

PS Пока писал, уже добавили...
Код:
y0:=yn;  // чему это равно вначале, и зачем вообще y0?
yn1:=yn-((sqr(x-1)+sqr(yn-2)-9)*(-2+yn));  // не умножить, а делить на производную
 // и производная F'y(x,y)= 2*(y-2)
И вообще, мне кажется у вас переменные yn, yn1 не будут меняться. Ведь после проверки на эпсилон нужно присваивать одно другому, чтобы итерация была, а не просто топтание на месте.

А Inc(yn); = это не то.Здесь вообще будет ошибка при компиляции.
Изображения
Тип файла: jpg i.JPG (26.0 Кб, 33 просмотров)

Последний раз редактировалось type_Oleg; 13.05.2015 в 18:10.
type_Oleg вне форума Ответить с цитированием
Старый 13.05.2015, 18:51   #3
Триш
Пользователь
 
Регистрация: 13.05.2015
Сообщений: 18
По умолчанию

вообще не выводит ответа(

Код:
Program Lab4;
 Var
  x,yn,yn1, eps: real;
  n: integer;
 Begin
  x:=2;
  eps:=0.01;
  yn:=1;
  n:=1;
  yn1:=yn-((sqr(x-1)+sqr(yn-2)-9)/2*(yn-2));
  writeln('При х=',x,' и eps=',eps);
  while abs(yn1-yn) > eps do
    begin
      n:=n+1;
      yn1:=yn-((sqr(x-1)+sqr(yn-2)-9)/2*(yn-2));
    end;
  writeln('yn=', yn:6, ' yn1=', yn1:6:2);
 End.

Последний раз редактировалось Аватар; 13.05.2015 в 18:55.
Триш вне форума Ответить с цитированием
Старый 13.05.2015, 19:01   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от Триш Посмотреть сообщение
вообще не выводит ответа(
И хорошо, что не выводит.
Куча ошибок. Например,
Код:
yn1:=yn-((sqr(x-1)+sqr(yn-2)-9)/2*(yn-2));
Вы не разбираетесь в приоритетах операций.
Если ... 8/2*4 означает, что сначала 8 разделят на 2, а потом получившуюся 4 умножат на 4.

И вообще, полная чушь .
Зачем это
Код:
n:=n+1;
эта n где нибудь используется?

Вы вообще не въезжаете, что пишете
Вот, все работает
Код:
Program Lab4;
const EPS=0.01;
var x,yn,yn1:Real;
begin
 x:=2;
 yn:=999; // любое число <> yn1
 yn1:=1;
 while Abs(yn-yn1)>EPS do
  begin
   yn:=yn1;
   yn1:=yn-(Sqr(x-1)+Sqr(yn-2)-9)/(2*(yn-2));
  end;
 WriteLn(yn1);
 ReadLn;  // это чтобы окошко не исчезало мгновенно, и чтобы не казалось, что " вообще не выводит ответа"
end.
type_Oleg вне форума Ответить с цитированием
Старый 13.05.2015, 19:32   #5
Триш
Пользователь
 
Регистрация: 13.05.2015
Сообщений: 18
По умолчанию

про n мне говорил сам препод и сказал, что ошибка в формуле
спасибо большое
Триш вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу, которая будет производить отделение корней графическим способом и уточнить решение итерационным алгоритмом Olecinia Паскаль, Turbo Pascal, PascalABC.NET 28 18.12.2014 16:41
помогите написать программу FeLiPoN Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 24.03.2014 13:25
Помогите написать программу Федор Емельяненко Фриланс 6 16.12.2013 15:29
помогите написать программу!!! egorov.i Паскаль, Turbo Pascal, PascalABC.NET 0 17.10.2013 13:41
ПОМОГИТЕ РЕЩИТЬ ЗАДАЧКУ ПО ЦИКЛАМ! КПСС Помощь студентам 7 24.10.2007 21:46