Javascript must be enabled in your browser to use this page.
Please enable Javascript under your Tools menu in your browser.
Once javascript is enabled Click here to go back to �нтеллектуальная Кобринщина

Solve an Equation - Wolfram Mathematica

Решение уравнений

Mathematica обладает значительным количеством мощных средств для решения многих видов уравнений.

Для решения уравнений применяется функция Solve.  Следует помнить, что при записи уравнения испольуется двойной знак равенства "==", а не одинарный "=& quot;:

In[1]:=

SolveAnEquationRU_1.gif

Out[1]=

SolveAnEquationRU_2.gif

Результат выводится в виде правил (-а) (Rule), вложенных в список. Внешний список содержит все решения, а каждый внутренний содержит один корень. Данное уравнение имеет три корня:

In[2]:=

SolveAnEquationRU_3.gif

Out[2]=

SolveAnEquationRU_4.gif

Для решения системы уравнений, используйте список в качестве первого аргумента:

In[3]:=

SolveAnEquationRU_5.gif

Out[3]=

SolveAnEquationRU_6.gif

Для данного примера существуют одновременно два решения системы уравнений; каждый набор решений заключен в собстенный список:

In[4]:=

SolveAnEquationRU_7.gif

Out[4]=

SolveAnEquationRU_8.gif

Здесь решение дается путем выражения одной переменной через другую:

In[5]:=

SolveAnEquationRU_9.gif

Out[5]=

SolveAnEquationRU_10.gif

Чтобы выделить и вывести конкретный корень из общего списка решений (в этом примере выведен только первый корень), используйте [[...]] (краткую форму записи функции Part) и комбинацию символов  /. (краткая форма записи функции ReplaceAll) для применения правила:

In[6]:=

SolveAnEquationRU_11.gif

Out[6]=

SolveAnEquationRU_12.gif

В качестве примера, построим график выражения x^2 – y^2 в зависимости от значений переменной y, резонно полагая, что x присвоено первое решение упомянутого выше уравнения:

In[7]:=

SolveAnEquationRU_13.gif

Out[7]=

SolveAnEquationRU_14.gif

Систему уравнений с несколькими переменными Вы можете решить для нескольких или для всех переменных, варьируя список во втором аргументе:

In[2]:=

SolveAnEquationRU_15.gif

Out[2]=

SolveAnEquationRU_16.gif

Если система недоопределена, Mathematica даст ответ, выраженный через свободную переменную:

In[3]:=

SolveAnEquationRU_17.gif

Out[3]=

SolveAnEquationRU_18.gif

Функция Solve находит так называемые "общие" решения уравнений. Это те решения, которые не зависят от переменных, не указанных во втором аргументе. Например:

In[10]:=

SolveAnEquationRU_19.gif

Out[10]=

SolveAnEquationRU_20.gif

Природа множителя y не имеет в данном случае значения: интересуют только значения переменной x , при которых уравнение обращается в верное равенство. Но есть и другое решение, зависящее от y, а именно: равенство 0 переменной y. Добавление y во второй аргумент команды заставляет показать это решение:

In[4]:=

SolveAnEquationRU_21.gif

SolveAnEquationRU_22.gif

Out[4]=

SolveAnEquationRU_23.gif

Есть и другие случаи, когда Solve не находит все решения. Например:

In[5]:=

SolveAnEquationRU_24.gif

SolveAnEquationRU_25.gif

Out[5]=

SolveAnEquationRU_26.gif

Вы также можете решать иррациональные уравнения:

In[11]:=

SolveAnEquationRU_27.gif

Out[11]=

SolveAnEquationRU_28.gif

Обратите внимание, что в иррациональных уравнениях Solve отбрасывает посторонние корни. Чтобы просмотреть все корни, включая посторонние, установите для параметра VerifySolutions опцию False:

In[16]:=

SolveAnEquationRU_29.gif

Out[16]=

SolveAnEquationRU_30.gif

Так производится проверка решения:

In[17]:=

SolveAnEquationRU_31.gif

Out[17]=

SolveAnEquationRU_32.gif

Уравнения можно решать и при помощи функции Reduce:

In[13]:=

SolveAnEquationRU_33.gif

Out[13]=

SolveAnEquationRU_34.gif

Вывод результата для Reduce отличается от вывода результата для Solve: функция Reduce выдает логическое вы ражение, эквивалентное исходному уравнению, поэтому она никогда не опускает решения:

In[14]:=

SolveAnEquationRU_35.gif

Out[14]=

SolveAnEquationRU_36.gif

In[15]:=

SolveAnEquationRU_37.gif

Out[15]=

SolveAnEquationRU_38.gif

    

Mathematica также позволяет находить численные решения уравнений.

Например, Вы можете применить функцию N к результату функции Solve для того, чтобы получить приближенное численное значение символьного решения:

In[18]:=

SolveAnEquationRU_39.gif

Out[18]=

SolveAnEquationRU_40.gif

In[19]:=

SolveAnEquationRU_41.gif

Out[19]=

SolveAnEquationRU_42.gif

Кроме этого, Вы можете получить численное решение напрямую, воспользовавшись функцией NSolve, что очевидно быстрее комбинации N и Solve:

In[20]:=

SolveAnEquationRU_43.gif

Out[20]=

SolveAnEquationRU_44.gif

Применим NSolve для решения более сложного полиномиального уравнения:

In[21]:=

SolveAnEquationRU_45.gif

In[22]:=

SolveAnEquationRU_46.gif

Out[22]=

SolveAnEquationRU_47.gif

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

In[23]:=

SolveAnEquationRU_48.gif

Out[23]=

SolveAnEquationRU_49.gif

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

Используем FindRoot для поиска численных решений для x, начиная с 1:

In[24]:=

SolveAnEquationRU_50.gif

Out[24]=

SolveAnEquationRU_51.gif