Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Іванюк.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
110.84 Кб
Скачать

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