Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. quot;СИНТЕЗ РОМАНА. РАЗРЕШЕНИЕ ЗАТРУДНЕНИЯ
  2. V. Внезапное решение
  3. Анализ уравнений баланса активных и реактивных мощностей электрической сети.
  4. В каких случаях решение суда первой инстанции подлежит отмене независимо от доводов кассационных жалобы, представления?
  5. В каких случаях суд кассационной инстанции, изменив или отменив решение суда первой инстанции, вправе принять новое решение?
  6. В течение какого срока может быть подана апелляционная жалоба на решение суда о привлечении к административной ответственности
  7. Внезапное решение

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

13.4. Решение дифференциальных уравнений

DSolve[ eqn, y[x], x ] – решает дифференциальное уравнение для функции y[x].

DSolve[{eqn1, eqn2,…}, {y1[x], y2[x],…}, x ] – решает систему дифференциальных уравнений.

Пример 13.16.

1). Общее решение.

In[ ]: = DSolve[ y''[x] + y[x] == 0, y[x], x ]

Out[ ] = {{ y[x] –> C[2] Cos[x] – C[1] Sin[x] }}

2). Решение задачи Коши.

In[ ]:= DSolve[{ y''[x] + y[x] == 0, y[0] == 1, y'[0] == 0 }, y[x], x ]

Out[ ] = {{ y[x] –> Cos[x] }}

3). Решение краевой задачи.

In[ ]:= DSolve[{ y''[x] + y[x] == 0, y[0] == 0, y[5Pi / 6] == 1}, y[x], x ]

Out[ ] = {{ y[x] –> 2 Sin[x] }}

4). Решение краевой задачи для системы уравнений.

In[ ]:= DSolve[{ y'[x] == z[x], z'[x] == -y[x], y[0] == 0, z[Pi] == -1}, {y[x], z[x]}, x ]

Out[ ] = {{ y[x] –> Sin[x], z[x] –> Cos[x] }}

NDSolve[ eqns, {y1, y2,…}, {x, xmin, xmax}] дает приближенное решение системы дифференциальных уравнений eqns на отрезке [xmin, xmax] для функций yi[x]. NDSolve представляет решение на данном отрезке в виде интерполирующей функции InterpolatingFunction. Интерполирующая функция позволяет найти значения y для всех x, принадлежащих отрезку интерполяции, и построить график.

Пример 13.17. Найдем решение уравнения колебаний, описывающее затухающую синусоиду:

In[ ]: = s = NDSolve[{ y''[t] + 0.1y'[t] +y[t] == 0, y[0] == 1, y'[0] == 0}, y, {t, 0, 20}]

Out[ ] = {{ y –> InterpolatingFunction[{{ 0., 20. }}, <>]}}

Решение представляется в виде интерполирующей функции. Построим график изменения и , а также “фазовый портрет” – зависимость . Для построения параментрического графика требуется использовать функцию Evaluate:

In[ ]:= p1=Plot[{y[t]/.s, y'[t]/.s}, {t,0,20}, PlotStyle->{RGBColor[1,0,0],

RGBColor[0,0,1]}, AxesLabel->{t, y}];

p2=ParametricPlot[ Evaluate[{y[t], y'[t]}/.s], {t, 0, 20}, AxesLabel->{y,y'},

PlotStyle->RGBColor[1,0,1]];

Show[GraphicsArray[{p1,p2}]]

 

Графики показаны на рис. 13.1.

Решение в виде интерполирующей функции позволяет найти значения и в любой точке отрезка, например:

In[ ]: = {y[2Pi] /. s, y'[3Pi/2] /. s} Out[ ] = {{0.730093},{0.791057}}

Замечания

· Дифференциальные уравнения должны иметь достаточное количество начальных или краевых условий.

· Значение x0, входящее в начальные или краевые условия, может не принадлежать отрезку [xmin, xmax].

· Уравнения могут включать комплексные числа.

 


Дата добавления: 2015-07-08; просмотров: 127 | Нарушение авторских прав


Читайте в этой же книге: Цикл Do | Немедленное и задержанное присваивание | Составление программ. Глобальные и локальные переменные | Прерывание вычислений | Матричные функции | Массивы | Двумерные графики | Изображения трехмерных объектов | Анимация | Функция Manipulate |
<== предыдущая страница | следующая страница ==>
Аналитические операции| Преобразование выражений

mybiblioteka.su - 2015-2024 год. (0.009 сек.)