пятница, 4 апреля 2014 г.

Freemat. Графики

В Freemat вы можете либо строить график по точкам, либо указать выражение функции, и всё равно строить график по точкам... 



Чтобы построить простейший график, достаточно воспользоваться функцией plot() в виде plot(X, Y) или plot(x, f(x)). Здесь x - множество независимых переменных, y - множество значений, а f(x) - функциональное выражение. Например, если записать
x=linspace(0, 2*pi);
plot(x, sin(x))
то получится следующий график. 
В верхней части окна можно видеть панель инструментов. Она содержит следующие элементы.
Save - сохраняет изображение в различных графических форматах.
Close - закрывает окно.
Copy - копирует изображение в буфер обмена.
Zoom - увеличивает/уменьшает изображение. Можно провести немало увлекательных часов, пытаясь понять логику работы этой функции.
Две следующие кнопки предназначены для изменения вида графика, что актуально в случае 3D изображения.

Попробуем придать графику немного очарования и индивидуальности. Команда grid on наносит на изображение сетку для большего удобства работы. Подписи оси абсцисс и ординат производятся функциями xlabel('xname') и ylabel('yname') соответственно. Название можно задать командой title('name'). После записи
grid on
xlabel('x')
ylabel('sin(x)')
получаем следующий вид графика
Если аргументом функции plot() является вектор комплексных чисел, то действительная и мнимая части их будут рассматриваться как абсцисса и ордината соответственно. 
Данный график был получен после следующей записи:
x = linspace(0, 2*pi);
y = cos(x).*x + i.*sin(x);
plot(x,y)

Свойствами линии можно управлять. Для этого третьим аргументом функции plot() должна быть заключённая в кавычки строка символов-параметров. Вот некоторые из них.
Линия
- сплошная
-- штрих
-. штрих с точкой
: штрих с двумя точками
Цвет
y - жёлтый
m - розовый
c - голубой
r - красный
g - зелёный
b - синий
k - чёрный
Маркеры
. - точка
o - кружок
x - крестик
* - звёздочка
s - квадрат

Чтобы построить несколько графиков в одном окне, необходимо записать plot() в виде plot(x1,y2,s1,x2,y2,s2...xn,yn,sn), либо plot(x,[f1(x);f2(x);...fn(x)]). В этом случае может потребоваться "легенда", поясняющая, что изображено на графике. Для этого используется функция legend('func1','func2',...'funcN'). Примером служит следующая запись.
x=linspace(0,2*pi);
y=sin(x);
z=cos(2*x);
plot(x, y, '-.mx' , x , z, ':g')
grid on
xlabel('x'), ylabel('y')
legend('sin(x)','cos(2x)')
Можно добавить график к существующему, если перед функцией plot() указать команду hold on. Если же необходимо построить несколько графиков в разных системах координат, используется функция subplot(m,n,k). Здесь m, n - число строк и столбцов, на которое делится окно изображения, k - порядковый номер области, в которой будет строиться график. 
Данные графики построены следующим образом:
x = linspace(0,1);
y = x.^2+x+2;
z = 1./(x.^2+x+2);
subplot(1,2,1)
plot(x,y)
subplot(1,2,2)
plot(x,z)
Не стоит забывать, что аргументами в данных выражениях являются векторы, поэтому операции умножения, деления, возведения в степень должны выполняться поточечно (точка перед соответствующим знаком).

Для построения 3D графика необходимо задать множество точек на плоскости x0y и вычислить значения в данных точках. Удобно выполнить эту операцию с помощью выражения [X,Y] = meshgrid(linspace(x1,x2,n), linspace(y1,y2,m)). Если ограничиться только первым аргументом, матрица получится квадратной.
Сама поверхность строится функцией surf(x,y,z,c), где c - необязательный параметр цветовых значений. Он задаётся выражением c=x.^2+y.^2. Чтобы масштабы осей были одинаковы, необходимо ввести команду axis equal. Стандартный вид 3D графика устанавливается с помощью команды view(3). Напоследок, рассмотрим пример.
[X,Y] = meshgrid(linspace(0,5));
Z=X.^2+Y.^2-3.*X.*Y;
c=X.^2+Y.^2;
surf(X,Y,Z,c)
view(3)


Комментариев нет:

Отправить комментарий