IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Вычисление интеграла с заданной точностью, помогите понять в чем ошибка
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Составить программу вычисления интеграла S=/f(x)dx на интервале [0.4..1.2] с точностью Е=0.001 методом трапеций


f(x)=cos (x*x)/(x+1)

Вот программа.......

Код
var
    i ,n  :   word;
    h   :   Real;
    s1  :   Real;
    s2  :   Real;
function F (x:Real):Real;
begin
F (x):=  (cos (x*x))/(x+1);
end;
    
function MTrap(a   :   Real; b   :   Real;  E:Real):Real;

begin
writeln ('Введите левую границу интервала а:');Read (a);
writeln ('Введите правую границу интервала b:');Readln (b);
writeln ('Введите точность Е:');Readln (Е);
    n:=1;
    h:=b-a;
    s2:=h*(F(a)+F(b))/2;
    repeat
        s1:=s2;
        s2:=0;
        i:=1;
        repeat
            s2:=s2+F(a-h/2+h*i);
            i:=i+1;
        until not(i<=n);
        s2:=s1/2+s2*h/2;
        n:=2*n;
        h:=h/2;
    until not(Abs(s2-s1)>3*E);
    MTrap:=s2;
WriteLn('Интеграл решенный методом Трапеции равен ' ,MTrap:4:3);
end;

end.


c END- ами ошибка?.......или я что-то не то делаю? Помогите
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Исправил синтаксические ошибки

var
i ,n : word;
h : Real;
s1 : Real;
s2 : Real;

function F (x:Real):Real;
begin
F := (cos (x*x))/(x+1);
end;

function MTrap(a : Real; b : Real; E:Real):Real;

begin
writeln ('??????? ????? ??????? ????????? ?:');Read (a);
writeln ('??????? ?????? ??????? ????????? b:');Readln (b);
writeln ('??????? ???????? ?:');Readln (E);
n:=1;
h:=b-a;
s2:=h*(F(a)+F(b))/2;
repeat
s1:=s2;
s2:=0;
i:=1;
repeat
s2:=s2+F(a-h/2+h*i);
i:=i+1;
until not(i<=n);
s2:=s1/2+s2*h/2;
n:=2*n;
h:=h/2;
until not(Abs(s2-s1)>3*E);
MTrap:=s2;
WriteLn('???????? ???????? ??????? ???????? ????? ' ,MTrap:4:3);
end;
begin
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Цитата(klem4 @ 25.03.2006 14:19) *

Исправил синтаксические ошибки


Что-то не пашет......вообще не загружается программа
Сделана по аналогии....

Код
unit IntegralTrapUnit;

declaration
(*
интегрируемая функция
*)
function F(X:Real):Real;

interface
    IntegralTrap;
implementation

{$DOC+}
(*********************************************************
$RU
Интегрирование методом трапеций с оценкой точности.

Считается интеграл функции F на отрезке [a,b] с погрешностью
порядка Epsilon.

function IntegralTrap(a:Real;b:Real;Epsilon:real):real;
*********************************************************)
function IntegralTrap(
    const   a   :   Real;
    const   b   :   Real;
    const   Epsilon:Real):Real;
var
    i   :   Integer;
    n   :   Integer;
    h   :   Real;
    s1  :   Real;
    s2  :   Real;
begin
    n:=1;
    h:=b-a;
    s2:=h*(F(a)+F(b))/2;
    repeat
        s1:=s2;
        s2:=0;
        i:=1;
        repeat
            s2:=s2+F(a-h/2+h*i);
            i:=i+1;
        until not(i<=n);
        s2:=s1/2+s2*h/2;
        n:=2*n;
        h:=h/2;
    until not(AbsReal(s2-s1)>3*Epsilon);
    Result:=s2;
end;

end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
Что-то не пашет......вообще не загружается программа


И что это значит ? Та программа, которую выложил я (исправленная твоя) компилируется без единой ошибки.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
Исправил синтаксические ошибки

Цитата
writeln ('??????? ????? ??????? ????????? ?:')

lol.gif good.gif
Цитата
Что-то не пашет......вообще не загружается программа

ну так программы то и нет... есть только процедуры, а текст главной программы:
Цитата
begin
end.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Цитата(Altair @ 25.03.2006 19:02) *

lol.gif good.gif

ну так программы то и нет... есть только процедуры, а текст главной программы:


А если я убираю begin он просит End;End.
непонятно
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Открой любой учебник по языку Паскаль, и прочти одну из первых глав - "структура программы на паскале".
Тогда придешь.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  -1  +


Цитата(deymon81 @ 25.03.2006 13:19) *

Составить программу вычисления интеграла S=/f(x)dx на интервале [0.4..1.2] с точностью Е=0.001 методом трапеций
f(x)=cos (x*x)/(x+1)

Ребята, помогите пожалуйста!!!
Как будет выглядеть вышеуказанная программа, если ещё и даётся доп. условие, что число отрезков N=60 ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 20:42
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name