Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Матан v.0.1.doc
Скачиваний:
15
Добавлен:
01.04.2025
Размер:
3 Мб
Скачать
☆

Вопросы для самопроверки

1. Что называется абсолютной и относительной погрешностями?

2. Какая цифра в числе называется верной? В чем состоит правило округления чисел?

3. В чем суть метода простой итерации для решения трансцендентных уравнений?

4. В чем суть метода Ньютона-Рафсона для решения алгебраических уравнений?

5. Почему в методе простой итерации недостаточно сравнения ?

2. Методы интерполяции

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

- индексированные пары (они называются узлами интерполяции) представляют собой фиксированные пары, причем аргументы строго упорядочены: . Будем называть таблицу табличной функцией . Алгебраическое интерполирование восстанавливает достоверную аналитическую зависимость в виде так называемого интерполяционного многочлена вида:

, где (k-1)- наивысшая степень полинома, описывающая эту зависимость.

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

Для данных значений и найти многочлен F (x) = L (x) степени (n - 1), удовлетворяющий условиям

Рассмотрим конструкцию следующего вида: . Числитель состоит из произведений (n - 1) сомножителей, а значит есть многочлен степени (n - 1). Числа -корни этого многочлена, то есть i = 2, 3, …, n, причём по построению. Таким образом, график этого многочлена проходит через точку и обращается в ноль во всех других точках (узлах интерполяции) для . Аналогично:

для .

Сумма этих многочленов называется интерполяционным полиномом (или интерполяционной формулой) Лагранжа, который удовлетворяет всем условиям исходной задачи. Решение единственное: доказательство от «противного». Пусть существует ещё один полином Ф (x) степени . Построим R (x) = F (x) – Ф (x). Он является полиномом степени не выше (n-1), но у него n корней в точках , чего быть не может - .

Sub Lagrange()

'Программа, реализующая метод "Интерполяционный полином Лагранжа"

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

'i-счетчик цикла

's-вспомогательный многочлен

'T-интерполяционный многочлен

'a-текущая точка расчета

'k-счетчик цикла

'j-счетчик цикла

'nu-кол-во расчетных точек

Dim x(1 To 100) As Single 'задание типа х координаты,десятичное число обычной точности, размер 4 байта

Dim y(1 To 100) As Single 'задание типа у координаты,десятичное число обычной точности, размер 4 байта

Dim n As Integer 'задание типа кол-ва узлов интерполяции, целочисленный тип, размер 2 байта

Dim i As Integer 'задание типа счетчика цикла, целочисленный тип, размер 2 байта

Dim s As Single 'задание типа вспомогательного многочлена,десятичное число обычной точности, размер 4 байта

Dim T As Single 'задание типа интерполяционного многочлена,десятичное число обычной точности, размер 4 байта

Dim a As String 'задание типа текущей точки расчета,строки символов, 1 байт на символ

Dim k As Integer 'задание типа счетчика цикла, целочисленный тип, размер 2 байта

Dim j As Integer 'задание типа счетчика цикла, целочисленный тип, размер 2 байта

Dim nu As Integer 'задание типа кол-ва расчетных точек, целочисленный тип, размер 2 байта

nu = 200 'присвоение параметру nu значение 200

a = InputBox("Введите число узлов") 'диаолг запроса числа узлов

n = CInt(a)

For i = 1 To n 'начало цикла

x(i) = Worksheets(1).Cells(1, i).Value 'вывод на лист 1 шапки таблицы х(i) с i строчки столбца

y(i) = Worksheets(1).Cells(2, i).Value 'вывод на лист 1 шапки таблицы у(i) со 2 строчки i столбца

Next i 'конец цикла

For j = 0 To nu 'начало цикла

metka1: a = x(1) + ((x(n) - x(1)) / nu) * j 'расчет значения текущей точки

T = 0 'присвоение значения 0 интерполяционному полиному

For k = 1 To n 'начало цикла

s = 1 'присвоение значения 1 вспомогательному многочлену

For i = 1 To n 'начало цикла

If i = k Then GoTo metka2 'объявление условия

s = s * (a - x(i)) / (x(k) - x(i)) 'расчет вспомогательного многочлена

metka2: Next i 'конец цикла

T = T + s * y(k) 'расчет интерполяционного многочлена

Worksheets(1).Cells(3, j + 1).Value = CSng(a) 'вывод на лист 1

Worksheets(1).Cells(4, j + 1).Value = T 'вывод на лист 1 значения интерполяционного многочлена

Next k 'конец цикла

Next j 'конец цикла

End Sub 'конец программы