Гурский Д., Турбина Е. - Вычисления в MathCad 12 (1077322), страница 47
Текст из файла (страница 47)
6.24).f(x,y) := sin(x + 2у)Согласитесь, что после изменения интервала построения и шага поверхность сталакуда более наглядной. А вид графика функции в цилиндрической системе координатполучился очень необычным и интересным.В подавляющем большинстве случаев быстрый метод построения поверхности, с учетом возможности форматирования параметров сетки разбиений и системы координат,вполне приемлем для задания графиков любых функций. Однако иногда задать нужный объект с помощью обычного уравнения вида Z=f(x,y) невозможно по причине отсутствия такового для данной поверхности.
Целая группа трехмерных объектов опре-6.2. 30-графики• 197деляется с помощью систем параметрических уравнений, и поэтому для их заданиянужно искать другой подход. Не менее важным является также построение поверхностей исходя из таблиц экспериментальных данных, которое имеет целый ряд совсемнеочевидных особенностей.CARTESIANIIfIIfРис. 6.24. Поверхность быстрого построения с измененными параметрамиСпособов построения поверхности, различающихся между собой какой-то технической деталью, но использующих один и тот же принцип, можно придумать великое множество. Описывать их все, естественно, нет никакого смысла, поэтому мы остановимсялишь на наиболее важных или интересных.
Чтобы разговор наш был максимально эффективным, все эти способы будут приложены к решению одной и той же задачи —построению сферы.Способ 1. Матрица значенийЕсли представить такую гипотетическую ситуацию, что уравнение сферы неизвестно,то построить ее изображение можно, произведя измерение значений координат нескольких сотен точек реального шара и организовав их тем или иным образом в видемассива данных. Наиболее очевидным будет создать таблицу из трех столбцов: в первом будут расположены координаты экспериментальных точек по X, во втором —по Y, в третьем — по Z. Например:1 2 3z:= 3 1 36 6 7Внимательно изучив рис.
6.25, можно обнаружить, что Mathcad построила поверхностьсовсем по другому принципу, чем мы рассчитывали. Вместо того чтобы принять каждый из столбцов за вектор с координатами по соответствующей оси, программа поступила довольно неожиданно: все значения элементов матрицы были приняты как координаты по Z, а в качестве координат по X и Y были использованы значения индексовэлементов. Естественно, что подобного рода подход вряд ли может быть эффективноиспользован для решения поставленной задачи.1 9 8 •> Глава 6. Графики\Рис.
6.25. Задание поверхности с помощью матрицы значенийДля задания поверхности по методике, схожей с описанной, в Mathcad существует специальная функция matrix(m,n,f) (матрица). Функция формирует матрицу, элементыкоторой равны значениям функции f(x,y), исходя из того условия, что x=i, y=j (то естьпеременные определяются равными соответствующим матричным индексам данногоэлемента). Количество строк создаваемой матрицы определяется в первом маркереимени функции (параметр т ) , количество столбцов — во втором (параметр п). Большого практического значения функция matrix не имеет (прежде всего из-за того, что поверхность с ее помощью может быть задана только для положительных значений переменной), хотя в ряде случаев может быть довольно полезной (рис.
6.26).f(x, у ) : = sin(x + у)м.М : = matrix(5,5, f)О0.8410.9090.8410.9090.1410.9090.141-0.757 -0.959 -0.2790.141-0.757 -0.959 -0.279V-0.757 -0.959 -0.2790.141-0.757^-0.737 -0.9590.6570.6570.989 )UРис. 6.26. Использование функции matrix (матрица)Чтобы понять, каким же образом должны быть организованы координаты экспериментальных точек, чтобы по ним можно было построить поверхность (рис. 6.27), попробуем проанализировать, по каким принципам представляет данные, содержащие коор-6.2.
ЗР-графики• 199динаты узловых точек, сама система при использовании изученного нами выше быстрого метода задания ЗО-графика. Как вы помните, визуально разбиение интервала приэтом легче всего представить в виде сетки. Через значения функции в узлах этой сетки и проводится поверхность. Математически же множество координат узловых точек сетки по каждой из осей можно представить в виде трех матриц. Нетрудно догадаться, что каждый отдельно взятый столбец матрицы X и каждая отдельная строкаматрицы Y будет содержать одинаковые значения координат. Для того же, чтобы матрицы рассматривались совместно, нужно просто объединить их в один массив.
Наиболее просто это можно сделать, введя имена матриц со значениями координат узловыхточек через запятую в маркер графической области (при этом они должны быть обязательно взяты в скобки).Х:=1 2 31 1 11 2 31 2 3Y:= 2 2 2Z:= 4 5 61 2 37 8 9(X.Y.ZDРис. 6.27. Задание поверхности, исходя из массива данныхКонечно, описанный способ задать поверхность может мало помочь при построениисферы, однако его стоило рассмотреть для того, чтобы в дальнейшем нам было легчеразбираться в более сложных методиках. Тем более что при решении практическихинженерных задач он имеет огромное значение, так как данные, например при автоматическом определении дефекта детали датчиком Холла, организуются именно так, какэто было сделано нами на рис.
6.27.Способ 2. Ранжированные переменныеАналогично двумерному случаю, задать поверхность можно, используя оператор ранжированной переменной (что, как вы помните, аналогично заданию циклов в программировании). Так как с этим вопросом мы уже довольно хорошо знакомы по разделуо создании Х-Y-графиков, то подробно на технических деталях останавливаться не стоит и мы сразу приведем пример задания сферы с помощью двух ранжированных переменных (рис.
6.28).2 0 0 •> Глава 6. ГрафикиN:=20М:=20i:=0.. Nij:=0..MJcos9X. . := sin(<tO- ( j)YМ:i , j = sin(«$-sin(ej)Z. . := cosРис. 6.28. Задание сферы с помощью ранжированных переменныхВнимательно изучив предложенный алгоритм, нельзя не согласиться, что во многомданный способ повторяет те ходы, к которым мы прибегали, когда создавали графикпо готовым матрицам. Однако если вы попытаетесь открыть матрицу значений одногоиз уравнений, вы обнаружите, что все же есть одно принципиальное отличие: данныепо координатам организованы не в виде матриц, а в виде векторов (рис.
6.29).Рис. 6.29. Вектор значений уравнения для XРазличие это связано прежде всего с формой записи имени матрицы. Если сохранитьиндексы (что и было сделано), то по сути мы заставляем систему вывести каждый элемент в отдельности. Сделано это будет последовательным прочтением строк (слева6.2. 30-графики* 201направо и сверху вниз — точно так же, как вы читаете эту книгу). В результате и получается вектор, фрагмент которого приведен на рис. 6.29. Однако в общий массив мыобъединяем, если вы обратили внимание, названия координат без индексов. При этомданные рассматриваются именно в виде матриц (рис.
6.30).••I012:А000.3090.5380.8090.951100.3050.5810.7990.93900.2940.5590.7690.905л3400.2750.5240.7210.84700.250.4760.6550.769±11•_•Рис. 6.30. Таблица значений координаты X для сферыИтак, никаких принципиальных различий между такими, на первый взгляд, разнымиспособами задания поверхности, как использование экспериментальных данных и ранжированных переменных, нет. Равно как нет их и между всеми остальными методами.В основе всех способов построения поверхности лежит одна и та же идея: созданиевложенного массива, описывающего некоторую сетку разбиений.
Зная это, всегда можно задать совершенно любую зависимость, даже не зная никаких специальных функций или ходов.Объединить матрицы или уравнения в один массив можно еще до введения его в маркер графической области. Таким образом, в нашем случае массив данных можно представить в виде:М:=М={21,21}{21,21 }Описанный способ имеет скорее теоретическое, нежели практическое значение в связи с тем, что в Mathcad существуют функции, значительно облегчающие построениепараметрически определенных трехмерных графиков. Однако изучить его было весьма полезно для понимания тех механизмов, которые лежат в основе построения поверхностей в Mathcad. Тем более что построить таким образом несколько графиков — этолучший способ разобраться в особенностях организации данных в Mathcad, что оченьважно, особенно при решении задач программными методами.Способ 3.
Использование уравнения полусферы2222Аналитически сфера определяется уравнением X +Y +Z =R , где R — ее радиус. Однако для того, чтобы задать какую-то поверхность уравнением, оно должно иметь стандартный вид: Z=f(X,Y).В случае уравнения сферы координату Z можно выразить какZ(X,Y):=VR2-X2-Y22 0 2 •:• Глава 6. Графикиили какZ(X,Y):=- NВ первом случае уравнение задаст верхнюю полусферу, во втором — нижнюю. Воспользоваться распространенным в математике сочетанием «плюс-минус» не получится, поскольку в Mathcad его никак нельзя определить. Однако выход есть: поместимна одну графическую область сразу две эти поверхности.
Слившись, они дадут шар.Последовательность действий следующая.1. Вводим два уравнения полусфер.2. Задаем циклы для переменных и определяем область изменения X и Y от -R до R(или сразу строим график быстрым способом и необходимые настройки делаемс помощью параметров вкладки QuickPlot окна форматирования поверхности).3. Строим график.Но на последнем этапе вдруг возникает проблема: поверхность не отображается и выдается сообщение об ошибке: Function must return real scalar (Функция должна возвращать действительный скаляр).
В чем же дело?А проблема заключается в следующем. Как вы помните, при создании образующей сетки каждому значению X ставятся в соответствие все возможные значения Y (и наоборот). При этом, с учетом заданной области изменения переменных, обязательно найдутся точки, сумма квадратов координат которых превысит квадрат радиуса сферы.При этом подкоренное значение станет отрицательной величиной, а так как Mathcadрассматривает все числа как комплексные, то координате Z в таких точках будет присвоено мнимое значение. Естественно, что построить при этом поверхность будет невозможно.Проблему можно было бы легко решить, если бы существовала возможность переходаот прямоугольной сетки разбиений к круглой.