Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инстр_Mathem_v8.doc
Скачиваний:
4
Добавлен:
16.11.2019
Размер:
1.91 Mб
Скачать

13.2. Интерполяция

InterpolatingPolynomial[data, var] – строит интерполяционный многочлен Ньютона с аргументом var. Исходные данные data для интерполируемой функции f(x) могут быть заданы либо в виде {{x1, f1}, {x2, f2}, …}, либо в виде { f1, f2, …} в том случае, когда xi принимает натуральные значения 1, 2, … .

Пример 13.7. In[ ] := L[x_]=InterpolatingPolynomial[{1, 0, 1, 2}, x]

Out[ ] =

Заметим, что интерполяционный многочлен записан по схеме Горнера – схеме с минимальным количеством умножений (количество умножений равно степени многочлена).

13.3. Решение алгебраических уравнений

Функция Solve[eqns, vars] ищет решение системы уравнений eqns относительно переменных vars. В частном случае система может состоять из одного уравнения. Solve[eqns] ищет решение для всех переменных в системе eqns. Уравнения задаются в виде: lhs==rhs – левая и правая части уравнения связаны логическим знаком равенства. Система может быть представлена в виде списка уравнений, либо уравнения могут быть объединены знаком конъюнкции (&&). Решение записывается в форме правил замены: x–>so Решение может быть найдено как в численном, так и в аналитическом виде.

Пример 13.8: Решение системы линейных уравнений:

In[ ] := Solve[ x + 2y == 0 && 2x – y == 5a, {x, y}]

Out[ ] = {{x –> 2 a, y –> -a}}

При наличии нескольких решений функция Solve дает их список.

Пример 13.9: In[ ] := Solve[x (y + b) == a^2&&x – y == b, {x, y}]

Out[ ] = {y –> -a - b, x –> -a}, {y –> a - b, x –> a}}

Если имеется корень кратности m, Solve выписывает решение m раз, например:

Пример 13.10: In[ ] := Solve[ (x – 1)^2 == 0]

Out[ ] = {{ x –> 1}, { x –> 1}}

Функция Solve применима, когда точное решение может быть записано в явном виде.

Функция LinearSolve[m, b] предназначена для решения систем линейных алгебраических уравнений. Эта функция находит решение системы: , где m – матрица, b и x – известный и неизвестный векторы. Функция LinearSolve позволяет также находить решение сразу нескольких систем уравнений с одинаковой матрицей в левой части, но с разными столбцами свободных коэффициентов. В этом случае b и x являются матрицами. Функция LinearSolve дает решение как в численном, так и в аналитическом виде.

Пример 13.11. Найдем матрицу, обратную к матрице m:

In[ ] := (m = {{1, 2}, { 2, -1}}; b={{1, 0}, { 0, 1}}; m1 = LinearSolve[m, b]//N)

Out[ ] = {{ 0.2, 0.4}, { 0.4, -0.2}}

Для проверки полученного результата вычислим произведение матриц m и m1:

In[ ] := m1. m Out[ ] = {{1, 0}, { 0, 1}}

Функция RowReduce[m] – преобразует матрицу m к жордановой форме. Невырожденная матрица преобразуется в единичную матрицу; вырожденная матрица принимает ступенчатый вид.

Пример 13.12. Применим функцию RowReduce к вырожденной матрице:

In[ ] := m5={{2, 3,1}, {0,2,1}, {2, 5, 2}}; RowReduce[m5]

Out[ ] =

Функция RowReduce позволяет найти решение системы линейных алгебраических уравнений . Для решения опишем систему уравнений с помощью расширенной матрицы mb – матрицы m с присоединенным столбцом b (или с присоединенной матрицей b в случае одновременного решения нескольких систем уравнений). Применение к расширенной матрице функции RowReduce реализует процесс решения системы уравнений по схеме Жордана: левая часть матрицы – m – преобразуется в единичную матрицу, в то время как в правой части – b – получаем решение системы.

Пример 13.13. Найдем матрицу, обратную к матрице m = {{1, 2}, {2, -1}}. Для этого присоединим к матрице m единичную матрицу и применим функцию RowReduc:

In[ ] := RowReduce[{{1, 2, 1, 0}, {2, -1, 0, 1}}]//MatrixForm

Out[ ]/MatrixForm =

Последние два столбца полученной матрицы представляют матрицу, обратную к матрице m.

Функция Roots[eqn, var] – ищет корни полиномиального уравнения eqn для переменной var. Решение записывается в виде логических равенств, объединенных знаком дизъюнкции – логического “или”.

Пример 13.14.

Найдем корни многочлена Чебышева третьей степени (ChebyshevT[3, x] = -3x + 4x3):

In[ ] := Roots[ChebyshevT[3, x] == 0, x]

Out[ ] =

Функция FindRoot[eqn, {x, x0}] – ищет численное решение уравнения eqn, используя начальное приближение x=x0.

FindRoot[ {eqn1, eqn2, …}, {x, x0}, {y, y0}, …] – ищет решение системы уравнений. Если все начальные приближения – действительные числа, FindRoot ищет только действительные решения; для поиска комплексных решений необходимо, чтобы хотя бы одно из начальных приближений было комплексным.

Пример 13.15.

In[ ] := z=FindRoot[Tan[x]==x+1/4,{x,1}] Out[ ] ={x –>0.818503}

Проверка: In[ ] :=Tan[z[[1,2]]] - 1/4 Out[ ] = 0.818503

Отметим, что функция Solve не позволяет найти решение данного уравнения.