
- •2 Численное интегрирование 14
- •Введение
- •1 Численное решение нелинейных уравнений
- •Рассмотрим модифицированный метод Ньютона (метод секущих).
- •Модифицированный метод Ньютона сходится медленнее, чем исходный (немодифицированный) метод, однако менее сложен при вычислениях и потому часто оказывается предпочтительным.
- •2 Численное интегрирование
- •Выведем формулу метода Симпсона (парабол). В силу пятого свойства определенного интеграла имеем
- •Для получения формулы метода парабол (Симпсона) вычислим
- •3 Обработка экспериментальных данных
3 Обработка экспериментальных данных
На практике часто приходится сталкиваться с задачей сглаживания экспериментальных данных – задача аппроксимации.
Основная задача аппроксимации – построение приближенной (аппроксимирующей) функции наиболее близко проходящей около данных точек или около данной непрерывной функции [8].
Аппроксимация
– процесс подбора эмпирической функции
для установления из опыта функциональной
зависимости
Эмпирические формулы служат для аналитического представления опытных данных.
3.1 Метод наименьших квадратов
Суть
метода наименьших квадратов заключается
в нахождении коэффициентов линейной
зависимости, при которых функция двух
переменных а
и b
принимает
наименьшее значение. То есть, при данных
а
и b
сумма квадратов отклонений экспериментальных
данных от найденной прямой будет
наименьшей.
Таким образом, решение примера сводится к нахождению экстремума функции двух переменных.
Метод
наименьших квадратов широко используется
для обработки экспериментальных данных,
которые измерены с заметной погрешностью
[9].
Метод
наименьших квадратов заключается в
решении системы, составленной следующим
образом [10]: находим частные производные
функции
по переменным а
и b,
приравниваем эти производные к нулю.
,
(3.1.1)
где
и
(i
= 1, 2, ... n)
– величины,
полученные в результате эксперимента,
– количество испытаний.
Решаем полученную систему уравнений любым методом и получаем формулы для нахождения коэффициентов по методу наименьших квадратов (МНК).
Выразим параметры a и b из системы (3.1.1), получим следующие формулы:
(3.1.2)
Схема алгоритма вычисления параметров линейной корреляции методом наименьших квадратов приведена на рисунке 3.1.2.
Рисунок 3.1.2 – Схема алгоритма метода наименьших квадратов
3.2 Реализация метода наименьших квадратов
Для аппроксимации экспериментальных данных в системе MathCAD решаем систему уравнений методом Крамера. Проведем проверку с помощью функции Givin-Find.
Введем эксперементальные данные, где i - количество х и y
Составим систему из двух уравнений с двумя неизвестными
Вычислим суммы в уравнениях
Подставим полученные значения обратно в уравнения
Полученную систему уравнений решим методом Крамера.
Cоставим матрицу
Найдем определитель матрицы
Найдем определитель а
Найдем определитель b
Определим коэффициенты а и b (значения округлим до десятых)
Искомая линейная функция
Задаем начальные приближения для всех неизвестных, входящих в систему уравнений.
Печатаем ключевое слово Given. Оно указывает Mathcad , что далее следует система уравнений.
Печатаем ключевое слово
Mathcad возвращает решение системы. Число аргументов должно быть равно числу неизвестных.
Изобразим графически линейную функцию в зависимости от эксперементальных данных
Для проверки полученных коэффициентов построили графики исходных точек и аппроксимирующей прямой, которые изображены на рисунке 3.2.1.
Рисунок 3.2.1 – Проверка результатов
Метод наименьших квадратов, реализованный на языке программирования C#, выглядит следующим образом:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Наим.квадраты /*Данная программа находит аппроксимирующую зависимость табличных данных*/
{ /*в виде линейной функции методом наименьших квадратов*/
class Program
{
static void Main()
{ /*Используем двумерный массив для ввода зксперементальных данных */
/*Первая строка будет соответствовать значениям Х, вторая - Y*/
double[,] XY = { {1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7}, {0, 0.07, 0.32, 1.12, 1.87, 2.62, 4.81} };
/*Подсчитываем суммы всех значений Х и Y, а также суммы Х^2 и X*Y*/
double summaXY = 0, summaX = 0, summaX2 =0, summaY = 0;
int j;
int i=0;
for (j = 0; j <= 6; j++)
{
summaX += XY[i, j];
summaX2 += XY[i, j] * XY[i, j];
summaY += XY[i + 1, j];
summaXY += XY[i, j] * XY[i + 1, j];
}
Console.WriteLine("Итого сумма summaX =\t {0:f3}", summaX);
Console.WriteLine("Итого сумма summaX^2 =\t {0:f3}", summaX2);
Console.WriteLine("Итого сумма summaY =\t {0:f3}", summaY);
Console.WriteLine("Итого сумма summaXY =\t {0:f3}\n", summaXY);
/*Из стандартной формулы выражаем сразу коэффициенты*/
/*Используя метод подстановки, находим сначала коэффициент а, потом коэффициент b*/
double n = j; // где n - общее количество значений Х или Y
double a = (n*summaXY - summaX*summaY)/(n*summaX2 - Math.Pow(summaX,2));
double b = (summaY - a * summaX) / n;
Console.WriteLine("Кэффициент а =\t {0:f1}",a);
Console.WriteLine("Кэффициент b =\t {0:f1}\n", b);
Console.WriteLine("Искомая функция y = {0:f1}x{1:f0}", a, b);
return;
}
}
}
Результат выполнения и работы программы изображен на рисунке 3.2.2
Рисунок 3.2.2 – Выполнение программы
Вышеизложенная программа разбита на функциональные блоки – методы, отвечающие за свои операции:
static void Main() вызывает методы инициализации исходных данных, проверяет полученные значения и вызывает метод расчет линейной аппроксимации, выводит на экран результаты вычислений.
double[,] XY используем двумерный массив для ввода таблицы данных.
Также были применены методы стандартных библиотек и следующие конструкции языка программирования C# [12]:
Math.Pow(double x, double y) возвращает указанное число x, возведенное в указанную степень y;
for структура повторения автоматически контролирует все детали повторения.
Метод наименьших квадратов позволяет получать коэффициенты аппроксимации не только линейной зависимости, имеет большое практическое применение. Результат, полученный разработанным приложением, совпадает с результатом, полученным средствами MathCad.
Заключение
В ходе выполнения данной курсовой работы были изучены основные конструкции языка C#, реализованы алгоритмы средствами языка программирования C# в среде Visual Studio. Так же были освоены стандартные алгоритмы решения задач методами вычислительной математики. Были написаны ряд прикладных программ на языке программирования C# для решения поставленных задач. Проверка полученных результатов произведена в программном продукте MathCad. Сделан вывод, о широких возможностях применения численных методов для приближенного решения задач, полученные данным способом решения обладают достаточной точностью.
библиографический список
1. Марюшин Л.А. Методы математического моделирования в теплоэнергетических процессах. Курс лекций. – Москва:МГИУ 2010. – 114 с.
2. http://edu.dvgups.ru/METDOC/ENF/VMATEM/WM/METOD/VINOGRADOVA/
WEBUMK/frame/3.htm
3. Соколова Е.В., Заскалина Е.Н. MathCAD в технических и экономических расчетах: Учебное пособие / Е.В. Соколова, Е.Н. Заскалина. – Челябинск: Издательский центр ЮУрГУ, 2012 – 121 с.
4. http://ru.wikipedia.org/wiki/Метод_прямоугольников
5. http://dic.academic.ru/dic.nsf/ruwiki/1562004
6. Макаров Е. Г. Mathcad: учебный курс. – СПб: Питер, 2009 г – 384с.
7. Албахари Д. C# 5.0. Карманный справочник / Джо Албахари, Бен Албахари. – Издательство: Вильямс, 2012. – 288 с.
8. http://www.tgspa.ru/info/education/faculties/ffi/itimoi/programm/aproksimazia
/1.1.html
9. Калиткин Н.Н. Численные методы – М.: Наука, 1978. – 512 с.
10. http://www.cleverstudents.ru/articles/mnk.html
11. Гурский, Д. А. Вычисления в Mathcad 12 / Гурский Д. А., Турбина Е. С. – СПб: Питер, 2006. – 544с.
12. Шилдт, Г. Полный справочник по C# / Герберт Шилдт. – Издательство: Вильямс, 2004. – 752с
13. Харви Дейтел, Пол Дейтел. Как программировать на 1С: 3-е изд.Пер. с англ. –М.: Бином-Пресс, 2002 г. – 1168 с.:ил.