Scilab курсовая работа

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ

ИНСТИТУТ ИМЕНИ М.Е.ЕВСЕВЬЕВА»

ФИЗИКО-МАТЕМАТИЧЕСКИЙ ФАКУЛЬТЕТ

КАФЕДРА ИНФОРМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

КУРСОВАЯ РАБОТА

по информатике

Программирование в системах Scilab и Maxima

Автор курсовой работы: И.Р. Исхакова, студент IV курса группы МДИ-110 очной формы обучения.

Специальность: 050202 «Информатика» с дополнительной специальностью 050201.65 «Математика»

Руководитель: Т.В. Кормилицына, кандидат физико-математических наук, доцент

Саранск 2014

Содержание

Введение 3

1 Программирование в системе Maxima 5

1.1Программирование базовых алгоритмических структур 5

1.2Дополнительные возможности для пользователя 11

2 Программирование в системе Scilab 18

2.1 Средства программирования условных конструкций и циклов 18

2.2 Программирование функций пользователя 21

Заключение 29

Список использованных источников 31

Введение

В данной курсовой будут рассматриваться вопросы программирования в системах компьютерной алгебры Maxima и Scilab.

Актуальность темы состоит в том, что линия алгоритмизации программирования реализуется в школьном курсе в недостаточном объеме. Обычно в школах изучают алгоритмические языки высокого уровня, а на примере мощных систем Maxima и Scilab можно показать важность программирования непосредственно для пользователей, так как разработчики этих систем сочли необходимым оставить инструменты программирования пользователям для реализации всех базовых алгоритмов. Эти системы предоставляются для свободного использования в сфере образования, что делает их привлекательными для применения в образовательных учреждениях.

Scilab  – это кроссплатформенная система компьютерной алгебры (СКА), обладающая сходным с Matlab синтаксисом встроенного языка. Разработка системы Scilab ведется сотрудниками французского Национального института информатики и автоматизации (INRIA – Institut National de Recherche en Informatique et Automatique) с 80-х годов прошлого века.

Изначально это был коммерческий проект под названием Blaise, а затем Basile. С 2003 года продукт получил новое имя Scilab и стал бесплатным. В настоящее время он распространяется по свободной лицензии CeCILL.

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

Для системы имеется достаточно большое число пакетов расширений, которые можно найти на официальном сайте в разделе Toolbox center. Однако, чем больше будет хороших пакетов, тем более полезной станет система.

Maxima – свободная система компьютерной алгебры, написанная на языке Common Lisp.

Maxima произошла от системы  Macsyma, разрабатывавшейся в MIT с 1968 по 1982 годы  в рамках проекта  Project MAC, финансируемого Министерством энергетики США  (DOE) и другими государственными организациями. Профессор Уильям Шелтер (англ.  William F. Schelter) из Техасского университета в Остине поддерживал один из вариантов системы, известный как  DOE Macsyma, с 1982 года  до самой своей смерти в  2001 году.

В 1998 году Шелтер получил от Министерства энергетики разрешение опубликовать исходный код DOE Macsyma под лицензией  GPL, и в  2000 году  он создал проект на SourceForge.net для поддержания и дальнейшего развития DOE Macsyma под именем Maxima.

Maxima имеет широчайший набор средств для проведения аналитических вычислений, численных вычислений и построения графиков. По набору возможностей система близка к таким коммерческим системам как Maple и Mathematica. В то же время она обладает высочайшей степенью переносимости: она может работать на всех основных современных операционных системах  на компьютерах, начиная от наладонных компьютеров, вплоть до самых мощных.

Цель работы: исследование возможностей программирования в системах Scilab и Maxima и реализация основных видов алгоритмов.

Объект исследования: системы Scilab и Maxima.

Предмет исследования: возможности и инструменты программирования в системах Scilab и Maxima.

Методы исследования: анализ и синтез, методы сравнения и обобщения, метод классификации, расчетный метод, эксперимент.

1 Программирование в системе Maxima

1.1Программирование базовых алгоритмических структур

Основная форма условного оператора: if cond1 then expr1 else expr0. Если условие cond1 истинно, то выполняется выражение expr1, иначе – выполняется выражение expr2. Пакет Maxima позволяет использовать различные формы оператора if, например: if cond1 then expr1 elseif cond2 then expr2 elseif …else expr0. Если выполняется условие cond1, то выполняется выражение expr1, иначе – проверяется условие cond2, и если оно истинно – выполняется выражение expr2, и т.д. Если ни одно из условий не является истинным – выполняется выражение expr0. Альтернативные выражения expr1, expr2,… ,exprk – произвольные выражения Maxima (в т.ч. вложенные операторы if). Условия – действительно или потенциально логические выражения, сводимые к значениям true или false. Способ интерпретации условий зависит от значения флага prederror. Если prederror = true, выдаётся ошибка, если значения какого-либо из выражений cond1,… ,condn отличается от true или false. Если prederror = false и значения какого-либо из выражений cond1,… ,condn отличается от true или false, результат вычисления if – условное выражение.[3, c. 207]

Для выполнения итераций используется оператор textttdo. Могут использоваться три варианта его вызова, отличающиеся условием окончания цикла:

for variable: init_value step increment thru limit do body

for variable: init_value step increment while condition do body

for variable: init_value step increment unless condition do body

Здесь variable – переменная цикла; init_value – начальное значение; increment – шаг (по умолчанию равен 1); limit – конечное значение переменной цикла; body – операторы тела цикла. Ключевые слова thru, while, unless указывают на способ завершения цикла:

по достижении переменной цикла значения limit;

пока выполняется условие condition;

пока не будет достигнуто условие condition.

Параметры init_value, increment, limit, и body могут быть произвольными выражениями. Контрольная переменная по завершении цикла предполагается положительной (при этом начальное значение может быть и отрицательным). Выражения limit, increment, условия завершения (condition) вычисляются на каждом шаге цикла, поэтому их сложность влияет на время выполнения цикла. При нормальном завершении цикла возвращаемая величина – атом done. Принудительный выход из цикла осуществляется при помощи оператора return, который может возвращать произвольное значение. [7, c. 35]

Контрольная переменная цикла – локальная внутри цикла, поэтому её изменение в цикле не влияет на контекст (даже при наличии вне цикла переменной с тем же именем).

Примеры реализации циклов (рис. 1–2).

Рисунок 1. – Арифметический цикл.

Рисунок 2. – Арифметический цикл.

Условия инициализации и завершения цикла можно опускать.

Пример (цикл без явного указания переменной цикла на примере вычисления ) (рис. 3):

Рисунок 3. – Цикл без явного указания переменной цикла.

Из вычислительного эксперимента видно, что за 20 итераций достигается точное значение с точностью до 14 десятичных знаков.

Несколько более изощрённый пример – реализация метода Ньютона для уравнения с одной неизвестной (вычисляется та же величина – корень из пяти): (при сравнении с предыдущим результатам достигается точность до 5 десятичных знаков) (рис. 4):

Рисунок 4. – Реализация метода Ньютона для уравнения с одной неизвестной

Ещё одна форма оператора цикла характеризуется выбором значений переменной цикла из заданного списка. Синтаксис вызова: for variable in list end_tests do body. Проверка условия завершения end_tests до исчерпания списка list может отсутствовать (рис. 5).

Пример:

Рисунок 5. – Цикл с заданными значениями переменных из заданного списка.

Как в условных выражениях, так и в циклах вместо простых операторов можно писать составные операторы, т.е. блоки. Стандартный блок имеет вид: block ([r, s, t], r:1, s:r+1, t:s+1, x:t, t*t); сначала идет список локальных переменных блока (глобальные переменные с теми же именами никак не связаны с этими локальными переменными). Список локальных переменных может быть пустым. Далее идет набор операторов. Упрощенный блок имеет вид: (x:1, x: x+2, a: x).

Обычно в циклах и в условных выражениях применяют именно эту форму блока. Значением блока является значение последнего из его операторов. Внутри данного блока допускаются оператор перехода на метку и оператор return. Оператор return прекращает выполнение текущего блока и возвращает в качестве значения блока свой аргумент block([], x:2, x: x*x, return(x), x: x*x);

В отсутствие оператора перехода на метку, операторы в блоке выполняются последовательно. (В данном случае слово «метка» означает отнюдь не метку типа «%i5» или «%o7»). Оператор go выполняет переход на метку metka, расположенную в этом же блоке (рис. 6):

Рисунок 6. – Цикл, содержащий блок с меткой metka.

В этом блоке реализован цикл, который завершается по достижении «переменной цикла» значения 1001. Меткой может быть произвольный идентификатор [3, c. 215].

Следует иметь в виду, что цикл сам по себе является блоком, так что (в отличие от языка C) прервать выполнение циклов (особенно вложенных циклов) с помощью оператора go невозможно, т.к. оператор go и метка окажутся в разных блоках. То же самое относится к оператору return. Если цикл, расположенный внутри блока, содержит оператор return, то при исполнении оператора return произойдет выход из цикла, но не выход из блока (рис. 7):

Рисунок 7. – Цикл с оператором return.

Если необходимо выйти из нескольких вложенных блоков сразу (или нескольких блоков и циклов сразу) и при этом возвратить некоторое значение, то следует применять блок (рис. 8):

Рисунок 8. – Пример блока catch.

В данном блоке выполнение цикла завершается, как только значение i достигает 2. Возвращаемое блоком catch значение равно 555.

В данном блоке цикл выполняется полностью, и возвращаемое блоком catch значение равно 777 (условия выхода из цикла при помощи throw не достигаются) [5].

Рисунок 9. – Пример блока catch с полным выполнением цикла.

Оператор throw – аналог оператора return, но он обрывает не текущий блок, а все вложенные блоки вплоть до первого встретившегося блока catch. Наконец, блок errcatch позволяет перехватывать некоторые (к сожалению, не все!) из ошибок, которые в нормальной ситуации привели бы к завершению счета (рис. 10).

Пример:

Рисунок 10. – Пример блока errcatch.

Выполнение последовательности операций прерывается на первой операции, приводящей к ошибке. Остальные выражения блока не выполняются (значение c остаётся неопределённым). Сообщение об возникшей ошибке может быть выведено функцией errormsg () [6].

1.2 Дополнительные возможности для пользователя

Наряду с простейшим способом задания функции, Maxima допускает создание функции в виде последовательности операторов:

f(x):= (expr1, expr2, …, exprn);

Значение, возвращаемое функцией – значение последнего выражения exprn. Чтобы использовать оператор return и изменять возвращаемое значение в зависимости от логики работы функции, следует применять конструкцию block, например: f(x)=block ([], expr1, …, if (a 10) then return(a), …, exprn). При a 10 выполняется оператор return и функция возвращает значение a, в противном случае – значение выражения exprn.

Формальные параметры функции или блока – локальные, и являются видимыми только внутри них. Кроме того, при задании функции можно объявить локальные переменные (в квадратных скобках в начале объявления функции или блока) [4].

Пример:

block ([a: a], expr1, …, a: a+3, …, exprn)

