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

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

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

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





Группа: Пользователи
Сообщений: 8
Пол: Женский
Реальное имя: Katia

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


Ребят, помогите, пожалуйста, исправить программу.


f1(x)=x*exp(1/3*ln(1+x))

fi=exp(-x);
ksi=sqrt(x*x+1)/(x*x+3)

a1=9; b1=9

С использованием ЭВМ получить таблицу значений функции,вычисленных с точностью Е в точках t(i)=c+ih, где I=0..m, h=(d-c)/m, f2(t,x)= (t/1+x)+sx) (x).
В качестве результата на печать необходимо вывести значение I, число шагов N квадратурной формулы, последовательность значений t(i) и F(t(i)).

Формула трапеций

Цитата
program pr6;
uses crt;
{$f+}
const
a1=1; b1=9; e=0.00001;
s=0.01; a2=0.5; b2=1.5; c=2; d=3; m=10; e1=0.0001;
type func=function (t,x:real):real;
var
n,j,k,i:integer;
x1,x2,t,r:real;

function f1(t,x:real):real;
begin
f1:=x*exp(1/3*ln(1+x));
end;

function fi(x:real):real;
begin
fi:=exp(-x);
end;
function ksi (x:real):real;
begin
ksi:=sqrt(x*x+1)/(x*x+3);
end;

function f2 (t,x:real):real;
begin
f2:=fi(t/(1+x)+s*x)*ksi(x);
end;

procedure int (a,b,e:real; f:func; t:real;var sum:real; var sum1:real);
begin
repeat
k:=k+1;
n:=n*2;
sum1:=sum;
sum:=0;
for j:=1 to n do
begin
x1:=a+((b-a)/n)*(j-1);
x2:=a+((b-a)/n)*j;
sum:=sum+((f(t,x1)+f(t,x2))/2)*(b-a)/n;
end;
until abs(sum-sum1)<e;
end;

var s1,s2:real;
begin
clrscr;
n:=1;
k:=0;
s1:=((f1(t,b1)+f1(t,a1))/2)*(b1-a1);
int (a1,b1,e,f1,1,s1,s2);
writeln('I=',s2:2:6,' chislo shagov-',k,' proverka ',s2-s1:1:6);
writeln;

for i:=0 to m do
begin
t:=c+i*((d-c)/m);
s1:=((f2(t,b2)+f2(t,a2))/2)*(b2-a2);
n:=1;
k:=0;
int (a2,b2,e1, f2, t,s1,s2);
writeln('i=',i,' t(i)=',t:2:6,' F(t(i))=',s1:2:6,' chislo shagov-',k);
end;
readkey;
end.



Почему выделенная часть нерациональна????
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Почему выделенная часть нерациональна?
Потому, что (b-a)/n вычисляется при каждой итерации 3 раза, хотя можно было это сделать 1 раз и навсегда еще до цикла...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 8
Пол: Женский
Реальное имя: Katia

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


wacko.gif
Этого злые тети еще не заметили

Цитата(volvo @ 25.12.2005 12:37) *

Потому, что (b-a)/n вычисляется при каждой итерации 3 раза, хотя можно было это сделать 1 раз и навсегда еще до цикла...


Они говорят, что сама формула вычисления,т.е. формула трапеции "хромает"
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Кстати, почему не ищем по форуму?
Интеграл, Вычислить определённый интеграл методами
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 8
Пол: Женский
Реальное имя: Katia

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


Цитата(volvo @ 25.12.2005 12:43) *


Почему же не ищем, все найденные темы на 2 страницах писка,уже посмотрела.
Уверяю, что если б мне стало ясно, я не просила бы Вас о помощи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Понимаешь, в чем недостаток твоей программы... Она делает лишние действия, смысл которых - неясен... И разбираться просто лень... Вот так считается сам интеграл методом трапеций:
function int(a, b: real; f: func; t: real): real;
var
s, h: real;
begin
h := (b - a) / n;
s := 0;
for i := 1 to n - 1 do begin
s := s + (f(t, a + i*h));
end;
s := (s + (f(t, a) + f(t, b))/2) * h;
int := s;
end;

а все остальное, извини, просто лишнее...

Кстати, если тебе по заданию не нужно вычислять интеграл, зачем ты его вообще приплела? Покажи мне в своем первом посте хоть какое-то упоминание о площади, интеграле, или методе трапеций !!!
Цитата
С использованием ЭВМ получить таблицу значений функции,вычисленных с точностью Е в точках t(i)=c+ih, где I=0..m, h=(d-c)/m, f2(t,x)= (t/1+x)+sx) (x).
В качестве результата на печать необходимо вывести значение I, число шагов N квадратурной формулы, последовательность значений t(i) и F(t(i)).
Где что-то написано? У тебя элементарное табулирование функции, решаемое одним циклом, так что не морочь голову...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 8
Пол: Женский
Реальное имя: Katia

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


[quote

Кстати, если тебе по заданию не нужно вычислять интеграл, зачем ты его вообще приплела? Покажи мне в своем первом посте хоть какое-то упоминание о площади, интеграле, или методе трапеций !!!
Где что-то написано? У тебя элементарное табулирование функции, решаемое одним циклом, так что не морочь голову...
[/quote]

Да нет, лаба как раз называется вычисление определнных интегралов.
Прога сама написана вроде правильно, мне препод сказала, только часть нерациональна.

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

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

 





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