Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 25.04.2012, 17:19   #1 (permalink)
Анастасия93
Новичок
 
Регистрация: 25.04.2012
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Пожалуйста, помогите написать программу в Паскале.

Тема вычисление интегралов с бесконечными пределами.
Заранее огромное преогромное спасибо)
Анастасия93 вне форума   Ответить с цитированием

Старый 25.04.2012, 17:19
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Довольно частая проблема, нашлись похожие темы

Ребята помогите написать программу на паскале
Пожалуйста, помогите написать программу на Паскале
Помогите пожалуйста написать программу в С++
Помогите написать программу и блок схему в Паскале
Помогите написать программу в Паскале

Старый 25.04.2012, 17:22   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Анастасия93 Посмотреть сообщение
Тема вычисление интегралов с бесконечными пределами.
Заранее огромное преогромное спасибо)
Вот так-таки на все случаи жизни? Для любых-прелюбых несобственных интегралов? Нет уж, такое Вы лучше сами. Я, например, не возьмусь.
Vladimir_S вне форума   Ответить с цитированием
Старый 25.04.2012, 17:42   #3 (permalink)
Анастасия93
Новичок
 
Регистрация: 25.04.2012
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Да,на любые несобственные интегралы.Вычисление интеграллов с бесконечными пределами - тема курсовой работы.
И на эту тему нужна программа в паскале.
Вы сможете мне помочь?
Анастасия93 вне форума   Ответить с цитированием
Старый 25.04.2012, 19:49   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Анастасия93 Посмотреть сообщение
Вы сможете мне помочь?
Вероятно, да, если Вы выложите свои наработки. А делать за Вас курсовую "с нуля" - ну уж это, извините, с какой стати...
Vladimir_S вне форума   Ответить с цитированием
Старый 04.05.2012, 14:41   #5 (permalink)
Анастасия93
Новичок
 
Регистрация: 25.04.2012
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Const
E=0.001;
Var
h,a,b,Jn,J2n:real;
N,i:Word;
Begin
Write('a= ');
Readln(a);
Write('b= ');
Readln(b);
N:=2;
h:=(b-a)/N;
J2n:=0;
For i:=1 to N do
J2n:=J2n+h*Cos(a+h*i-h/2);
Repeat
Jn:=J2n;
N:=N*2;
h:=(b-a)/N;
J2n:=0;
For i:=1 to N do
J2n:=J2n+h*Cos(a+h*i-h/2);
Until Abs(Jn-J2n)<=E;
Writeln(' Integral = ',J2n:0:6);
Writeln('Accurate value = ',(Sin(b)-Sin(a)):0:6);
Readln;
End.
Анастасия93 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 04.05.2012, 15:26   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Так, но это программа расчета обычного (собственного) интеграла от вполне конкретной функции Cos(x). Здесь не вижу никаких проблем. Уточните задание: всё-таки нужно написать программу вычисления конкретной функции или любой? А если любой, то как ее задать? Нет, пока не понимаю. Может быть, у Вас есть текст задания по курсовой? Выложите, посмотрим.
Vladimir_S вне форума   Ответить с цитированием
Старый 25.05.2012, 20:17   #7 (permalink)
Анастасия93
Новичок
 
Регистрация: 25.04.2012
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

В методологическом указании к курсовой,описана только цель.
Задание на курсовую работу - Вычисление интегралов с бесконечными пределами.
Я,если честно сама не совсем понимаю,какая нужна программа.
Знала бы,не просила бы помощи...
Мне бы хоть примерную программу,а потом , я по ходу буду уже с преподавателем изменять её(если потребуется).
Анастасия93 вне форума   Ответить с цитированием
Старый 27.05.2012, 11:19   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Анастасия93 Посмотреть сообщение
Мне бы хоть примерную программу,а потом , я по ходу буду уже с преподавателем изменять её(если потребуется).
Хорошо, попробуем. Итак, в качестве примера рассматривается интеграл от функции 1/х². Можно сосчитать его в пределах от 0.1 до ∞, благо известно, что он равен 10. Поскольку в программе подынтегральная функция задана через подпрограмму, она, естественно, может быть заменена другой. Вероятно, в этом и состоит "универсальность".
Для вычисления интеграла в программе применен метод парабол (Симпсона). Алгоритм работы программы:

1. Ввод исходных данных:
а) нижний предел (в данном случае ввести 0.1).
б) некое исходное разумное значение верхнего предела; в дальнейшем при работе программы верхний предел будет наращиваться. При тестировании введите несколько десятков, скажем, 10, или 20, или 27 - не так уж и важно. Очень большие числа нежелательны. Равно как и слишком маленькие. Ориентируйтесь на область, где подынтегральная функция уже спадает раз в 10-100 от исходных значений.
в) точность результата.

2. Ищется оптимальный шаг путем увеличения числа точек промежутка от нижнего до исходного верхнего предела.

3. Наращивается верхний предел с сохранением ранее полученного шага разбиения.

4. Выводится результат.

Код:
Var
 a,b,b0,eps,Simp1,Simp2:Real;
 j,N,N0:Integer;

Function F(z:real):real;
begin
 F:=1/Sqr(z);
end;

Function Simpson(As,Bs:Real; Ns:Integer):Real;
var
 i:Integer;
 Sum,h:Real;
begin
 h:=(Bs-As)/(2*Ns);
 Sum:=(F(As)+F(Bs))/3*h;
 for i:=1 to Ns do
  Sum:=Sum+4.0*h/3.0*F(As+h*(2*i-1));
 for i:=2 to Ns do
  Sum:=Sum+2.0*h/3.0*F(As+h*(2*i-2));
 Simpson:=Sum;
end;

Begin
 Write('Lower limit = ');
 Readln(a);
 Write('Upper limit (initial value) = ');
 Readln(b0);
 b:=b0;
 Write('Accuracy (e.g. 0.0001) = ');
 Readln(Eps);
 N0:=10;
 N:=N0;
 Simp2:=Simpson(a,b,N);
 Repeat
  Simp1:=Simp2;
  N:=N+N0;
  Simp2:=Simpson(a,b,N);
 Until Abs(Simp1-Simp2)<Eps;
 N0:=N;
 Repeat
  Simp1:=Simp2;
  b:=b+b0;
  N:=N+N0;
  Simp2:=Simpson(a,b,N);
 Until Abs(Simp1-Simp2)<Eps;
 Writeln('Result:  ',Simp2:0:(Round(Ln(1/Eps)/Ln(10))+1));
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 12:22.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.