• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Пожалуйста, помогите написать программу в Паскале.

Анастасия93

Ученик
Регистрация
25 Апр 2012
Сообщения
4
Реакции
0
Баллы
0
Пожалуйста, помогите написать программу в Паскале.

Тема вычисление интегралов с бесконечными пределами.
Заранее огромное преогромное спасибо)
 
Тема вычисление интегралов с бесконечными пределами.
Заранее огромное преогромное спасибо)
Вот так-таки на все случаи жизни? Для любых-прелюбых несобственных интегралов? Нет уж, такое Вы лучше сами. Я, например, не возьмусь.
 
Да,на любые несобственные интегралы.Вычисление интеграллов с бесконечными пределами - тема курсовой работы.
И на эту тему нужна программа в паскале.
Вы сможете мне помочь?
 
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.
 
Так, но это программа расчета обычного (собственного) интеграла от вполне конкретной функции Cos(x). Здесь не вижу никаких проблем. Уточните задание: всё-таки нужно написать программу вычисления конкретной функции или любой? А если любой, то как ее задать? Нет, пока не понимаю. Может быть, у Вас есть текст задания по курсовой? Выложите, посмотрим.
 
В методологическом указании к курсовой,описана только цель.
Задание на курсовую работу - Вычисление интегралов с бесконечными пределами.
Я,если честно сама не совсем понимаю,какая нужна программа.
Знала бы,не просила бы помощи...
Мне бы хоть примерную программу,а потом , я по ходу буду уже с преподавателем изменять её(если потребуется).
 
Мне бы хоть примерную программу,а потом , я по ходу буду уже с преподавателем изменять её(если потребуется).
Хорошо, попробуем. Итак, в качестве примера рассматривается интеграл от функции 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.
 
Назад
Сверху