На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Друзья, соблюдайте, пожалуйста, правила форума и данного раздела:
Данный раздел не предназначен для вопросов и обсуждений, он содержит FAQ-заготовки для разных языков программирования. Любой желающий может разместить здесь свою статью. Вопросы же задавайте в тематических разделах!
• Если ваша статья может быть перенесена в FAQ соответствующего раздела, при условии, что она будет оформлена в соответствии с Требованиями к оформлению статей.
• Чтобы остальным было проще понять, указывайте в описании темы (подзаголовке) название языка в [квадратных скобках]!
Модераторы: Модераторы
  
> ВЫЧИСЛЕНИЕ ОПРЕДЕЛЕННЫХ ИНТЕГРАЛОВ , [Pascal]
    ВЫЧИСЛЕНИЕ ОПРЕДЕЛЕННЫХ ИНТЕГРАЛОВ

    Пусть задан интеграл S.

    картинка

    Значение интеграла численно равно значению площади криволинейной траппеции, ограниченной кривой y=f(x) (непрерывная функция) и прямыми x=a и x=b.

    Решение

    картинка

    Разделим отрезок [a;b] на n равных частей с точками X0=a, X1, X2 ... Xn=b. Шаг интегрирования (приращение) dx = (b-a)/n.
    Вычислим значение функции в каждой точке деления Y0=F(X0), Y1=F(X1), .. Yn=F(Xn).

    Метод прямоугольников

    картинка

    Заменим каждую полоску криволинейной трапеции прямоугольником с высотой, равной значению функции на левом конце промежутка. (На рисунке красным цветом показаны дополнительные построения). Площадь криволинейной фигуры заменится площадью сумм прямоугольников и будет равна S = Y0*h+Y1*h+..+Yn-1*h = ((b-a)/n)*(Y0+Y1+...Yn-1).

    картинка

    Если же каждую полоску криволинейной трапеции заменим прямоугольником с высотой, равной значению функции на правом конце промежутка, то формула вычисления площади получит вид S = Y1*h+Y2*h+..+Yn*h = ((b-a)/n)*(Y1+Y2+...Yn).

    Метод трапеций

    картинка

    Если каждую полоску криволинейной трапеции заменить обычной трапецией, то площадь фигуры будет равна сумме площадей трапеций:
    S = h*((Y0+Yn)/2 +Y1+Y2+...+Yn)

    Метод Симпсона

    картинка

    Для вычисления этим методом необходимо, чтобы число частей было четным. Через каждые три точки (Xi;Yi), (Xi+1;Yi+1), (Xi+2;Yi+2) проведем пораболу и заменим соответствующий кусок криволинейной трапеции на параболическую трапецию. Получим формулу:
    S = ((b-a)/(3*n))*(Y0+Yn+4*(Y1+Y3+...Yn-1)+2*(Y2+Y4+..Yn)).

    ExpandedWrap disabled
      uses crt;
       
      {Функция, площадь которой нужно вычислить}
      function f(x: real): real;
      begin
       f := x*x+3;
      end;
       
      var a,b,dx,x,y,y1,y2: real;
          n: integer;
      begin
       clrscr;
       
       {Вводим промежуток}
       write ('Введите a:'); readln (a);
       write ('Введите b:'); readln (b);
       
       {Вводим количество частей}
       write ('Введите n:'); readln (n);
       
       {Определяем шаг интегрирования}
       dx := (b-a)/n;
       
       {Вычисление по формуле левых прямоугольников}
       y := 0; x := a;      {x = a = X0}
       while x < b do begin {x < Xn}
        y := y + f(x);
        x := x + dx;        {x = X0, X1, X2 ... Xn-1}
       end;
       y := y * dx;
       writeln ('Площадь по формуле левых прямоугольников: ', y: 10: 3);
       
       {Вычисления по формуле правых многоугольников}
       y := 0; x := a + dx;  {x = X1}
       while x <= b do begin {x <= Xn}
        y := y + f(x);
        x := x + dx;         {x = X1, X2, X3 ... Xn}
       end;
       y := y * dx;
       writeln ('Площадь по формуле правых прямоугольников: ', y:10:3);
       
       {Вычисление по формуле трапеций}
       y := 0; x := a + dx;  {x = X1}
       while x < b do begin  {x < Xn}
        y := y + f(x);
        x := x + dx;         {x = X1, X2, X3 ... Xn-1}
       end;
       y := (y + (f(a)+f(b))/2) * dx;
       writeln ('Площадь по формуле трапеций: ', y:10:3);
       
       {Вычисление по методу Симпсона}
       y1 := 0; x := a + dx;       {x = X1}
       while x < b - dx do begin   {x < Xn}
        y1 := y1 + f(x);
        x := x + 2*dx;             {x = X1, X3, X5 ... Xn-1}
       end;
       y2 := 0; x := a + 2*dx;     {x = X2}
       while x < b - 2*dx do begin {x < Xn-1}
        y2 := y2 + f(x);
        x := x + 2*dx;             {x = X2, X4, X6 ... Xn-2}
       end;
       y := ((b-a)/(3*n)) * (f(a)+f(b) + 4*y1 + 2*y2);
       writeln ('Площадь по формуле Симпсона: ', y:10:3);
       
       readkey;
      end.


    Как картинку запостить? :wall:

    Эта тема была разделена из темы "Неотёсанные топики"
    Сообщение отредактировано: Jin X -
      Все очень неплохо, но нужно подробнее описать каждый метод.
        Romtek, мож описание вырезать из статейки "ЧИСЛЕННОЕ ДИФФЕРЕНЦИРОВАНИЕ И ИНТЕГРИРОВАНИЕ" и вместо этой выложить? Этот пост - он ведь очень урезанная версия статьи, правда код немного другой.
          Цитата T[]X!N @
          мож описание вырезать из статейки "ЧИСЛЕННОЕ ДИФФЕРЕНЦИРОВАНИЕ И ИНТЕГРИРОВАНИЕ" и вместо этой выложить?
          Нет, не вместо. Но дополнить оттуда можно.
            ExpandedWrap disabled
              { Вычисление интеграла методом средних прямоугольников }
              var
                n : integer;
                s: real;
               
              function f(x:real):real;
              begin
                f:=1-0.25*sin(x)*sin(x);
              end;
               
              procedure rect (a,b:real; n:integer; var s:real);
              var
                i : integer;
                h,x: real;
              begin
                h:=(b-a)/n;
                x:=a+h/2;
                s:=0.0;
                for i:=1 to n do
                  begin
                    s:=s+f(x);
                    x:=x+h;
                  end;
                s:=s*h;
              end;
               
              begin
                rect (0,pi/2,40, s);
                write('Интеграл = ',s:16:4);
              end.
              { Ответ:            }
              { Интеграл = 1.3744 }
              Картинки к статье нужны? Т.е. как графически выглядят методы с левосторонними/правосторонними прямоугольниками?
                Конечно!
                А у тебя есть ссылки на них, или они у тебя на компьютере?
                  Вот пробная иллюстрация с прямоугольниками. Если надо - укажи какую функцию выбрать, в каком интервале должен находится x и на сколько частей разбивать - я сделаю еще графики.
                  Прикреплённый файлПрикреплённый файлpack.rar (15.35 Кбайт, скачиваний: 519)
                    mikv
                    Лучше middlebox и вычислять по точности eps. Главный упор не на теорию (лучше дать ссылки на теорию), а на реализацию вычисления.
                      лучше всего прибегать к методу средних прямоугольников. У него порядок аппроксимации h2. В методах же левых и правых прямоугольников за счет нарушения симметрии наблюдается порядок аппроксимации h. Кроме того, метод трапеций имеет оценку погрешности порядка h2(b-a)*M2/12, в то же время, у метода прямоугольников оценка погрешности имеет вид: h2(b-a)*M2/24. То есть погрешность в методе трапеций у нас в два раза больше, чем в методе срединных прямоугольников (если у нас задана сетка с шагом h).

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


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0300 ]   [ 15 queries used ]   [ Generated: 10.12.24, 23:55 GMT ]