В данном случае при объявлении блока в локальной переменной a сохраняется значение глобальной переменной a, определённой извне блока.

Пример:

Рисунок 10. – Задание переменной вне тела функции.

В данном примере значение переменной a задаётся вне тела функции, но результат, возвращаемый ею, зависит от значения a (рис. 10). Начальные значения локальных переменных функции могут задаваться двумя способами:

1) Задание функции f(x): = (expr1, exprn); вызов функции f(1); – начальное значение локальной переменной x равно 1.

2) Задание блока block ([x: 1], expr1, …, exprn), при этом начальное значение локальной переменной x также равно 1 [7, c. 50].

Наряду с именованными функциями, Maxima позволяет использовать и безымянные функции (лямбда-функции). Синтаксис использования лямбда-выражений (правда, при использовании с лямбда-выражениями всё-таки ассоциируется имя – см. пример):

f1: lambda ([x1,… ,xm],expr1,… , exprn)

f2: lambda ([[L]], expr1,… , exprn)

f3: lambda ([x1,… ,xm, [L]],expr1,… , exprn)

Пример:

(%i1) f: lambda ([x], x^2);

(%o1) lambda ([x], x2)

(%i2) f(a);

(%o2) a2

Более сложный пример (лямбда-выражения могут использоваться в контексте, когда ожидается имя функции):

(%i3) lambda ([x], x^2) (a);

(%o3) a2

(%i4) apply (lambda ([x], x^2), [a]);

(%o4) a2

(%i5) map (lambda ([x], x^2), [a, b, c, d, e]);

(%o5) [a2,b2,c2,d2,e2]

Аргументы лямбда-выражений – локальные переменные. Другие переменные при вычислении лямбда-выражений рассматриваются как глобальные. Исключения отмечаются специальным символом – прямыми кавычками (см. лямбда-функцию g2 в примере).

(%i6) a: %pi$ b: %e$ g: lambda ([a], a*b);

(%o8) lambda ([a],ab)

(%i9) b: %gamma$ g(1/2);

(%o10) γ/2

(%i11) g2: lambda ([a], a*”b);

(%o11) lambda ([a],aγ)

(%i12) b: %e$ g2 (1/2);

(%o13) γ/2

Лямбда-функции могут быть вложенными. При этом локальные переменные внешнего выражения доступны как глобальные для внутреннего (одинаковые имена переменных маскируются) (рис. 11).

Пример:

Рисунок 11. – Пример вложенной лямбда-функции.

Подобно обычным функциям, лямбда-функции могут иметь список параметров переменной длины.

Пример:

(%i1) f: lambda ([aa, bb, [cc]], aa * cc + bb);

(%o1) lambda ([aa,bb, [cc]],aacc + bb)

(%i2) f (3,2, a,b,c);

(%o2) [3 a + 2,3b + 2,3c + 2]

Список [cc] при вызове лямбда-функции f включает три элемента: [a,b,c]. Формула для расчёта f применяется к каждому элементу списка. Локальные переменные могут быть объявлены и посредством функции local (переменные v1,v2,… ,vn объявляются локальными вызовом local(v1,v2,… ,vn) независимо от контекста) [3, c. 230].

Определив ту или иную функцию, можно заметно ускорить ее выполнение, если ее оттранслировать или откомпилировать. Это происходит потому, что если не оттранслировать и не откомпилировать определенную функцию, то при каждом очередном ее вызове Maxima каждый раз будет заново выполняет те действия, которые входят в определение функции, т.е. фактически разбирает соответствующее выражение на уровне синтаксиса Maxima.

Функция translate транслирует функцию Maxima на язык Lisp. Например, выражение: f(x) := 1+x+ x2+x3+x4+x5+x6+x7 транслируется командой: translate(f);. После этого функция, как правило, начинает вычисляться быстрее.

Пример, иллюстрирующий выигрыш по времени после трансляции функции:

(%i1) f (n):=block ([sum,k],sum:0, for k:1 thru n do (sum:sum+k^2),sum)$

Функция f(n), организованная в виде блока, позволяет вычислить сумму.

При непосредственном обращении к функции f время вычисления f(1000000) составило 7,86 с., после трансляции – 3,19 с. Для оценки времени вычисления использована функция time [3, с. 19].

(%i2) f(1000000);

(%o2) 333333833333500000

(%i3) time(%o2);

(%o3) [7.86]

(%i4) translate(f);

(%o4) [f]

(%i5) f(1000000);

(%o5) 333333833333500000

(%i6) time(%o5);

(%o6)

Функция time (%o1, %o2,…) возвращает список периодов времени в секундах, израсходованных для вычисления результатов %o1, %o2,… Аргументом функции time могут быть только номера строк вывода, для любых других переменных функция возвращает значение unknown.

Функция compile сначала транслирует функцию Maxima на язык Lisp, а затем компилирует эту функцию Lisp до двоичных кодов и загружает их в память.

Пример:

(%i9) compile (f);

Compiling /tmp/gazonk_1636_0.lsp.

End of Pass 1.

End of Pass 2.

OPTIMIZE levels: Safety=2,

Space=3, Speed=3

Finished compiling /tmp/gazonk_1636_0.lsp.

(%o92) [f]

После этого функция (как правило) начинает считаться еще быстрее, чем после трансляции. Например, после компиляции функции f из последнего примера время вычисления f(1000000) составило 2,17 с. Следует иметь в виду, что как при трансляции, так и при компиляции Maxima старается оптимизировать функцию по скорости. Однако Maxima работает преимущественно с целыми числами произвольной длины либо текстовыми выражениями. Поэтому при работе с большими по объёму функциями могут возникнуть проблемы, связанные с преобразованием типов данных. В этом случае следует отказаться от трансляции или компиляции, либо переписать функцию, упорядочив использование типов [5].

Пример: рассмотрим две функции, вычисляющие одно и то же выражение. В функции f2 явно указано, что функция возвращает действительные значения (в формате с плавающей точкой):

f1(x,n):=block([sum,k], sum:1,

for k:1 thru n do (sum:sum+1/x^k),sum)$

f2(x,n):=block([sum,k],

mode_declare ([function (f2),x], float),

sum:1, for k:1 thru n do (sum:sum+1/x^k),sum)$

Время выполнения функции f1 при запуске f1(5,10000) составило 1,8 с. После компиляции время выполнения составило 1,49 с., после трансляции – 1,39 с. Попытка обратиться к откомпилированной функции f1 командой f1(5.0,10000.0) завершилась неудачей вследствие возникающей ошибки (плавающее переполнение). При использовании функции с декларированным типом результата (f2) время выполнения f2(5,10000) оказалось меньше, чем f1(1,65 с. вместо 1,8 с.). Однако время выполнения той же функции после трансляции или компиляции превышает 10 с. Следует учесть, в данном случае результат расчёта – рациональное число. Преобразование его к форме с плавающей точкой при вычислении очередного значения суммы требует дополнительных вычислительных затрат. При обращении к f2 с действительными аргументами f2(5.0,10000.0) время счёта составило всего 0,16 с. Для функции, возвращающей результат, который представляется в виде числа с плавающей точкой, компиляция или трансляция может дать уменьшение времени счёта в несколько раз.

Пример: рассмотрим функцию, вычисляющую действительное выражение (в данном случае суммируются иррациональные числа):

f3(x,n):=block([sum,k],

mode_declare ([function (f3),x], float),

sum:1, for k:1 thru n do (sum:sum+sqrt(x^k)),sum)$

Время вычисления выражения f3(5,2000) для не откомпилированной и не оттранслированной функции составило 7,47 с., после трансляции время вычисления f3(5,2000) составило 0,03 с., после компиляции – 0,02 с.

Рассмотрим ещё один пример:

f4(x,n):=block([sum,k], sum:1,

for k:1 thru n do (sum:sum+k/x),sum)$

Время вычисления выражения f4(5,1000000) составило 10,89 с., время вычисления выражения f4(5.0,1000000) составило 6,71 с. После трансляции f4 время вычисления выражения f4(5,1000000) составило 9,1 с. (выигрыш по времени практически отсутствует), а для f4(5.0,1000000) – 2,49 с. (выигрыш по времени за счёт выполнения вычислений с плавающей точкой примерно в 2,5 раза) [6].

2 Программирование в системе Scilab
2.1 Средства программирования условных конструкций и циклов

Средства программирования (Tools): циклы, условные конструкции. В условных конструкциях и циклах используются следующие операторы сравнения:

== равно

больше чем

= больше или равно чем

или = не равно

Определены следующие типы циклов:

for

while

1) Цикл for

Синтаксис

for variable=n1:step:n2,тело цикла,end

В качестве индекса цикла могут выступать переменные различных типов (вектора, списки и др.).

Замечание: Если шаг цикла step=1, его можно не писать: x=1; for k=1:4,x=x*k, end эквивалентно x=1;for k=1:1:4,x=x*k,end.

Пример цикла for. Вычисление факториала (арифметический цикл с прямым счетчиком – параметр цикла – переменная k. Система выдает результаты счета в виде 4 значений) (рис. 12).

Рисунок 12. – Листинг программы.

Замечание: Поскольку внутри цикла в этом примере в качестве разделителя стоят запятые («,»), выводятся все промежуточные значения «x». Если использовать конструкцию с разделителем «точка с запятой» («;»), то никаких сообщений ни будет и по специальному запросу можно будет узнать конечное значение «x».

x=1;for k=1:4;x=x*k;end

2) Цикл while

Синтаксис

while тело цикла end

Пример цикла while (рис. 13).

Рисунок 13. – Листинг программы.

Циклы while и for могут быть прерваны с помощью оператора break.

Пример:

—a=0; for i=1:5:100, a=a+1; if i10 then break, end;end

— a

a =

3.

Замечание: Если мы хотим прервать извне выполнение цикла (например, видно, что произошло зацикливание), используйте функциональное меню управления окна: Control — Abort. Посмотрите также команды return и pause. [1, c. 135]

Допустимы следующие условные конструкции:

1) Конструкция if-then-else.

Синтаксис

if expr1 then statements

elseif expri then statements

….

else stataments

end,

end

Замечание: Число символьных знаков, используемых для определения тела условной конструкции (if while for или select/case) должно быть ограничено 16 Кб.

Пример:

i=2

for j = 1:3,

if i == j then

a(i,j) = 2;

elseif abs(i-j) == 1 then

a(i,j) = -1;

else a(i,j) = 0;

end,

end

Результат:

a =

! 0. 0. 0. !

! — 1. 2. — 1. !

Там, где, например, в языке C++ используются фигурные скобки { } для разделения текста, в Scilab используется запятая.

2) Синтаксис конструкции » select-case»

select expr0,

case expr1 then instructions1,

case expr2 then instructions2,

case exprn then instructionsn,

[else instructions],

end

Пример:

x=-1

select x, case 1,y=x+5,case -1,y=sqrt(36),end

Результат:

y=6 [2, c. 80]

2.2 Программирование функций пользователя

