Главная страница
Навигация по странице:

  • Задача 1 (метод левых частей)

  • Протестируем программу на интеграле с самостоятельной работы.

  • Задача 2 (метод правых частей)

  • Задача 3 (метод трапеций)

  • Задача 4 (метод парабол)

  • Лабораторная работа 3 Инфа. Лабораторная 3. Лабораторная работа 3 Тема Детерминированные вычислительные процессы с управлением по аргументу


    Скачать 255.56 Kb.
    НазваниеЛабораторная работа 3 Тема Детерминированные вычислительные процессы с управлением по аргументу
    АнкорЛабораторная работа 3 Инфа
    Дата25.12.2021
    Размер255.56 Kb.
    Формат файлаpdf
    Имя файлаЛабораторная 3.pdf
    ТипЛабораторная работа
    #317820

    Лабораторная работа №3
    1.Тема:Детерминированные вычислительные процессы с управлением по аргументу.
    Численное интегрирование.
    2.Цель:Посчитать интеграл всеми возможными числовыми способами, определить наиболее точный из них
    3)Используемое оборудование: ПК, abs.net pascal
    4)Постановка задачи: написать программу для вычисления интеграла,
    Протестировать программу на определенном интеграле.
    Кол-во разбиений
    Шаг
    Метод левых прямоуголь ников
    Метод правых прямоуголь ников
    Метод трапеций
    Метод парабол
    10 0.7 0.3502 0.3490 0.3496 0.3265 100 0.07 0.3462 0.3461 0.3462 0.3496 1000 0.007 0.3493 0.3492 0.3492 0.3496 10000 0.0007 0.3496 0.3496 0.3496 0.3495
    Задача 1 (метод левых частей)
    5) Мат модель

    6)
    7)
    имя тип смысл a
    real
    Нижний предел интегрирования;
    вводится с клавиатуры b
    real
    Верхний предел интегрирования;
    вводится с клавиатуры x
    real
    Аргумент цикла
    h
    real
    Шаг s
    real
    Результат n
    integer
    Количество разбиений;
    вводится с клавиатуры
    8)
    var n: integer;
    s, h, x, a, b: real;
    begin write(' кол-во разбиений: ');
    read(n);
    a:=1.9;
    b:=2.6;
    h:= (b-a)/n;
    s:= 0;
    x:= a;
    while(x<=b-h) do begin s:= s+sqrt(2*x+1.7)/(2.4+sqrt(1.2*x*x+0.6));
    x:= x+h;
    end;
    s:= h*s;
    writeln ('Ответ: ', s);
    end.
    Протестируем программу на интеграле с самостоятельной работы.

    Итог выполнения кода близок к результатам вычисления интеграла вручную.
    значит программа работает верно.
    Задача 2 (метод правых частей)
    5)

    6)
    7)
    имя тип смысл a
    real
    Нижний предел интегрирования;
    вводится с клавиатуры
    b
    real
    Верхний предел интегрирования;
    вводится с клавиатуры x
    real
    Аргумент цикла h
    real
    Шаг s
    real
    Результат n
    integer
    Количество разбиений;
    вводится с клавиатуры
    8,9)
    var n: integer;
    s, h, x, a, b: real;
    begin write('Введите кол-во разбиений: ');
    read(n);
    a:=1.9;
    b:=2.6;
    h:= (b-a)/n;
    s:= 0;
    x:= a+h;
    while(x<=b) do begin s:=s+sqrt(2*x+1.7)/(2.4+sqrt(1.2*x*x+0.6));
    x:= x+h;
    end;
    s:= h*s;
    writeln ('Ответ: ',s);
    end.

    Итог выполнения кода близок к результатам вычисления интеграла вручную.
    значит программа работает верно.
    Задача 3 (метод трапеций)
    5)

    6)
    7)
    имя тип смысл a
    real
    Нижний предел интегрирования;
    вводится с клавиатуры b
    real
    Верхний предел
    интегрирования;
    вводится с клавиатуры x
    real
    Аргумент цикла h
    real
    Шаг s
    real
    Результат n
    integer
    Количество разбиений;
    вводится с клавиатуры sb real
    Промежуточная переменная sa real
    Промежуточная переменная
    8,9)
    var n: integer;
    s, h, x, a, b,sa,sb: real;
    begin write('Введите кол-во разбиений: ');
    read(n);
    a:=1.9;
    b:=2.6;
    h:= (b-a)/n;
    s:= 0;
    x:= a+h;
    while(x<=b-h) do begin s:= s+sqrt(2*x+1.7)/(2.4+sqrt(1.2*x*x+0.6));
    x:= x+h;
    end;
    sa:= sqrt(2*a+1.7)/(2.4+sqrt(1.2*a*a+0.6));
    sb:= sqrt(2*b+1.7)/(2.4+sqrt(1.2*b*b+0.6));
    s:= h*((sa+sb)/2+s);
    writeln ('Ответ: ', s);
    end.

    Итог выполнения кода близок к результатам вычисления интеграла вручную.
    значит программа работает верно.
    Задача 4 (метод парабол)
    5)

    6)
    7)
    имя тип смысл a
    real
    Нижний предел интегрирования;
    вводится с клавиатуры b
    real
    Верхний предел интегрирования;
    вводится с клавиатуры x
    real
    Аргумент цикла h
    real
    Шаг
    s
    real
    Результат n
    integer
    Количество разбиений;
    вводится с клавиатуры sb real
    Промежуточная переменная sa real
    Промежуточная переменная
    8,9)
    var n: integer;
    s, h, x, a, b,sa,sb,k: real;
    begin write('Введите кол-во разбиений: ');
    read(n);
    a:=1.9;
    b:=2.6;
    h:= (b-a)/n;
    s:= 0;
    x:= a+h;
    while(x<=b-h) do begin s:= s+sqrt(2*x+1.7)/(2.4+sqrt(1.2*x*x+0.6));
    x:= x+2*h;
    end;
    k:=0;
    x:=a+2*h;
    while (x<=b-2*h) do begin k:= k+sqrt(2*x+1.7)/(2.4+sqrt(1.2*x*x+0.6));
    x:= x+2*h;
    end;
    sa:= sqrt(2*a+1.7)/(2.4+sqrt(1.2*a*a+0.6));
    sb:= sqrt(2*b+1.7)/(2.4+sqrt(1.2*b*b+0.6));
    s:= h/3*(sa+sb+4*s+2*k);
    writeln ('Ответ: ', s);
    end.

    Итог выполнения кода близок к результатам вычисления интеграла вручную.
    значит программа работает верно
    Вывод: Для каждой функции свой метод более точен из за этого и существует такое количество методов. Посмотрев на таблицу можно увидеть что при увеличении количества разбиений увеличивается и точность. Для этой функции самым точным методов является - метод левых треугольников


    написать администратору сайта