- •Основы алгоритмизации и языки программирования Учебно-методическое пособие
- •Содержание
- •Лабораторная работа №1. Базовые языковые конструкции vfp и vba. Основы работы с данными
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №2. Определение корней уравнений Определение корня уравнения методом деления отрезка пополам (дихотомии)
- •Определение корня одномерного уравнения методами касательных и секущих
- •Определение корня одномерного уравнения методом простой итерации
- •Задания
- •Контрольные вопросы
- •Определение максимального и минимального значения функции двух переменных методом градиентного спуска (подъема)
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №4. Рекурсия. Рекурсивные алгоритмы Рекурсия. Рекурсивные алгоритмы
- •Графика и рекурсивные алгоритмы
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №5. Аппроксимация, интерполяция и экстраполяция Простейшие способы интерполяции и экстраполяции данных
- •Аппроксимация выборки случайных чисел методом наименьших квадратов
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №6. Решение систем линейных уравнений Решение систем линейных уравнений методом Гаусса
- •Решение систем линейных уравнений методом Гаусса с выбором максимального элемента
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №7. Итерационные методы решения систем линейных уравнений. Приложения численных методов решения систем линейных уравнений Метод Зейделя
- •Метод Гаусса-Зейделя
- •Обращение матрицы nхn с использованием метода Гаусса
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №8. Вычисление определенных интегралов Вычисление определенных интегралов методом прямоугольников
- •Вычисление определенных интегралов методом трапеций
- •Вычисление интеграла по методу Симпсона
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №9. Численное решение дифференциальных уравнений Методы численного решения дифференциальных уравнений первого порядка
- •Метод Эйлера
- •Метод Кранка-Николсона
- •Метод Рунге-Кутты четвертого порядка для решения уравнения первого порядка
- •Методы численного решения систем дифференциальных уравнений Гармонические колебания
- •Затухающие колебания
- •Периодический процесс с затуханием и с внешней силой
- •Решение системы дифференциальных уравнений методом Эйлера
- •Решение системы дифференциальных уравнений первого порядка методом Рунге-Кутты
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №10. Генерация равномерных и неравномерных распределений случайных чисел Использование гистограмм для отображения характера распределения случайной величины
- •Генератор дискретно-распределенных значений
- •Генерация дискретных распределений с заданным характером распределения вероятностей
- •Генерация непрерывных распределений вещественных величин Псевдонормальное распределение
- •Генерация линейно возрастающего распределения
- •Контрольные вопросы
- •Задания
- •Список рекомендуемой литературы и источников
Лабораторная работа №8. Вычисление определенных интегралов Вычисление определенных интегралов методом прямоугольников
При вычислении определенного интеграла методом прямоугольников подинтегральная функция f(x) на интервале интегрирования заменяется полиномом нулевой степени, т.е. константой. Вычисление определенного интеграла по методу прямоугольников сводится к вычислению площади прямоугольника, одна из сторон которого – длина отрезка интегрирования, другая. Будем линейно аппроксимировать функцию f(x) на некотором разбиении отрезка [a,b] на n частей.
Формула для приближенного вычисления интеграла будет иметь вид:
,
где Si = fi*hi – площадь i – го прямоугольника, fi - значение функции в некоторой точке внутри i – го отрезка, hi – ширина этого отрезка. В частном случае, когда все отрезки имеют одинаковую ширину, hi = h =(b-a)/n.
Если высота i – го прямоугольника вычисляется по значению подынтегральной функции в левой границе прямоугольника – этот метод называется методом левых прямоугольников, соответственно при вычислении высоты прямоугольника по значению подынтегральной функции в правой границе прямоугольника называют методом правых прямоугольников.
Метод правых (рис.1) и левых (рис.2) прямоугольников имеет сравнительно высокую погрешность.
Рис. 1 Метод правых прямоугольников. Рис.2 Метод левых прямоугольников
Если функция на всем интервале интегрирования возрастает, тогда метод левых прямоугольников дает заниженное значение интеграла, а метод правых прямоугольников – завышенное значение, и наоборот, если функция убывающая, то метод левых прямоугольников дает завышенное, а метод правых прямоугольников – заниженное значение интеграла.
Более низкую погрешность имеет метод средних прямоугольников (рис.3), в котором высота прямоугольников вычисляется по значению подынтегральной функции в середине отрезка интегрирования. В этом случае Si = f((xi+1 - xi )/2)*(xi+1 - xi ) или, в случае равномерной сетки, Si = f(xi +h/2)*h.
Рис. 3 Метод средних прямоугольников.
Описание алгоритма вычисления определенного интеграла методом прямоугольников:
n=значение
а=значение
b=значение
h=(b-а)/n
s=0
s1=0
s2=0
Цикл по х от а до b-h с шагом h
s=s+f(x)*h && метод левых прямоугольников
s1=s1+f(x+h)*h && метод правых прямоугольников
s2=s2+f(x+h/2)*h && метод средних прямоугольников
КонецЦикла
Печать s, s1, s2
ЗадатьФункцию F
Параметры x
Вернуть (выражение подынтегральной функции от x)
Пример решения на языке VFP:
clear
k=2
?k^3/3
n=500
a=0
b=2
h=(b-a)/n
s=0
s1=0
s2=0
FOR x=a TO b-h STEP h
s=s+f(x)*h &&метод левых прямоугольников
s1=s1+f(x+h)*h &&метод правых прямоугольников
s2=s2+f(x+h/2)*h &&метод средних прямоугольников
endfor
?"s=",s," s1=",s1, "s2=", s2
FUNCTION f
PARAMETERS x
RETURN x^2
Пример решения на языке VBA:
Sub sub1()
n = 500
a = 0
b = 2
h = (b - a) / n
s = 0
s1 = 0
s2 = 0
For x = a To b - h Step h
‘метод левых прямоугольников
s = s + f(x) * h
‘метод правых прямоугольников
s1 = s1 + f(x + h) * h
‘метод средних прямоугольников
s2 = s2 + f(x + h / 2) * h
Next
Debug.Print "Метод левых прямоугольников : s= " & s & " : s_test= " & s_test(b - a)
Debug.Print "Метод правых прямоугольников
: s1= " & s1 & " : s_test= " & s_test(b - a)
Debug.Print "Метод средних прямоугольников : s2= " & s2 & " : s_test= " & s_test(b - a)
End Sub
Function f(x)
f = x ^ 2
End Function
Function s_test(x)
s_test = x ^ 3 / 3
End Function
Результат работы программы на VBA:
Метод левых прямоугольников : s= 2,642735936 : s_test= 2,66666666666667
Метод правых прямоугольников : s1= 2,658672 : s_test= 2,66666666666667
Метод средних прямоугольников : s2= 2,650695984 : s_test= 2,66666666666667