Функции играют роль подпрограмм. Удобнее всего набирать функции в текстовом редакторе и хранить их в отдельных файлах (внешние функции), но можно их использовать и непосредственно в системе Scilab.

Синтаксис

function[y1,…,yn]=foo(x1,…,xm)

….. тело функции ….

еndfunction

где,

foo – имя функции,

xi — входные аргументы функции (их m штук),

yi — выходные аргументы функции (их n штук).

Пример:

Вычисление факториала.

function [x]=fact(k)

k=int(k)

if k

x=1;

for j=1:k,x=x*j;end

endfunction [8, c. 240]

Вспомогательные алгоритмы. Создание функции пользователя foo (частное от деления x1 на x2) (рис. 14).

Рисунок 14. – Скриншот с функцией пользователя foo.

Наберем этот текст в любом текстовом редакторе и сохраним его в файле с именем fact.sci. Расширение *.sci является для Sclab «родным», но не обязательным. Затем следует вызвать эти файлы с из Scilab помощью команд getf(filename) или exec(filename,-1); Те же операции можно произвести с помощью команд меню File-getf или File-exec. Для нашего примера этот вызов будет:

getf(‘D:zzzfact.sci’);

До вызова функции желательно проверить, не была ли уже загружена такая функция ранее. Для этого:

exists(‘fact’)

Результат:

ans =

0.

Так же можно было использовать для этого команду who.

После загрузки функции с помощью

—exec(‘D:zzzfact.sci’);

—exists(‘fact’)

Получим:

ans =

1.

Теперь мы можем пользоваться этой функцией:

—x=fact(5)

x =

120

Для загрузки функций применяются команды exec, deff и getf [10].

При определении функции function[y1,…,yn]=foo(x1,…,xm) входные и выходные параметры xi и yi могут быть любыми объектами Scilab, кроме самих этих функций. Если функция предварительно не загружена в Scilab с помощью getf(filename) или exec(filename,-1), то она и не выполняется. Загружаемый файл может содержать несколько функций. Функции можно определять и непосредственно в сеансе Scilab, используя конструкцию function/endfunction или используя функцию deff. Это полезно, если мы хотим определить функцию как выходной параметр другой функции [4].

Способ 1.

Вызов функции с помощью exec.

Синтаксис

exec(fun [,mode])

exec(path [,mode])

ierr=exec(path,’errcatch’ [,mode])

ierr=exec(fun,’errcatch’ [,mode])

Параметры

fun : имя файла, в котором находится Scilab функция (функция определена

непосредственно в Scilab)

path : строка, содержащая полный путь к файлу, содержащему функцию

ierr : целое, 0 или номер ошибки

mode : целый скаляр, могущий принимать следующие выражения:

0 : по умолчанию

-1 : ничего не печатать

1 : сообщение (echo) для каждой командной строки

2 : prompt — печатает

3 : echoes + prompts

4 4 : stops остановка перед каждым «prompt»

7 : stops + prompts + echoes : полезно для демонстраций.

Пример:

exec(‘C:scilabmacrosalgebreaff2ab.sci’)

Замечание: Файл aff2ab.sci является файлом сценария.

Способ 2.

Вызов функции с помощью deff

Синтаксис

deff(‘[s1,s2,…]=newfunction(e1,e2,….)’,text [,opt])

Параметры

e1,e2,…, : входные переменные

s1,s2,…, : выходные переменные

text : матрица из символьных значений (character strings)

opt : необязательная переменная типа character string. Возможные значения opt:

‘c’ : функция скомпилирована для большей эффективности (по умолчанию)

‘n’ : функция не скомпилирована

Пример:

deff(‘[x]=myplus(y,z)’,’x=y+z’)

deff(‘[x]=mymacro(y,z)’,[‘a=3*y+1’; ‘x=a*z+y’])

Замечание: на первый взгляд это выглядит достаточно неудобно.

Способ 3.

Вызов функции с помощью getf

Синтаксис

getf(file-name [,opt])

Параметры

filename : Имя файла (Scilab string)

opt : необязательная переменная типа character string. Возможные значения opt:

‘c’: функция скомпилирован на для большей эффективности (по умолчанию)

‘n’: функция не скомпилирована

«p»: загружаемая функция скомпилирована и приготовлена для профилирования.

Пример:

getf(‘SCI/macros/xdess/plot.sci’)

Замечание: Метод вызова функций с помощью getf считается устаревшим, предпочтительнее пользоваться exec [9, c. 60].

Переменные могут являться локальными и глобальными.

1) Локальные переменные

Если значения переменных в функции не определены (и не являются входными параметрами), то их значения берутся как переменные из вызывающей среды.

Пример:

Наберем в любом текстовом редакторе в ASCII кодах:

function [y1,y2]=f(x1,x2)

y1=x1+x2;

y2=x1-x2;

endfunction

Запишем эту функцию в файл D:zzzfact.sci.

exec(‘D:zzzfact.sci’) // загрузка функции

[y1,y2]=f(1,1)

Результат:

y2 =

0.

y1 =

2.

Лучше все же при вызове пользоваться не именами переменных, используемых в определении функции, а вводить новые.

Пример:

[a,b]=f(1,1)

При этом x1 x2 остаются локальными переменными и после вызова функции остаются неизвестными для Scilab.

2) Глобальные переменные

Могут быть определены с помощью команды global.

Синтаксис

global(‘nam1′,…,’namn’)

global nam1 … namn

Параметры

nam1,…, namn : имена переменных

Пример:

globalabc

a=1;b=2;c=3;

Для уничтожения глобальных переменных служит команда clearglobal.

clearglobal() уничтожает все глобальные переменные.

clearglobal nam1 .. namn уничтожает глобальные переменные с заданными именами. [10]

Специальные команды для функций:

– функция argn возвращает число входных и выходных аргументов в вызове функции;

– функция error используется для печати сообщений об ошибке или разветвлений на случай детектирования ошибок;

– функция pause мода ожидания, используется для отладки;

– функция abort служит для выхода из режима ожидания;

– функция warning ожидание сообщений;

– функция break прерывание цикла;

– функция return и resume служат для передачи локальных переменных из функции в основное тело программы [4].

Замечание: Все эти служебные команды используются исключительно внутри функций.

Пример:

function [z]=foo(x,y)

if x==0 then,

error(‘division by zero’);

end,

z=x/y

endfunction

Результат применения функции foo (рис. 15):

Рисунок 15. – Листинг программы.

Наиболее простой способ отладки Scilab-функции состоит во введении в функцию одной из специальных команд. Остановить выполнение функции можно с помощью оператора abort. Удобно вставлять в функцию прерывания. Посмотрите команды setbpt, delbpt и disbpt. Для отслеживания ошибок также удобны errclear и errcatch. Эксперты в Scilab могут использовать функцию debug(i), где i=0,…,4) означают уровень отладки.

Существует возможность определить фундаментальные операции для новых типов данных. Для этого можно выполнить команду help overloading. Пользователь может дать собственное определение, например, операции умножения. Новые операторы, определенные пользователем, должны начинаться со знака % и состоять из 3 или 4 полей [1, c. 180].

Заключение

Целью данной курсовой работы являлось рассмотрение основных структур встроенных языков систем Scilab и Maxima. При подготовке курсовой работы была изучена соответствующая литература и отобран наиболее удачный материал. Использовались такие методы исследования как анализ и синтез, методы сравнения и обобщения, метод классификации, расчетный метод.

В первой главе рассматривается программирование в системе Maxima на встроенном макроязыке. В Maxima имеется возможность написания скриптов и даже трансляции их в код на Common Lisp с последующей компиляцией. В виду того, что Maxima писалась и разрабатывалась программистами Lisp, ее синтаксис кажется сложным, поскольку язык является сразу и императивным, и функциональным. Maxima имеет широчайший набор средств для проведения аналитических вычислений, численных вычислений и построения графиков. По набору возможностей система близка к таким коммерческим системам как Maple и Mathematica. В то же время она обладает высочайшей степенью переносимости: она может работать на всех основных современных операционных системах на компьютерах, начиная от самых маломощных, вплоть до наладонных компьютеров. В курсовой рассматривались условные операторы, операторы цикла, блоки и функции, трансляция и компиляция. Для каждого вида оператора приводятся примеры.

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

В ходе исследования получены следующие результаты:

1) Описаны методы реализации базовых алгоритмических структур (следование, ветвление, цикл) и вспомогательных алгоритмов в системе Maxima.

2) Исследованы средства программирования условных конструкций и циклов входного языка системы Scilab.

3) Составлены алгоритмы решения задач в виде программ различной структуры.

4) Исследованы дополнительные возможности входного языка системы Maxima: создание, трансляция и компиляция функций пользователя.

5) Рассмотрены функции пользователя как подпрограммы и составлены алгоритмы их создания в виде script-файлов в системе Scilab.

6) Составлены примеры – решены 32 задачи.

Работа имеет практическое значение и может быть использована в учебной работе при решении вычислительных задач различного типа и в исследовательской работе студентов.

Список использованных источников

1. Боден, М. Программирование в Scilab [Электронный ресурс]. – Режим доступа : http://forge.scilab.org/.

2. Акчурин, Э. А. Программирование в системе Scilab [Электронный ресурс]. – Режим доступа : http://www.twirpx.com/file/901949.

3. Чичкарёв, Е. А. Компьютерная математика с Maxima : Руководство для школьников и студентов / Е. А. Чичкарёв. – М. : ALT Linux, 2012. – 384 с.

4. Нигма – Википедия [Электронный ресурс]. – Режим доступа : http://ru.wikipedia.org/wiki/%CD%E8%E3%EC%E0.

5. Система компьютерной алгебры Maxima [Электронный ресурс]. – Режим доступа : http://maxima.sourceforge.net/ru/maxima-tarnavsky-1.html.

6. Maxima|Программы и утилиты| 4 Debian.Info [Электронный ресурс]. – Режим доступа : http://4debian.info/wiki/f/maxima.

7. Стахин, Н. А. Основы работы с системой аналитических (символьных) вычислений Maxima. (ПО для решения задач аналитических (символьных) вычислений): учебное пособие / Н. А. Стахин. – М. : Alt Linux, 2008. – 86 с.

8. Алексеев, Е. Р. Scilab: Решение инженерных и математических задач / Е. Р. Алексеев, Е. А. Чеснокова, Е. А. Рудченко [Электронный ресурс]. – Режим доступа : http://linux.armd.ru/common/img/uploaded/files.

9. Кормилицына, Т. В. Цифровое моделирование гармонического сигнала в пакете SCILAB / Т. В. Кормилицына, А. Р. Азисов // Информационное образовательное пространство педагогического вуза: Материалы II Всерос. науч. Интернет-конференции 22 октября 2012 года, г. Саранск / Редкол.: Н. В. Вознесенская; Е. В. Черемухина; МордГПИ. – Саранск, 2012. – С. 77–79.

10. Сайт разработчиков системы Scilab [Электронный ресурс]. – Режим доступа : www.scilab.org.

