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

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