
- •Лекция 1 Возможности системы scilab
- •Работа с Scilab в режиме диалога
- •Математические выражения в Scilab
- •Функцию средствами пакета Scilab можно создать с помощью команды deff.
- •Основы редактирования и отладки sci-файлов
- •Операторы и функции
- •Матричные операции линейной алгебры
- •Численные методы и обработка данных Решение систем линейных уравнений
- •Вычисление корней полинома
- •Численное интегрирование
- •Построение графиков функций одной переменной
- •Графики в полярной системе координат
- •Построение графиков трехмерных поверхностей
- •Оформление и комбинирование графиков
- •Построение графиков в виде ступенчатой линии
- •Основы программирования в системе Scilab
- •Функции ввода-вывода в Scilab
- •Оператор присваивания
- •Условный оператор
- •Оператор альтернативного выбора
- •Оператор while
- •Оператор for
- •Вычисление суммы и произведения элементов массива (матрицы)
- •Структура функций
Графики в полярной системе координат
В полярной системе координат любая точка представляется как конец радиус-вектора, исходящего из начала системы координат, имеющего длину ρ и угол θ. Для построения графика функции ρ(θ) используется команда polarplot:
polarplot(theta, rho,[key1=value1,…,keyn=valuen]) – строит график, представляющий собой положение конца радиуса-вектора длиной rho и углом theta.
Пример: Построить
графики двух функций:
Программа:
fi=0:.01:2*%pi;
ro=3*cos(5*fi);ro1=3*cos(3*fi);
polarplot(fi,ro,style=color("red"));
polarplot(fi,ro1,style=color("blue"));
Приведем еще несколько примеров построения двумерных графиков.
Построить графики функций y=sin(x) и y1=cos(x) . Модифицировать масштаб координатных осей графика.
Сформируем массив Х приняв, что х изменяется в диапазоне [-8:8] с шагом 0,1, затем совместно сформируем массивы значений заданных функций с помощью следующей записи y=[sin(x); cos(x)].
С помощью функции plot2d построим графики функций y=sin(x) и y1=cos(x), установив значение параметра nax=[4,9,3,6]. Таким образом, ось X будет разбита 9 основными делениями (засечками), каждое основное 4 промежуточными, а ось Y соответственно - 6 и 3 (см. рис.).
x=[-8:0.1:8];
y=[sin(x); cos(x)];
plot2d(x,y',style=[color("red"),color("blue")],axesflag=1, nax=[4,9,3,6]);
axesflag - значение параметра keyn=valuen функции plot2d - определяет наличие рамки вокруг графика. Необходимо выделить следующие базисные значения этого параметра:
0 - нет рамки, нет изображения осей;
1 или 4 - изображение рамки, ось y слева (по умолчанию);
2 - изображение рамки, изображения осей нет;
3 - изображение рамки нет, ось y справа;
5 - изображение осей, проходящих через точку (0,0).
Построим графики функций y=sin(x) и y1=cos(x) с пересечением осей X и Y в точке (0,0) - значение параметра axesflag=5, выведем легенду с подписями для обеих кривых
x=[-2*%pi:0.1:2*%pi];
y=[sin(x); cos(x)];
plot2d(x,y',axesflag=5, leg="sin(x)@cos(x)");
Построение графиков трехмерных поверхностей
Для построения трехмерных графиков используют операторы plot3d, plot3d1 и mesh.
Обращение к ним следующее:
plot3d(x,y,z,[theta,alpha,leg,flag,ebox][keyn=valuen]),
plot3d1(x,y,z,[theta,alpha,leg,flag,ebox][keyn=valuen])
Здесь x - вектор - столбец значений абсцисс;
y - вектор - столбец значений ординат;
z - матрица значений функции;
theta, alpha - действительные числа, которые определяют в градусах сферические координаты угла зрения на график. Попросту говоря, это угол, под которым наблюдатель видит отображаемую поверхность;
leg - подписи координатных осей графика - символы, отделяемые знаком @. Например , 'X@Y@Z'.
flag – массив, состоящий из 3 целочисленных параметров [mode,type,box]. Здесь mode устанавливает цвет поверхности.
Значения параметра mode
>0 - поверхность имеет цвет «mode», выводится прямоугольная сетка.
0 - выводится прямоугольная сетка, заливка отсутствует (белый цвет).
<0 - поверхность имеет цвет «mode», отсутствует прямоугольная сетка.
По умолчанию, равен 2 - цвет заливки синий, прямоугольная сетка выводится.
type - позволяет управлять масштабом графика, по умолчанию имеет значение 2.
Значения параметра type
0 - применяется способ масштабирования, как у ранее созданной графики.
1 - границы графика указываются вручную с помощью параметра ebox.
2 - границы графика определяют исходные данные.
Box - определяет наличие рамки вокруг отображаемого графика. По умолчанию равен 4.
Значения параметра box
0 и 1 - нет рамки
2 - только оси, находящиеся за поверхностью
3 - выводится рамка и подписи осей
4 - выводится рамка, оси и их подписи.
ebox - определяет границы области, в которую будет выводиться поверхность, как вектор [xmin,xmax,ymin,ymax,zmin,zmax]. Этот параметр может использоваться только при значении параметра type=1.
keyn=valuen - последовательность значений свойств графика key1=value1,key2=value2,...,keyn=valuen, таких как толщина линии, ее цвет, цвет заливки фона графического окна, наличие маркера и др. Таким образом, функции plot3d (plot3d1) в качестве параметров необходимо передать прямоугольную сетку и матрицу значений в узлах сетки.
Примеры:
-->[x, y]=meshgrid([-3:0.15:3]); z=x.^2+y.^2; plot3d(x, y, z)
Задается опорная плоскость для построения трехмерной поверхности, переменные x, y меняются от –3 до 3 с шагом 0,15.
xbasc()
[x, y]=meshgrid([-3:0.15:3]); z=x.^2+y.^2; plot3d(x, y, z,flag=[5,2,3])
Цвет заливки – красный.
xbasc();[x, y]=meshgrid([-3:0.15:3]); z=x.^2+y.^2; plot3d(x, y,z,flag=[5,1,4], ebox=[-5,5,-4,4,-1,20])
xbasc()
t=-%pi:.3:%pi;
plot3d(t,t,sin(t)'*cos(t),35,45,'x@y@z',[5,2,4]);
Для формирования прямоугольной сетки впервые в Scilab 4.0 появилась функция meshgrid. Обращение к ней имеет вид:
[X,Y[,Z]]=meshgrid(x,y[,z])
здесь x,y [,z] - массивы 2(3) исходных параметров X, Y (,Z), указываемые через запятую; X, Y [,Z] - матрицы в случае 2 и массивы в случае 3 входных величин.
После формирования сетки вывести в нее графику можно с помощью функции surf либо mesh. Так же, как и в случае с функциями plot3d и plot3d1, surf строит поверхность, заливая каждую ячейку цветом, который зависит от конкретного значения функции в узле сетки, а mesh заливает ее одним цветом.
Таким образом, mesh является полным аналогом функции surf со значением параметров Сolor mode=индекс белого цвета в текущей палитре цветов и Сolor flag=0.
-->[x, y]=meshgrid(-2:0.2:2, -3:.2:3); z=x.^2+y.*sin(x); mesh(x,y,z)
-->[x, y]=meshgrid(-2:0.2:2, -3:.2:3); z=x.^2+y.*sin(x); surf(x,y,z)
Программа, приведенная ниже, показывает, как можно в одном окне построить графики двух трехмерных функций (оператор mtlb_hold('on');). Правда, и без этого оператора график остается таким же.
[x y]=meshgrid(-2:0.2:2,-2:0.2:2);
z=3*x.^2+4*y.^2-1;
z1=-3*x.^2-4*y.^2-1;
surf(x,y,z);
mtlb_hold('on');
mesh(x,y,z1);
Сферу можно построить так:
u = linspace(-%pi/2,%pi/2,40);
v = linspace(0,2*%pi,20);
X = cos(u)'*cos(v);
Y = cos(u)'*sin(v);
Z = sin(u)'*ones(v);
plot3d2(X,Y,Z);
Оператор v = linspace(0,2*%pi,20);задает вектор v, состоящий из 20 значений с шагом π/10.
Замена
последней строки программы на
plot3d3(X,Y,Z); дает