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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2010, 18:02   #1
qsccsq
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 11
По умолчанию Pascal [по методу симпсона вычислить значение функции

в данной программе нужно вычислить значение функции(если вы сюда зашли я думаю найдёте эту самую функцию в программе )
границы заданы [0,1] цикл For m:=1 to n-2 do (не уверен что правильно)

исправьте пожалуйста.

вот то что я смог написать
Код:
program name;
uses
  crt;
var
a,b,r,r2,eps :real;
n :integer;
function f(x:real):real;
  begin
    f:=x*exp(x)*sin(x);
  end;
function Simpson(a,b:real; n:integer):real;
var
  s,h:real;
  m,mn:integer;
 begin
  h:=(b-a)/(n);
  s:=f(a)+f(b);
  mn:=4;
 for m:=1 to n-2  do
  begin
  s:=s+mn*f(a+h*m);
  if (mn=4)
  then
  mn:=2
  else
  mn:=4;
  end;
  Simpson:=s*h/3;
 end;
Begin
{clrscr;}
writeln ('vvedite granicii a b');
Readln (a,b);
writeln('vvedite pogreshnost');
readln(eps);
n:=2;
r:=simpson(a,b,n);
repeat
 r2:=r;
 n:=n*2;
 r:=simpson(a,b,n);
until (abs(r-r2)<eps);
 Writeln;
 Writeln ('resultat po simpsony',r:6:6);
 writeln ('kol-vo razbienii* ',n,' ®в१Є®ў');
 readkey;
 end.
qsccsq вне форума Ответить с цитированием
Старый 27.12.2010, 14:59   #2
k0tone
Пользователь
 
Аватар для k0tone
 
Регистрация: 09.11.2010
Сообщений: 99
По умолчанию

Вот держи, подправил твой код:

Код:
program test;
uses crt;
var a,b,r,r2,eps:real;
    n:integer;

  function f(x:real):real;
    begin
      f:=x*exp(x)*sin(x);;
    end;

  function Simpson(a,b:real; n:integer):real;
  var s,h:real;
      m,mn:integer;
    begin
     h:=(b-a)/(2*n);
     s:=f(a)+f(b);
     mn:=4;
     for m:=1 to 2*n-1 do
       begin
         s:=s+mn*f(a+h*m);
         if mn=4 then
           mn:=2
         else
           mn:=4;
       end;
     Simpson:=s*h/3;
    end;

begin
writeln ('vvedite granicii a b');
Readln (a,b);
writeln('vvedite pogreshnost');
readln(eps);
n:=2;
r:=simpson(a,b,n);
repeat
 r2:=r;
 n:=n*2;
 r:=simpson(a,b,n);
until (abs(r-r2)<eps);
 Writeln;
 Writeln ('resultat po simpsony',r:6:6);
 writeln ('kol-vo razbienii* ',n,' ®в१Є®ў');
 readkey;
end.
Удачи тебе, уважаемый qsccsq!!!!!



Если использовать итерационную форму, то в вашей программе нужно поправить только цикл:

Код:
 for m:=1 to n-1 do
Если я вам помог - нажмите на весы пот аватаркой!

Последний раз редактировалось Stilet; 27.12.2010 в 16:18.
k0tone вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проги по методу строковая\симпсона\метод половинного деления qsccsq Помощь студентам 0 23.12.2010 15:06
Вычислить значение функции marme Общие вопросы C/C++ 1 22.12.2010 22:42
Вычислить значение функции для заданных значений аргументов. Pascal. Xeon332 Фриланс 11 10.10.2010 09:57
Вычислить значение функции zlodei1988 Microsoft Office Excel 1 04.05.2010 20:10
Вычислить значение функции Deus Общие вопросы Delphi 10 25.01.2009 17:09