
- •Класифікація засобів комп’ютерної математики
- •3. Призначення та основні функції Scilab.
- •5. Середовище Scilab
- •6. Текстові коментарі та елементарні математичні вирази.
- •7. Змінні в Scilab
- •11. Спеціальні матричні функції
- •12. Функція plot і plot2d
- •13. Оформлення графіків.
- •14. 2. Побудова тривимірних графіків в Scilab
- •18. Файл функції та файл сценарію.
14. 2. Побудова тривимірних графіків в Scilab
В Scilab поверхня можна побудувати за допомогою функцій plot3d або plot3d1. Їхня відмінність полягає в тому, що plot3d будує поверхня й заливає її одним кольором, а plot3d1 -поверхня, кожний осередок якої має колір, що залежить від значення функції в кожному відповідному вузлі сітки.
Звернення до функцій наступне:
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 - масив, що складається із трьох цілочисельних параметрів: [mode,type,box], де mode — встановлює колір поверхні. За замовчуванням дорівнює 2 – колір заливання синій, прямокутна сітка виводиться.
Значення параметра mode
Значення Опис
>0 поверхня має колір «mode», виводиться прямокутна сітка
0 виводиться прямокутна сітка, заливання відсутня (білий колір)
<0 поверхня має колір «mode», відсутній прямокутна сітка
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) як параметри необхідно передати прямокутну сітку й матрицю значень у вузлах сітки.
командb створення прямокутної сітки – це genfac3d і eval3dp.
Найпростішої з них по синтаксисі є функція genfac3d:
[Xf,Yf,Zf]=eval3dp(fun,p1,p2) Xf,Yf, Zf
Функції для побудови поверхонь.
Для формування прямокутної сітки є функція 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.
Звертання до функцій має вигляд:
surf([X,Y],Z,[color,keyn=valuen])
mesh([X,Y],Z,[color,])
де X,Y -масиви, що задають прямокутну сітку; Z - матриця значень функції; color — матриця дійсних чисел, що встановлюють колір для кожного вузла мережі; keyn=valuen — послідовність значень властивостей графіка key1=value1, key2=value2, . . . , keyn=valuen, що визначають його зовнішній вигляд.
Функції plot3d2 і plot3d3 є аналогами функції plot3d, тому мають такий же синтаксис
plot3d2(x,y,z,[theta,alpha,leg,flag,ebox][keyn=valuen]),
plot3d3(x,y,z,[theta,alpha,leg,flag,ebox][keyn=valuen])
Ці функції призначені для побудови поверхні, що задається набором граней. Т. е. якщо функція
Для побудови параметричної кривої існує команда param3d:
param3d(x,y,z,[theta,alpha,leg,flag,ebox]).
В Scilab, крім побудови об'ємних графіків, також реалізована можливість створення просторових моделей об'єктів.
Для побудови ізоліній в Scilab існує функція contour. Звертання до неї має вигляд:
contour(x,y,z,nz[theta,alpha,leg,flag,ebox,zlev])
де x, y -масиви дійсних чисел; z — матриця дійсних чисел - значення функції, що описує поверхня Z(x, y); nz-параметр, що встановлює кількість ізоліній. Якщо nz — ціле число, то в діапазоні між мінімальним і максимальним значеннями функції Z(x, y) через рівні інтервали будуть проведені nz ізоліній. Якщо ж задати nz як масив, то ізолінії будуть проводитися через всі зазначені в масиві значення; theta, alpha-дійсні числа, які визначають у градусах сферичні координати кута огляду спостерігача; leg - підпис координатних осей графіка - символи, відокремлювані знайомий @. Наприклад, 'X@Y@Z'. flag - масив, що складається із трьох цілочислеьних параметрів: [mode,type,box] де mode — установлює спосіб і місце нанесення ліній рівня; type - дозволяє управляти масштабом графіка, за замовчуванням має значення 2; box — визначає наявність рамки навколо відображуваного графіка. За замовчуванням дорівнює 4; ebox - визначає границі області, у яку буде виводитися поверхня, як вектор [xmin,xmax,ymin,ymax,zmin,zmax] . Цей параметр може використовуватися тільки при значенні параметра type=1; zlev - математичний вираз, що задає план (горизонтальну проекцію заданої поверхні) для побудови ізоліній. За замовчуванням збігається з рівнянням, що описує площина, у цьому випадку може не вказуватися. Слід зазначити, що функції contour рівняння поверхні Z(x, y) зручніше передавати параметр як функцію, задану користувачем.
В Scilab існує функція contourf, що не просто зображує поверхню на горизонтальній площині у вигляді ізоліній, але й заливає інтервали між ними кольором, залежно від конкретного рівня значень показника.
Звертання до функції має вигляд:
contourf(x,y,z,nz,[style,strf,leg,rect,nax])
де x, y -масиви дійсних чисел; z — матриця дійсних чисел — значення функції, що описує поверхня Z(x, y); nz-параметр, що встановлює кількість ізоліній. Якщо nz — ціле число, то в діапазоні між мінімальним і максимальним значеннями функції Z(x, y) через рівні інтервали будуть проведені nz ізоліній. Якщо ж задати nz як масив, то ізолінії будуть проводитися через всі зазначені в цьому масиві значення; style - масив того ж розміру, що й nz - установлює колір для кожного інтервалу рівнів значень; strf -рядок, що складається із трьох чисел—«сsa». Тут с (Captions) установлює режим відображення підписів графіка; s (Scaling) — режим масштабування; a (Axes)—визначає положення осей графіка; leg - легенда графіка, підпис кожної із кривих - символи, відокремлювані знайомий @. За замовчуванням- « ». rect – вектор [xmin, ymin, xmax, ymax], що визначає границі зміни x і y координат графічної області вікна; nax — це масив із чотирьох значень [nx, Nx, ny, Ny], що визначає число основних і проміжних розподілів координатних осей графіка. Тут Nx (Ny) –число основних розподілів c підписами під віссю X (Y); nx (ny) — число проміжних розподілів. Для побудови тривимірних гістограмм в Scilab використовується функція hist3d:
hist3d(f,[theta,alpha,leg,flag,ebox])
де f — матриця (m : n), що задає гістограмму f ( i , j ) = F(x(i),y(j)). Параметри theta,alpha,leg,flag,ebox управляють тими ж властивостями, що й у функції plot3d.
15. Для побудови ізоліній використовується ф-я contour
contour(x,y,z,nz[theta,alpha,leg,flag,ebox,zlev])
x, y - масиви дійсних чисел;
z- матриця дійсних чисел - значення функції, що описує поверхню Z (x, y);
nz- параметр, який встановлює кількість ізоліній. Якщо nz-ціле число, то в діапазоні між мінімальним і максимальним значеннями функції Z (x, y) через рівні інтервали будуть проведені nz ізоліній. Якщо ж задати nz як масив, то ізолінії будуть проводитися через всі зазначені в масиві значення;
theta, alpha- дійсні числа, які визначають у градусах сферичні координати кута огляду спостерігача. Простіше кажучи, це кут, під яким спостерігач бачить відображену поверхню;
leg- підписи координатних осей графіка- символи, відокремлювані знаком @.
flag- масив, що складається з трьох цілочисельних параметрів: [mode, type, box].
ebox- визначає межі області, в яку буде виводитися поверхню, як вектор [xmin, xmax, ymin, ymax, zmin, zmax]. Цей параметр може використуватися тільки при значенні параметра type = 1;
zlev- математичне вираз, що задає план (горизонтальну проекцію заданої поверхні) для побудови ізоліній.
У Scilab існує функція contourf, яка не просто зображує поверхність на горизонтальній площині у вигляді ізоліній, але і заливає інтервали між ними кольором, залежно від конкретного рівня значень показника.
Звернення до функції має вигляд:
contourf (x,y,z,nz,[style,strf,leg,rect,nax])
x, y - масиви дійсних чисел;
z- матриця дійсних чисел - значення функції, що описує поверхню Z (x, y);
nz- параметр, який встановлює кількість ізоліній.
16. Одним з основних операторів, що реалізують розгалуження в більшості мов програмування, є умовний оператор if. Існує звичайна і розширена форми оператора if в Scilab. Звичайний if має вигляд
if умова
оператори1
else
оператори2
end
Тут умова-логічний вираз, оператори1, оператори2-оператори мови Scilab або вбудовані функції. Оператор if працює за наступним алгоритмом: якщо умова істинна, то виконуються оператори1, якщо хибно - оператори2.
У Scilab для побудови логічних виразів можуть використовуватися умовні оператори: &, and (логічне і), |, or (логічне або), ~, not (логічне заперечення) і оператори відношення: <(менше),> (більше), == (дорівнює), ~ =, <> (не дорівнює), <= (менше або дорівнює),> = (більше або дорівнює).
Найчастіше при вирішенні практичних завдань недостатньо вибору виконання або невиконання однієї умови. У цьому випадку можна, звичайно, по гілці else написати новий оператор if, але краще скористатися розширеною формою оператора if:
if умова 1
оператори1
elseif умова 2
оператори2 elseif умова 3
оператори 3
...
elseif умова n
оператори n
else
оператори
end
У цьому випадку оператор if працює так: якщо умова 1 істинна, то виконуються оператори 1, інакше перевіряється умова 2, якщо вона істинна, то виконуються оператори 2, інакше перевіряється умова 3 і т. д. Якщо жодна з умов по гілках else і elseif не виконується, то виконуються оператори по гілці else.
Ще одним способом організації розгалужень є оператор альтернативного вибору select наступної структури:
select параметр
case значення 1 then оператори 1
case значення 2 then оператори 2
...
else оператори
end
17. Алгоритми містять команди повторення, називають циклічними. Команди повторення складають цикл. Цикл - це така форма організації дій, при якій одна послідовність дій повторюється кілька разів (або не разу), до тих пір, поки виконуються деякі умови. Існують три види циклів. Це: цикл "До", цикл "Поки", цикл "Для ...". Вони всі складаються з декількох етапів. Це: Підготовка циклу, до якої входять початкові присвоєння; Тіло циклу - команди повторення циклу; Умова - обов'язкова частина циклів "До" і "Поки". Розглянемо цикл "До". Цикл "До" це такий цикл, де тіло циклу виконується перед умовою. Його краще використовувати в тій циклічної структурі, де заздалегідь відомо кількість повторень блоку умови. Це найпростіша блок-схема циклу "До". Наведу програми на мові Бейсік: 10 A = 0 20 A = A +1 30 IF NOT A = 10 THEN GOTO 20 40 PRINT A 50 END 10 A = 0 20 A = A +0.01 30 IF INT (A) = 0 THEN GOTO 20 40 PRINT A 50 END Цей цикл виконується не менше одного разу. Блок-схеми на ці програми: Тепер розглянемо цикл "Поки" Цикл "Поки" це такий цикл, де тіло циклу виконується, поки виконуються деякі умови. Його краще використовувати там, де відразу невідомі початкові значення циклу. Його найпростіша блок-схема виглядає так: Цей цикл може не виконати. Наведу програми для мови Бейсік: 1) 10 INPUT A 20 IF A => 50 THEN GOTO 50 30 A = A +1 40 GOTO 20 50 PRINT A 60 END 2) 10 INPUT A 20 IF A 30 PRINT A 40 END