Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на языке Pascal


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Академик
Рейтинг: 8743
∙ повысить рейтинг »
Орловский Дмитрий
Статус: Советник
Рейтинг: 6913
∙ повысить рейтинг »
lamed
Статус: Академик
Рейтинг: 5631
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Pascal (Паскаль)

Номер выпуска:1217
Дата выхода:18.12.2011, 18:30
Администратор рассылки:Boriss (Академик)
Подписчиков / экспертов:159 / 171
Вопросов / ответов:1 / 1

Консультация # 184777: Здравствуйте! Прошу помощи в следующем вопросе: Ранее в запросе №184598 была составлен программа тему: "Интегрирование функции, заданной графически методом левых прямоугольников". Где было необходимо составить программу на языке Borland Pascal для вычисления значения интеграла на интервале [a, b] для функции, заданной графиче...


Консультация # 184777:

Здравствуйте! Прошу помощи в следующем вопросе:
Ранее в запросе №184598 была составлен программа тему:
"Интегрирование функции, заданной графически методом левых прямоугольников".

Где было необходимо составить программу на языке Borland Pascal для вычисления значения интеграла на интервале [a, b] для функции, заданной графически. Значение интеграла вычислить приближённо по итерационной формуле левых прямоугольников:
(1)
и где h=(b-a)/n - величина шага между двумя соседними точками разбиения интервала интегрирования; fi = f(xi) - значение функции в точке xi = a+h(i-1); i = 1,2,...n.

Вычисления надо было закончить при выполнении условия l In-In2 l < e (эпсилон), где e>0 - достаточно малое значение, задаваемое пользователем (точность вычислений). Здесь In, I2n - значения интеграла, вычисленные по (1) при количестве интервалов разб иения n и 2n соответственно.

Численные значения всех величин, участвующих в вычислениях, надо было считать параметрами программы, и определить их путём ввода.

График представлен на рисунке:

Код :
program graf_fun;
uses crt;
var
E,a,b,s,h,R,k,x,d,In2,In1:real;
i:integer;
n:longint;
begin     {ввод исходных данных}
clrscr;
writeln ('Программа предназначена для вычисления значения интеграла');
writeln ('на интервале [a,b], для функции заданной графически');
writeln;
  In1:=0;
  repeat
    write('Введите величину разбиения n='); readln(n);
    if n<=0 then writeln ('n должно быть больше 0. Повторите ввод! ');
  until (n>0);
  repeat
    write('Введите границу интервала вычислений a: '); readln(a);
    write('Введите границу интервала вычислений b: '); readln(b);
    if not (a<b) then writeln ('a должно быть меньше b. Повторите ввод! ');
  until (a<b);
  repeat
    write('Введите радиус R (R>0): '); readln(r);
    if R<=0 then writeln ('R должно быть больше 0. Повторите ввод! ');
  until (R>0);
  repeat
    write('Введите d (d<0): '); readln(d);
    if d>=0 then writeln ('d должно быть меньше 0. Повторите ввод! ');
  until (d<0);
  repeat
    write('Введите k (k>0): '); readln(k);
    if k<=0 then writeln ('k должно быть больше 0. Повторите ввод! ');
  until (k>0);
  repeat
    write('Введите точность вычисления интеграла E (E>0): '); readln(E);
    if E<=0 then writeln ('E должно быть больше 0. Повторите ввод! ');
  until (E>0);
  repeat
    begin
    h:=(b-a)/n; {расчет шага изменения аргумента}
    s:=0;
    for i:=0 to n-1 do
      begin
      x:=a+i*h; {приращение аргумента}
      if x<=-2*R+d then s:=s+R{сумма значений функции на отрезке [a,b]}
        else if x<d then s:=s+R-SQRT(sqr(R)-sqr(x+R-d))
          else if x<k then s:=s-x+k
            else if x<k+2*R then s:=s-sqrt(sqr(R)-sqr(x-k-R))
              else s:=s+0;
      end;
    In2:=In1; {сохранение предыдущего значения интеграла}
    n:=n*2;
    In1:=h*s; {расчет интеграла}
    end until (abs(In1-In2)<E);
  writeln('Результат rez=',In1);
end.


Суть этого вопроса в следующем:
По данной программе необходимо провести:
1. Математическая формулировка задачи;
2. Численный метод решения.

Для примера выполнения могу привести следующий документ, который можно скачать по ссылке представленной ниже:
Пример оформления поставленной задачи

Дата отправки: 13.12.2011, 18:05
Вопрос задал: Посетитель - 386678 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Юдин Евгений Сергеевич (9-й класс):

Здравствуйте, Посетитель - 386678!
1)Математическая формулировка задачи
Пусть требуется определить значение интеграла функции на отрезке [a,b] . Этот отрезок делится точками x0,x1,x2...xn на n равных отрезков длиной
h=(b-a)/n.
Обозначим через y0,y1,y2....yn значение функции в точках x0,x1,x2...xn.
Далее составляем суммы y0*h+y1*h+....+yn*h.
Каждая из сумм — интегральная сумма функции f(x) и поэтому приближённо выражает интеграл.




2)Численный метод решения.
Требуется вычислить определенный интеграл на интервале [a,b] методом левых прямоугольников. Такое вычисление следует продолжать, пока не будет найдено приблеженное значение интеграла заданной точности e. Как только модуль разницы между значением интеграла и значения и нтеграла на предыдущем шаге меньше точности - завершаем вычисление. Тоисть |I1-I2|<e. Поскольку функция задана графически, то необходимо определять её на неких интервалах. Такими интервалами в нашем случае являются :
1)x<=-2*R+d
2)x<d
3)x<k
4)x<k+2*R
5)x>=k+2*R
На каждом интервале функция будет соответственно принимать вид:
1)y=R
2)y=R-SQRT(sqr(R)-sqr(x+R-d))
3)y=-x+k
4)y=-sqrt(sqr(R)-sqr(x-k-R))
5)y=0
где k,d,r-определенные значения на графике функции.

Консультировал: Юдин Евгений Сергеевич (9-й класс)
Дата отправки: 14.12.2011, 16:29

5
нет комментария
-----
Дата оценки: 15.12.2011, 00:24

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное