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

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

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

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


Новичок
*

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

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


Для заданных границ интегрирования a и b вычислите значение определенного интеграла следующего вида (используя рекурсию) mega_chok.gif
как применить рекурсию? blink.gif помогите пожалуйста
  program r;
uses crt;
var a,b,s,ss,dx,x,p1,p2,p3,p4,p5,p:real;
i,n,m:integer;
begin
clrscr;
write ('a=');
readln (a);
write ('b=');
readln (b);
write ('m>0, m=');
readln (m);
if a<b then dx:=(b-a)/m else dx:=(a-b)/m;
x:=a;
ss:=0;
write ('n=0,1,2,3,...., n=');
readln (n);
if n=0 then for i:=1 to m do ss:=ss+exp(a*x)/a
else if n=1 then for i:=1 to m do begin
p1:=exp(a*x);
p2:=a*sin(b*x);
p3:=b*cos(b*x);
ss:=ss+p1*(p2-p3)/(a*a+sqr(n*b))
end
else while n>=1 do begin
p4:=n*(n-1)*b*b/(a*a+sqr(n*b));
s:=0;
for i:=1 to m do begin
p1:=exp(a*x);
p2:=a*sin(b*x);
p3:=b*cos(b*x);
p5:=exp((n-1)*ln(sin(b*x)));
s:=s+p1*p5*(p2-p3)/(a*a+sqr(n*b));
end;
ss:=ss+n*(n-1)*b*b*s/(a*a+sqr(n*b));
n:=n-2;
end;
writeln ('int=',ss*dx:0:5);
readln;
end.

Правильно ли я вообще решила blush.gif

Сообщение отредактировано: PUMA -


--------------------
Никогда, никогда ни о чем не жалейте.Поздно начали вы или рано ушли.Кто-то пусть гениально играет на флейте.Но ведь песни берет он из вашей души.Никогда, никогда ни о чем не жалейте —Ни потерянных дней, ни сгоревшей любви.Пусть другой гениально играет на флейте,Но еще гениальнее слушали вы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(PUMA @ 19.06.2010 19:18) *
значение определенного интеграла следующего вида (используя рекурсию) mega_chok.gif
ну и какого же вида? blink.gif
PUMA, ты забыла привести вид, или не смогла? Можно сделать картинкой, а можно просто от руки, типа так:
[интеграл от a до b] scrt(sin (x2))
- верхние и нижние индексы есть в форме ввода, а остальное как сумеешь.

Цитата
как применить рекурсию?
Вообще, применение рекурсии для вычисления интеграла - абсолютная нелепость. Но если надо - покажем.. Я думаю, имеется в виду рекурсивно прибавлять очередной кусочек при суммировании. То есть заменить цикл до m на рекурсию. Это медленно, требует много памяти, некрасиво, но - если такая цель, то можно.. ))

Цитата
Правильно ли я вообще решила blush.gif
Как это можно сказать, не зная, что требуется? ))
Приведи условие - посмотрим. Но, вообще-то, уже и так видно, что есть, что исправлять. И, пока я разглядывал твои вычисления в попытках догадаться, что же это за функция была, у меня возникли большие сомнения в том, что это может быть правильно.. Например - почему у тебя в вычислениях функции присутствуют a и b? как это вообще возможно? функция не может зависеть от пределов интегрирования. Ты уверена, что, например, не интегрируешь первообразную? ))
Давай, ждем вида функции.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


удалила случайно формулу 10.gif


Эскизы прикрепленных изображений
Прикрепленное изображение

--------------------
Никогда, никогда ни о чем не жалейте.Поздно начали вы или рано ушли.Кто-то пусть гениально играет на флейте.Но ведь песни берет он из вашей души.Никогда, никогда ни о чем не жалейте —Ни потерянных дней, ни сгоревшей любви.Пусть другой гениально играет на флейте,Но еще гениальнее слушали вы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(PUMA @ 20.06.2010 11:37) *
удалила случайно формулу
Что это??.. blink.gif


