ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


Построение графиков в виде ступенчатой линии

Для изображения графика в виде ступенчатой линии в Scilab существует функция plot2d2(x,y). Она полностью совпадает по синтаксису с функцией plot2d. Главное отличие состоит в том, что X и Y могут быть независимыми друг от друга функциями, важно лишь, чтобы массивы X и Y были разбиты на одинаковое количество интервалов.

ЗАДАЧА

Имеются детальные наблюдения за ростом народонаселения на планете за период с 1947 по 2006 годы, млн. чел. Построить график, отражающий динамику процесса на основании данных 1947, 1958, 1970, 1980, 1999, 2006 года.

Поэлементно введем массивы X и Y и воспользуемся функцией plot2d2(x,y):

x=[1947 1958 1970 1980 1999 2006];

y=[2.003 3.1 3.6 4.7 5.2 5.4];

plot2d2(x,y);

Гистограмму можно построить с помощью оператора histplot.

Пример:

histplot([-4.5:0.25:4.5],rand(1,20000,'n'),style=2);

deff('[y]=f(x)','y=exp(-x.*x/2)/sqrt(2*%pi);');

x=-4.5:0.125:4.5;x=x';plot2d(x,f(x),26,"000");

titre= 'macro histplot : (normalized) histogram plot';

xtitle(titre,'C (Classes)','N(C)/(Nmax length(C))');

legends(['gaussian random sample histogram' 'exact gaussian density'],[2 26],1)

Для построения трехмерных гистограмм в Scilab используется функция hist3d:

hist3d(f,[theta,alpha,leg,flag,ebox])

Здесь f - матрица (m:n), задающая гистограмму f (i , j)=F( xi,yj) Параметры theta,alpha,leg,flag,ebox управляют теми же свойствами, как и у функции plot3d.

ЗАДАЧА. Построить трехмерную гистограмму при помощи команды hist3d.

Для формирования матрицы входных данных воспользуемся командой rand. Напомним, чтобы создать матрицу размером (m,n), необходимо использовать конструкцию rand(m,n)

Полученная гистограмма изображена на рис.

hist3d(9.7*rand(10,10),20,35);

Основы программирования в системе Scilab

В Scilab встроен мощный язык программирования с поддержкой объектов. Работа в Scilab может осуществляться как в режиме командной строки, так и в программном режиме. Для создания программы (программу в Scilab иногда называют сценарием) необходимо:

1. Вызвать команду Editorиз меню.

2. В окне редактора Scipadнабрать текст программы.

3. Сохранить текст программы с помощью команды File /Saveв виде файла с расширением sce, например file.sce.

4. После этого программу можно будет вызвать, набрав в командной строке exec, например exec("file.sce"), или вызвав команду меню File/Exec..., или, находясь в окне Scipad, выполнить команду Execute/Load into Scilab(Ctrl+l).

Программный режим достаточно удобен, так как он позволяет сохранить разработанный вычислительный алгоритм в виде файла и повторять его при других исходных данных в других сессиях. Кроме обращений к функциям и операторов присваивания, в программных файлах могут использоваться операторы языка программирования Scilab (язык программирования Scilab будем называть sci-языком).

 

Основные операторы sci-языка

Функции ввода-вывода в Scilab

Для организации простейшего ввода в Scilab можно воспользоваться функциями

x=input('title');

или

x=x_dialog('title', 'stroka');

Функция input выводит в командной строке Scilab подсказку title и ждет пока пользователь введет значение, которое в качестве результата возвращается в переменную х.

-->x=input('title');

title-->4

-->x

x =

4.

Функция x_dialog выводит на экран диалоговое окно с именем title, после чего пользователь может щелкнуть OKи тогда stroka вернется в качестве результата в переменную x, либо ввести новое значение вместо stroka, которое и вернется в качестве результата в переменную x.

Набрав вместо strokа число 45 и распечатав х, получим:

-->x

x =

45

Функция input преобразовывает введенное значение к числовому типу данных, а функция x_dialog возвращает строковое значение. Поэтому при использовании функции x_dialog для ввода числовых значений, возвращаемую ею строку следует преобразовать в число с помощью функции evstr. Поэтому можно предложить следующую форму использования функции x_dialog для ввода числовых значений.

x=evstr(x_dialog('title', 'stroka'));

Можно сразу набрать

->x=evstr(x_dialog('title', '46'));

-->x+6

ans =

52.

 

Для вывода в текстовом режиме можно использовать функцию disp следующей структуры disp(b). Здесь b - имя переменной или заключенный в кавычки текст.

-->disp('Привет')

Привет

-->disp("Привет")

Привет

Оператор присваивания

Оператор присваивания имеет следующую структуру

a=b