28

Моделирование двигателя постоянного тока в системе Scilab

Министерство
образования и науки Российской Федерации

Федеральное
государственное бюджетное образовательное учреждение высшего профессионального
образования

«Уфимский
государственный нефтяной технический университет»

Филиал в г.
Стерлитамаке

Кафедра
автоматизированных технологических и информационных систем

Пояснительная
записка к курсовой работе

по дисциплине
«Моделирование систем и процессов»

Моделирование
двигателя постоянного тока в системе SCILAB.

Студент Н.С. Пухов

Руководитель Е.А. Шулаева

Содержание

Введение

. Анализ сред
математического программирования

.1 Среда
программирования MathCAD

.2 Maple и
Mathematica

.3 MATLAB

.4 Scilab

.5 Выбор
среды математического программирования

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

. Разработка
алгоритмов для моделирования двигателя постоянного тока

.1 Основные
сведения о двигателе постоянного тока

.2 Описание
методик определения характеристик объекта управления

.
Моделирование двигателя постоянного тока в системе Scilab

Заключение

Введение

Высокие технологии не стоят на месте и все глубже проникают в различные
сферы деятельности человека. На сегодняшний день уже практически не осталось ни
одной науки, которая не применяла бы возможности современных технологий. Математика
тому не исключение. Раньше, чтобы подсчитать какую-либо интерполяцию,
дискретную функцию, дифференциальное уравнение, инженерам, преподавателям и
студентам приходилось затратить множество времени, сил. И технологии здесь
сыграли свою роль, тем самым, облегчив человеку жизнь.

В настоящее время существует множество специализированных математических
пакетов, прикладных программ, табличных процессоров и языков программирования
для вычисления тех или иных задач.

Как же выбрать тот или иной продукт, подходящий для конкретной
поставленной цели пользователя, каковы его функциональные свойства,
продуктивность и простота использования.

Задачи курсовой работы:

изучить современные программные средства математической автоматизации
(деятельности);

дать краткую характеристику;

провести анализ рассмотренных специализированных математических пакетов;

моделирование двигателя постоянного тока в системе Scilab.

.        Анализ сред математического программирования

Развитие вычислительной техники и программирования дало возможность
создать специализированные системы компьютерной математики, которые объединяют
в себе свойства редактора текстов, языков программирования, имеют большое
количество встроенных математических функций и методов решения основных задач
математики. Перейдем к их рассмотрению.

.1      Среда программирования MathCAD

— система компьютерной алгебры из класса систем автоматизированного
проектирования, ориентированная на подготовку интерактивных документов с
вычислениями и визуальным сопровождением, отличается легкостью использования и
применения для коллективной работы.имеет интуитивный и простой для
использования интерфейс пользователя. Для ввода формул и данных можно
использовать как клавиатуру, так и специальные панели инструментов.

Некоторые из математических возможностей Mathcad (версии до 13.1
включительно) основаны на подмножестве системы компьютерной алгебры Maple.
Mathcad 15 и его основные новые возможности:

Добавлено 25 функций для расчетов по планированию экспериментов (design
of experiments (DoE)). Также имеются шаблоны для проведения нескольких
экспериментов, при наличии нескольких уровней эксперимента (режимов
тестирования) и различных условий;

Интеграция с базой данных KnovelMath (инженерные и технические
стандарты); Интеграция с программным обеспечением Kornucopia (позволяет
применять шаблоны процессов для оценки данных натурных экспериментов и
результатов расчетов);

Интеграция с базой данных Truenumbers (от True Engineering Technology),
предоставляющей доступ к различным справочным материалам и данным (результаты
из Mathcad просто передаются в различные форматы документов, что облегчает
передачу данных в цепи разработчиков);

Поддержка операционной системы Microsoft Windows 7;

Функция explicit работает полноценно, т.е. показывает после формул
соответствующие численные значения, что нагляднее и облегчает контроль
вычислений.Prime 3.0, вышедший 12 октября 2013 года, является новейшей версией
семейства Mathcad. Обладает повышенной производительностью, удобным интерфейсом
пользователя и рядом инновационных инструментов, которые позволяют инженерам
работать еще быстрее.

Нововведения новейшей версии MathcadPrime 3.0

Глобальный оператор определения — позволит определить переменную в любом
месте рабочего листа

Математика в тексте — позволяет вводить формулы непосредственно в тексте.
Шаблоны документов — уникальный инструмент для повторяемых расчетов — позволяет
создавать шаблоны для документов любого содержания с неограниченным количеством
расчетов.

Форматирование формул — позволяет акцентировать внимание читателя на
отдельных моментах расчета.

Встроены математические функции

Улучшены математические расчетыкомпонент

Символьные расчеты

Улучшенный модуль решателя

Улучшена работа с 3D-графиками

Требования к ПК:работает на платформах: Microsoft Windows XP/Vista/7/8,
Linux, MacOS X- 700 MHz или выше; рекомендуется 2000+ MHz 512 MB RAM; 1.75 GB
свободного пространства на жестком диске установленный Microsoft NET Framework
4.0

Стоимость последней версии MathcadPrime 3.0 с новой лицензией: 2585
рублей. Существует и бесплатная 30-дневная пробная версия.

.2      Maple и Mathematica

предоставляет удобную среду для компьютерных экспериментов, в ходе
которых пробуются различные подходы к задаче, анализируются частные решения, а
при необходимости программирования отбираются требующие особой скорости
фрагменты. Пакет позволяет создавать интегрированные среды с участием других
систем и универсальных языков программирования высокого уровня. Когда расчеты
произведены и требуется оформить результаты, то можно использовать средства
этого пакета для визуализации данных и подготовки иллюстраций для публикации.
Для завершения работы остается подготовить печатный материал (отчет, статью,
книгу) прямо в среде Maple, а затем можно приступать к очередному исследованию.
Работа проходит интерактивно — пользователь вводит команды и тут же видит на
экране результат их выполнения. При этом пакет Maple совсем не похож на
традиционную среду программирования, где требуется жесткая формализация всех
переменных и действий с ними. Здесь же автоматически обеспечивается выбор
подходящих типов переменных и проверяется корректность выполнения операций, так
что в общем случае не требуется описания переменных и строгой формализации
записи.

Пакет Maple состоит из ядра (процедур, написанных на языке С и хорошо
оптимизированных), библиотеки, написанной на Maple-языке, и развитого внешнего
интерфейса. Ядро выполняет большинство базовых операций, а библиотека содержит
множество команд — процедур, выполняемых в режиме интерпретации. Интерфейс
Maple основан на концепции рабочего поля (worksheet) или документа, содержащего
строки ввода-вывода и текст, а также графику.

Работа с пакетом происходит в режиме интерпретатора. В строке ввода
пользователь задает команду, нажимает клавишу Enter и получает результат —
строку (или строки) вывода либо сообщение об ошибочно введенной команде. Тут же
выдается приглашение вводить новую команду и т.д.

Систему Maple можно использовать и на самом элементарном уровне ее
возможностей — как очень мощный калькулятор для вычислений по заданным формулам,
но главным ее достоинством является способность выполнять арифметические
действия в символьном виде, то есть так, как это делает человек. При работе с
дробями и корнями программа не приводит их в процессе вычислений к десятичному
виду, а производит необходимые сокращения и преобразования в столбик, что
позволяет избежать ошибок при округлении. Для работы с десятичными
эквивалентами в системе Maple имеется специальная команда, аппроксимирующая
значение выражения в формате чисел с плавающей запятой.

Минимальные требования к системе:

процессор Pentium III 650 МГц;

Мбайт оперативной памяти (рекомендуется 256 Мбайт);

Мбайт дискового пространства;

операционные системы: Windows NT 4 (SP5)/98/ME/2000/2003 Server/XP Pro/XP
Home.- система компьютерной алгебры, используемая во многих научных,
инженерных, математических и компьютерных областях. Кроме того, Mathematica —
это интерпретируемый язык функционального программирования. Можно сказать, что
система Mathematica написана на языке Mathematica, хотя некоторые функции,
особенно относящиеся к линейной алгебре, в целях оптимизации были написаны на
языке C. Mathematica поддерживает и процедурное программирование с применением
стандартных операторов управления выполнением программы (циклы и условные
переходы), и объектно-ориентированный подход. Mathematica допускает отложенные
вычисления. Также в систему Mathematica можно задавать правила работы с теми
или иными выражениями.версии 9 обладает такими нововведениями

Обновленный интерфейс (Wolfram Predictive Interface).

Анализ социальных сетей.

Анализ выживаемости.

Анализ надежности.

Работа с временными рядами.

Интеграция с R.

Распознавание лиц на фотографиях.

Аппаратные характеристики:

процессор: Intel Pentium IV 1.6 ГГц или аналогичный

дисковое пространство: 300 Мб

системная память (ОЗУ): 1 Гб требуется; 2 Гб + рекомендуется

Операционная система: Microsoft Windows, Mac OS X, Linux.

Официальный сайт: #»864721.files/image001.jpg»>

Рис. 1. Основное окно Scilab 5.3.1

Основное окно Scilab условно можно разделить на две области:

Область меню, которая расположена вверху экрана и панель инструментов.

Рабочую область с командной строкой, в которой, собственно, и происходит
решение задачи.

Индикатором ввода в командной строке является символ —> в рабочей
области, возле которого находится курсор. Ввод завершается нажатием клавиши
Enter. Пока не нажата клавиша Enter, текст в командной строке можно
редактировать стандартным способом. После нажатия Enter команда перемещается в
область просмотра доступ к ее редактированию закрыт. Если есть необходимость
вернуться к этой или другой данной команде, то при помощи клавиши управления
курсором ↑ и ↓ ранее выполненные команды могут быть возвращены в
командную строку. После этого их можно редактировать и выполнять повторно.

Ввод комментариев

// <текст комментария>

Арифметические вычисления

Для выполнения простейших арифметических операций Scilab использует
следующие операторы:

+ сложение;

вычитание;

* умножение;

/ деление слева направо;

деление справа налево;

^ возведение в степень.

Чтобы вычислить значение арифметического выражения, необходимо ввести его
в командную строку и нажать Enter

-> 5*2 ans=10

При записи выражения следует помнить о приоритете выполнения
арифметических операций. В случае необходимости его изменения используйте
круглые скобки.

Десятичная запятая в Scilab кодируется точкой.

Диапазон значение задается с помощью :

-> 1:5 ans= 2. 3. 4. 5.

Если вычисляемое выражение длинное и желательно перенести его запись на
следующую строку, то в конце незавершенной строки необходимо ввести три (или
более) точки … После этого можно нажать Enter и продолжать набор оставшейся
части на следующей строке.

Числовые результаты могут быть представлены с фиксированной (например,
4.12, 6.05, -17.5489) или с плавающей (например, -3.2Е-6, -6.42Е+2) точкой.
Числа в формате с плавающей точкой представлены в экспоненциальной форме mE±p,
где m мантисса (целое или дробное число с десятичной точкой), p порядок (целое
число).

