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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2012, 19:11   #1
Nobel
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 15
По умолчанию Интеграл

народ помогите дописат код .. пожалуйста .
в кдое не работает второй цикл
[HTML]program Khan;
var a,b,dx,ST,SP,SS,k:real;
n,i,v,t:integer;
function f(x:real):real;
begin
f:=2*x+4;
end;
begin
writeln ('vvedite a,b,n');
readln (a,b,n);
SP:=0;
ST:=0;
SS:=0;
t:=0;
repeat
n:=n+1;
dx:=((b-a)/n);
For i:=1 to n do
begin
k:=a;
SP:=f(a)*dx+SP;
ST:=(((f(a)+f(a+dx))/2*dx)+ST);
SS:=((f(a)+4*f(a+dx/2)+f(a+dx))*dx)/6+SS ;
a:=k;
a:=a+dx;
end;
t:=t+1;
if t>800 then break;
until t>t+1
writeln ('SP=',SP:2:2,' ST=',ST:2:2,' SS=',SS:2:2);
readln;
end.
Nobel вне форума Ответить с цитированием
Старый 05.01.2012, 19:22   #2
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

что программа должна делать?выложи полный текст задания
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...

Последний раз редактировалось McFrey; 05.01.2012 в 19:25.
McFrey вне форума Ответить с цитированием
Старый 05.01.2012, 19:32   #3
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

ну раз ты не хочешь выкладывать задание то за правильность не ручаюсь
Код:
program Khan;

var
  a, b, dx, ST, SP, SS: real;
  n, i, t: integer;

function f(x: real): real;
begin
  f := 2 * x + 4;
end;

begin
  writeln('vvedite a,b,n');
  readln(a, b, n);
  SP := 0;
  ST := 0;
  SS := 0;
  t := 0;
  repeat
    dx := ((b - a) / n);
    for i := 1 to n do
    begin
      SP := (f(a) * dx) + SP; 
      ST := ((f(a) + f(a + dx)) / 2 * dx) + ST; 
      SS := (((f(a) + 4 * f(a + dx / 2 * dx) + f(a + dx)) * dx) / 6 ) + SS;   
      a := a + dx;
    end;
    t := t + 1;
    n := n + 1;
    if t > 800 then break;
  until t > t + 1;
  writeln('SP=', SP:2:2, ' ST=', ST:2:2, ' SS=', SS:2:2);
  readln;
end.
и кстати "break" это отвратительно
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 05.01.2012, 19:38   #4
Nobel
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 15
По умолчанию

в интеграле надо найти оптимальное количество разбиений в котором все три методи равны... Праямоуголник, Триуголник и Симпсон..
т.е надо найти n
Nobel вне форума Ответить с цитированием
Старый 05.01.2012, 19:47   #5
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

как это оптимальное количество разбиений?...что означает "оптимальное" ? ведь чем больше количество разбиений, тем точнее результат. а в чем тогда должна выражаться оптимальность?
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 05.01.2012, 19:54   #6
Nobel
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 15
По умолчанию

условия зачаи у меня нету. Ну знаю что надо найти n в котором все 3 методы равны.
Nobel вне форума Ответить с цитированием
Старый 05.01.2012, 19:57   #7
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

интеграл можно вычислить этими 3 и еще несколькими методами, а n - число промежутков, на которые ты разбиваешь график функции для подсчета интеграла методом прямоугольников или треугольников или Симпсона...
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 05.01.2012, 20:01   #8
Nobel
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 15
По умолчанию

для все 3 метода . у меня в коде SP прямоуголник ST тиуголник SS симпсон
Nobel вне форума Ответить с цитированием
Старый 05.01.2012, 20:05   #9
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

я не могу понять....тебе нужно чтобы при определенном количестве разбиений n...результат интеграла для всех 3-х методов был равным?....тогда просто в своей программе n:=n+1 переставь перед t:=t+1 и подбери такое n при котором результат вычисления интеграла будет равным во всех 3-х случаях....например введи a=10,b=20,n=10000 и тогда значение интеграла будет примерно одинаковым во всех 3-х случаях.
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 05.01.2012, 20:08   #10
Nobel
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 15
По умолчанию

a=0 b=2
n должно найти программа ..
я вводил в ручную при n=800 все три методы =12 ..
но надо чтобы прграмма находыла n
Nobel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интеграл Psychoo Паскаль, Turbo Pascal, PascalABC.NET 2 07.11.2011 07:42
интеграл Feel401 Обсуждение статей 0 15.05.2011 12:27
Интеграл atenon Свободное общение 10 14.12.2010 19:23
Интеграл bkm03262 Паскаль, Turbo Pascal, PascalABC.NET 1 09.05.2009 14:50