Введение

Александр Теофил Вандермонд (28 февраля 1735 - 1 января 1796) - французский музыкант и математик, известный благодаря своей работе в области высшей алгебры.

Главным увлечением Вандермонда длительное время была лишь музыка, но к 35-ти годам юный ученый обратился к математике. Первым делом он провел исследование симметрических функций и решения круговых полиномов, после чего выпустил три статьи: про задачу о ходе коня, про комбинаторику и про основы теории детерминантов. 

В честь Александра Теофила был назван специальный класс матриц - матрицы Вандермонда, о котором пойдет речь в данной статье. [1]

Матрица Вандермонда

В линейной алгебре матрица Вандермонда, представляет собой матрицу с членами геометрической прогрессии в каждой строке. 

Давайте рассмотрим узлы , где для

Тогда первый столбец матрицы будет полностью заполнен , оно же ; второй столбец будет заполнен , третий - и так далее. Общий вид матрицы:

Применение - интерполяция

Задача интерполяции заключается в том, чтобы найти полином вида:

который удовлетворяет условию:

Сделать это можно используя матрицу Вандермонда, следуя формуле:

где - матрица Вандермонда, - вектор коэффициентов и - вектор значений. [2]

Пример

Даны три точки: , нужно найти полином вида

, проходящий через эти точки.

Для начала, построим матрицу Вандермонда.

Далее, расширим матрицу значениями вектора

Пользуясь правилами сложения и вычитания строк матрицы, упростим её до формы:

Далее, решаем систему методом подстановки,

Таким образом, наш полином равен

Код

Мы создадим собственную функцию vandermonde_matrix,которая вычисляет матрицу

Вандермонда с узлами, где для .

Входные данные функции — степень искомого полинома, а выходные данные — матрица.

import numpy as np

def vandermonde_matrix(n):
    A=np.zeros((n+1,n+1)) 
    for i in range (n+1):
        for j in range (n+1): 
            A[i][j]=(i/n)**j if n !=0 else 1
    return A

print(vandermonde_matrix(3)) #пример
результат прогонки кода (матрица 4х4)

Число обусловленности

В численном анализе число обусловленности функции показывает насколько может измениться значение функции при небольшом изменении аргумента. Число обусловленности отражает, насколько чувствительна функция к изменениям или ошибкам на входе и насколько ошибка на выходе является результатом ошибки на входе. [3]

Число обусловленности для матрицы Вандермонда будет рассчитываться как произведение двух норм - нормы матрицы Вандермонда и нормы обратной матрицы Вандермонда. 

Код

Для мы построим матрицу Вандермонда

вычислим число обусловленности матрицы и построим график зависимости числа обусловленности матрицы Вандермонда от .

import numpy as np
import matplotlib.pyplot as plt


def vandermonde_matrix(n):
    A=np.zeros((n+1,n+1)) 
    for i in range (n+1):
        for j in range (n+1): 
            A[i][j]=(i/n)**j if n !=0 else 1
    return A

cond_vandermonde=np.zeros(101)

for i in range (1, 101):
    matrix=vandermonde_matrix(i)
    matrix_inv=np.linalg.inv(matrix)
    cond_vandermonde[i]=np.array(np.linalg.norm(matrix)*np.linalg.norm(matrix_inv))
    
n_values=np.zeros(101)

for i in range(1, 101):
    n_values[i]=np.array(i)
plt.semilogy(n_values, cond_vandermonde)
plt.ylabel('n')
plt.xlabel('Число Обусловленности')
plt.title('Зависимость числа обусловленности от n') 
plt.show()
результат прогонки кода

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

Из-за того, что определитель матрицы Вандермонда может сильно возрастать с увеличением размера матрицы, происходят численные нестабильности и потери точности вычислений. Благодаря чему мы можем подвести итог. 

Заключение

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

Список Литературы

  1. https://ru.m.wikipedia.org/wiki/Вандермонд,АлександрТеофил

  2. https://en.m.wikipedia.org/wiki/Vandermonde_matrix

  3. https://ru.m.wikipedia.org/wiki/Число_обусловленности