ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 19.06.2025

Просмотров: 1085

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

41

Вприложении MathCAD выполните следующие действия:

1.Введите матрицы А и В с помощью кнопки панели инструментов Matrix

æ −0.77

−0.04

0.21

−0.18

ö

æ −1.24

ö

ç

0.45

−1.23

0.06

0

÷

ç

0.88

÷

A :=

ç

÷

B :=

ç

÷

ç

0.26

0.34

−1.11

0

÷

ç

−0.62

÷

ç

0.05

−0.26

0.34

−1.12

÷

ç

1.17

÷

è

ø

è

ø

2. Вычислите ранг исходной матрицы

rank(A)=4

3.Вычислите ранг расширенной матрицы. Встроенная функция augment(A,B) объединяет две матрицы, имеющие одинаковое количество

строк, в одну

rank(augment(A,B))=4

4. Найдите решение системы матричным методом Х:=А-1×В; 5. Получили результат

é

2.048

ù

ê

ú

ê0.086

ú

x = ê

ú

ê

1.065

ú

ê

ú

ê

ú

ë- 0.65û

6. Найдите решение системы с помощью функции lsolve(А, В)

Х1:=lsolve(А, В)

é

2.048

ù

ê

ú

ê0.086

ú

x1 = ê

ú

ê

1.065

ú

ê

ú

ê

ú

ë- 0.65û

7. Сравните результаты.

Задания к данной теме приведены в приложении Б.


42

3 МЕТОДЫ ПРИБЛИЖЕНИЯ ФУНКЦИЙ

3.1 Понятие о приближении функций

Пусть величина y является функцией аргумента x. Вместе с тем на практике часто неизвестна явная связь между y и x, т. е. невозможно записать эту связь в виде некоторой зависимости y = f(x). Наиболее распространенным и практически важным случаем является задание этой связи в виде некоторой таблицы {xi, yi}. Это означает, что дискретному множеству значений аргумента {xi} поставлено в соответствие множество значений функции {yi} (i = 0, 1, …, n). На практике нам могут понадобиться значения величины y в других точках, отличных от узлов {xi}. Этой цели служит задача о приближении функций: данную функцию f(x) требуется приближенно заменить некоторой функцией ϕ(x) так, чтобы отклонение, в некотором смысле, ϕ(x) от f(x) в заданной области было наименьшим. Способы оценки близости приближений порождают различные методы интерполирования и аппроксимации функций.

3.2 Интерполирование функций

Задача интерполирования заключается в следующем. На отрезке [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 = 0, 1, …, n).

Полученную интерполяционную формулу y = ϕ(x) обычно используют для приближенного вычисления значений данной функции f(x) для значений аргумента x, отличных от узлов интерполирования. Если при этом x [x0, xn], то такую операцию называют интерполированием функции f(x), иначе – экстраполировани- ем.

3.2.1 Интерполяционная формула Лагранжа

Пусть на отрезке [a, b] даны n+1 различных значений аргумента: x0, x1, …, xn и известны для y = f(x) соответствующие значения:

f(x0) = y0, f(x1) = y1, …, f(xn) = yn .

Требуется построить многочлен Ln(x) степени не выше n, имеющий в заданных узлах x0, x1, …, xn те же значения, что и функция f(x), т. е. такой, что


43

Ln(xi) = yi (i = 0, 1, …, n).

Будем искать интерполяционный многочлен в виде линейной комбинации многочленов степени n:

Ln(x) = y0l0(x) + y1l1(x) + …+ ynln(x).

(1)

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

n

Õ( x − x j )

j =0

li(x) = jn¹i , (2)

Õ( xi − x j )

j =0 j ¹i

где i = 0, 1, …, n.

Подставляя в формулу (1) выражение li(x) из формулы (2), находим

n

Õ( x − x j )

n

j =0

j ¹i

Ln(x) = å yi

.

(3)

n

i=0

Õ( xi − x j )

j =0 j ¹i

Формула (3) определяет интерполяционный многочлен Лагранжа.

Пример 1. Составить алгоритм и программу на языке Turbo Pascal интерполирования функции f(x) на отрезке многочленом Лагранжа по системе 5 узлов в точках: M1(1.05, 2.8577), M2(1.09, 2.9743), M3(1.13, 3.0957), M4(1.15, 3.1582), M5(1.17, 3.2220).

1.Определить исходные данные: число узлов интерполяции n + 1 = 5, вектор абсцисс x = (1,05; 1,09; 1,13; 1,15; 1,17); вектор ординат y = (2.8577, 2.9743, 3.0957, 3.1582, 3.2220).

