Как решить систему уравнений в вольфраме математика

Как решить систему уравнений в вольфраме математика

Решение дифференциальных уравнений в символьном виде

Дифференциальными принято называть уравнения, в состав которых входят производные функции у(х), представляющей решение уравнения. Дифференциальные уравнения могут быть представлены в различной форме, например в общеизвестной форме Коши:

Несколько дифференциальных уравнений образуют систему дифференциальных уравнений. Решение таких систем также возможно средствами Mathematica и подробно описано в ряде книг по использованию системы 65. Дифференциальные уравнения и системы дифференциальных уравнений могут быть линейными и нелинейными. Для линейных уравнений обычно существуют решения в аналитическом виде. Нелинейные дифференциальные уравнения в общем случае аналитических решений не имеют, но могут решаться приближенными численными методами.

Дифференциальные уравнения широко используются в практике математических вычислений. Они являются основой при решении задач моделирования — особенно в динамике. Немногие математические системы имеют реализации численных методов решения систем дифференциальных уравнений. Но система Mathematica имеет средства как для символьного, так и для численного решения дифференциальных уравнений и их систем.

Для решения дифференциальных уравнений в символьном виде используются следующие средства:

  • DSolve[eqn, y[x], х] — решает дифференциальное уравнение относительно функций у [ х ] с независимой переменной х;
  • DSolve[, , ]-решает систему дифференциальных уравнений.

У функции DSolve и ее численного варианта NDSolve есть пара опций, на которые следует обратить внимание:

  • DSolveConstants — опция к DSolve, определяющая постоянные интегрирования, которые будут использованы в результате;
  • StartingStepSize — опция к NDSolve, определяющая величину начального шага.

В решении дифференциальных уравнений встречаются постоянные интегрирования. По умолчанию они обозначаются как С [ i ].

Приведем примеры решения дифференциальных уравнений:

DSolve [у» [х] — у’ [х] — 6 у [х] == 0, у [х] , х] <<У[х] ->| е-4хС[1] + С[2] -Cos[2x] -|sin[2x]>>

