Исследование точности численного дифференцирования
Для выполнения программы достаточно вычислительной установки типа PC с процессором Pentium III (или быстрее) и 256 Мбайт оперативной памяти, оснащенной любой из следующих операционных систем: Windows NT и выше. Для выполнения программы достаточно вычислительной установки типа PC с процессором Pentium III (или быстрее) и 256 Мбайт оперативной памяти, оснащенной любой из следующих операционных… Читать ещё >
Исследование точности численного дифференцирования (реферат, курсовая, диплом, контрольная)
Курсовая работа
" Исследование точности численного дифференцирования"
Екатеринбург 2009 г.
1. Подробное описание задачи и метод ее решения
Исследуйте два метода численного дифференцирования:
где xi — узел равномерной сетки с шагом h.
Предполагается, что отрезок дифференцирования [a, b] разбит на n равных частей системой точек (сеткой) Исследование проведите на примерах:
Относительную погрешность определяйте относительно максимального значения функции на интервале, абсолютную погрешность рассчитайте относительно значений аналитически вычисленной производной.
Численное дифференцирование применяется, если функцию y (x) трудно или невозможно продифференцировать аналитически — например, если она задана таблицей. Оно нужно также при решении дифференциальных уравнений при помощи разностных методов.
При численном дифференцировании функцию y (x) аппроксимируют легко вычисляемой функцией. При этом можно использовать различные способы аппроксимации. Задание требует исследовать 2 метода. Оба метода можно применять для всех функций, приведенных в задании, исходя из области определения этих функций.
На самом деле, метод решения данной задачи довольно тривиален, так как все формулы приведены в условии задачи.
Входные данные: номер функции, номер метода, точность (шаг), левое значение, правое значение. Для функции у=cos2mx нужно выбрать параметр m из предложенных.
Выходные данные: аргумент, значение функции при заданном параметре, значение первой производной, абсолютная погрешность, относительная погрешность.
1) y=cos2mx, для m=1 [0, 3.14]
выберем шаг=0,3 и интервал [0,3.14]
Метод 1
параметр | значение функции | значение производной | абсолютная погрешность | относительная погрешность | |
0,3 | 0,912 668 | — 0,531 369 | 0,596 719 | 0,59 104 | |
0,6 | 0,681 179 | — 0,877 115 | 0,25 217 | 1,12 928 | |
0,9 | 0,386 399 | — 0,91 646 | 0,650 194 | 1,56 665 | |
1,2 | 0,131 303 | — 0,635 659 | 1,22 842 | 1,86 408 | |
1,5 | 0,500 375 | — 0,132 804 | 1,86 219 | 1,99 499 | |
1,8 | 0,516 208 | 0,416 443 | 2,36 414 | 1,9477 | |
2,1 | 0,25 487 | 0,820 214 | 2,54 663 | 1,72 642 | |
2,4 | 0,543 749 | 0,937 461 | 2,28 839 | 1,35 093 | |
2,7 | 0,817 346 | 0,727 226 | 1,58 199 | 0,85 476 | |
0,980 085 | 0,26 295 | 0,54 519 | 0,28 224 | ||
Метод 2
параметр | значение функции | значение производной | абсолютная погрешность | относительная погрешность | |
0,3 | 0,912 668 | — 0,562 306 | 0,287 348 | 0,59 104 | |
0,6 | 0,681 179 | — 0,928 182 | 0,201 103 | 1,12 928 | |
0,9 | 0,386 399 | — 0,969 817 | 0,596 837 | 1,56 665 | |
1,2 | 0,131 303 | — 0,672 668 | 1,19 141 | 1,86 408 | |
1,5 | 0,500 375 | — 0,140 536 | 1,85 445 | 1,99 499 | |
1,8 | 0,516 208 | 0,440 689 | 2,38 838 | 1,9477 | |
2,1 | 0,25 487 | 0,867 969 | 2,59 439 | 1,72 642 | |
2,4 | 0,543 749 | 0,992 042 | 2,34 297 | 1,35 093 | |
2,7 | 0,817 346 | 0,769 566 | 1,62 433 | 0,85 476 | |
0,980 085 | 0,278 259 | 0,560 499 | 0,28 224 | ||
Графики Для первого графика выберем шаг = 0,05, для большей точности построения численный дифференцирование абсолютный погрешность Рисунок 1. Значение функции y=cos2mx при m=1
Рисунок 2. Значение первой производной функции y=cos2mx при m=1
Рисунок 3. Абсолютная погрешность функции y=cos2mx при m=1
Рисунок 4. Относительная погрешность функции y=cos2mx при m=1
2) y=cos2mx, для m=12 [0, 3.14]
выберем шаг=0,3 и интервал [0,3.14]
Метод 1
параметр | значение функции | значение производной | абсолютная погрешность | относительная погрешность | |
0,3 | 0,804 176 | — 1,4 985 | 1,93 489 | 0,885 041 | |
0,6 | 0,370 091 | — 1,27 735 | 0,309 983 | 1,58 734 | |
0,9 | 0,37 764 | — 0,50 431 | 2,46 618 | 1,96 187 | |
1,2 | 0,67 505 | 0,663 757 | 2,59 507 | 1,93 132 | |
1,5 | 0,436 018 | 1,31 191 | 0,190 069 | 1,50 197 | |
1,8 | 0,854 648 | 0,932 442 | 1,69 494 | 0,762 501 | |
2,1 | 0,995 483 | — 0,177 401 | 0,429 848 | 0,134 416 | |
2,4 | 0,748 207 | — 1,14 829 | 2,15 186 | 1,358 | |
2,7 | 0,306 512 | — 1,21 972 | 0,445 798 | 1,66 552 | |
0,16 375 | — 0,335 752 | 2,31 931 | 1,98 356 | ||
Метод 2
параметр | значение функции | значение производной | абсолютная погрешность | относительная погрешность | |
0,3 | 0,804 176 | — 1,4 985 | 1,93 489 | 0,885 041 | |
0,6 | 0,370 091 | — 1,27 735 | 0,309 983 | 1,58 734 | |
0,9 | 0,37 764 | — 0,50 431 | 2,46 618 | 1,96 187 | |
1,2 | 0,67 505 | 0,663 757 | 2,59 507 | 1,93 132 | |
1,5 | 0,436 018 | 1,31 191 | 0,190 069 | 1,50 197 | |
1,8 | 0,854 648 | 0,932 442 | 1,69 494 | 0,762 501 | |
2,1 | 0,995 483 | — 0,177 401 | 0,429 848 | 0,134 416 | |
2,4 | 0,748 207 | — 1,14 829 | 2,15 186 | 1,358 | |
2,7 | 0,306 512 | — 1,21 972 | 0,445 798 | 1,66 552 | |
0,16 375 | — 0,335 752 | 2,31 931 | 1,98 356 | ||
Графики Для первых двух графиков выберем шаг = 0,05
Рисунок 5. Значение функции y=cos2mx при m=12
Рисунок 6. Значение первой производной функции y=cos2mx при m=12
Рисунок 7. Абсолютная погрешность функции y=cos2mx при m=12
Рисунок 8. Относительная погрешность функции y=cos2mx при m=12
3) y= [0. 01,1]
выберем шаг=0,05 на интервале [0. 5,1], графики при этих данных наиболее наглядные данные.
Метод 1
параметр | значение функции | значение производной | абсолютная погрешность | относительная погрешность | |
0,5 | — 16,3249 | 0,324 865 | |||
0,55 | 3,30 579 | — 12,2222 | 0,201 185 | 3,526 | |
0,6 | 2,77 778 | — 9,38 921 | 0,129 953 | 2,31 481 | |
0,65 | 2,36 686 | — 7,36 961 | 0,869 563 | 1,82 066 | |
0,7 | 2,4 082 | — 5,89 086 | 0,599 575 | 1,45 773 | |
0,75 | 1,77 778 | — 4,78 316 | 0,424 225 | 1,18 519 | |
0,8 | — 3,93 695 | 0,306 973 | 0,976 562 | ||
0,85 | 1,38 408 | — 3,27 932 | 0,22 655 | 0,814 166 | |
0,9 | 1,23 457 | — 2,7605 | 0,170 138 | 0,685 871 | |
0,95 | 1,10 803 | — 2,34 568 | 0,129 775 | 0,583 175 | |
— 2,1 004 | 0,100 376 | 0,5 | |||
Метод 2
параметр | значение функции | производная | абсолютная | относительная | |
0,5 | — 15,9794 | 0,205 506 | |||
0,55 | 3,30 579 | — 12,0106 | 0,1 042 | 3,526 | |
0,6 | 2,77 778 | — 9,25 364 | 0,56 158 | 2,31 481 | |
0,65 | 2,36 686 | — 7,27 947 | 0,31 844 | 1,82 066 | |
0,7 | 2,4 082 | — 5,82 902 | 0,188 505 | 1,45 773 | |
0,75 | 1,77 778 | — 4,73 958 | 0,115 782 | 1,18 519 | |
0,8 | — 3,90 552 | 0,734 272 | 0,976 562 | ||
0,85 | 1,38 408 | — 3,25 619 | 0,478 899 | 0,814 166 | |
0,9 | 1,23 457 | — 2,74 316 | 0,320 172 | 0,685 871 | |
0,95 | 1,10 803 | — 2,33 248 | 0,218 821 | 0,583 175 | |
— 1,99 985 | 0,152 533 | 0,5 | |||
В конце работы программы получен текстовый файл, содержащий аргумент функции, значение функции, значение первой производной, абсолютную и относительную погрешность. По этим данным построены графики зависимости аргумента от значения функции, производной, абсолютной и относительной погрешности. Каждый график содержит кривые, полученные вычислениями двумя различными методами, графики примерно совпадают, но все же есть некоторые погрешности.
Приложение
Описание применения
Техническое задание
Исследуйте два метода численного дифференцирования:
где xi — узел равномерной сетки с шагом h.
Предполагается, что отрезок дифференцирования [a, b] разбит на n равных частей системой точек (сеткой)
Исследование проведите на примерах:
Относительную погрешность определяйте относительно максимального значения функции на интервале, абсолютную погрешность рассчитайте относительно значений аналитически вычисленной производной. Данная программа предназначена для исследования метода численного дифференцирования двумя способами.
Программа была отлажена и проверена на вычислительной установке PC c процессором AMD Turion™ X2 Dual Core Mobile RM-76 2.30 Гц, работающей под управлением операционной системы Windows 7 Ultimate, ОЗУ 4 Гб. На других вычислительных установках программа не проверялась.
Для выполнения программы выбрана вычислительная установка типа PC с процессором Pentium III (или быстрее) и 256 Мбайт оперативной памяти, оснащенной любой из следующих операционных систем: Windows NT и выше.
Для компиляции исходного кода в исполняемый файл необходим компилятор MS Visual Studio версии 2005 и выше, совместимость с другими компиляторами не гарантируется.
Программа derivation предназначена для исследования метода численного дифференцирования двумя способами.
Данная программа написана на языке С++, реализована в компиляторе Microsoft Visual Studio 2005.
Для выполнения программы достаточно вычислительной установки типа PC с процессором Pentium III (или быстрее) и 256 Мбайт оперативной памяти, оснащенной любой из следующих операционных систем: Windows NT и выше.
Программа derivation предназначена для исследования метода численного дифференцирования двумя способами.
Численное дифференцирование применяется, если функцию y (x) трудно или невозможно продифференцировать аналитически — например, если она задана таблицей. Оно нужно также при решении дифференциальных уравнений при помощи разностных методов.
Программа состоит из нескольких функций, рассмотрим их подробнее.
Описание функции first_function
Данная функция вычисляет значение y=cos2mx и возвращает.
Описание функции first_derivation_real
Данная функция вычисляет аналитическое значение производной первой функции.
Описание функции Rus
Данная функция предназначена для русификации программы Описание функции second_function
Данная функция вычисляет значение y=
Описание функции second_derivation_real
Данная функция вычисляет аналитическое значение производной второй функции.
Описание функции first_derivation
Данная функция производит дифференцирование первым способом
Описание функции second_derivation
Данная функция производит дифференцирование вторым способом
pFunc func — указатель на функци., которую надо продифферинцировать Описание функции WriteToFile
Данная функция записывает полученные значения в файл и вывод в консоли Описание функции compute_derivation
Данная функция вычисляет производную
Описание функции _finite
Данная функция проверяет на конечность число.
Описание функции main
Данная функция служит для ввода исходных данных, объединения всех предыдущих функций, вычисления абсолютных и относительных погрешностей.
Используемые технические средства
Для выполнения программы достаточно вычислительной установки типа PC с процессором Pentium III (или быстрее) и 256 Мбайт оперативной памяти, оснащенной любой из следующих операционных систем: Windows NT и выше.
Вызов и загрузка
Для запуска программы derivation необходимо открыть директорию, в которой находится программа, и использовать (двойной или одиночный клик, в зависимости от настроек ОС) для запуска файл derivation.exe. После чего должна запуститься данная программа.
Текст программы
#include «main.h»
using namespace std;
char bufRus[256];
// файл для записи
ofstream *_out;
// Перевод в юникод
char* Rus (const char* text)
{
CharToOem (text, bufRus);
return bufRus;
}
// параметр m для первой функции
int param4func = 1;
// первая функция
double first_function (double x)
{
//cos2 (m*x)
return cos (param4func*x)*cos (param4func*x);
}
// аналитическое значение производной первой функции
double first_derivation_real (double x)
{ // -2 * sin (m*x)
return -2 * sin (param4func*x);
}
// вторая функция
double second_function (double x)
{
// 1/x2
return 1/(x*x);
}
// аналитическое значение производной второй функции
double second_derivation_real (double x)
{ // -2 * 1/x3
return -2 * 1/(x*x*x);
}