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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2014, 16:20   #1
Atherakhia
 
Регистрация: 12.12.2014
Сообщений: 8
По умолчанию Метод Симпсона на чётном отрезке разбиения (Delphi)

Здравствуйте, написал программу для нахождения определённого интервала методом Симпсона, но она работает неправильно. Прошу помочь в нахождении ошибки.

Код:
program project1;

var
  x0, yn, y0, a, b, h, s1, s2, int: real;
  i, n: byte;

function F(x: real): real;
begin
  F:=2*x;
end;

begin
write('Vvedite nachalnoe znacenie funkcii=');
readln(a);
write('Vvedite konecnoe znacenie funkcii=');
readln(b);
write('Vvedite tchislo otrezkov razbienia=');
readln(n);
if (n mod 2)<>0 then begin
  n:=n+1;
end;
h:=(b-a)/n;
x0:=a;
y0:=F(x0);
for i:=1 to (n-1) do begin
  if (i mod 2)<>0 then
  begin
    y0:=F(x0);
    x0:=x0+h;
    s1:=y0;
  end;
end;
for i:=2 to (n-2) do begin
  if (i mod 2)=0 then
  begin
    y0:=F(x0);
    x0:=x0+h;
    s2:=y0;
  end;
end;
for i:=1 to n do begin
  y0:=F(x0);
  x0:=x0+h;
  yn:=y0;
end;
int:=(h/3)*(y0+(4*s1)+(2*s2)+yn);
writeln('int=', int:6:3);
readln
end.
Atherakhia вне форума Ответить с цитированием
Старый 12.12.2014, 17:01   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,987
По умолчанию

Код:
program project1;

var
  x0, yn, y0, a, b, h, s1, s2, int: real;
  i, n: byte;

function F(x: real): real;
begin
  F:=2*x;
end;

begin
write('Vvedite nachalnoe znacenie funkcii=');
readln(a);
write('Vvedite konecnoe znacenie funkcii=');
readln(b);
write('Vvedite tchislo otrezkov razbienia=');
readln(n);
if (n mod 2)<>0 then begin
  n:=n+1;
end;
h:=(b-a)/n;
x0:=a;
y0:=F(x0);
for i:=1 to (n-1) do begin
  if (i mod 2)<>0 then
  begin
    y0:=F(x0);
    x0:=x0+h;
    s1:=s1+y0;
  end;
end;
x0:=a;
for i:=2 to (n-2) do begin
  if (i mod 2)=0 then
  begin
    y0:=F(x0);
    x0:=x0+h;
    s2:=s2+y0;
  end;
end;
for i:=1 to n do begin
  y0:=F(x0);
  x0:=x0+h;
  yn:=yn+y0;
end;
int:=(h/3)*(y0+(4*s1)+(2*s2)+yn);
writeln('int=', int:6:3);
readln
end.
Проверяй, я точно не знаю в чем состоит метод Симпсона!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод Симпсона fedmial Паскаль, Turbo Pascal, PascalABC.NET 3 18.04.2012 14:36
Метод Симпсона MrVi Помощь студентам 2 21.03.2012 21:51
Метод трапеций и метод Симпсона (C) Zadora Помощь студентам 3 19.12.2011 09:51
Метод Симпсона. Демик Помощь студентам 9 28.11.2011 01:47
Turbo Pascal[програмыки : текстовая\метод симпсона\метод половинного деления qsccsq Помощь студентам 7 24.12.2010 05:23