здесь a –имя переменной или элемента массива, b - значение или выражение. В результате выполнения оператора присваивания переменной a присваивается значение выражения b.

x=5;y=sin(x);

Условный оператор

Одним из основных операторов, реализующим ветвление в большинстве языков программирования, является условный оператор if. Существует обычная и расширенная формы оператора if в Scilab. Обычный if имеет вид

ifЛогическое_выражение then

Инструкции_1

Else

Инструкции_2

End

Инструкции в списке разделяют оператором,(запятая)или ;(точка с запятой).

 

 

Логические выражения

Логические выражения состоят из констант, переменных и функций, соединенных операциями отношения: больше (>), больше или равно (>=), равно (==), не равно (~=) , меньше (<), меньше или равно (<=). Например: x2>y. Логические выражения принимают значения «истина» или «ложь». Например, при x=2 и y=8 значение выражения x2>y является ложью. Несколько логических выражений могут быть объединены в одно операторами & и |. Например: x.^2>y | y>7. Если несколько логических выражений соединены оператором &, то значение такого выражения является истиной, если каждое логическое выражение, входящее в него, является истиной. Если несколько логических выражений соединены оператором |, то значение такого выражения является истиной, если хотя бы одно логическое выражение, входящее в него, является истиной.

 

Зачастую при решении практических задач недостаточно выбора выполнения или невыполнения одного условия. В этом случае можно, конечно, по ветке else написать новый оператор if, но лучше воспользоваться расширенной формой оператора if.

ifЛогическое_выражение_1 then

Инструкции_1

elseifЛогическое_выражение_2 then

Инструкции_2

Else

Инструкции_3

End

В этом случае оператор if работает так: если логическое выражение_1истинно, то выполняются инструкции_1, а затем инструкции, стоящие после оператора end. Если логическое выражение_2 является истиной, то выполняются инструкции 2, а затем инструкции, стоящие после оператора end. Если ни одно из логических выражений не является истиной, то выполняются инструкции, стоящие после слова else.

Частные случаи:

1) if Логическое_выражение then Инструкции , end

Примеры:

-->if x>5 then y=8, end

-->if x>5 then y=8;t=6; end

2) if Логическое_выражение then Инструкции_1, else Инструкции_2, end

Пример:

-->if x>5 then y=8,t=6; else y=x^2 ,end

3) if Логическое_выражение then

Инструкции

End

Замечание: слово thenв составе условного оператора ifне является обязательным.

Пример. Вычислить функцию y при x=0.397, если

Решение:

x=0.397;

if x.^2<=25*cos(x.^3) then

y=sin(3*x)

else

y=(2*x – tan(x))./sqrt(x.^2+2)

end

Набрав этот файл в редакторе Scipad и запустив его на выполнение командой Execute/Load into Scilab, получим:

y =

0.9287402

В качестве примера программирования разветвляющегося процесса рассмотрим решение квадратного уравнения .

Входными данными этой задачи являются коэффициенты квадратного уравнения a, b, c. Выходными данными являются корни уравнения x1 , x2или сообщение о том, что действительных корней нет.

Алгоритм состоит из следующих этапов:

1. Ввод коэффициентов уравнения a, b и с.

2. Проверка, является ли уравнение квадратным (а≠0).

3. Вычисление дискриминанта уравнения d.

4. Если d=0, то выводится сообщение: уравнение имеет два равных корня и печатается значение корня.

5. Если d>0, определяются x1 и x2

6. Если d<0, то выводится сообщение «Корней нет».

Программа решения квадратного уравнения

clc

a=input('a=');

b=input('b=');

c=input('c=');

if a==0 then

disp("Уравнение не является квадратным")

else

// Вычисляем дискриминант.

d=b*b-4*a*c;

// Если дискриминант отрицателен,

if d<0

// то вывод сообщения,

disp(' Действительных корней нет');

elseif d==0

//иначе-вычисление корней соответствующего

// квадратного уравнения.

disp("уравнение имеет два равных корня") ;x=-b/(2*a)

else

x1=(-b+sqrt(d))/2/a

x2=(-b-sqrt(d))/2/a

end

end

a=-->1

b=-->2

c=-->-5

x1 =

1.4494897

x2 =

- 3.4494897

Найти все корни квадратного уравнения можно и без оператора if, воспользовавшись тем, что в Scilab определены операции над комплексными числами.

clc

a=input('a=');

b=input('b=');

c=input('c=');

d=b*b-4*a*c;

x1=(-b+sqrt(d))/2/a;

x2=(-b-sqrt(d))/2/a;

disp(x1,x2);

a=-->1

b=-->2

c=-->3

- 1. - 1.4142136i

- 1. + 1.4142136i

Комплексные корни квадратного уравнения

 

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти