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

13. Аналитические операции. Интерполяция. Решение уравнений

13.1. Аналитические операции

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

Разложение функции в степенной ряд:

Series[f, {x, x0, n}] – строит степенной ряд для функции f относительно точки x0 до слагаемого степени n.

Series[f, {x, x0, nx}, {y, y0, ny}] – разложение по двум переменным.

Функция Series позволяет строить ряд Тейлора, а также разложения, включающие отрицательные и дробные степени. Функция Series строит также разложения относительно бесконечной точки.

Пример 13.1:

In[ ] := Series[f[x], {x, a, 3}]

Out[ ] = f[a] + f’[a] (x-a) + 1/2 f’’[a] (x-a)2 + 1/6 f(3)[a] (x-a)3 + O[x-a]4

In[ ] := Series[Exp[Sqrt[x]], {x, 0, 2}]

Out[ ] = 1 + x1/2 + x/2 + (x3/2)/6 + x2/24 + O[x]5/2

In[ ] := Series[Exp[1/x], {x, Infinity, 3}]

Out[ ] = 1 + 1/x + 1/2 (1/x)2 + 1/6 (1/x)3 + O[1/x]4

Пакет Математика содержит ряд функций для преобразования выражений.

Функция Expand[expr] – производит все возведения в степень и перемножения в выражении expr.

Пример 13.2: In[ ] := Expand[(x + 1)(x - 1)] -1 + x2.

Функция Factor производит разложение на множители.

Пример 13.3: In[ ] := Factor[x^2-1] Out[ ] = (-1+x) (1+x)

Функция TrigExpand[expr] – преобразует тригонометрические и гиперболические функции в выражении expr.

Пример 13.4:

1). In[ ] := TrigExpand[Cosh[a + b]] Out[ ] = Cosh[a] Cosh[b] + Sinh[a] Sinh[b].

2). Определим многочлен Чебышева:

In[ ] := P[n_Integer, x_] = Cos[n ArcCos[x]];

С помощью функции TrigExpand можем найти явный вид многочленов Чебышева разной степени:

In[ ] := Table[TrigExpand[P[k, x]], {k,4}] Out[ ] = {x, -1 + 2 x2, -3 x + 4 x3, 1 – 8 x2 + 8 x4}

Функция Simplify[expr, assum] – осуществляет алгебраические преобразования для упрощения выражения expr, используя допущения assum (необязательный элемент).

Пример 13.5: In[ ] := Simplify[ Cos[a] Cos[b] – Sin[a] Sin[b] ] Out[ ] = Cos[a + b].

Функция FullSimplify[expr, assum] – упрощает выражение, используя элементарные и специальные функции.

Пример 13.6:

1). In[ ] := FullSimplify[ Log[8] / Log[2] ] Out[ ] = 3.

2). In[ ] := FullSimplify[ ArcCos[ Sqrt[ 1 – a^2 ]], a > 0 ] Out[ ] = ArcSin[a].

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 не позволяет найти решение данного уравнения.