Производная функции на интервале

 

Вернемся к нашей функции . Рассмотрим ее табличное представление на интервале [-0.2, 1.4] .

 

xi -0.2 0.2 0.4 0.6 0.8 1.2 1.4
f(xi) 0.04 0.04 0.16 0.36 0.64 1.44 1.96

 

Пусть необходимо построить график производной этой функции.

Для этого необходимо найти значения производных в каждой точке функции. Левые это будут производные или правые, принципиально не важно. Важно то, что для точки не существует левой производной, а для точки — правой. Это связано с тем, что в общем случае мы не знаем, как ведет себя функция за пределами заданного интервала. Хотя мы легко можем продолжить зависимость влево и вправо, на практике эта зависимость, как правило, неизвестна.

Итак, расчет левых производных дает зависимость:

 

-0.2 0.2 0.4 0.6 0.8 1.2 1.4
0.04 0.04 0.16 0.36 0.64 1.44 1.96
--- -0.2 0.2 0.6 1.4 1.8 2.2 2.6

 

Для правых производных:

 

-0.2 0.2 0.4 0.6 0.8 1.2 1.4
0.04 0.04 0.16 0.36 0.64 1.44 1.96
-0.2 0.2 0.6 1.4 1.8 2.2 2.6 ---

 

Обратите внимание, что в обоих случаях зависимость является линейной, что соответствует теории.

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

 

Решение типовых задач

 

Задача 1. Дана табличная функция на интервале [a,b]. Найти производные функции слева и справа от любой точки на интервале.

 

Решение.

Используем данные, полученные в лабораторной работе №5 при табулировании функции Пример чтения данных из файла был описан в листинге 26 и здесь не приводится. Будем считать производные для точки при .

 

Листинг 34

/*Производная функции в точке*/

#include <fstream.h>

#include <math.h>

void main( void )

{

// Массив для хранения значений аргумента и функции

double nArray[11][2];

 

// Прочитать данные табличной функции из файла,

// занести их в массив nArray и вывести на экран (Листинг 26)

 

double dResultLeft, dResultRight;

// Расчет производной слева

dResultLeft = ( nArray[5][1] - nArray[4][1] ) / ( nArray[5][0] - nArray[4][0] );

// Расчет производной справа

dResultRight = ( nArray[6][1] - nArray[5][1] ) / ( nArray[6][0] - nArray[5][0] );

// Вывод результата

cout << "\n\nfor x = " << nArray[5][0] << "\n";

cout << "y`(x)Left = " << dResultLeft << "\ny`(x)Right = ";

cout << dResultRight << "\n";

}

 

 

Задача 2. Дана табличная функция [a,b]. Найти значения производной функции в каждой точке интервала. Занести полученные данные в файл. Построить график производной.

 

Решение.

Как и в предыдущей задаче воспользуемся данными, полученными в лабораторной работе №5 при табулировании функции . Программный код, осуществляющий чтение приводить не будем. Считаем, что данные прочитаны и занесены в массив nArray.

 

Листинг 35

/*Производная функции на интервале*/

#include <fstream.h>

#include <math.h>

void main( void )

{

// Массив для хранения значений аргумента и функции

double nArray[11][2];

 

// Прочитать данные табличной функции из файла,

// занести их в массив nArray и вывести на экран (Листинг 26)

 

// Вывод заголовка

cout << "\nDerivative\nx\ty`\n";

 

// Массив для хранения результата

double dResult[10];

 

ofstream File("derivative.txt");

for ( i = 0; i < 10; i++ )

{

// Расчет производной справа

dResult[i]= (nArray[i+1][1] - nArray[i][1])/(nArray[i+1][0] - nArray[i][0]);

// Вывод результата на экран

cout << nArray[i][0] << "\t" << dResult[i] << "\n";

// Вывод результата в файл

File << nArray[i][0] << "\t" << dResult[i] << "\n";

}

File.close();

}

 

 

Содержимое файла derivative.txt:

0 0.2

0.2 0.6

0.4 1

0.6 1.4

0.8 1.8

1 2.2

1.2 2.6

1.4 3

1.6 3.4

1.8 3.8

 

График производной представлен на рис. 19

 

Рис. 19


Задание на лабораторную работу №8

 

Задача 1. Используя табличные данные функции, полученные в соответствии со своим вариантом в лабораторной работе №5, разработать алгоритм и написать по нему программу вычисления производной функции в некоторой точке. Производную считать слева и справа. Результат вывести на экран.

Задача 2. Используя табличные данные функции, полученные в соответствии со своим вариантом в лабораторной работе №5, разработать алгоритм и написать по нему программу вычисления производной на всем интервале задания функции. Результат вывести на экран и в текстовый файл. Построить графики исходной табличной функции и ее производной.

 

Оформить протокол лабораторной работы.

 

Примечание! Алгоритмы решения задач должны содержать не только расчетную часть, но и блоки формирования входных и выходных данных, а также блоки проверки правильности вводимых данных.

 

Контрольные вопросы

 

1. Что означают термины «производная слева» и «производная справа»?

2. Если табличная функция задана на n точках, в скольких точках можно посчитать производные? Почему?

 


Лабораторная работа №9

 

Цель: усовершенствовать навыки программирования на примере решения задач численного интегрирования.

 

Задачи:

1) Разработать алгоритм и написать по нему программу численного нахождения значения определенного интеграла.

2) Разработать алгоритм и написать по нему программу численного нахождения функции неопределенного интеграла.