БлогNot. MathCAD: матрица для 3D-графика

MathCAD: матрица для 3D-графика

В ряде версий MathCAD единственный объект, который можно отобразить на трёхмерном графике - матрица, строки и столбцы которой должны содержать значения f(x,y). Типовой вопрос начинающих - есть ли какой-то общий алгоритм формирования такой матрицы для построения 3D-графика функции f(x,y) в заданных пределах и с заданным шагом?

Такой алгоритм очень прост. Рассмотрим случай, когда шаг и пределы по осям 0x и 0y одинаковы, разные границы для значений x и y легко сделать по аналогии.

Сначала проделаем всю работу "вручную".

В любом случае, сначала следует определить границы изменения аргументов a, b и саму функцию, обозначим её z(x,y):

Границы изменения аргументов x,y и функция z(x,y)
Границы изменения аргументов x,y и функция z(x,y)

Теперь можно действовать по одному из 2 алгоритмов.

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

Построение матрицы для 3D-графика в MathCAD: задать количество узлов сетки и рассчитать шаг по аргументам
Построение матрицы для 3D-графика в MathCAD: задать количество узлов сетки и рассчитать шаг по аргументам

Во-вторых, можно исходить из шага и по нему вычислить число узлов. Проблема этого способа в том, что выбранный нами шаг по аргументу может не составить целое количество интервалов сетки (например, шаг h=0.1 для интервала [0,π]). Поэтому будем округлять вычисленное значение N вверх с помощью стандартной функции ceil. Возможно, мы рискуем при этом "прихватить" лишнюю область определения функции:

Построение матрицы для 3D-графика в MathCAD: задать шаг по аргументам и рассчитать количество узлов сетки
Построение матрицы для 3D-графика в MathCAD: задать шаг по аргументам и рассчитать количество узлов сетки

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

Построение 3D-графика в 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
Трехмерный график с помощью CreateMesh в Mathcad

График здесь - обычная поверхность (Surface Plot).

06.03.2014, 12:18 [26094 просмотра]


теги: графика ошибка алгоритм mathcad

показать комментарии (1)