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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2015, 20:14   #1
Дмитрий Огнев
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 18
По умолчанию Объясните, плз, строчку кодо

программа вычисляет интеграл по методу трапеции
Вопрос состоит в следующем: Формула в моем коде (отмеченная " * ") считает конечный результат как-то иначе, по сравнению со строчкой кода из интернета ( ** ), объясните что не так

мой код:

Код:
program qq;
var a,b,n,i,x:real;
    S,h: double;
begin
a:=0;
b:=1;
S:=0;
write('Введите количество делений отрезка: ');
readln(n);
h:=(b-a)/n;
i:=0;
 while i<=n do
  begin
    x:=a + h*i;
    S:=S+( 1/(1+x*x*x) );
    i:=i+1;
  end;
S:=h*( ( 1/(1+a*a*a) ) + ( 1/(1+b*b*b) ) )/2+S; *
writeln('S= ',S);
readln;
end.

код из интернета:
uses crt;
var a,b,S,h,integ: real;
    i,n: integer;
function f(x: real): real;
begin
 f:=1/(1+x*x*x);
end;
begin
 clrscr;
 write('a/b/n: ');
 readln(a,b,n);
 h:=(b-a)/n;
 for i:=1 to n-1 do
  S:=s+f(a + h*i);
 integ:=h*((f(a)+f(b))/2+s); **
 writeln('S=',integ);
 readln;
end.

Последний раз редактировалось Stilet; 14.12.2015 в 20:38.
Дмитрий Огнев вне форума Ответить с цитированием
Старый 14.12.2015, 21:00   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Есть ли разница между h*((a+b) + c) и h*(a+b) + c?
p51x вне форума Ответить с цитированием
Старый 14.12.2015, 21:13   #3
Дмитрий Огнев
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 18
По умолчанию

Согласен, тут ошибка. Но я это иправил и все равно что-то не то
h*(((1/(1+a*a*a))+(1/(1+b*b*b)))/2+s) вот так правильно, но ответ все равно не получается, тк если n=5, то результат 1,13..., а нужно 0,8...

Последний раз редактировалось Дмитрий Огнев; 14.12.2015 в 21:26.
Дмитрий Огнев вне форума Ответить с цитированием
Старый 14.12.2015, 21:33   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Давайте дальше.
Тут идет суммирование по внутренним точкам
Код:
 for i:=1 to n-1 do
  S:=s+f(a + h*i);
а тут включая граничные
Код:
i:=0;
 while i<=n do
  begin
    x:=a + h*i;
    S:=S+( 1/(1+x*x*x) );
p51x вне форума Ответить с цитированием
Старый 14.12.2015, 21:47   #5
Дмитрий Огнев
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 18
По умолчанию

Спасибо огромное, очень помогли
Дмитрий Огнев вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разделить строчку alexprey Общие вопросы Delphi 3 28.01.2011 17:09
Порезать строчку KoBRaAndrey Общие вопросы Delphi 3 30.04.2010 11:27
Объясните строчку, пожалуйста Manya Общие вопросы C/C++ 2 20.11.2008 16:02
Как с поиощью hiew вставить в файл строчку, "раздвинуть" файл и вставить туда строчку? barand Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 28.06.2008 10:58