Обратите внимание: если результат действия команды отображать не нужно,
то ее набор следует завершить символом;

Переменные. Пользователь может определить переменную, чтобы использовать
ее в последующих расчетах. Определить переменную означает задать ее имя и
значение. С этой целью используется оператор присваивания, в общем случае
имеющий вид: имя_переменной = значение_переменной

В Scilab допускается использование в имени переменной множества символов,
однако мы рекомендуем использовать только латинские буквы и цифры, причем
первой должна быть буква и максимальная длина имени — 24 символа. Система
различает большие и малые буквы в именах переменных, это имена разных
переменных.

Выражение в правой части оператора присваивания может быть числом,
арифметическим выражением, символьным выражением или строкой символов. В
последнем случае выражение справа берется в кавычки.

Системные переменные. Если пользователь не задал в командной строке имя
переменной, результат будет присвоен системной переменной с именем ans (от
англ. answer — ответ). Переменную ans можно использовать в последующих
вычислениях, но ее значение будет изменяться каждый раз после выполнения
команды без оператора присваивания.

В Scilab существуют другие системные переменные (или системные
константы). Их запись начинается символа %:

%i — мнимая единица ( √−1);

%pi — число π = 3.141592653589793;

%e — число e = 2.7182818;

%inf — машинный символ бесконечности (∞);

%NaN — неопределенный результат (0/0,∞/∞ и т. п.);

%eps — условный ноль %eps=2.220Е-16.

Функции. Любой математический пакет или язык программирования оперирует
двумя типами функций: встроенными и определенными пользователем.

В общем виде обращение к функции имеет вид:
имя_переменной=имя_функции(арг1 [,арг2,…]) где имя_переменной — переменная,
куда запишутся результаты работы функции; имя_функции — имя встроенной или
введенной ранее пользователем функции; арг1, арг2 и т.д. — аргументы функции.

Встроенные функции. Функций этого типа в Scilab вполне достаточно для
проведения, анализа и оформления инженерных вычислений. Их рассмотрение начнем
с математических функций, как наиболее распространенных в инженерной практике.

sin(x)

синус числа х

cos(x)

косинус числа х

tan(x)

тангенс числа х

cotg(x)

котангенс числа х

asin(x)

арксинус числа х

acos(x)

арккосинус числа х

atan(x)

арктангенс числа х

exp(x)

экспонента числа х

log(x)

натуральный логарифм числа х

log10(x)

десятичный логарифм числа х

log2(x)

логарифм по основанию 2 числа х

sqrt(x)

abs(x)

модуль числа х

Справку и помощь можно получить с помощью команды help имя .

Функции пользователя

В Scilab функция f(x) оформляется как функция пользователя двумя
способами.

Способ 1. Применение оператора deff, имеющего в общем случае вид: deff
(’[имя1,…,имяN]= имя_функции (переменная_1,…,переменная_M)’,
’имя1=выражение1;…;имя N=выражениеN’) где имя1,…,имяN — список выходных
параметров, то есть переменных, которым будет присвоен конечный результат
вычислений, имя_функции — имя с которым эта функция будет вызываться,
переменная_1,…,переменная_M — входные параметры, имя1=выражение1;…;имя
N=выражение N- определение (вычисление) выходных переменных.

Способ 2. Применение конструкции function, синтаксис которой следующий:
function [имя1,…,имяN] = имя_функции (переменная_1,…,переменная_M)
endfunction где имя1,…,имяN — список выходных параметров; имя_функции — имя с
которым эта функция будет вызываться, переменная_1, …,переменная_M — входные
параметры. Определение выходных переменных происходит в теле функции.

Логические операторы. При решении задач довольно часто приходится иметь
дело с алгоритмом ветвления — ход вычисления зависит от выполнения или
невыполнения какого-либо условия: если … то… иначе (в противном случае).

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

условие

операторы1

где условие — логическое выражение, операторы 1, операторы2 операторы
языка Scilab или встроенные функции. Оператор if работает по следующем
алгоритму: если условие истинно, то выполняются операторы 1, если ложно —
операторы 2.

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

Для задания условий используются операторы:

& (and) — логическое «и»

| (or) — логическое «или»

~ (not) — логическое отрицание

< — меньше

> — больше

== — равно

<> (~=) — не равно

>= — больше или равно

<=- меньше или равно

В случае сложных условий составляющие его элементарные условия
заключаются в скобки.

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

условие 1

операторы 1 if условие 2

операторы 2 if условие 3

операторы3 if условие n

Операторы n

операторы

Алгоритм работы этой конструкции следующий: если условие1 истинно, то
выполняются операторы1, иначе проверяется условие2, если оно истинно, то
выполняются операторы2, иначе проверяется условие3 и т. д. Наконец, если ни
одно из условий по веткам else и elseif не выполняется, то выполняются
операторы по ветке else.

3.      Разработка алгоритмов для моделирования двигателя постоянного
тока

.1      Основные сведения о двигателе постоянного тока

Принцип действия (на примере двигателя параллельного возбуждения). Если к
двигателю подведено напряжение U, то по цепи возбуждения протекает ток Iв,
а по цепи якоря — ток Iя. Ток возбуждения создает МДС Fв
= Iв Wв, которая возбуждает в машине магнитный поток Фв.
Ток якоря, в свою очередь, создает магнитный поток реакции якоря Фя. Результирующий
магнитный поток

Фрез = Фв + Фя.

Рис. 2                                           Рис. 3

В цепи якоря ток Iя создает падение напряжения Rя Iя.
В соответствии с законом электромагнитной силы ЭМС при взаимодействии
тока Iя и магнитного потока Фрез создается вращающий
момент Мвр. В установившемся режиме Мвр. = Мпр. Когда
проводники якоря пересекают магнитное поле Фрез, в них в
соответствии с законом электромагнитной индукции ЭМИ наводится ЭДС, которая
направлена против напряжения сети U.

Классификация двигателей. По схеме включения обмоток возбуждения главных
полюсов двигатели постоянного тока делятся на двигатели независимого,
параллельного, последовательного и смешанного возбуждения.

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

Основные уравнения и величины, характеризующие двигатели. Такими
величинами являются: механическая мощность на валу Р2, питающее
напряжение U, ток, потребляемый из сети I, ток якоря Iя, ток
возбуждения Iв, частота вращения n, электромагнитный момент Мэм.
Зависимость между этими величинами описывается:

Ø уравнением электромагнитного
момента:

Мэм = См Iя Ф;

Ø уравнением электрического состояния
цепи якоря:

= Епр + Rя Iя

Ø уравнением моментов:

Мэм = Мс + Мпот + Мд,

где Мс — момент сопротивления на валу, создаваемый нагрузкой;
Мпот — момент потерь, создаваемый всеми видами потерь в двигателе; Мд
— динамический момент, создаваемый инерционными силами;

Характеристики двигателей. Важнейшей из характеристик является
механическая n (Мс) — зависимость частоты вращения n от момента на
валу (далее индекс «с» опускается) при U = const, Iв = const. Она
показывает влияние механической нагрузки (момента) на валу двигателя на частоту
вращения, что особенно важно знать при выборе и эксплуатации двигателей. Другие
характеристики двигателей: регулировочная n (Iв), скоростная n (Iя),
рабочие М, Р1, n , I, h(Р2) — здесь подробно не
рассматриваются.

Механические характеристики могут быть естественными и искусственными.
Под естественными характеристиками понимаются характеристики, снятые при
отсутствии в схеме каких-либо дополнительных сопротивлений, например, реостатов
в цепях якоря или возбуждения, искусственными — при наличии таких
сопротивлений.

Уравнение механической характеристики двигателя. Оно может быть получено
из (1.1). Подставим вместо Е ее значение,

= (U — Rя Iя)/СЕФ

Заменяя Iя его значением, получаем уравнение механической
характеристики:

=

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

программный
математический автоматизация двигатель

3.2    Описание методик определения характеристик объекта управления

При определении динамических характеристик объекта по его кривой разгона
на вход подается или ступенчатый пробный сигнал, или прямоугольный импульс. Во
втором случае кривая отклика должна быть достроена до соответствующей кривой
разгона.

При снятии кривой разгона необходимо выполнить ряд условий:

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

. Кривые разгона необходимо снимать как при положительных, так и
отрицательных скачках управляющего сигнала. По виду кривых можно судить о
степени асимметрии объекта. При небольшой асимметрии расчет настроек регулятора
рекомендуется вести по усредненным значениям параметров передаточных функций.
Линейная асимметрия наиболее часто проявляется в тепловых объектах управления.

. При наличии зашумленного выхода желательно снимать несколько кривых
разгона с их последующим наложением друг на друга и получением усредненной
кривой.

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

. При снятии кривой разгона амплитуда пробного входного сигнала должна
быть, с одной стороны, достаточно большой, чтобы четко выделялась кривая
разгона на фоне шумов, а, с другой стороны, она должна быть достаточно малой,
чтобы не нарушать нормального хода технологического процесса. Сняв кривую
разгона, и оценив характер объекта управления (с самовыравниванием или без)
можно определить параметры соответствующей передаточной функции. Передаточную
функцию рекомендуется применять для объектов управления с явно выраженной
доминирующей постоянной времени (одноемкостный объект). Перед началом обработки
кривую разгона рекомендуется пронормировать (диапазон изменения нормированной
кривой 0 — 1) и выделить из ее начального участка величину чистого временного
запаздывания.

Пример. Дана нормированная кривая разгона объекта, у которой заранее
выделена величина чистого запаздывания . Построим график кривой разгона
(рис. 4) по ее значениям, приведенным в таблице 1.1.

Таблица 5.

2

4

6

8

10

12

14

18

22

0

0,087

0,255

0,43

0,58

0,7

0,78

0,84

0,92

0,96

Рис. 4. График кривой разгона.

Динамический коэффициент усиления  объекта определяется как отношение
приращения выходного сигнала к приращению входного в окрестности рабочей точки.

Определение динамических характеристик объектов по кривой разгона можно
производить двумя методами.

)        Метод касательной к точке перегиба кривой разгона.

)        В данном случае точка перегиба соответствует переходу кривой от
режима ускорения к режиму замедления темпа нарастания выходного сигнала.
Постоянная времени Т и динамическое запаздывание  определяются в соответствии с
графиком рис.1.4, т.е.  .

)        Формульный метод позволяет аналитически вычислить величину
динамического запаздывания и постоянной времени по формулам

 , ,

где значение , берется в окрестности точки перегиба кривой, а значение  принимается равным 0,8 — 0,85. По
этим значениям определяются и моменты времени  и .

Методику определения параметров динамической модели объекта без самовыравнивания
рассмотрим на примере кривой разгона уровня в барабане котла теплоагрегата.
Предполагается, что на вход объекта увеличили подачу воды на 10 т/час =DG, при
этом уровень начал увеличиваться. Приращение уровня зафиксировано в таблице
1.2.

Таблица 6.

0

100

200

300

0

20

76

135

