- •Общие указания
- •Установка программного обеспечения
- •Основные библиотеки
- •Лабораторная работа №1
- •Основные теоретические сведения Создание проекта
- •Написание программного кода
- •Компиляция и устранение ошибок
- •Запуск программы на выполнение и ее останов
- •Ввод/вывод информации на экран
- •Генератор случайных чисел
- •Задание к лабораторной работе
- •Контрольные вопросы
- •Лабораторная работа №2
- •Основные теоретические сведения
- •Переменные и оператор присваивания
- •Арифметические операторы
- •Математические функции
- •Оператор if
- •Логические операторы
- •Оператор switch
- •Цикл while
- •Цикл for
- •Инструкция return
- •Решение типовых задач
- •Задание к лабораторной работе Варианты заданий к задаче 1
- •Варианты заданий к задаче 2
- •Варианты заданий к задаче 3
- •Контрольные вопросы
- •Лабораторная работа №3
- •Основные теоретические сведения
- •Одномерные массивы
- •Двумерные массивы
- •Алгоритмы
- •Решение типовых задач
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа №4
- •Основные теоретические сведения. Функции
- •Самодиагностика
- •Лабораторная работа №4
- •Основные теоретические сведения.
- •Транспонирование матриц
- •Сложение матриц
- •Умножение матриц
- •Задание на лабораторную работу №4
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа №5
- •Основные теоретические сведения.
- •Работа с файлами
- •Решение типовых задач
- •Задание на лабораторную работу №5
- •Варианты заданий
- •Производная функции на интервале
- •Решение типовых задач
- •Задание на лабораторную работу №6
- •Вычисление интегральной функции
- •Решение типовых задач
- •Задание на лабораторную работу №7
- •Контрольные вопросы
- •Лабораторная работа №8
- •Основные теоретические сведения.
- •Решение типовых задач
- •Задание на лабораторную работу №8
- •Варианты заданий
- •Контрольные вопросы
- •Литература
Решение типовых задач
Задача 1. Дана аналитическая функция . Найти значение определенного интеграла на интервале [a,b] с заданной точностью .
Решение.
Будем решать задачу методом правых прямоугольников.
Листинг 31 |
/*Определенный интеграл вычесленный с заданной точностью*/
#include <fstream.h>
#include <math.h>
void main( void )
{
// Границы интервала
double dA, dB;
cout << "Input interval [a,b]\n";
// Проверка правильности ввода интервала.
// В случае ошибки ввод повторяется
bool bKey = false;
while ( !bKey )
{
cin >> dA >> dB;
if ( dA < dB )
{
bKey = true;
}
else
{
cout << "Wrong interval [a,b]\n";
}
}
cout << "Input threshold\n";
double dThreshold;
// Ввод заданной точности
cin >> dThreshold;
// Количество частичных интервалов
int nCount = 10;
// Расчет шага аргумента
double dDeltaX = (dB - dA) / nCount;
// Прерыдущее и следующее приближение значения интеграла
double dResultPrev = 0, dResultNext;
// Расчет первого приближения интеграла
for ( int i = 0; i < nCount; i++ )
{
dResultPrev = dResultPrev + 2 * ( dA + dDeltaX * i ) * dDeltaX;
}
// Увеличения числа частичных интервалов
nCount = nCount * 2;
// Перерасчет шага аргумента
dDeltaX = (dB - dA) / nCount;
// Изначально принимаем погрешность вычисления первого приближения
// значения интеграла заведомо большей заданной
double dError = dThreshold + 1;
// Повторяем итерации до тех пор пока не достигнута заданная точность
while ( dError > dThreshold )
{
// Вычисляем ичередное приближение
dResultNext = 0;
for ( i = 0; i < nCount; i++ )
{
dResultNext = dResultNext + 2 * ( dA + dDeltaX * i ) * dDeltaX;
}
// Определяем погрешность вычисления
dError = fabs( dResultNext - dResultPrev );
dResultPrev = dResultNext;
// Выводим промежуточный результат на экран
cout <<"Number of interval: "<<nCount<<"\t Error: "<<dError<<"\n";
// Увеличиваем число частичных интервалов
// и перасчитывем шаг аргумента
nCount = nCount * 2;
dDeltaX = (dB - dA) / nCount;
}
// Выводим на экран конечный результат
cout << "Result: " << dResultPrev << "\n";
}
|
Тестовый пример
На интервале [0, 2] значение интеграла от функции равно:
Проводим тестирование программы.
Вводим интервал интегрирования [0, 2], точность расчета — 0.1.
Протокол работы программы:
Input interval [a,b]
0
2
Input threshold
0.1
Number of interval: 20 Error: 0.54
Number of interval: 40 Error: 0.285
Number of interval: 80 Error: 0.14625
Number of interval: 160 Error: 0.0740625
Result: 3.92531
Повторяем расчет с повышенной точностью 0.01.
Протокол работы программы:
Input interval [a,b]
0
2
Input threshold
0.01
Number of interval: 20 Error: 0.54
Number of interval: 40 Error: 0.285
Number of interval: 80 Error: 0.14625
Number of interval: 160 Error: 0.0740625
Number of interval: 320 Error: 0.0372656
Number of interval: 640 Error: 0.0186914
Number of interval: 1280 Error: 0.00936035
Result: 3.99063
Задание на лабораторную работу №8
Задача 1. Дана аналитическая функция . Вид функции выбрать в соответствии с таблицей 8.1. Найти значение определенного интеграла на интервале [a,b] с заданной точностью .
Оформить протокол лабораторной работы.
Примечание! Алгоритмы решения задач должны содержать не только расчетную часть, но и блоки формирования входных и выходных данных, а также блоки проверки правильности вводимых данных.