Гурский Д., Турбина Е. - Вычисления в MathCad 12 (1077322), страница 53
Текст из файла (страница 53)
В самом общем случае векторное поле — это вид графика, которыйописывает поведение функции двух переменных с помощью направленных стрелоквекторов. В зависимости от того, какой математический (или физический) смыслположен в основу векторного поля, направление векторов и их величина могут вычисляться по-разному. Чаще всего в качестве такого базиса используется понятие градиента — вектора, составленного из частных производных функции.
В этом случае направление вектора поля определяется векторной суммой векторов отдельных частныхпроизводных в рассматриваемой точке (так как эти векторы параллельны соответствующим осям, то это предельно просто реализуется технически). Модуль же вектораполя определяется по теореме Пифагора как корень квадратный из суммы квадратовчастных производных. Математический смысл построенного таким образом графикадовольно очевиден: направление стрелок характеризует поведение функции (возрастание или убывание), а также соотношение между приращениями по разным переменным, длина — быстроту изменения функции.В случае рассматриваемой задачи, аналогично построению векторного поля градиентафункции, также требуется задать векторы, сложением которых будет определено направление векторов графика.
А так как модуль значения напряженности поля в любойточке пространства может быть легко вычислен, то очень просто можно задать необходимый базис, спроектировав вектор Е на координатные оси::VV>"J>Функция atan2(x,y) служит для вычисления угла между линией, соединяющей точку(х,у) и начало координат, и осью X. Впрочем, даже не прибегая к тригонометрии и неиспользуя встроенных функций, можно догадаться, что соответствующие модули векторов базиса легко можно определить как:Х..:=Е{*, У .)-Никакой принципиальной разницы от того, каким образом вы определите базис, не будет.
Единственное, при задании ранжированных переменных следует учесть то, что в некоторых точках функция может не существовать. Так, в нашем случае нельзя задатьМ и N как 10, так как при этом придется вычислять значение функции в точке (0,0),что, естественно, невозможно.После того как координаты векторов базиса будут заданы, можно непосредственностроить векторное поле (рис. 6.65). Для этого матрицы X и Y объединяем в один массив (взяв их имена в скобки в маркере графической области).В результате проделанной работы векторное поле получилось, и получилось правильно. Однако нельзя не согласиться, что вид его, при всей математической корректности,2 3 0 •:• Глава 6. Графикиоставляет желать лучшего.
Лишь четыре наиболее близких к заряду вектора имеют видстрелки, остальные же столь малы, что отображаются в виде точки. Это связано с тем,что функция напряженности убывает очень быстро, а так как существует пропорциональность между размерами вектора поля и величиной функции в данной точке,то одни векторы оказываются несопоставимо большими, чем другие.10-••»*• ч• ц> <0i10Рис. 6.65. Векторное поле (без логарифмирования)Чтобы решить возникшую проблему, вспомним, как мы справились с аналогичнымитрудностями при построении двумерных кривых. Тогда для этого была введена логарифмическая шкала.
А что если попробовать прологарифмировать функцию напряженности? Ведь она как раз принимает только положительные значения:E(x,y):=logПопробуем построить векторное поле теперь (рис. 6.66).Согласитесь, что полученное векторное поле гораздо лучше того варианта, которыйбыл построен без использования логарифмирования. Кстати, меняя основание логарифма, можно сделать разницу между стрелками середины и краев графика значительной в той степени, в которой вы посчитаете нужной.Скажем несколько слов об оформлении векторного поля.
Из существующих возможностей оформления стоит выделить построение цветного графика и изменение толщины стрелок поля.Чтобы окрасить стрелки векторного поля выбранным цветом или палитрой, задействуйте параметр Fill Arrows (Залить стрелки) вкладки Appearance (Вид).Толщина векторов поля регулируется с помощью параметра Weight (Толщина) менюLine Options (Параметры линии) вкладки Appearance (Вид).6.3. Анимация графиков• 231Также к вектор ном у полю v огу гбьп Ы рименены все параметры вкладки Advanced (Дополнительные) и Lighting ((Зсв( ;щен «e . Однако нет смысла, например, окутывать векторное поле туманом или освещать aai травленным светом.10-ч чч чX\ h f f t f f fч ч\ f i йf t / / ^Ч ч ччч чч i t f\tЧК^кЧ5-Aг-upшт/ члгчг\ \ "^ Sfc* * ф\4чч чФ41\ч ч ч/ / 4 1 \ ч ччч••»J•*,шsf0*\0«Ф 4 4 1 \I5Ч Чч(Г10Рис. 6.66.
Вид векторного поля при использовании логарифмирования6.3. Анимация графиковБез сомнения, самой необычной, интересной и удивительной возможностью визуализации в Mathcad является анимация. В данном разделе мы кратко рассмотрим основные ходы, применяемые при ее создании (более обстоятельный разговор невозможенпо той причине, что просто в формате книги очень и очень проблематично привестирезультат проделанной работы).Создается анимация в Mathcad точно так же, как, например, на студии Уолта Диснея.То есть она представляет собой быстро сменяющие друг друга кадры с более или менеезначительными изменениями. А из-за того, что зрение наше довольно инертно, создается впечатление непрерывного процесса.Требующиеся изменения в кадр вносятся с помощью специальной переменной FRAME(Кадр).
Значение этой переменной равно по умолчанию номеру кадра, и, следовательно, может изменяться от 0 (до запуска процесса анимирования) до предельного значения 9999. Подставив переменную FRAME в функцию, вы заставите ее изменяться помере того, как будут сменяться кадры (если увеличение переменной на 1 для каждого232 *Глава 6. Графикикадра — это слишком много, то шаг можно уменьшить с помощью коэффициента).В результате при совмещении нескольких кадров получится анимация.Технические особенности задания анимации рассмотрим на примере следующей задачи: попробуем, меняя значение точки касания, заставить касательную как бы скользитьпо кривой. Для этого выполняем следующую последовательность действий.1.
Задаем вид функции, касательную к которой мы заставим двигаться. Например:sin(x)-xу(х) := — - —2. Определяем начальное положение и шаг изменения точки касания при переходе откадра к кадру. Проще всего это сделать непосредственно с помощью переменной FRAME!:FRAMEt :=л+ -543. Задаем уравнение, описывающее касательную. В качестве точки касания определяем параметр t:D(x):=ly(x)dxtangent(t,x) :=y(t) + D(t)-(x-t)4.
Строим график функции и касательной.5. С помощью команды Tools • Animation • Record Animation (Инструменты • Анимация • Записать анимацию) открываем специальное диалоговое окно, содержащеепараметры анимации.6. Выделяем с помощью пунктирного прямоугольника (точно так же, как при масштабировании фрагмента кривой) ту часть рабочей области, которая должна бытьотображена в анимационном ролике.
Обычно выделяется только внутренняя частьграфической области.7. В меню For Frame (Параметры кадра) настраиваем параметры будущей анимации.В окошке From (От) следует задать первое значение целочисленной переменнойFRAME, в окошке То (До) — последнее. Количество кадров, сменяющихся в секунду,можно определить в окошке параметра At: Frames/Sec (Co скоростью: кадров в секунду).Для нашей задачи параметры должны быть определены следующим образом: FRAMEизменяется от 0 до 30 со скоростью 10 кадров в секунду. В общем же случае, безусловно, шаг лучше делать по возможности более маленьким, а скорость прокрутки —высокой. При этом можно добиться очень высокого качества анимации, правда,лишь в том случае, если ваш компьютер достаточно мощный — иначе анимирование будет производиться очень и очень долго.8. Нажимаем кнопку Animate (Анимировать).
При этом начнется непосредственнопроцесс анимирования, за ходом которого вы сможете следить с помощью специальной зоны диалогового окна Animate. Количество проработанных кадров отображается под данной зоной в строке FRAME (Кадр).9.
После того как анимация будет завершена, на листе появится окно прокрутки видеороликов, нажав кнопку PLay (Проиграть) которого, вы сможете просмотреть созданную анимацию (рис. 6.67).6.3. Анимация графиков* 233У(х)tangent(t,x)FRAME* 30 : :a of yout woiksheet whose contents ate based one FRAME variable, enter starling and ending FRAME values,id choose Animate.Рис.
6.67. Просмотр созданной анимацииСозданные анимации можно сохранять с помощью кнопки Save As (Сохранить как)в стандартном видеоформате, что позволит просматривать их в дальнейшем и без использования среды Mathcad.Чтобы просмотреть созданную ранее анимацию с помощью Mathcad, задействуйтекоманду Tools • Animation • Playback (Инструменты • Анимация • Воспроизведение).В появившемся окне прокрутки видеороликов нажмите кнопку Open AVI и выберите необходимый файл.Глава 7. Упрощение выраженийи алгебраические преобразованияПожалуй, трудно найти более рутинную, однако и более часто встречающуюся математическую операцию, чем упрощение выражений.
Практически в любом выводе промежуточный результат приходится преобразовывать в форму, более удобную для дальнейшего использования. Разложение на множители, приведение общих слагаемых,переход от двойного аргумента к одинарному в случае тригонометрических функций —принципы проведения всех этих операций проходят еще в средней школе. Однако какне хочется порой терять время на то, чтобы, к примеру, в очередной раз перемножатьполиномы или приводить две дроби к одному знаменателю! Значительную помощьпри этом может оказать символьный процессор Mathcad. Конечно, наивно рассчитывать на то, что программа сможет без вашей помощи решать задачи уровня сборникаМ.
И. Сканави. Однако проблемы логически менее нагруженные, но практическисколь угодно сложные с вычислительной точки зрения для нее вполне по силам. В этойглаве мы научимся эффективно использовать возможности символьного процессорав области упрощения выражений, проанализировав на примерах, какие задачи можнополностью возложить на Mathcad, а в каких требуется ваше активное участие.7.1. Разложение выраженийПод разложением алгебраического выражения понимается математическое преобразование, переводящее степени и произведения в более простые для анализа суммы (например, (a-b)-(a+b)=a2-b2). В случае разложения тригонометрических выраженийфункции кратного аргумента преобразуются в соответствующие им выражения от одинарного аргумента (например, sin(2-x)=2-sin(^)-cos(^)); разлагаются также функции отсуммы переменных (к примеру, по формуле sin(x+z/)=sin(x)-cos(j/)+cos(x)-sin(t/)).При разложении логарифмических выражений используются преобразования типа\n(a-b)=\n(a)+\n(b), ln(a/b)=\n(a)-\n(b), \oga(ax)=x.