Рис. 5. График разгонной характеристики объекта без самовыравнивания.

График разгонной характеристики объекта без самовыравнивания, построенной
в соответствии с приведенной таблицей показан на рис. 1.5.

Для объекта без самовыравнивания коэффициент усиления определяется как
отношение установившейся скорости изменения выходной величины к величине скачка
входного сигнала. В нашем примере

 

Величина динамического запаздывания  в объекте определяется так, как
показано на рис. 5.

4.      Моделирование двигателя постоянного тока в системе Scilab

Исходные данные:

Вариант

Блок 1

Блок 2

Блок 3

Блок 4

6

1/0,0046

0,008/0,000001489

5,8

0,012

В соответствии с рисунком 1.1 и параметрами блоков модели по варианту 6
разработаем модель в Scilab.

Рисунок 4.1 — Расположение блоков модели управления двигателем
постоянного тока посредством ШИМ

На рисунке 4.2 приведена разработанная модель с параметрами варианта 6.
На рисунке 4.3 приведены параметры блока PULSE, формирующего ШИМ-сигнал.

На рисунке 4.4 приведены параметры блока CSCOPE (осциллограф),
регистрирующего изменения переменных в модели.

На рисунке 4.5 приведены параметры блока CLOCK, управляющего
регистратором (осциллографом).

Рисунок 4.2 — Модель в Scilab с данными варианта 6

Рисунок 4.3 — Параметры блока PULSE

Рисунок 4.5 — Параметры блока CLOCK

Время моделирования установлено .

На рисунке 1.6 показаны результаты моделирования модели по рисунку 1.2.

Рисунок 4.6 — Результаты моделирования

Далее в соответствии с методическими указаниями рассмотрим замену модели
двигателя одним звеном. Для этого выполним соответствующие преобразования
модели двигателя. На основе рисунка 4.1 структурную схему двигателя можно
представить в виде, показанном на рисунке 4.7.

Рисунок
4.7 — Структурная схема двигателя

В
соответствии с исходными данными по варианту № 6 параметры структурной схемы:

Преобразуем
данную структурную схему, заменив звенья с передаточными функциями ,  и  эквивалентным звеном. Преобразованная структурная
схема приведена на рисунке 1.8.

Рисунок
4.8 — Преобразованная структурная схема

Аналогично
преобразуем полученную структурную схему, заменив все звенья одним с
эквивалентной передаточной функцией (рис. 1.9).

Рисунок
4.9 — Преобразованная структурная схема

После
выполненных преобразований, с учетом исходных данных выполним моделирование
двигателя в виде одного звена. Результаты моделирования сравним с используемой
уже ранее моделью (рис. 1.2). Ранее используемую модель свернем с помощью блока
SUPER. Результирующая модель показана на рисунке 4.10.

Рисунок
4.10 — Модель с разным представлением двигателя

На
рисунке 4.11 показаны результаты моделирования модели рисунка 4.10. Как видно,
скорости двигателей совпадают в обоих случаях, что свидетельствует о верно
выполненных преобразованиях структурной схемы двигателя.

Рисунок
4.11 — Графики управляющего воздействия и скорости вращения двигателя

Рассмотрим моделирование следящей системы в Scilab, используя блок
Scifunc. Модель исследуемой системы приведена на рисунке 4.12.

Рисунок 4.12 — Модель следящей системы

В блоке Scifunc используем следующую функцию:

y1=funci(u1)

sig2=sig1-u_/k_;

if abs(u1)<=sig1 then

y1=0;

elseif abs(u1)<sig2 then

y1=k_*(u1-sign(u1)*sig1);

else

y1=u_*sign(u1);

end

endfunction

Данная функция реализует нелинейную зависимость, приведенную на рисунке
4.12. Линейная часть следящей системы представлена передаточной функцией:

Рисунок 4.12 — Нелинейная часть следящей системы

Параметры системы:

График переходного процесса в следящей системе показан на рисунке 2.3.

Рисунок 4.13 — График переходного процесса в следящей системе

Заключение

Содержание математического программирования составляют теория и методы
решения задач о нахождении экстремумов функций на множествах, определяемых
линейными и нелинейными ограничениями (равенствами и неравенствами).
Математическое программирование является одним из разделов науки об
исследовании операций.

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

Значительное число задач, возникающих в обществе, связано с управляемыми
явлениями, т.е. с явлениями, регулируемыми на основе сознательно принимаемых
решений. При том ограниченном объеме информации, который был доступен на ранних
этапах развития общества, принималось оптимальное в некотором смысле решение на
основании интуиции и опыта, а затем, с возрастанием объема информации об
изучаемом явлении, — с помощью ряда прямых расчетов. Так происходило, например,
создание календарных планов работы промышленных предприятий.

Совершенно иная картина возникает на современном промышленном предприятии
с многосерийным и многономенклатурным производством, когда объем входной
информации столь велик, что его обработка с целью принятия определенного
решения невозможна без применения компьютеров. Еще большие трудности возникают
в связи с задачей о принятии наилучшего решения. Проблема принятия решений в
исследовании операций неразрывно связана с процессом моделирования.

Первый этап процесса моделирования состоит в построении качественной
модели. Второй этап — построение математической модели рассматриваемой
проблемы. Этот этап включает также построение целевой функции, т. е. такой
числовой характеристики, большему (или меньшему) значению которой соответствует
лучшая ситуация с точки зрения принимающего решения. Итак, в результате этих
двух этапов формируется соответствующая математическая задача.

Третий этап — исследование влияния переменных на значение целевой
функции. Этот этап предусматривает владение математическим аппаратом для
решения математических задач, возникающих на втором этапе процесса принятия
решения.

Четвертый этап — сопоставление результатов вычислений, полученных на
третьем этапе, с моделируемым объектом, т. е. экспертная проверка результатов
(критерий практики). Таким образом, на этом этапе устанавливается степень
адекватности модели и моделируемого объекта в пределах точности исходной
информации.

Широкий класс задач управления составляют такие экстремальные задачи, в
математических моделях которых условия на переменные задаются равенствами и
неравенствами. Теория и методы решения этих задач как раз и составляют содержание
математического программирования.

В ходе выполнения курсовой работы были проанализированы среды
математического программирования. Анализ показал хорошие и плохие стороны
разных программ.

Для моделирования двигателя постоянного тока, была выбрана система
Scilab. Была построена динамическая модель двигателя постоянного тока, получены
графики переходных процессов при управляющем воздействии ШИМ.

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

Результаты моделирования свидетельствуют о том что динамические модели
построены верно.

Список литературы

1.      Дьяконов В.П.
Справочник по применению системы PC MATLAB. — М.: «Физматлит»
<http://ru.wikipedia.org/w/index.php?title=%D0%9C._(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)&action=edit&redlink=1>,
1993. — С. 112. -ISBN 5-02-015101-7
<http://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:BookSources/5020151017>

.        Дьяконов В.П. MATLAB
5 — система символьной математики. — М.: «Нолидж»
<http://ru.wikipedia.org/w/index.php?title=%D0%9C._(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)&action=edit&redlink=1>,
1999. — С. 640. — ISBN 5-89251-069-7
<http://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:BookSources/5892510697>

.        Дьяконов В.П.,
Абраменкова И.В. MATLAB. Обработка сигналов и изображений. Специальный
справочник. — СПб.: «Питер» <http://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D1%82%D0%B5%D1%80_(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)>,
2002. — С. 608. — ISBN 5-318-00667-608

.        Дьяконов В.П.,
Круглов В.В. MATLAB. Анализ, идентификация и моделирование систем. Специальный
справочник. — СПб.: «Питер»
<http://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D1%82%D0%B5%D1%80_(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)>,
2002. — С. 448. — ISBN 5-318-00359-1 <http://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:BookSources/5318003591>

.        Дьяконов В. П.
Simulink 4. Специальный справочник. — СПб.: «Питер»
<http://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D1%82%D0%B5%D1%80_(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)>,
2002. — С. 528. — ISBN 5-318-00551-9
<http://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:BookSources/5318005519>

.        Дьяконов В.П. MATLAB
6/6.1/6.5 + Simulink 4/5. Основы применения. Полное руководство пользователя. —
Москва.: «СОЛОН-Пресс»
<http://ru.wikipedia.org/w/index.php?title=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0._(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)&action=edit&redlink=1>,
2002. — С. 768. — ISBN 5-98003-007-7 <http://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:BookSources/5980030077>

.        Дьяконов В.П. MATLAB
6.5/7.0 + Simulink 5/6. Основы применения. Библиотека профессионала. —
Москва.:«СОЛОН-Пресс» <http://ru.wikipedia.org/w/index.php?title=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0._(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)&action=edit&redlink=1>,
2005. — С. 800. — ISBN 5-98003-181-2
<http://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:BookSources/5980031812>

.        Дьяконов В.П. MATLAB
6.5/7.0 + Simulink 5/6 в математике и моделировании. Библиотека профессионала.
— Москва.: «СОЛОН-Пресс»
<http://ru.wikipedia.org/w/index.php?title=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0._(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)&action=edit&redlink=1>,
2005. — С. 576. — ISBN 5-98003-209-6 <http://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:BookSources/5980032096>

.        Дьяконов В.П. MATLAB
6.5/7.0 + Simulink 5/6. Обработка сигналов и проектирование фильтров.
Библиотека профессионала. — Москва.: «СОЛОН-Пресс»
<http://ru.wikipedia.org/w/index.php?title=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0._(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)&action=edit&redlink=1>,
2005. — С. 576. — ISBN 5-98003-206-1
<http://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:BookSources/5980032061>

.        Дьяконов В.П. MATLAB
6.5/7.0/7 SP1/7 SP2 + Simulink 5/6. Инструменты искусственного интеллекта и
биоинформатики. Библиотека профессионала. — Москва.: «СОЛОН-Пресс»
<http://ru.wikipedia.org/w/index.php?title=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0._(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)&action=edit&redlink=1>,
2005. — С. 456. — ISBN 5-98003-255-X
<http://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:BookSources/598003255X>

.        Дьяконов В.П. MATLAB
R2006/2007/2008 + Simulink 5/6/7. Основы применения. Изд-е 2-е, переработанное
и дополненное. Библиотека профессионала. — Москва.: «СОЛОН-Пресс»
<http://ru.wikipedia.org/w/index.php?title=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0._(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)&action=edit&redlink=1>,
2008. — С. 800. — ISBN 978-5-91359-042-8

.        Дьяконов В.П.
SIMULINK 5/6/7. Самоучитель. — Москва: «ДМК-Пресс»
<http://ru.wikipedia.org/w/index.php?title=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0._(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)&action=edit&redlink=1>,
2008. — С. 784. — ISBN 978-5-94074-423-8
<http://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:BookSources/9785940744238>

.        Алексеев Е.Р.,
Чеснокова О.В MATLAB 7. Самоучитель.. — Пресс <http://ru.wikipedia.org/w/index.php?title=%D0%9D%D0%A2&action=edit&redlink=1>,
2005. — С. 464.

