Действительно, график рассматриваемого многочлена пересекает ось Ox вблизи от точки x=0.5.
Возвращаясь к решению уравнений, заметим, что "Математика'' умеет численно решать не только полиномиальные, но и трансцендентные уравнения. Правда, если заранее известно, что какое-то уравнение имеет бесконечно много корней, следует указать хотя бы грубое приближение к искомому корню. Последнее можно найти, нарисовав график соответствующей функции. Предположим, что нам нужно найти наибольшийя корень уравнения 0.1x = Sin[x]. Поскольку 0 есть корень этого уравнения, а при x > 10 корней, очевидно, нет, нарисуем график функции 0.1x-Sin[x] на отрезке [0, 10]
Plot[0.1x - Sin[x], {x, 0, 10}, AxesStyle->Thickness[0.01], PlotStyle->{Hue[0],Thickness[0.01]}, AxesLabel->{"x","y"}, Background->GrayLevel[0.95], GridLines->Automatic];
Мы видим, что наибольший корень уравнения приближенно равен 8. Уточним его значение с помощью команды FindRoot.
FindRoot[0.1 x-Sin[x]==0, {x, 8}]
Команда Solve для уравнений с параметрами находит общее решение, которое, однако, может не иметь смысла при некоторых частных значениях параметров. Например, решения квадратного уравнения a
+ bx + c == 0 даются формулами Виета:
Solve[a*x^2 + b* x + c == 0, x]
Эти формулы для корней не имеют смысла при a = 0. Анализ подобных случаев производит функция Reduce.
Reduce[a* x^2 + b* x + c == 0, x]
Ответ содержит логические функции && (логическое И) и ИИ (логическое ИЛИ). Проведенный анализ показывает, что при a ¹ 0, справедливы общие формулы Виета. При a = 0, b ¹ 0 решение равно -
, а при a = 0, b = 0 и c = 0 любое число есть корень уравнения [13].
"Математика" позволяет также проводить тригонометрические преобразования. Они основаны на трактовке тригонометрических функций как рациональных функций от
. Воспользуемся командой Simplify (Упростить) для преобразования следующего тригонометрического выражения
Simplify[ 6*Sin[Phi]^2 + 3*Sin[Phi]*Cos[Phi]-5*Cos[[Phi]^2]
1.3.2.3. Анализ.
Наряду с алгебраическими преобразованиями "Математика'' позволяет выполнять операции математического анализа. Базовыми являются операции интегрирования Integrate и дифференцирования D. Проинтегрируем простейшее иррациональное выражение:
int=Integrate[a*x^5/Sqrt[x^3-1],x ]
Проверим правильность полученного ответа дифференцированием
difint = D[int, x]
Полученный результат следует упростить:
Simplify[difint]
Можно вычислить и определенный интеграл, например:
Integrate[Sin[x]/x, {x, 0, Infinity}]
Знак ® вводится с клавиатуры последовательным нажатием клавиш дефис - и больше >.
Конечные и бесконечные суммы вычисляет команда Sum:
Sum[(-1)^(n - 1)x^n/n, {n, 1, Infinity}]
Одной из важнейших математических задач является нахождение решений обыкновенных дифференциальных уравнений. Их интегрирует команда DSolve:
DSolve[x'[t] == x[t] - x[t]^2, x[t], t]
Интегрировалось уравнение первого порядка, поэтому общее решение содержит произвольную постоянную C[1]. Дифференциальное уравнение можно снабдить дополнительным условием, задав решение при t = 0:
DSolve[{x'[t] == x[t] - x[t]^2, x[0] == a}, x[t], t]
Команду DSolve можно применять и для решения систем обыкновенных дифференциальных уравнений
DSolve[{y'[x]==a^2*z[x] - x, z'[x]==y[x] + b, y[0] == 0, z[0] == 0}, {y[x], z[x]},x],
а также уравнений второго и более высокого порядка
DSolve[y''[x] + x y[x] == 0, y[x], x]
"Математику" можно использовать как справочник специальных математических функций: Эйри, Бесселя, Эрмита, Лежандра и т. д. Сведения об асимптотических разложениях функции Бесселя J2(x) первого рода второго порядка в окрестностях точек 0 и Infinity, можно получить с помощью команды Series (Ряды) следующим образом [13].
{Series[BesselJ[2, x], {x, 0, 2}], Series[BesselJ[2, x], {x, ¥, 2}]}
Вот первые 13 членов ряда Тейлора тригонометрической функции Sin[x] в точке 0:
Series[Sin[x], {x, 0, 13}]
1.3.2.4. Численные методы.
Значения элементарных функций и многочисленных специальных математических функций в вещественных и комплексных точках с вещественными координатами, можно найти, просто вычислив соответствующие выражения. Найдем, например, значение функции синус в точке 0.7 и значение функции Бесселя
(x) первого рода нулевого порядка в комплексной точке 1.+0.5I:
Sin[0.7]
BesselJ[0, 1. + 0.5 I]
Команды символьных вычислений Sum, Integrate, DSolve и т. п. имеют своих двойников NSum, NIntegrate, NDSolve и т. д., выполняющих приближенные численные вычисления.
Integrate[Sin[x^4 + x], {x, 1, 2}]
Вычисления не произошло, так как не удалось символьно вычислить соответствующий неопределенный интеграл. Однако определенный интеграл можно вычислить приближенно с любой степенью точности
NIntegrate[Sin[x^4 + x], {x, 1, 2}, WorkingPrecision -> 25]
Приближение дискретных данных с наименьшим среднеквадратичным отклонением с помощью задаваемой пользователем системы функций осуществляет команда Fit. В рассмотренном ниже примере порождается 10 случайных точек на координатной плоскости и находятся наилучшие приближения с помощью полинома третьей степени или показательных функций 1, E^x, E^(2x), E^(3x)
data = Table[{Random[], Random[]}, {i, 10}] poly = Fit[data, {1, x, x^2, x^3}, x] expo = Fit[data, {1, E^x, E^(2x), E^(3x)}, x]
С помощью команды FindMinimum можно численно найти минимум функции на заданном множестве. Найдем, например, первый минимум функции Бесселя BesselJ[0,x] на отрезке [0,5]. Прежде всего, найдем грубо положение минимума, нарисовав график функции
Plot[BesselJ[0, x], {x, 0, 5}];
Мы видим, что минимум расположен вблизи точки x = 4. Уточним его положение
FindMinimum[BesselJ[0, x], {x, 4}]
Функция ConstrainedMin находит минимум линейной функции от нескольких аргументов в области, ограниченной системой линейных неравенств
ConstrainedMin[2x - 3y, {x > y, y > 1, 2x + y < 5}, {x, y}]
Численное решение дифференциальных уравнений как обыкновенных, так и в частных производных можно осуществлять командой NDSolve. Найдем, например, численно решение задачи Коши для системы уравнений Лоренца и нарисуем фазовый портрет решения
slv = NDSolve[{x'[t] == -3(x[t] - y[t]), y'[t] == - x[t]z[t] + 30x[t] - y[t], z'[t] == x[t]y[t] - z[t], x[0] == 0, y[0] == 1, z[0] == 0}, {x[t], y[t], z[t]}, {t, 0, 30}, MaxSteps -> 10000, Method -> RungeKutta, MaxStepSize -> 0.004]; ParametricPlot3D[Evaluate[{x[t], y[t], z[t]} /. slv], {t, 0, 30}];
Фазовый портрет иллюстрирует наличие так называемого "странного аттрактора" у траекторий системы Лоренца [13].
2. Разработка заданий для выполнения лабораторных и расчётно-графических работ по курсу «Вычислительная математика»
2.1. Лабораторная работа №1.
Знакомство с пакетом MathCAD 2000
2.1.1. Простейшие приёмы работы.
2.1.1.1. Формульный редактор.
Фактически система MathCAD интегрирует три редактора: формульный, текстовый и графический. Для запуска формульного редактора достаточно установить курсор мыши в любом свободном месте окна редактирования и щелкнуть левой клавишей. Появится визир в виде маленького красного крестика. Его можно перемещать клавишами перемещения курсора.
Визир указывает место, с которого можно начинать набор формул — вычислительных блоков. Щелчок левой клавиши мыши устанавливает визир на место, указанное острием стрелки курсора мыши. В зависимости от места Расположения визир может менять свою форму, к чему вы быстро привыкнете.
Так, в области формул визир превращается в синий уголок, указывающий направление и место ввода [3-4].

Рис. 2.1. Общий вид окна MathCAD с примерами вычислений.
2.1.1.2. Наборные панели и шаблоны.
Подготовка вычислительных блоков облегчается благодаря выводу шаблона при задании того или иного оператора. Для этого в MathCAD служат наборные панели с шаблонами различных математических символов.
Допустим, требуется вычислить определенный интеграл. Для этого вначале надо вывести панель операторов математического анализа; ее пиктограмма в строке инструментов имеет знаки интеграла и производной. Затем следует установить визир в то место экрана, куда выводится шаблон, и на панели сделать активной пиктограмму с изображением знака определенного интеграла.
2.1.2. Работа с символьным процессором
Возможности символьного процессора (Symbolic)
Системы компьютерной алгебры снабжаются специальным процессором для выполнения аналитических (символьных) вычислений. Его основой является ядро, хранящее всю совокупность формул и формульных преобразований, с помощью которых производятся аналитические вычисления. Чем больше этих формул в ядре, тем надежней работа символьного процессора и тем вероятнее, что поставленная задача будет решена, разумеется, если такое решение существует в принципе (что бывает далеко не всегда).
Введение в систему MathCAD символьных вычислений придает ей качественно новые возможности, которые отсутствовали у прежних версий системы. Куда важней, что символьные вычисления выполняются в конечном счете столь же просто (для пользователя), как, скажем, вычисление квадрата х.
Операции, относящиеся к работе символьного процессора, содержатся в подменю позиции Symbolic (Символика) главного меню.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Основные порталы (построено редакторами)
