Программа на Visual Basic: интерполяция

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    71,67 Кб
  • Опубликовано:
    2015-05-30
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Программа на Visual Basic: интерполяция












Программа на Visual Basic: интерполяция

Введение

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

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

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

Все вышесказанное доказывает актуальность моей курсовой работы на тему «Исследование интерполяции».

Целью написания данной работы было получение и закрепление практических навыков разработки программ различными методами. Представленная программа реализована на языке программирования Visual Basic.

Исходя из указанной цели, можно выделить частные задачи, поставленные в курсовой работе:

·        рассмотреть, что такое интерполяция;

·        охарактеризовать некоторые методы интерполяции;

·        вычислить значения функции между заданными точками несколькими методами.

Общая характеристика интерполяции

Одной из основных задач численного анализа является задача об интерполяции функций. Часто требуется восстановить функцию  для всех значений  на отрезке  если известны ее значения в некотором конечном числе точек этого отрезка. Эти значения могут быть найдены в результате наблюдений (измерений) в каком-то натурном эксперименте, либо в результате вычислений. Кроме того, может оказаться, что функция  задается формулой и вычисления ее значений по этой формуле очень трудоемки, поэтому желательно иметь для функции более простую (менее трудоемкую для вычислении) формулу, которая позволяла бы находить приближенное значение рассматриваемой функции с требуемой точностью в любой точке отрезка. В результате возникает следующая математическая задача.

Пусть на отрезке  задана сетка со

и в ее узлах заданы значения функции , равные .

Требуется построить функцию , совпадающую с функцией  в узлах сетки: .

Основная цель интерполяции - получить быстрый (экономичный) алгоритм вычисления значений  для значений , не содержащихся в таблице данных.

Метод Лагранжа

Часто не возникает необходимости иметь коэффициенты многочлена, а надо лишь найти значения функции в промежуточных точках. В этом случае удобно использовать многочлен Лагранжа. Пусть в точках х0, х1,… хn заданы значения функции y0,y1,…yn. Надо найти значения функции в любой промежуточной точке x.

Оценим погрешности, возникающие при расчете по формуле Лагранжа. При очень близком расположении некоторых точек может возникнуть вычитание близких чисел, что ведет к неустойчивости по исходным данным, значит - к большой погрешности. Рассмотрим погрешность метода. Значения многочлена совпадают со значениями функции в узлах интерполяции. В точках, отличных от узлов, погрешность равна

R(x) = f(x) - ϕ(x),

R(x) - называется остаточным членом интерполяционной формулы. Оценим его значение.

Здесь f (n+1)(x.) - производная n+1 порядка функции f(x) в некоторой точке, принадлежащей интервалу [x0; xn]. Эта точка неизвестна.

Посмотрим, от чего зависит эта погрешность. С одной стороны, чем выше степень многочлена, меньше погрешность, так во многих случаях и есть. Но иногда значения производной высокого порядка бывают велики. Такую ситуацию впервые обнаружил Рунге. Он строил на отрезке [-1;1] интерполяционный многочлен с равномерным распределением узлов для функции 1 / (1+25 x2). Оказалось, что с увеличением степени многочлена его значения расходятся с функцией для любой точки 0,7<|x|<1.

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

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

Методы и алгоритмы глобальной, локальной и линейной интерполяций

Глобальная интерполяция. Построим многочлен на отрезке [x0;xn], график которого должен проходить через все заданные точки:

ф(x)=a0 + a1x + a2x2 + … + anxn

Многочлен имеет n+1 коэффициент и степень n, т. е. многочлен должен иметь степень на единицу меньше количества точек. Задача состоит в нахождении коэффициентов многочлена. Из условий равенства f(xi)=ф(xi)? для всех точек можно записать этот многочлен для каждой точки:

a0 + a1x0 + a2x02+ … +anx0n = y0;0 + a1x1 + a2x12+ … +anx1n = y1;

……………………………………...;0 + a1xn + a2xn2+ … +anxnn = yn;

Получили систему n+1 линейных уравнений. Система имеет единственное решение, если определитель неравен нулю. Определитель системы имеет вид:

1 x0 x02 … x0n

x1 x12 … x1n

……………….....

xn xn2 … xnn

Для рассматриваемой задачи это означает, что система имеет единственное решение, если среди узлов нет совпадающих. Отсюда следует, что существует единственный интерполяционный многочлен степени n.

Если степень многочлена (1) не велика (обычно не выше 4), то систему можно решить одним из рассмотренных выше методов. При высоких степенях многочлена можно получить задачу, не устойчивую по исходным данным, а значит - большую погрешность при вычислении коэффициентов. Существует большое количество способов нахождения интерполяционных многочленов, но каким бы способом не определяли, коэффициенты будут одни и те же (в пределах погрешности вычисления на компьютере).

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

Алгоритм глобальной интерполяции по формуле Лагранжа.

Ввод x(i), y(i), где i=1,2…n; xk

Вычисление yk по формуле (2)

Печать xk, yk


x(n), y(n) -массивы заданных точек и функции в этих точках;

xk - точка, в которой надо найти значение функции yk.

Локальная интерполяция

При локальной интерполяции для каждого интервала строится своя функция. Рассмотрим линейную интерполяцию. Задана точка x (i=1, 2, 3….n) на отрезке [a;b] и значения функции в этих точках y(i). Запишем уравнение прямой на i - том интервале, проходящей через точки (xi-1, yi-1) и (xi, yi):