Был(а) на сайте 37 минут назад

Раздел

Математические дисциплины

Каждая работа проверяется на плагиат, на момент публикации
уникальность составляет не менее 40% по системе проверки eTXT.

rar

Введение 3
1. Краткий обзор возможностей Scilab. 5
2.Решение разреженных систем линейных уравнений с помощью встроенных функций Scilab. Действия с разрежен-ными матрицами. 7
2.1 Задание разреженной матрицы. Преобразование разреженной матрицы к привычному виду. 7
2.2 Функции формирования массивов «специального вида». 8
2.3 Треугольное разложение разреженных матриц. 12
2.4 Решение систем линейных уравнений. 15
3. Численные методы решения разреженных систем линейных уравнений и их реализация в среде Scilab 21
3.1 Решение разреженных систем общего вида методами 21
исключения. 21
3.1.2 Особенности применения методов исключения к решению разреженных систем. 25
3.2. Решение трехдиагональных систем методом прогонки 29
3.3 Итерационные методы решения разреженных систем линейных уравнений 34
3.3.1 Метод Гаусса-Зейделя 34
3.3.2 Метод Качмажа 35
3.3.3 Сравнение метода Качмажа с другими методами решения разреженных систем при их реализации в Scilab. 39
Заключение 47
Список использованных источников: 48
Приложение 49

Задача Задача

7
+2

0 покупок

Задача Задача

8
+3

0 покупок

Диссертация Диссертация

291

0 покупок

Контрольная работа Контрольная

352

0 покупок

Задача Задача

499

0 покупок

Контрольная работа Контрольная

317

0 покупок

Задача Задача

400

0 покупок

Контрольная работа Контрольная

340

0 покупок

Задача Задача

366

0 покупок

Задача Задача

332

0 покупок

Контрольная работа Контрольная

247

0 покупок

Задача Задача

351

0 покупок

СОСТАВ ОТЧЕТА ПО КУРСОВОЙ РАБОТЕ И ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ

ЗАДАНИЕ

Согласно варианту в среде Scilab выполнить задания курсовой работы (см. файл КУРСОВАЯ РАБОТА.pdf). Номер варианта – последние 2 цифры номера зачетки. Для выполнения курсовой работы рекомендуется использовать учебник (см. файл ТЕОРИЯ_SCILAB.pdf).

СОСТАВ ОТЧЕТА ПО КУРСОВОЙ РАБОТЕ И ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ

1 Структура отчета

Титульный лист

Лист задания

Реферат

Оглавление

Основная часть (выполнение заданий).

Список использованной литературы

2 Требования к оформлению отчета

Отчет оформляется на листах формата А4 в текстовом редакторе Word. Текст должен быть набран 14 шрифтом, абзац – 15 мм. Каждая страница  должна иметь следующие параметры: слева – 30, справа – 20 мм., сверху – 20 мм., снизу – 20 мм.

Нумерация страниц сквозная, начиная с титульного листа. На титульном листе номер страницы не ставят, на последующих страницах номера указывают в правом верхнем углу.

Отчет подается в методический кабинет в сброшюрованном виде.

Приложение 1 (Титульный лист)

ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

кафедра прикладной математики

КУРСОВАЯ РАБОТА

По дисциплине: Информатика”

Расчеты в среде Scilab

Номер зачетки

Вариант №

                                                                                  Выполнил:

                                                                                  Ст._________________

                                                                                  гр. _________________                                                                                                 

                                                                                  Руководитель:

                                                                                  _________________

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«Мордовский государственный

педагогический УНИВЕРСИТЕТ имени М. Е. евсевьева»

Физико-математический факультет

Кафедра информатики и вычислительной техники

РЕФЕРАТ

БЛОЧНОЕ ПРОГРАММИРОВАНИЕ В SCILAB

Автор работы _____________________________________А. С. Тимошкина

Направление подготовки 44.03.05 Педагогическое образование (с двумя профилями подготовки)
Профиль Математика. Информатика

Руководитель работы

канд. физ.-мат. наук, доцент__________________________Т. В. Кормилицына

Оценка ____________________

Саранск 2021

Содержание

Введение 3

1 Программирование в Scilab 4

2 Основы работы в Scilab 6

2.1 Текстовые комментарии и элементарные математические выражения 6

2.2 Переменные в Scilab 6

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

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

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

2.6 Оператор альтернативного выбора select 12

2.7 Оператор for 14

2.8 Оператор while 14

2.9 Инструкции break и continue 15

Заключение 16

Список использованных источников 17

Введение

Scilab – это система компьютерной математики, которая предназначена для выполнения инженерных и научных вычислений, таких как:

– решение нелинейных уравнений и систем;

– решение задач линейной алгебры;

– решение задач оптимизации;

– дифференцирование и интегрирование;

– задачи обработки экспериментальных данных (интерполяция и аппроксимация, метод наименьших квадратов);

– решение обыкновенных дифференциальных уравнений и систем.

Кроме того, Scilab предоставляет широкие возможности по созданию и редактированию различных видов графиков и поверхностей. Несмотря на то, что система Scilab содержит достаточное количество встроенных команд, операторов и функций, отличительная ее черта – это гибкость. Пользователь может создать любую новую команду или функцию, а затем использовать ее наравне со встроенными. К тому же, система имеет достаточно мощный собственный язык программирования высокого уровня, что говорит о возможности решения новых задач.

Изначально это был коммерческий проект под названием Blaise, а затем Basile. С 2003 года продукт получил новое имя Scilab и стал бесплатным. В настоящее время он распространяется по свободной лицензии CeCILL.

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

1 Программирование в Scilab

В Scilab встроен мощный язык программирования с поддержкой объектов.

В системе доступно множество инструментов:

  • 2D и 3D графики, анимация

  • Линейная алгебра, разреженные матрицы (sparse matrices)

  • Полиномиальные и рациональные функции

  • Интерполяция, аппроксимация

  • Симуляция: решение ОДУ и ДУ

  • Scicos: гибрид системы моделирования динамических систем и симуляции

  • Дифференциальные и не дифференциальные оптимизации

  • Обработка сигналов

  • Параллельная работа

  • Статистика

  • Работа с компьютерной алгеброй

  • Интерфейс к Fortran, Tcl/Tk, C, C++, Java, LabVIEW

Работа в 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-языком).

Программа доступна для различных операционных систем, включая Linux и Microsoft Windows. Возможности Scilab могут быть расширены внешними программами и модулями, написанными на разных языках программирования. Программа имеет открытый исходный код, что позволяет как свободное коммерческое использование и распространение неизменённых версий, так и некоммерческое распространение измененных версий, которые должны включать в себя исходный код. Для коммерческого распространения измененных версий необходимо согласование с INRIA.

2 Основы работы в Scilab
2. 1 Текстовые комментарии и элементарные математические выражения

Текстовый комментарий в Scilab это строка, начинающаяся с символов //.

Использовать текстовые комментарии можно как в рабочей области, так и в тексте файла- сценария. Строка после символов // не воспринимается как команда и нажатие клавиши Enter приводит к активизации следующей командной строки (листинг 2.1)

—//6+8

Листинг 2.1

Для выполнения простейших арифметических операций в Scilab применяют следующие операторы: + сложение, – вычитание, * умножение, / деление слева направо, деление справа налево, ^ возведение в степень. Вычислить значение арифметического выражения можно, если ввести его в командную строку и нажать клавишу ENTER (листинг 2.2).

— 2.35*(1.8-0.25)+1.34^2/3.12

Листинг 2.2

Если вычисляемое выражение слишком длинное, то перед нажатием клавиши ENTER следует набрать три или более точек. Это будет означать продолжение командной строки. Если символ точки с запятой «;» указан в конце выражения, то результат вычислений не выводится, а активизируется следующая командная строка.

2. 2 Переменные в Scilab

В рабочей области Scilab можно определять переменные, а затем использовать их в выражениях. Для определения переменной необходимо набрать имя переменной, символ «=» и значение переменной. Здесь знак равенства – это оператор присваивания, действие которого не отличается от аналогичных операторов языков программирования. То есть, если в общем виде оператор присваивания записать как «имя_переменной = значение выражения», то в переменную, имя которой указано слева, будет записано значение выражения, указанного справа. Имя переменной не должно совпадать с именами встроенных процедур, функций и встроенных переменных системы и может содержать до 24 символов. Система различает большие и малые буквы в именах переменных. То есть ABC, abc, Abc, aBc – это имена разных переменных. Выражение в правой части оператора присваивания может быть числом, арифметическим выражением, строкой символов или символьным выражением. Если речь идет о символьной или строковой переменной, то выражение в правой части оператора присваивания следует брать в одинарные кавычки. Если символ «;» в конце выражения отсутствует, то в качестве результата выводится имя переменной и ее значение. Наличие символа «;» передает управление следующей командной строке. Это позволяет использовать имена переменных для записи промежуточных результатов в память компьютера.

Для очистки значения переменной можно применить команду «clear имя переменной». Команда clear; отменяет определения всех переменных данной сессии.

Если команда не содержи знака присваивания, то по умолчанию вычисленное значение присваивается специальной системной переменной ans. Причем полученное значение можно использовать в последующих вычислениях, но важно помнить, что значение ans изменяется после каждого вызова команды без оператора присваивания.

Другие системные переменные в Scilab начинаются с символа %:

  • %i – мнимая единица ( 1 );

  • %pi – число π (3.141592653589793);

  • %e – число e=2.7182818;

  • %inf – машинный символ бесконечности (∞);

  • %NaN – неопределенный результат (0/0, ∞/∞, 1 ∞ и т.п.);

  • %eps – условный ноль %eps=2.220Е-16.

Все перечисленные переменные можно использовать в математических выражениях.

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

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

x=input(’title’);

или

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

Функция input выводит в командной строке Scilab подсказку title и ждет, пока пользователь введет значение, которое в качестве результата возвращается в переменную х. Функция x_dialog выводит на экран диалоговое окно с именем title, после чего пользователь может щелкнуть OK, и тогда stroka вернется в качестве результата в переменную x, либо ввести новое значение вместо stroka, которое и вернется в качестве результата в переменную x. На рисунке 1 представлено диалоговое окно, которое формируется строкой x=x_dialog(’Input X’,’5’).

Рисунок 2.1 Окно ввода

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

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

Для вывода в текстовом режиме можно использовать функцию disp следующей структуры:

disp(b)

Здесь b – имя переменной или заключенный в кавычки текст.

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

Оператор присваивания имеет следующую структуру: a=b.

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

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

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

Одним из основных операторов, реализующих ветвление в большинстве языков программирования, является условный оператор if. Оператор 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

else

if условие2

операторы2

else

if условие 3

операторы3

Else

if условие n

операторы n

else

операторы

end

В этом случае оператор if работает так: если условие1 истинно, то выполняются операторы1, иначе проверяется условие2, если оно истинно, то выполняются операторы2, иначе проверяется условие3 и т. д. Если ни одно из условий по веткам else и elseif не выполняется, то выполняются операторы по ветке else.