2.Ввести значение абсциссы C – точку для интерполяции.

n

3. Вычислить значение полинома Лагранжа P = åyk Lk .

k=0

3.1.Присвоить P = 0.

3.2.Организовать цикл, изменяя параметр k = 0, 1, ..., n.

n

n

3.2.1. Вычислить значение Lk = Õ( C − x j ) / Õ( xk − x j ).

j=0

j=0

j¹k

j¹k

3.2.1.1. Определить Lk = 1.


44

3.2.1.2.Организовать цикл, изменяя параметр j = 0, 1, ..., n.

3.2.1.2.1.Если j¹k вычислить Lk = Lk*(C–xj)/(xk – xj).

3.2.1.3.Конец цикла по параметру j.

3.2.2. Вычислить P = P + yk * Lk. 3.3. Конец цикла по параметру k.

4.Вывод результата P – значение полинома Лагранжа в точке x = C.

5.Конец вычислений.

Программа интерполирования функции полиномом Лагранжа

Program Lagrang; uses crt;

const n=4;

{описание узлов интерполяции}

x:array[0..n] of real = (1.05, 1.09, 1.13, 1.15, 1.17); y:array[0..n] of real = (2.8577, 2.9743, 3.0957, 3.1582, 3.2220); var

k,j:byte;

P,L,c:real; begin

writeln('Введите значение х - точку для интерполирования'); readln(c);

P:=0; {для результата интерполирования}

{вычисление значения полинома Лагранжа в точке x=c} for k:=0 to n do

begin L:=1;

for j:=0 to n do if j<>k then

L:=L*(c-x[j])/(x[k]-x[j]); P:=P+y[k]*L;

end;

write('x=',c:7:2,' P=',P:7:4);

writeln(', табличное значение=',exp(c):7:4); readkey;

end.

3.2.2 Интерполяционные формулы Ньютона

Рассматриваемые здесь интерполяционные формулы Ньютона используются в случае равноотстоящих значений аргумента, т. е. xi+1 – xi = h = const (i = 0, 1, ..., n). Величина h называется шагом.

Введем понятие конечных разностей. Пусть функция y = f(x) задана табличными значениями yi = f(xi) для системы равноотстоящих точек xi.

Разностями первого порядка функции называются выражения вида

45

∆yi = yi+1 – yi (i = 0, 1, …, n–1).

Разностями второго порядка функции называются выражения вида

∆2yi = ∆(∆yi )= ∆yi+1 – ∆yi (i = 0, 1, …, n–1).

Аналогично составляются разности порядка k

∆kyi = ∆(∆k–1yi )= ∆k–1yi+1 – ∆k–1yi (i = 0, 1, …, n–1).

Отметим, что для вычисления k-ой разности ∆kyi нужно знать k+1 членов y: yi+1, ...

yi+k данной последовательности.

Перейдем теперь к построению интерполяционного многочлена Ньютона. В соответствии с задачей интерполирования функции требуется подобрать многочлен Pn(x) степени не выше n, принимающий в точках xi значения

Pn(xi) = yi (i = 0, 1, …, n).

(4)

Этот многочлен будем искать в следующем виде:

Pn(x) = a0 + a1(x–x0)[1] + a2(x–x0)[2] + …+ an(x–x0)[n],

(5)

где

(x – x0)[k] = (x – x0)(x – x1)...(x – xk–1).

Задача состоит в определении коэффициентов ak (k = 0, 1, …n) многочлена Pn(x). Полагая в формуле (5) x = x0, получаем

Pn(x0) = a0,

откуда, с учетом значения многочлена (4), a0 = y0.

Полагая в формуле (5) x = x1, получаем

Pn(x1) = a0 + a1(x1 – x0) = a0 + a1h = y1,

откуда

a1 =

y1 − a0

=

y1 − y0

=

y0 .

h

h

h

Полагая в формуле (5) x = x2, получаем

Pn(x2) = a0 + a1(x2 – x0) + a2(x2 – x0)(x2 – x1) = a0 + 2a1h + 2a2h2 = y2,

откуда

y2 − a0 − 2a1h

y2

− y0 − 2

y0

h

2

y0

a2

=

=

h

=

.

2h2

2h2

2h2

Аналогично можно найти и другие коэффициенты. Общая формула имеет вид

ak =

k y

(k = 0, 1, …, n).

0

k!hk