(y-yi-1) / (yi-yi-1) = (x-xi-1) / (xi-xi-1)

Отсюда= yi-1 + (yi-yi-2) * (x-xi-1) / (xi-xi-1)

По этой формуле можно определить функцию y в лубой точке. Но сначала надо определить в какой интервал отрзка [a;b] попадет искомая точка, т. е. определитель i.

Алгоритм линейной интерполяции.

Ввод x(i), y(i), где i=1,2…n; xk

i=1

Начало цикла

i=i+1

конец цикла, по условию xk<x(i)

Вычисление yk по формуле (3)

Печать xk, yk


x(n), y(n) -массивы заданных точек и функции в этих точках;

xk - точка, в которой надо найти значение функции yk.

Линейную интерполяцию применяют, если функция близка к линейной или узлы интерполяции находится достаточно близко между собой.

Алгоритм локальной интерполяции по формуле Лагранже

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

n - количество узлов интерполяции;

a, b - соответственно левый и правый концы интервала;

x (n), y (n) - массивы узлов интерполяции;

xk - точка, в которой надо найти значение функции;

yk - значение интерполяционного многочлена в точке xk;

nn, nk - соответственно номера 1- ой и последней точек интерполяционного многочлена.

k=1

Начало цикла

k=k+1

Конец цикла, по условию xk < x(k)

Если х<=2, то nn=1; nk=4

Если 2<k<=n-1, то nn=k-2; nk=k+1

Если k=n, то nn=n-3; nk=n

yk=LAGR(nn,nk,xk,x,y)

Печать xk, yk

Обычно при локальной интерполяции не применяют многочлен выше четвертой степени. Для повышения точности надо увеличить количество узлов. Недостатком локальной интерполяции является наличие точек сопряжения интерполирующих кривых, а значит - разрыв производных, что недопустимо для некоторых задач.

Инструкция пользования программой

Для запуска программы необходимо открыть лист EXCEL, затем нажать на клавишу ALT и F11 одноременно. Затем появится окно для напиcания программы для языке Visual Basic.

Сначала рассмотрим запись на Visual Basic по методу глобальной интерполяции:

·        вводим массивы узлов интерполяции, количество узлов интерполяции и точку, в которой надо найти промежуточное значение;

·        переводим формулу Лагранжа (2) на язык программирования для Visual Basic и записываем;

·        вводим адрес ячейки для вывода на лист EXCEL, в которую выйдет значение промежуточной точки (уk).

Теперь рассмотрим запись по методу линейной интерполяции:

·        вводим массивы узлов интерполяции, количество узлов интерполяции и точку, в которой надо найти промежуточное значение;

·        записываем формулу для нахождения промежуточной точки (уk);

·        вводим адрес ячейки для вывода на лист EXCEL.

Запись по методу локальной интерполяции:

·        обращаем формулу Лагранжа для локальной интерполяции к функции и записываем;

·        вводим массивы узлов интерполяции, количество узлов интерполяции и точку, в которой надо найти промежуточное значение;

·        находим номера точек;

·        вводим условия для значений nn и nk;

·        вводим адрес ячейки для вывода на лист EXCEL.

Исходные данные и результат решения контрольного примера

.        Вводные данные:

x

-5

-4

-3

-2

-1

0

1

2

3

4

5

y

-2,17

-2,96

-5,29

20,00

1,11

0,00

0,91

2,22

2,43

2,16

1,85


Задача:

Вычислить значение функции между всеми точками методами:

.        Лагранжа как глобальную интерполяцию;

.        Лагранжа как локальную интерполяцию;

.        линейной интерполяции.

.        График функции вводных данных:

Рис.1

Текст программы по методу глобальной интерполяции по формуле Лагранжа


Текст программы по методу линейной интерполяции:


Текст программы по методу локальной интерполяции по формуле Лагранжа:

Все найденные точки на листе EXCEL:

Рис.2

Построение найденных промежуточных точек на графике:

Рис. 3

Заключение

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

В процессе выполнения курсовой работы были закреплены приобретенные за период обучения навыки и умения самостоятельного составления алгоритмов и программ на языке программирования Visual Basic простых типовых математических задач. Эта работа ещё раз подтвердила полезность использования ЭВМ для решения прикладных математических задач. Полученные знания и накопленный опыт решения простых задач в будущем позволят разрабатывать гораздо более сложные программы и алгоритмы, облегчат разбиение сложных задач на простые элементы.

интерполяция лагранже линейный

Список использованной литературы

1.      Бахвалов, Н. С. Численные методы / Н. С. Бахвалов, Н. П. Жидков, Г. М. Кобельков. - М.: Наука, 2010. - 597 с.

.        Бут, Э. Д. Численные методы / Э. Д. Бут. - М. : Физматгиз, 1959. - 239 с.

.        Воробьева, Г. Н. Практикум по вычислительной математике / Г. Н. Воробьева, А. Н. Данилова. - М. : Высшая школа, 2011. - 207 с.

.        Рено, Н. Н. Численные методы: учебное пособие / Н. Н. Рено. - М.: КДУ, 2009. - 100 с.

.        Турчак, Л. И. Основы численных методов / Л. И. Турчак. - М.: Наука, 2008. - 318 с.

.        Хемминг, Р. В. Численные методы / Р. В.. Хемминг. - М.: Наука, 2010. - 400 с.

Похожие работы на - Программа на Visual Basic: интерполяция

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!