Автор работы: Пользователь скрыл имя, 11 Июня 2013 в 12:42, курсовая работа
В данной курсовой работе описываются решение нелинейных уравнений с одним неизвестным, численное интегрирование, интерполяция и аппроксимация таблично заданных функций с использованием как алгоритмов программирования на языке С#, так и с использованием математического пакета MathCad и табличного редактора Exсel.
1 Теоретическая часть 2
1.1 Решение нелинейных уравнений с одним неизвестным 2
1.2 Метод половинного деления 2
1.3 Метод Ньютона (касательных) 3
1.4 Численное интегрирование 3
1.5 Задача интерполяции функций 4
1.6 Задачи аппроксимации функций методом наименьших квадратов 5
2 Практическая часть 7
2.1 Задание 1. Решение функции методом Ньютона 7
2.2 Задание 2. Вычисление определенного интеграла методом трапеции 11
2.3 Задание 3. Квадратичное интерполирование 15
2.3 Задание 4. Апроксимация функции методом Гаусса-Жордана 18
Список использованной литературы 23
Национальный
Московский институт стали и сплавов
Кафедра инженерной кибернетики
Курсовая работа по информатике
по теме:
«Применение программных средств для анализа и обработки данных»
Студент: Ермакова К.Ю.
Группа: Ф7-11-5
Вариант № 12
Преподаватель: Бесфамильный М. С.
Москва, 2013
Содержание
1 Теоретическая часть 2
1.1 Решение нелинейных уравнений с одним неизвестным 2
1.2 Метод половинного деления 2
1.3 Метод Ньютона (касательных) 3
1.4 Численное интегрирование 3
1.5 Задача интерполяции функций 4
1.6 Задачи аппроксимации функций методом наименьших квадратов 5
2 Практическая часть 7
2.1 Задание 1. Решение функции методом Ньютона 7
2.2 Задание 2. Вычисление определенного интеграла методом трапеции 11
2.3 Задание 3. Квадратичное интерполирование 15
2.3 Задание 4. Апроксимация функции методом Гаусса-Жордана 18
Список использованной литературы 23
В данной курсовой работе описываются решение нелинейных уравнений с одним неизвестным, численное интегрирование, интерполяция и аппроксимация таблично заданных функций с использованием как алгоритмов программирования на языке С#, так и с использованием математического пакета MathCad и табличного редактора Exсel.
Пусть задана непрерывная функция f(x). Требуется найти корни уравнения f(x) = 0. Численное решение уравнения f(x) = 0 распадается на несколько подзадач:
Уточнение корня происходит с помощью методов, изложенных ниже
Рис.1 Метод половинного деления.
Иначе называется методом дихотомии (бисекций). Пусть задан начальный интервал [x0, x1], на котором f(x0)f(x1) ≤ 0 (т.е. внутри имеется не менее чем один корень). Найдем x2 = ½ (x0 + x1) и вычислим f(x2). Если f(x0)f(x2) ≤ 0, используем для дальнейшего деления отрезок [x0, x2], если > 0 – используем для дальнейшего деления отрезок [x1, x2], и продолжаем деление пополам.
Итерации продолжаются, пока длина отрезка не станет меньше 2ξ – заданной точности. Тогда середина последнего отрезка даст значение корня с требуемой точностью. В качестве иного критерия можно взять | f(x)| ≤ ξy.
Пусть x0 – начальное приближение к корню, а f(x) имеет непрерывную производную. Следующее приближение к корню найдем в точке x1, где касательная к функции f(x), проведенная из точки (x0, f0), пересекает ось абсцисс. Затем точно так же обрабатываем точку (x1, f1), организуя итерационный процесс. Выход из итерационного процесса по условию
.
Рис.3. Метод Ньютона
Уравнение касательной, проведенной из точки (x0, f0): y(x) = f /(x0)(x–x0) + f(x0) дает для y(x1) = 0 следующее выражение:
,
которое и используется для организации итерационного процесса. Итерации сходятся, только если всюду выполняется условие ; в противном случае сходимость будет не при любом начальном приближении, а только в некоторой окрестности корня. Итерации будут сходиться к корню с той стороны, с которой .
Метод обладает самой высокой скоростью сходимости: погрешность очередного приближения примерно равна квадрату погрешности предыдущего приближения..
Недостатком метода можно указать необходимость знать явный вид первой и второй производных, так как их численный расчет приведет к уменьшению скорости сходимости метода.
Задача численного интегрирования состоит в замене исходной подинтегральной функции f(x), для которой трудно или невозможно записать первообразную в аналитике, некоторой аппроксимирующей функцией φ(x). Такой функцией обычно является полином
.
То есть:
,
где R погрешность метода на интервале интегрирования,
Наиболее известными методами вычисления однократных интегралов являются:
Задача интерполяции функции возникает при необходимости приблизить f(x) более простой функцией ф(х), совпадающей в узлах xi с f(xi), если f(x) определена только в узловых точках (результат эксперимента) или очень сложно вычисляется.
Пусть на отрезке [a, b] заданы n + 1 точки x0, x1, ..., xn, которые называются узлами интерполяции, и значения некоторой функции f(x) в этих точках f(x0) = y0, f(x1) = y1, ..., f(xn) = yn. Требуется построить интерполирующую функцию ф(x), принимающую в узлах интерполяции те же значения, что и f(x), т.е. такую, что ф(x0) = y0, ф(x1) = y1, ..., ф(xn) = yn.
Геометрически это означает, что нужно найти кривую y = ф(x) некоторого определенного типа, проходящую через заданную систему точек Mi(xi, yi) для i = . Полученная таким образом интерполяционная формула y = ф(x) обычно используется для вычисления значений исходной функции f(x) для значений аргумента x, отличных от узлов интерполяции. Такая операция называется интерполированием функции f(x). При этом различают интерполирование в узком смысле, когда x принадлежит интервалу [x0, xn], и экстраполирование, когда x не принадлежит этому интервалу.
В такой общей постановке задача интерполирования может иметь бесчисленное множество решений. На практике в качестве интерполирующей функции ф(x) обычно используется алгебраический многочлен
Pn(x) = a0 x0+ a1x1 + a2x2 + ... + anxn
степени не выше n, такой, что Pn(x0) = y0, Pn(x1) = y1, ..., Pn(xn) = yn.
Наиболее известным
Пусть задано n+1 значение функции f(x) в узлах xj - fj. .Тогда полином Лагранжа можно представить следующим образом:
ф(х) = Pn(х) =
i
(x-xj)/(xi-xj).
В простейшем случае интерполяции предполагается, что зависимость y = f(x) на каждом интервале (xi, xi+1) является линейной. Тогда для каждого участка (xi, xi+1) в качестве интерполяционной формулы y = ф(x) используется уравнение прямой, проходящей через точки Mi(xi, yi) и Mi+1(xi+1, yi+1), которое имеет вид
Процесс решения задачи интерполирования с использованием формулы (5) включают два этапа: выбор интервала (xi, xi+1), которому принадлежит значение аргумента х; собственно вычисление значения y = ф(x) по формуле (5).
Если набор экспериментальных данных получен со значительной погрешностью, то интерполяция нежелательна. Здесь требуется построить кривую, которая воспроизводила бы график исходной экспериментальной закономерности, т.е. была бы максимально близка к экспериментальным точкам, но в то же время была бы нечувствительна к случайным отклонениям измеряемой величины.
Введем непрерывную функцию φ(x) для аппроксимации дискретной зависимости f(xi), i = 0…n. Будем считать, что φ(x) построена по условию наилучшего квадратичного приближения, если
Рассмотрим случай линейной аппроксимации:
φ(x) = c0φ0(x) + c1φ1(x) + … + cmφm(x),
где φ0…φm – произвольные базисные функции, c0…cm – неизвестные коэффициенты, m < n.
Если известна экспериментальная (исходная) погрешность данных ξ, то выбор числа коэффициентов, то есть величины m, определяется условием:
.
Иными словами, если , число коэффициентов аппроксимации недостаточно для правильного воспроизведения графика экспериментальной зависимости. Если , многие коэффициенты в (7) не будут иметь физического смысла.
Для решения задачи линейной аппроксимации в общем случае следует найти условия минимума суммы квадратов отклонений для (6). Задачу на поиск минимума можно свести к задаче поиска корня системы уравнений
, k = 0…m.
Подстановка (7) в (6), а затем расчет (9) приведет в итоге к следующей системе линейных алгебраических уравнений:
Далее следует решить полученную СЛАУ относительно коэффициентов c0…cm. После того как с помощью, например, метода Гаусса найдены коэффициенты c0…cm, можно построить аппроксимирующую кривую ф(х) или вычислить координаты заданной точки.
Условие задачи: Для функции y = F1(x) = P(x) = x5 - 3x4 - 77x3 + 111x2 + 976x - 1006.5, заданной аналитически на отрезке [-100; 100] и заданной точности Ɛ =0.00001
Решение задачи в С#.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int A = -100, B = 100;
int[] intervals = new int[Math.Abs(B) + Math.Abs(A) - 1];
double[] pred = new double[5];//left
double[] pred1 = new double[5];//right
int k = 0;
for (double i = A; i < B; i++)
{
if (f(i) * f(i + 1) < 0)
{
pred[k] = i;
pred1[k] = i + 1;
k++;
}
}
double c = 0;
double a, b;
double eps = 0.00001;
for (int i = 0; i < 5; i++)
Информация о работе Применение программных средств для анализа и обработки данных