аа...
ну, тогда ясно, где и зачем тут рекурсия...

Добавлено через 5 мин.
Но я тебя должен окончательно разочаровать: нет, твое решение неправильное, и это точно уже ((.

Ты видишь, справа такой же интегральчик, как и слева? Вот отсюда и рекурсия.

Погоди - а ты уверена, что тебе нужен именно определенный интеграл?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


ну в задании так написано...откуда тогда взялись a и b?
вообще не очень понимаю как и что делать надо blush.gif


--------------------
Никогда, никогда ни о чем не жалейте.Поздно начали вы или рано ушли.Кто-то пусть гениально играет на флейте.Но ведь песни берет он из вашей души.Никогда, никогда ни о чем не жалейте —Ни потерянных дней, ни сгоревшей любви.Пусть другой гениально играет на флейте,Но еще гениальнее слушали вы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата
вообще не очень понимаю как и что делать надо blush.gif
Немудрено, я, например, тоже с трудом въезжаю.. Хорошо, давай разбираться )).

Цитата(PUMA @ 20.06.2010 11:56) *
ну в задании так написано...откуда тогда взялись a и b?
a и b - это просто параметры, входящие в функцию. И они, конечно, должны быть заданы, если в итоге требуется числовой ответ.

То, что тут написано - это уже готовая формула интеграла, причем НЕопределенного (только константа у них куда-то затерялась..) То есть численное интегрирование (всякие трапеции и Симпсоны) тут не требуется. Нужно только сделать прогу для расчета по этим формулам.
Стало яснее? )) или продолжить?

P.S.
если можно, приведи условие поточнее.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


продолжить blink.gif как куда рекурсию применить

в задании только написано:Для заданных границ интегрирования a и b вычислите значение определенного интеграла следующего вида (используя рекурсию) и дана эта огроменная формула..мало того она еще с опечатками была дана mad.gif

Сообщение отредактировано: PUMA -


--------------------
Никогда, никогда ни о чем не жалейте.Поздно начали вы или рано ушли.Кто-то пусть гениально играет на флейте.Но ведь песни берет он из вашей души.Никогда, никогда ни о чем не жалейте —Ни потерянных дней, ни сгоревшей любви.Пусть другой гениально играет на флейте,Но еще гениальнее слушали вы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(PUMA @ 20.06.2010 12:24) *
продолжить blink.gif как куда рекурсию применить

в задании только написано:Для заданных границ интегрирования a и b вычислите значение определенного интеграла следующего вида (используя рекурсию) и дана эта огроменная формула..мало того она еще с опечатками была дана mad.gif
С какими опечатками? ты уверена?

Если a и b - пределы, то либо это интеграл чего-то еще, либо я персидский шах..

Вот, смотри, я наборсал тут функцию по этой формуле. В ней рекурсия есть - видишь? Функция IntPow - вспомогательная, вычисляет целую степень.
Копирую сюда без отладки, извини уж..
Спрашивай, где непонятно.
function IntPow(x: double; n: integer): double;
var
r: double;
begin
r:=1;
if n<0 then begin
n:=-n;
x:=1/x
end;
while n>0 do r:=r*x;
IntPow:=r
end;


function IntEAXSINNBX(a,b,x: double; n: integer): double;
begin
case n of
0: IntEAXSINNBX:= Exp(a*x)/a;
1: IntEAXSINNBX:= Exp(a*x)*(a*Sin(b*x)-b*Cos(b*x))/(a*a+b*b);
else IntEAXSINNBX:=
(Exp(a*x)*IntPow(Sin(b*x),n-1)*(a*Sin(b*x)-b*Cos(b*x)) +
n*(n-1)*b*b*IntEAXSINNBX(a,b,x,n-2))/ {вот тут рекурсивный вызов}
(a*a+n*n*b*b)
end
end;


что-то все же неясно с заданием.. что за опечатки были? скажи, ладно?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