Задача 1. В качестве примера программирования разветвляющегося процесса рассмотрим решение биквадратного уравнения ax4 + bx2 + c = 0.

Для решения биквадратного уравнения необходимо заменой y = x^2 привести его к квадратному и решить это уравнение. После этого для нахождения корней биквадратного уравнения необходимо будет извлечь корни из найденных значений y. Входными данными этой задачи являются коэффициенты биквадратного уравнения a, b, c. Выходными данными являются корни уравнения x1, x2, x3, x4 или сообщение о том, что действительных корней нет.

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

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

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

3. Если d

4. Если y1

5. Если y1 0 и y2 0, то вычисляются четыре корня по формулам ±√y1, ±√y2 и выводятся значения корней.

6. Если условия 4) и 5) не выполняются, то необходимо проверить знак y1.

7. Если y1 неотрицательно, то вычисляются два корня по формуле ±√y1, иначе оба корня вычисляются по формуле ±√y2.

2.5 Оператор альтернативного выбора select

Опертор select предназначен для сокращенной записи нескольких последовательных проверок переменной на равенство одному из ряда значений, которые в противном случае необходимо было бы оформить как блоки elseif. В зависимости от значения переменной оператор select выполняет один из блоков case. Количество таких блоков не ограничено.

Оператор альтернативного выбора select имеет следующую структуру:

select параметр

case значение1 then операторы1

case значение2 then операторы2

else операторы

end

Оператор select работает следующим образом: если значение параметра равно значениию1, то выполняются операторы1, иначе, если параметр равен значениию2, то выполняются операторы2. В противном случае, если значение параметра совпадает со значением3, то выполняются операторы3 и т. д. Если значение параметра не совпадает ни с одним из значений в группах case, то выполняются операторы, которые идут после служебного слова else.

Блок else выполняется в том случае, если значение переменной не соответствует ни одному из перечисленных вариантов. Наличие блока else не является обязательным, но считается хорошим тоном. Действительно, даже если программист полагает, что соответствующее этому блоку событие в нормальных условиях никогда не может произойти, ошибка в логике выполнения программы может привести к непредсказуемым последствиям. При отсутствии проверки скрипт продолжит выполняться и в наихудшем случае завершится без сообщений об ошибках, вернув неверный результат. Отладка такого скрипта представляет крайне сложную задачу, поскольку неясно, какая инструкция повлекла нарушение работы. Блок else призван воспрепятствовать распространению ошибки и может помочь в том, чтобы точнее определить место ее возникновения. Таким образом, блок else должен присутствовать в большинстве конструкций select. Для обработки непредвиденных ситуаций в составе блока else часто применяется функция error. Функция error отображает сообщение об ошибке, содержащее указанный в качестве параметра текст. При этом выполнение алгоритма прерывается, интерпретатор Scilab покидает все вызванные функции и возвращает управление консоли.

Конечно, любой алгоритм можно запрограммировать без использования select, используя только if, но использование оператора альтернативного выбора select делает программу более компактной.

2.6 Оператор for

Оператор for применяется для повторения некоторого действия заданное число раз. Чаще всего используется числовой счетчик, пробегающий ряд значений.

Оператор цикла for имеет вид:

for x=xn:hx:xk

операторы

end

Здесь x – имя скалярной переменной – параметра цикла, xn – начальное значение параметра цикла, xk – конечное значение параметра цикла, hx – шаг цикла. Если шаг цикла равен 1, то hx можно опустить, и в этом случае оператор for будет таким:

for x=xn:xk

операторы

end

Выполнение цикла начинается с присвоения параметру стартового значения (x = xn). Затем следует проверка, не превосходит ли параметр конечное значение (x xk). Если x xk, то цикл считается завершенным, и управление передается следующему за телом цикла оператору. Если же x 6 xk, то выполняются операторы в цикле (тело цикла). Далее параметр цикла увеличивает свое значение на hx (x = x + hx). После чего снова производится проверка значения параметра цикла, и алгоритм повторяется.

2.7 Оператор while

Оператор while предназначен для повторения некоторого блока инструкций до тех пор, пока условие цикла остается истинным. Проверка условия выполняется перед каждой (в том числе первой) итерацией. В определенный момент условие повторения обращается в ложь и цикл завершается. Заметим, что для корректного завершения цикла необходимо, чтобы в теле цикла каким-либо образом изменялись переменные, входящие в условие продолжения, так чтобы в какой-то момент значение этого выражения изменилось бы с истинного на ложное

Оператор цикла while имеет вид:

while условие

операторы

end

Здесь условие – логическое выражение; операторы будут выполняться циклически, пока логическое условие истинно.

Оператор цикла while обладает значительной гибкостью, но не слишком удобен для организации «строгих» циклов, которые должны быть выполнены заданное число раз. Оператор цикла for используется именно в этих случаях.

2.8 Инструкции break и continue

Инструкция break позволяет прервать выполнение цикла. Обычно она применяется для выхода из цикла при достижении определенного условия, делающего его продолжение бессмысленным. Следующий фрагмент демонстрирует использование инструкции break для вычисления суммы чисел от 1 до 10.

Инструкция continue позволяет немедленно перейти к выполнению следующей итерации, пропустив команды, следующие после continue в теле цикла. Встретив команду continue, интерпретатор Scilab переходит к заголовку цикла, проверяет условие продолжения, и, если оно истинно, делает следующую итерацию.

Заключение

Система Scilab, как и ее коммерческий аналог Matlab, предназначена для численных расчетов и работы с матрицами. Scilab содержит сотни математических функций, и есть возможность добавления новых, написанных на различных языках (C, C++, Fortran и т. д.). Также имеются разнообразные структуры данных (списки, полиномы, рациональные функции, линейные системы), интерпретатор и язык высокого уровня. Кроме того, она обладает развитыми средствами программирования (включая отладчик скриптов), так что ее можно рассматривать и как систему разработки высокотехнологичных приложений. В Scilab встроен мощный язык программирования с поддержкой объектов. Работа в Scilab может осуществляться в режиме командной строки и в программном режиме. Особенностью пакета является то, что он предназначен исключительно для реализации численных методов и по умолчанию оперирует с любыми значениями как с числами с плавающей точкой. SciLab позволяет работать с элементарным и большим числом специальных функций (Бесселя, Неймана, интегральные функции). Также имеет мощные средства работы с матрицами, полиномами (в том числе и символьно), производить численные вычисления (например, численное интегрирование) и решение задач линейной алгебры, оптимизации и симуляции, мощные статистические функции, а также средство для построения и работы с графиками.

Список использованных источников

1. Алексеев, Е. Р. Авторский курс лекций по пакету Scilab на странице Е. Р. Алексеева. – Текст : электронный // Личный сайт Е. Р. Алексеева – Работа в пакете Scilab. – URL : https://teacher.ucoz.net/index/rabota_v_pakete_scilab/0-9

2. Алексеев, Е.Р. Scilab: решение инженерных и математических задач / Е. Р. Алексеев, О. В. Чеснокова, Е. Р. Рудченко. – Москва: ALT Linux; БИНОМ. Лаборатория знаний, 2008. 260 с.

3. Андриевский, Б. Элементы математического моделирования в программных средах MATLAB 5 и Scilab / Б. Андриевский, А. Фрадков. – Санкт-Петербург: Наука, 2001. — 286 с.

4. Интегрированные системы компьютерной математики : учебное пособие для бакалавров / Т. В. Кормилицына, М. А. Кокорева ; Мордовский государственный педагогический институт. – Саранск, 2014. – 197 с.

5. Интерактивная система Scilab: учебное пособие. / И. Е. Плещинская, А. Н. Титов. — Казань: КГТУ, 2009. 144 с.

6. Интерактивные системы Scilab, Matlab, Mathcad : учебное пособие / И. Е. Плещинская [и др.]. – Текст: электронный // Министерство образования и науки России, Казанский национальный исследовательский технологический университет – Казань : Издательство КНИТУ, 2014. — 195 с. ISBN 978-5-7882-1715-4. 

Математические выражения состоят из чисел, констант, переменных, операторов, функций и спецзнаков. Числа могут быть целыми, дробными, с фиксированной и плавающей точкой. Примеры: -3 2.453 123.12е-3. Последнее число – это 123.12*10-3, т.е. 0,12312. Для разделения целой и десятичной части числа используется точка. Числа могут быть вещественными и комплексными. Кроме того, в Scilab существуют так называемые системные переменные и символьные константы:

· %i – мнимая единица (%i= );

· %pi – число π=3,1415927;

· %e –число е=2,71828184;

· %eps – 2.22d-16;

· %inf – значение машинной бесконечности;

· ans – переменная, хранящая результат последней операции;

· %nan – указание на нечисловой характер данных (not-a-number).

Примеры:

> 1/0

! – error 27

division by zero

> 0/0

! – error 27

division by zero

Системные переменные нельзя переопределить, например, переменной %eps нельзя присвоить другое значение:

>%eps = 0.1

! – error 13

redefining permanent variable

Символьная константа – это цепочка символов, заключенная в апострофы, например, ‘Hello’.

В Scilab наглядность описания сложных выражений достигается с помощью текстовых комментариев, которые вводят с помощью символов //.

Переменная в Scilab может иметь имя, содержащее сколько угодно символов, но система запоминает и идентифицирует только первые 24 символа. Имя должно начинаться с буквы и может содержать буквы, цифры и символ подчеркивания _.

В памяти компьютера переменные занимают определенное место, называемое рабочим пространством (Workspace). Для очистки рабочего пространства используют функцию clear:

· clear – уничтожение определений всех переменных;

· clear x– уничтожение определения переменной x;

· clear a, b, c– уничтожение определений нескольких переменных.

Примеры:

> v=[1 2 3 4 5];

> clear v

> v

!- — error 4

undefined variable: v

Большинство операций в Scilab являются матричными операциями, а соответствующие им операторы относятся к матричным операторам. Например, с помощью операторов умножения * и деления / вычисляют произведение и частное от деления двух массивов (векторов или матриц). Есть ряд спецоператоров, например, оператор используют для деления справа налево, а операторы .* и ./ – для поэлементного умножения и деления массивов.

Примеры:

> v1=[2 4 6 8]; v2=[1, 4, 12, 24]; p=v1/v2, t=v1.*v2, r=v1./v2, h=v1.v2

p =

0.3826323

t =

2 16 72 192

r =

2. 1. 0.5 0.3333333

h =

0.5 1. 2. 3.

Обратите внимание на результат операции:

—>x=[1 2 3 4 5 6];y=1/x

y =

0.0109890

0.0219780

0.0329670

0.0439560

0.0549451

0.0659341

В данном случае вычисляются не величины, обратные элементам вектора х, а каждый элемент вектора х делится на сумму квадратов всех элементов вектора. Результат же операции y=x^(-1) дает то, что надо:

—>x=[1 2 3 4 5 6];y=x^ (-1)

y =

1. 0.5 0.3333333 0.25 0.2 0.1666667

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *