MathCAD: матрица для 3D-графика
В ряде версий MathCAD единственный объект, который можно отобразить на трёхмерном графике - матрица, строки и столбцы которой должны содержать значения f(x,y)
. Типовой вопрос начинающих - есть ли какой-то общий алгоритм формирования такой матрицы для построения 3D-графика функции f(x,y)
в заданных пределах и с заданным шагом?
Такой алгоритм очень прост. Рассмотрим случай, когда шаг и пределы по осям 0x
и 0y
одинаковы, разные границы для значений x
и y
легко сделать по аналогии.
Сначала проделаем всю работу "вручную".
В любом случае, сначала следует определить границы изменения аргументов a
, b
и саму функцию, обозначим её z(x,y)
:
Границы изменения аргументов x,y и функция z(x,y)
Теперь можно действовать по одному из 2 алгоритмов.
Во-первых, мы можем определить желаемое число узлов сетки N
по каждой из осей, а исходя из него вычислить шаг по аргументам h
и заполнить матрицу значений функции:
Построение матрицы для 3D-графика в MathCAD: задать количество узлов сетки и рассчитать шаг по аргументам
Во-вторых, можно исходить из шага и по нему вычислить число узлов. Проблема этого способа в том, что выбранный нами шаг по аргументу может не составить целое количество интервалов сетки (например, шаг h=0.1
для интервала [0,π]
). Поэтому будем округлять вычисленное значение N
вверх с помощью стандартной функции ceil
. Возможно, мы рискуем при этом "прихватить" лишнюю область определения функции:
Построение матрицы для 3D-графика в MathCAD: задать шаг по аргументам и рассчитать количество узлов сетки
Обратите также внимание, что для построения 3D-графика в любой относительно новой версии MathCAD можно и не формировать матрицу, просто впишите в поле ввода графической области название функции без аргументов. Правда, пределы изменения аргументов и шаг в этом случае будет выбирать сам MathCAD:
Построение 3D-графика в MathCAD без формирования матрицы
Скачать архив .zip с этим примером (формат .xmcd) (96 Кб)
Если нужен график не функции двух переменных, а просто неких табличных данных, сформируйте матрицу "вручную", например, введите с клавиатуры A:=
(знак :=
вводится нажатием двоеточия на клавиатуре), нажмите комбинацию клавиш Ctrl+M
(вставка матрицы), задайте количество строк и столбцов матрицы, заполните пустые элементы матрицы данными...
Если быстрее прочитать матрицу из файла, поможет код вида
A:=READPRN("data.txt")
READPRN
пишется именно так, большими буквами!
Документ должен быть сохранён, и в той же папке создан текстовый файл с именем data.txt
(для этого примера, можно и любое другое имя файла), содержащий разбитые по строкам элементы матрицы, скажем, такие:
1 2 3 4 5 6 7 8 9
Узелок на память
MathCAD 15 в сборке Portable (и не только в ней) может отображать трёхмерные графики неправильно (видна только пустая рамка, хотя всё построено верно). В таком случае просто делаем двойной щелчок по графику, переходим в свойствах на вкладку Общие, отключаем опцию Показать границу... и всё работает!
Баг встречался и под Windows 7, и под XP.
Второй вариант исправления - установить в настройках Windows цветность 16 бит вместо 32, проверено, помогло на современных широких мониторах.
Ну и напоследок приятный сюрприз. Нашу работу можно автоматизировать с помощью готовой функции Mathcad (только версия 15 или линейка версий Prime):
A:=CreateMesh(f,-1,1,-2,2,30,40)
Здесь f
- заданная в документе функция 2 переменных, а
матрица A
создаётся по сетке значений x
от -1 до 1 включительно с 30 узлами, значения y
меняются от -2 до 2 включительно и создаётся 40 узлов сетки (количество интервалов будет на единицу меньше). Кроме того, в этом случае Mathcad может подписать оси графика не индексами узловых точек а нормальными значениями x и y:
Трехмерный график с помощью CreateMesh в Mathcad
График здесь - обычная поверхность (Surface Plot).
06.03.2014, 12:18 [26094 просмотра]