1)Там где n>=2 в числителе,где синус было (a*sinx-n*b*cos bx) ,то есть не хватало в синусе буквы b
2)n=1, знак минус перед выражением
3)n=0, экспонента была в степени a*n , а не a*x
вроде как все.
прикреплю картинку с первоначальным видом.


Эскизы прикрепленных изображений
Прикрепленное изображение

--------------------
Никогда, никогда ни о чем не жалейте.Поздно начали вы или рано ушли.Кто-то пусть гениально играет на флейте.Но ведь песни берет он из вашей души.Никогда, никогда ни о чем не жалейте —Ни потерянных дней, ни сгоревшей любви.Пусть другой гениально играет на флейте,Но еще гениальнее слушали вы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(PUMA @ 20.06.2010 12:54) *
1)Там где n>=2 в числителе,где синус было (a*sinx-n*b*cos bx) ,то есть не хватало в синусе буквы b
2)n=1, знак минус перед выражением
3)n=0, экспонента была в степени a*n , а не a*x
вроде как все.
прикреплю картинку с первоначальным видом.
хм.. а откуда уверенность, что это опечатки? из общих соображений или есть эта формула в справочнике? Вообще, должна быть.. но я сейчас навскидку не нашел ((. Надо посерьезнее поискать.

Буква b под синусом - это да, похоже, что должна быть. А вот про минус я как-то сомневаюсь..

Ну как, разобралась с функцией?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

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

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


из общих соображений 10.gif
да вроде все понятно))первое это степень считаем.ставим условие если она отрицательна.второе эт мы уже непосредственно считаем при разных значениях n. так?
cool.gif спасибо большое


Сообщение отредактировано: PUMA -


--------------------
Никогда, никогда ни о чем не жалейте.Поздно начали вы или рано ушли.Кто-то пусть гениально играет на флейте.Но ведь песни берет он из вашей души.Никогда, никогда ни о чем не жалейте —Ни потерянных дней, ни сгоревшей любви.Пусть другой гениально играет на флейте,Но еще гениальнее слушали вы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(PUMA @ 20.06.2010 13:35) *
из общих соображений 10.gif


Цитата
да вроде все понятно))первое это степень считаем.ставим условие если она отрицательна.второе эт мы уже непосредственно считаем при разных значениях n. так?
функция для степени - чисто вспомогательная. В ней я немного лишнего наворотил.. в этой задаче n не может быть отрицательным, так что проверка и все, что внутри делается - это все лишнее, можно выбросить. Я сделал из любви к общности - понимаешь?

Основное, на что тебе тут надо обратить внимание - это как работает рекурсия. Еще раз посмотри и проследи логику, чтоб никаких вопросов не оставалось неотвеченных. Я жду твоего ответа.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Есть эта формула в Википедии ))
То есть, почти такая, там нету b. Но оно вроде легко туда вводится заменой типа x=by.. или нет? тяжко шевелить извилинами в такую позднь.. (


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

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

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


function IntPow(x: double; n: integer): double;
var
r: double;i:byte;
begin
r:=1;
for i:=1 to n do
r:=r*x;
IntPow:=r
end;
function IntEAXSINNBX(a,b,x: double; n: integer): double;
begin
case n of
0: IntEAXSINNBX:= Exp(a*x)/a;
1: IntEAXSINNBX:= Exp(a*x)*(a*Sin(b*x)-b*Cos(b*x))/(a*a+b*b);
else IntEAXSINNBX:=
(Exp(a*x)*IntPow(Sin(b*x),n-1)*(a*Sin(b*x)-n*b*Cos(b*x)) +
n*(n-1)*b*b*IntEAXSINNBX(a,b,x,n-2))/
(a*a+n*n*b*b)
end
end;
var a,b,n,x:integer;
begin
writeln('vvedite a i b');
readln(a,b);
writeln('vvedite stepen n i chislo x');
readln(n,x);
writeln( IntEAXSINNBX(a,b,x,n));
readln;
end.


вроде как решает


--------------------
Никогда, никогда ни о чем не жалейте.Поздно начали вы или рано ушли.Кто-то пусть гениально играет на флейте.Но ведь песни берет он из вашей души.Никогда, никогда ни о чем не жалейте —Ни потерянных дней, ни сгоревшей любви.Пусть другой гениально играет на флейте,Но еще гениальнее слушали вы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(PUMA @ 20.06.2010 14:35) *
вроде как решает

Вау! респект тебе и твоим преподпвателям: ничего лишнего, никаких идиотских CRT, и даже печать результата непосредственно из функции без всяких перекладываний - уважаю! ))
Только надо бы сдвиги делать нормальные.. иначе увязнешь на второй странице кода..