DSolve [у» [х] + 4 у'[х] == 10 Sin [2 х] , у [х] , х]

DSolve[y'[x] == Sin[Ex] , y[x] , x]

DSolvefz2 w»[z] +zw'[z] — (z2 + l)w[z] ==0, w[z], z]

Как нетрудно заметить, аналитические решения дифференциальных уравнений могут содержать не только элементарные, но и специальные математические функции, что заметно расширяет возможности применения системы Mathematica в решении задач динамического моделирования.

Решение дифференциальных уравнений в численном виде

Многие дифференциальные уравнения не имеют аналитических решений — например, нелинейные. Однако они могут с приемлемой точностью решаться численными методами. Для численного решения систем дифференциальных уравнений используется функция NDSolve:

  • NDSolve [eqns, у, ]— ищет численное решение дифференциальных уравнений .eqns относительно функции у независимой переменной х в интервале от xmin до xmax;
  • NDSolve [eqns, , ]— ищет численные решения относительно функций yi.

MaxSteps — опция к NDSolve, которая определяет максимальное количество шагов.

Часто весьма желательно выводить результаты решения дифференциальных уравнений в графической форме. Рисунок 4.25 поясняет, как это делается при решении системы нелинейных дифференциальных уравнений, описывающих достаточно сложный колебательный процесс.

Нередко решение предпочитают представить на фазовой плоскости. Рисунок 4.26 иллюстрирует такую возможность. Более того, поскольку решается система из трех дифференциальных уравнений, фазовая траектория решения находится в трехмерном пространстве.

Простота задания решения и вывода его результатов в графической форме открывает широкие возможности применения системы для математического моделирования сложных явлений. При этом, в отличие от такого решения с помощью обычных языков высокого уровня (например, Фортран, Бейсик, Паскаль или С), не требуется составления каких-либо программ по реализации численных методов решения систем дифференциальных уравнений, таких как, скажем, метод Рунге— Кутта. Они представлены в виде уже готовых функций.

Рис. 4.25. Решение системы дифференциальных уравнений с выводом решения в виде графиков временных зависимостей

Рис. 4.26. Решение системы дифференциальных уравнений с выводом решения в форме кривых на фазовых плоскостях

Как решить систему уравнений в вольфраме математика

Достаточно войти на страницу wolframalpha набрать в текстовом поле свой запрос и нажать на кнопку «=»

(имеет всплывающую подсказку вычислить ) или просто нажать Enter .
Функционал Wolfram Alpha не ограничивается лишь поиском ответов на поставленные вопросы. С помощью этой системы можно, например, строить графики и сопоставлять различные данные, что намного наглядней и лучше воспринимается, чем просто текст. Кроме того, с помощью Wolfram Alpha можно производить математические операции, как элементарные (которые без проблем выполняет и Google), так и решать уравнения различной сложности. Также Wolfram Alpha умеет строить графики функций, вычислять значения синуса или косинуса и так далее.

Например можно решить вот такое уравнение :

а чтобы узнать, какое расстояние между Москвой и Тель-Авивом, нужно ввести в поле

и вот вам результат:

Один из минусов сервиса Wolfram Alpha – это его англоязычность…так что если хотите задать вопрос системе придется писать его на английском языке. Даже неизвестно, появится ли русскоязычная версия этой поисково-вычислительной системы.

Основные команды для Вольфрам Альфа

(Команды вводятся в строку Вольфрама — например выше. Все команды заканчиваются нажатием Enter)

1. Решение уравнений, построение графиков

  • Арифметические знаки плюс, минус, умножить, поделить +, — , *, / Примеры: 3*2, x*y, (a+b)/c
  • Возведение в степень «x в степени а» x^a. Примеры x^a, x**a, (a+b)^2, (a+b)**2, (a+b)^(2x+1)
  • Скобки. Действия в скобках ведутся первыми
  • Функции .sin(x), cos(x), tan(x)=sin(x)/cos(x), cotan(x)=cos(x)/sin(x), sec(x)=1/cos(x), cosec(x)=1/sin(x)
  • Функции log(x), exp(x), sinh(x), cosh(x), tanh(x), cotanh(x)
  • Корень квадратный из «х» sqrt(x) или x^(1/2)

Чтобы вычислить выражение, нужно его просто ввести. Например корень из 2 будет выглядеть как sqrt(2) или же 2^(1/2).

2. Чтобы решить уравнение, нужно просто его ввести

3. Чтобы построить график, нужно использовать команду plot

Например нарисуем с помощью Вольфрама функцию 2^(-x) cos(x). Это делается командой plot (график).

Чтобы построить несколько графиков на одной координатной плоскости (например для визуализации решения систем уравнений), при значении переменной x в интервале (A,B), нужно использовать команду

4. Чтобы собрать множители из двучлена (многочлена) f, наберите factor[f]

5. Чтобы развалить произведение f на слагаемые, используйте команду expand[f]

6. Чтобы упростить выражение f[x], наберите команду Simplify[f[x]]

Например упростить «е в степени догарифм х»:

Simplify[ exp[ log[x] ] ]

Вольфрам альфа: интегралы

Как работать с Wolfram Alpha

Основные операции

  • Сложение : a+b
  • Вычитание : a-b
  • Умножение : a*b
  • Деление : a/b
  • Возведение в степень : a^b

Примеры

  • 314+278; 314—278; 314*278; 314^278;
  • (a^2+b^2)+(a^2-b^2); (a^2+b^2)/(a^2-b^2); (a+b)^(2+2/3).

Знаки сравнения

  • Меньше : : >
  • Равно : = или ==
  • Меньше или равно : =

Логические символы

  • И : &&
  • ИЛИ : ||
  • НЕ : !

Основные константы

  • Число : Pi
  • Число : E
  • Бесконечность : Infinity, inf или oo

Основные функции

  • : x^a

  • : Sqrt[x]
  • : x^(1/n)
  • : a^x
  • : Log[a, x]
  • : Log[x]
  • : cos[x] или Cos[x]
  • : sin[x] или Sin[x]
  • : tan[x] или Tan[x]
  • : cot[x] или Cot[x]
  • : sec[x] или Sec[x]
  • : csc[x] или Csc[x]
  • : ArcCos[x]
  • : ArcSin[x]
  • : ArcTan[x]
  • : ArcCot[x]
  • : ArcSec[x]
  • : ArcCsc[x]
  • : cosh[x] или Cosh[x]
  • : sinh[x] или Sinh[x]
  • : tanh[x] или Tanh[x]
  • : coth[x] или Coth[x]
  • : sech[x] или Sech[x]
  • : csch[x] или Csch[е]
  • : ArcCosh[x]
  • : ArcSinh[x]
  • : ArcTanh[x]
  • : ArcCoth[x]
  • : ArcSech[x]
  • : ArcCsch[x]

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

Чтобы получить решение уравнения вида достаточно записать в строке Wolfram|Alpha: f[x]=0, при этом Вы получите некоторую дополнительную информацию, которая генерируется автоматически. Если же Вам необходимо только решение, то необходимо ввести: Solve[f[x]=0, x].

Примеры

  • Solve[Cos[x]+Cos[2x]+Sin[4x]=0,x] или Cos[x]+Cos[2x]+Sin[4x]=0;
  • Solve[x^5+x^4+x+1=0,x] или x^5+x^4+x+1=0;
  • Solve[Log[3,x^2+x+1]-Log[9,x^2]=0,x] или \Log[3,x^2+x+1]-Log[9,x^2]=0.

Если Ваше уравнение содержит несколько переменных, то запись: f[x, y,…,z]=0 даст весьма разнообразный набор сведений, таких как решение в целых числах, частные производные функции и т. д. Чтобы получить решение уравнения вида по какой-либо одной из переменных, нужно написать в строке: Solve[f[x, y, …, z]=0, j], где — интересующая Вас переменная.

Примеры

  • Cos[x+y]=0 или Solve[Cos[x+y]=0,x] или Solve[Cos[x+y]=0,y];
  • x^2+y^2-5=0 или Solve[x^2+y^2-5=0,x] или Solve[x^2+y^2-5=0,y];
  • x+y+z+t+p+q=9.

Решение неравенств

Решение в Wolfram Alpha неравенств типа 0″ src=»http://upload.wikimedia.org/math/3/d/9/3d97eb56e02c2889dd20a89529548180.png» />, полностью аналогично решению уравнения . Нужно написать в строке WolframAlpha: f[x]>0 или f[x]>=0 или Solve[f[x]>0, x] или Solve[f[x]>=0,x].

Примеры

  • Cos[10x]-1/2>0 или Solve[Cos[10x]-1/2>0,x];
  • x^2+5x+10>=0 или Solve[x^2+5x+10>=0,x].

Если Ваше неравенство содержит несколько переменных, то запись: f[x, y,…,z]>0 или f[x, y,…,z]>=0 даст весьма разнообразный набор сведений, как и в случае соответствующих уравнений. Чтобы получить решение такого неравенства по какой-либо одной из переменных нужно написать в строке: Solve[f[x, y,…,z]>0,j] или Solve[f[x, y,…,z]>=0,j], где — интересующая Вас переменная.

Примеры

  • Cos[x+y]>0 или Solve[Cos[x+y]>0,x] или Solve[Cos[x+y]>0,y];
  • x^2+y^3-5 =9.

Решение различных систем уравнений, неравенств и уравнений

Решение систем различного вида в Wolfram Alpha крайне просто. Достаточно набрать уравнения и неравенства Вашей системы, точно так, как это описано выше в пунктах 7. и 8., соединяя их союзом «И», который в Wolfram Alpha имеет вид &&.

Сервис Wolfram Alpha поддерживает возможность построения графиков функций как вида , так и вида . Для того, чтобы построить график функции на отрезке нужно написать в строке Wolfram Alpha: Plot[f[x],]. Если Вы хотите, чтобы диапазон изменения ординаты был конкретным, например , нужно ввести: Plot[f[x],,].

Если Вам требуется построить сразу несколько графиков на одном рисунке, то перечислите их, используя союз «И»:Plot[f[x]&&g[x]&&h[x]&&…&&t[x],].

Для того, чтобы построить график функции на прямоугольнике , нужно написать в строке Wolfram Alpha: Plot[f[x, y],,]. К сожалению, диапазон изменения аппликаты пока что нельзя сделать конкретным. Тем не менее, интересно отметить, что при построении графика функции Вы получите не только поверхность, которую она определяет, но и «контурную карту» поверхности (линии уровня).

Математический анализ

Wolfram Alpha способен находить пределы функций, последовательностей, различные производные, определенные и неопределенные интегралы, решать дифференциальные уравнения и их системы и многое многое другое.

Пределы

Для того, чтобы найти предел последовательности нужно написать в строке Wolfram Alpha: Limit[x_n, n -> Infinity].

Примеры

  • Limit[n^3/(n^4 + 2*n), n -> Infinity];
  • Limit[(1+1/n)^n, n -> Infinity].

Найти предел функции при можно совершенно аналогично: Limit[f[x], x -> a].

Производные

Для того, чтобы найти производную функции нужно написать в строке WolframAlpha: D[f[x], x]. Если Вам требуется найти производную n-го порядка, то следует написать: D[f[x], ]. В том случае, если Вам требуется найти частную производную функции напишите в окне гаджета: D[f[x, y, z,…,t], j], где — интересующая Вас переменная. Если нужно найти частную производную по некоторой переменной порядка n, то следует ввести: D[f[x, y, z,…,t], ], где означает тоже, что и Выше.

Важно подчеркнуть, что Wolfram Alpha выдает пошаговое нахождение производной при нажатии на «Show Steps» в правом верхнем углу выдаваемого ей ответа.

Интегралы

Для того, чтобы найти неопределенный интеграл от функции нужно написать в строке WolframAlpha: Integrate f[x], x. Найти определенный интеграл так же просто: Integrate[f[x], ] либо Integrate f(x), x=a..b.

Важно подчеркнуть, что Wolfram Alpha выдает пошаговое нахождение интеграла при нажатии на «Show Steps» в правом верхнем углу выдаваемого ей ответа.

Дифференциальные уравнения и их системы

Чтобы найти общее решение дифференциального уравнения нужно написать в строке WolframAlpha: F[x, y, y’,y»,…] (при k-й производной y ставится k штрихов).

Если Вам требуется решить задачу Коши, то впишите: F[x, y, y’,y»,…], y[s]==A,y'[s]==B, …. Если нужно получить решение краевой задачи, что краевые условия, так же перечисляются через запятую, причем они должны иметь вид y[s]==S.

Решение систем дифференциальных уравнений также просто, достаточно вписать: , где f_1, f_2, …, f_n — дифференциальные уравнения, входящие в систему. К сожалению, решение задач Коши и краевых задач для систем дифференциальных уравнений пока-что не поддерживается.

Ошибки при работе с системой

Система может допускать некоторые ошибки при решении сложных задач [1] . К примеру, если попытаться решить неравенство , для чего ввести запрос solve (3x^2-18x+24)/(2x-2)-(3x-12)/(2x^2-6x+4) Примечания

7. Уравнения и системы уравнений

Уравнения и системы уравнений

Многие математические задачи сводятся к решению в общем случае нелинейных уравнений вида f(x) = 0 или f(x) = expr.

В системе Mathematica они обозначаются как eqns (от слова equations — уравнения). Разумеется, могут решаться и системы, состоящие из ряда таких уравнений.

Для решения уравнений (как одиночных, так и систем) в численном и символьном виде Mathematica имеет функцию Solve:

  • Solve [eqns, vars] — предпринимает попытку решить уравнение или систему уравнений eqns относительно переменных vars;
  • Solve [eqns, vars, elims] — пытается решать уравнения eqns по переменным vars, исключая переменные elims.

Входные параметры этой функции могут быть представлены списками или записаны выражениями через объединительный знак«&&». В eqns в качестве знака равенства используется знак «= =». Примеры применения функции Solve представлены на рис. 4.12.

Рис. 4.12. Примеры решения уравнений

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

Решение систем нелинейных уравнений в символьном виде

Приведенные на рис. 4.13 примеры показывают решение систем нелинейных уравнений с помощью функции Solve.

Достаточно характерен пример с применением функции N. Если убрать в нем функцию N, то будет получен чрезвычайно громоздкий, хотя и точный результат (проверьте это сами, поскольку размеры результата делают нецелесообразным его приведение в книге). Функция N осуществляет выполнение всех промежуточных вычислений, благодаря чему результат получается вполне обозримым и представленным в комплексных числах.

В последнем примере рис. 4.13 получен набор из пяти пар корней, определенных через функцию Root. Эта функция, в свою очередь, означает вычисление корней полиномиального уравнения пятой степени. Данный пример, как и ранее приводимые решения кубического уравнения, является наглядной иллюстрацией того, что простота нелинейных уравнений порой оказывается весьма обманчивой, а их решение порой приводит к весьма громоздким и сложным результатам. Тем не менее, возможность решения отдельных нелинейных уравнений и их систем в символьном виде трудно переоценить. К сожалению, далеко не все уравнения имеют такие решения — многие можно решать только в численном виде.

Рис. 4.13. Примеры решения систем нелинейных уравнений

Не следует полагать, что Mathematica всегда выдает верное решение систем нелинейных уравнений. На самом деле решение иногда бывает ошибочным. Поэтому в большинстве случаев стоит оформлять решение таким образом, чтобы обеспечить его проверку. Для этого рекомендуется отдельно задать систему уравнений и результат решения. Тогда проверка легко осуществляется с помощью подстановки. Два примера решения систем уравнений с проверкой решений показаны на рис. 4.14.

В первом примере решение кажется очевидным (равенства выполняются, например, при х=2 и у=3). Однако здесь Mathematica дает сразу три пары решений, и все они оказываются верны, поскольку после подстановки проверка всех равенств возвращает True.

А вот во втором примере проверка дала не совсем обычный результат, что связано с наличием в решении неопределенной переменной а. В таких случаях стоит попробовать упростить решение с помощью функции Simplify, что и показано на рис. 4.14.

Рис. 4.14. Примеры решения уравнений с проверкой

Опции функции Solve

С функцией Solve можно использовать ряд опций. Их можно вывести командой Options [Solve]. Ниже описано их назначение:

  • InverseFunctions — указывает, следует ли использовать обратные функции;
  • MakeRules — указывает, должен ли результат быть представлен как объект AlgebraicRulesData;
  • Method — устанавливает алгоритм, используемый для вычисления результата (возможны методы 1, 2 и 3);
  • Mode — задает характер решения уравнения (возможны Generic, Modular и Rational);
  • Sort — устанавливает, нужна ли сортировка результатов;
  • Verif ySolutions — устанавливает, следует ли проводить проверку полученных решений и удаление посторонних решений;
  • WorkingPrecision — устанавливает число цифр промежуточных вычислений (по умолчанию Infinity).

На рис. 4.15 приведены примеры применения функции Solve с опцией Inverse-Functions.

Обратите внимание на то, что последняя система уравнений при отсутствии опции InverseFunctions решается с предупреждением. Она вообще не решается, если эта опция задана как False, и гладко решается при InverseFunctions -> True.

Рис. 4.15. Примеры решения уравнений с опцией InverseFunction

То, насколько может влиять на решение опция Method, наглядно показывают примеры, представленные на рис. 4.16.

Рис. 4.16. Примеры решения уравнений разными методами

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

Численное решение уравнений

Многие нелинейные уравнения и системы нелинейных уравнений в принципе не имеют аналитических решений. Однако их решение вполне возможно численными методами. Для численного решения систем нелинейных уравнений используется функция NSolve:

  • NSolve [eqns, vars] — пытается численно решить одно уравнение или систему уравнений eqns относительно переменных vars;
  • NSolve [eqns, vars, elims] — пытается численно решить уравнения eqns относительно vars, исключая переменные elims.

С этой функцией используется единственная опция WorkingPrecision, задающая число верных цифр результата — по умолчанию 16. На рис. 4.17 представлены примеры использования функции NSolve для численного решения уравнений.

Риc. 4.17. Примеры численного решения уравнений

Результаты решения с помощью функции NSolve также рекомендуется проверять с помощью подстановки, например, так:

Нетрудно заметить, что в данном случае решение верно.

Поиск корней уравнений

Для вычисления корней полиномиальных уравнений используется функция Roots:

На рис. 4.18 представлены примеры применения функции Roots.

Рис. 4.18. Примеры использования функции Roots

Формат выдачи результатов для функции Roots отличается от такового для функции Solve. Поэтому проверку решения подстановкой надо выполнять как в следующем примере:

х == -3.56155 | | х == 0.561553

Для преобразования результата вычислений в список решений (подобный решениям, получаемым с помощью функции Solve) здесь использована функция ToRules.

При затруднениях в решении уравнений с помощью функции Roots можно использовать следующие опции:

True, Eliminate -> False, EquatedTo-> Null,

Modulus -> 0, Multiplicity->1, Quar tics -> True, Using -> True>

Ниже они описаны подробно:

  • Cubics — указывает, следует ли искать явные решения для неприводимых кубических уравнений;
  • EquatedTo — задает выражение для замещения переменной в решении;
  • Modulus — задает промежуточную факторизацию полинома;
  • Multiplicity— устанавливает кратность каждого из корней в конечном результате;
  • Quartics — задает точное решение квадратного уравнения и полинома четвертой степени;
  • Using — указывает какие-либо дополнительные уравнения, которые следует использовать для решения уравнений.

Применение опций нередко позволяет получать решения, которые не удаются с первого раза. Однако это требует определенного опыта и понимания сути решаемой задачи.

Дополнительные функции для решения уравнений

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

  • Auxiliary [v] — применяется модулем Solve для указания того, что переменная v должна использоваться функцией Roots для результирующих решений, но соответствующие значения v не должны быть включены в окончательный ответ;
  • Eliminate [eqns, vars] — исключает переменные vars из системы уравнений eqns;
  • FindRoot [Ihs == rhs, ] — ищет численное решение уравнения Ihs == rhs, начиная с х = x0;
  • MainSolve [eqns] — основная функция для преобразования системы уравнений. Ее вызывают Solve и Eliminate. Уравнения должны быть представлены в форме Ihs == rhs. Они могут объединяться с помощью && и | |. MainSolve возвращает False, если не существует решения уравнений, и возвращает True, если все значения переменных являются решениями. MainSolve перестраивает уравнения, применяя определенные директивы;
  • MainSolve [eqns, vars, elim, rest] — пытается перестраивать уравнения eqns так, чтобы найти решения для переменных vars и исключить переменные elim. Список rest может включаться для указания порядка исключения любых остальных переменных;
  • NRoots [lhs==rhs, var] — возвращает список численных приближений корней полиномиального уравнения;
  • Residue [ехрr, <х, х0 >] — ищет вычет ехрг в точке х = х0;
  • SolveAlways [eqns, vars] — возвращает значения параметров, которые превращают уравнения eqns в тождества для всех значений переменных vars.

Примеры использования некоторых из этих функций показаны на рис. 4.19.

Рис. 4.19. Примеры применения дополнительных функций для решения уравнений

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

Графическая иллюстрация и выбор метода решения уравнений

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

На самом деле порой даже простые уравнения могут не иметь решения. В сложных случаях очень полезна графическая визуализация решения. В качестве примера на рис. 4.20 показана визуализация вычисления корней квадратного уравнения. В данном случае график функции явно указывает на существование двух действительных корней при х, близких к 0.2 и 2.3. Функция Nsolve без труда находит оба корня.

Рис. 4.20. Визуализация решения квадратного уравнения для случая двух действительных корней

А вот на рис. 4.21 показан случай, когда из-за изменения последнего члена квадратичной функции ее график уже не пересекает ось х вообще. Это говорит о том, что решения в виде действительных корней нет. И в самом деле, NSolve находит корни как комплексно-сопряженные числа. Действительная часть найденных корней дает координату х для впадины кривой — параболы.

Если требуется решение равенства f1(х) = f 2 (x), то для графической визуализации решения можно построить графики функций f1(х) и f 2 (лг) — наличие точек их пересечения будет означать существование действительных корней. Этот случай иллюстрирует рис. 4.22. В данном случае проблем с решением нет, поскольку, по существу, решается квадратное уравнение.

Рис. 4.21. Визуализация решения квадратного уравнения для случая двух комплексных корней

Рис. 4.22. Пример визуализации решения уравнения вида f(x) = 5х + 1

Но вот на рис. 4.23 показан случай решения уравнения f(x) = ехр(х/2). Графики функций ясно показывают, что парабола пересекается экспонентой в двух точках. Однако функция NSolve отказывается решать такое уравнение и выдает сообщение о том, что оно является трансцендентным.

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

Рис. 4.23. Пример решения уравнения вида f(x) = ехр(х/2)

Приведенные примеры далеко не исчерпывают проблему графической визуализации решения и выбора методов решения. Однако они иллюстрируют возможности системы Mathematica в этой области и заостряют внимание на потенциальных проблемах. Для реализации численных расчетов в системе Mathematica отобраны наилучшие и наиболее эффективные численные методы из описанных в литературе, в том числе в отечественной.

Получение сразу нескольких корней

Многие уравнения с тригонометрическими функциями могут иметь периодические или близкие к ним решения. К сожалению, функции Mathematica, вычисляющие корни уравнений, не способны в этом случае дать сразу несколько корней. Однако ситуация тут далеко не безнадежна — приведенный ниже пример наглядно показывает это.

Пусть требуется в интервале изменения х от 0 до 20 найти все решения уравнения

График функции, представляющей левую часть уравнения, показан на рис. 4.24. Хорошо видно, что он пересекает ось х семь раз, то есть имеет в интересующем нас диапазоне семь корней.

Рис. 4.24. График функции х sin(x) + х/2 — 1 и пример вычисления всех ее корней в интервале изменения х от 0 до 20

Колебательная составляющая функции обусловлена входящей в нее функцией sin(x), которая имеет нули в точках 0, n, 2n, Зn. Однако, как видно из рис. 4.24, эти значения лишь приближенные, ввиду влияния других членов уравнения.

Ключевая идея получения всех корней уравнения заключается в поиске нужных решений с помощью функции FindRoot, которой последовательно подставляются различные начальные приближения. Однако вместо уже испытанного приема — поиска корней поодиночке — можно воспользоваться «таблицей» решений, используя функцию Table. Решение, приведенное под графиком функции на рис. 4.24, наглядно иллюстрирует возможности этого приема — найдены (или, вернее, уточнены) все семь корней исходного уравнения.

Получение неизвестных в явном виде

Читатель, возможно, обратил внимание на то, что решения всех представленных выше примеров выглядят не совсем обычно — в виде списка подстановок. Это не позволяет использовать неизвестные в явном виде, например, для проверки решений или передачи найденных неизвестных в последующие вычислительные блоки. Однако от этого затруднения легко избавиться, если перед конструкций блока решения использовать выражение следующего вида:

Список переменных в этом выражении должен однозначно соответствовать списку неизвестных системы уравнений. Покажем этот прием в действии. Ниже приведено решение системы из трех нелинейных уравнений:

Обратите внимание на то, что вывод списка <х, у, z >не дает полученных значений неизвестных. Это связано с тем, что переменные в блоке решения имеют ло-к(1лъный характер и за пределами блока их значения (в том числе неопределенные) сохранятся такими, какими они были до применения в блоке решения.

Теперь зададим решение в ином виде:

Как видите, на сей раз решение получено в виде списка с числами — явными значениями неизвестных. Можно обозначить их как а, Ь и с, получить список <а, b, с>и даже использовать их отдельно:

Теперь можно проверить решение данной системы:

Полученный вектор правых частей системы совпадает с заданным, что свидетельствует о правильности решения. Разумеется, вместо нового списка < а , b , с >для вектора решения можно было использовать и вектор < х, у, z >.


источники:

http://www.sites.google.com/site/matenatikucozru/wolfram-alpha

http://lib.qrz.ru/node/10625