Очень просто:
- после begin (case, repeat, while) все сдвигаем право на 2 поз
- перед end (until) - влево на 2 поз
- между функциями оставляй строку (лучше две)
- разделы декларвций тоже двигаем

Вот, посмотри и старайся так делать
function IntPow(x: double; n: integer): double;
var
r: double;
i:byte;
begin
r:=1;
for i:=1 to n do r:=r*x;
IntPow:=r
end;


function IntEAXSINNBX(a,b,x: double; n: integer): double;
begin
case n of
0: IntEAXSINNBX:= Exp(a*x)/a;
1: IntEAXSINNBX:= Exp(a*x)*(a*Sin(b*x)-b*Cos(b*x))/(a*a+b*b);
else IntEAXSINNBX:=
(Exp(a*x)*IntPow(Sin(b*x),n-1)*(a*Sin(b*x)-n*b*Cos(b*x)) +
n*(n-1)*b*b*IntEAXSINNBX(a,b,x,n-2))/
(a*a+n*n*b*b)
end
end;


var
a,b,n,x: integer;

begin
writeln('vvedite a i b');
readln(a,b);
writeln('vvedite stepen n i chislo x');
readln(n,x);
writeln( IntEAXSINNBX(a,b,x,n));
readln;
end.

Только сейчас заметил, что ты переделала IntPow .. Ага, я ошибся.. забыл вычитать n. Нужно было вот так:
function IntPow(x: double; n: integer): double;
var
r: double;
begin
r:=1;
if n<0 then begin
n:=-n;
x:=1/x
end;
while n>0 do begin
r:=r*x;
Dec(n)
end;
IntPow:=r
end;

Молодец! )) Твоя функция, правда, не будет работать с отрицательными n, но оно тут и не нужно.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

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

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


что то я не совсем поняла зачем вычитать при n>0
r:=r*x;
Dec(n)
blink.gif


--------------------
Никогда, никогда ни о чем не жалейте.Поздно начали вы или рано ушли.Кто-то пусть гениально играет на флейте.Но ведь песни берет он из вашей души.Никогда, никогда ни о чем не жалейте —Ни потерянных дней, ни сгоревшей любви.Пусть другой гениально играет на флейте,Но еще гениальнее слушали вы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(PUMA @ 20.06.2010 15:15) *

что то я не совсем поняла зачем вычитать при n>0
r:=r*x;
Dec(n)
blink.gif

Это не при n>0, а пока n>0. Это цикл. При каждом умножении r уменьшаем n на 1. Получается как бы счетчик. Когда n обнулится - выходим из цикла. Это как бы твой for, только наоборот, сверху вниз.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Новичок
*

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

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


Цитата(Lapp @ 20.06.2010 14:21) *

Это не при n>0, а пока n>0. Это цикл. При каждом умножении r уменьшаем n на 1. Получается как бы счетчик. Когда n обнулится - выходим из цикла. Это как бы твой for, только наоборот, сверху вниз.

ага,всё поняла cool.gif


--------------------
Никогда, никогда ни о чем не жалейте.Поздно начали вы или рано ушли.Кто-то пусть гениально играет на флейте.Но ведь песни берет он из вашей души.Никогда, никогда ни о чем не жалейте —Ни потерянных дней, ни сгоревшей любви.Пусть другой гениально играет на флейте,Но еще гениальнее слушали вы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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