Система компьютерной математики Марlе в задачах теории автоматического управления

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

Рубрика Программирование, компьютеры и кибернетика
Вид лекция
Язык русский
Дата добавления 22.07.2015
Размер файла 2,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Команда DEplot использует большой набор опций, наиболее употребительные из которых представлены ниже.

arrowsЗадает размеры стрелок при отображении поля направлений для автономных линейных систем второго порядка или дифференциальных уравнений второго порядка. Допустимые значения: SMALL (установлен по умолчанию), MEDIUM, LARGE, LINE, NONE. Значение NONE подавляет отображение поля направлений.

colorЗадает цвет стрелок поля направлений.

dirgridОпределяет количество точек сетки в горизонтальном и вертикальном направлении для отображения векторов поля направлений. Значение задается в форме списка из двух целых чисел, первое из которых соответствует горизонтальному направлению, а второе вертикальному. Минимальное допустимое значение [2,2], максимальное[20,20], которое используется по умолчанию

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

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

obsrangeУстановка этой опции, равной булевому значению TRUE (значение по умолчанию), останавливает процесс интегрирования системы дифференциальных уравнений, как только значение какой-либо искомой функции выходит за диапазон ее изменения, определенный

sceneОпределяет, что выводится на двумерном графике решения. Задается в виде двухэлементного списка искомых функций или независимой переменной. Например, scene=[x(t),y(t)] означает, что по горизонтальной оси графика отображается функция x(t), а по вертикальной -- y(t)]. Это позволяет для системы второго порядка отобразить фазовый портрет. Для отображения решения следует задать эту опцию, например, в виде scene=[t,y(t)].

stepsizeЗадает шаг изменения независимой переменной при численном интегрировании дифференциального уравнения. По умолчанию равен

,

где [a,b] диапазон изменения независимой переменной, заданный параметром trange.

Остальные опции соответствуют опциям команды plot и desolve.

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

Ниже приводятся примеры применения команды DEplot.

> with(DEtools):

> dif:=diff(y(x),x$2)-2*x*diff(y(x),x)+2*y(x)=0;

> DEplot(dif,y(x),x=0..1.5,

> [[y(0)=1,D(y)(0)=0.5],[y(0)=1,D(y)(0)=1],[y(0)=1,D(y)(0)=1.5]],

> linecolor=[black,red,blue],thickness=2);

> with(DEtools):

> dif1:=diff(x1(t),t)=x2(t);

> dif2:=diff(x2(t),t)=-8*x1(t)-6*x2(t)+2;

> DEplot([dif1,dif2],[x1,x2],t=0..3.5,number=2,

> [[x1(0)=0,x2(0)=0]],x1=0..0.35,

> linecolor=black,stepsize=.01,scene=[t,x1],thickness=2);

> DEplot([dif1,dif2],[x1,x2],t=0..3.5,number=2,

> [[x1(0)=0,x2(0)=0]],x1=0..0.35,

> linecolor=black,stepsize=.01,scene=[t,x2],thickness=2);

> with(DEtools):

DEplot(cos(x)*diff(y(x),x$3)-diff(y(x),x$2)+Pi*diff(y(x),x)=y(x)-x,y(x),

x=-2.5..1.4,[[y(0)=1,D(y)(0)=2,(D@@2)(y)(0)=1]],y=-4..4,stepsize=.05,linecolor=black,thickness=2);

> F1 := proc(N,x,Y,YP)

YP[1] := Y[2];

YP[2] := Y[3];

YP[3] := (Y[3]-Pi*Y[2]+Y[1]-x)/cos(x)

end proc;

DEplot(F1,y(x),x=-2.5..1.4,number=3,[[y(0)=1,D(y)(0)=2,(D@@2)(y)(0)=1]],

y=-4..5,stepsize=.05,linecolor=black,thickness=2);

> DEplot([D(x)(t)=y(t)-z(t),D(y)(t)=z(t)-x(t),D(z)(t)=x(t)-y(t)*2],

[x(t),y(t),z(t)],t=-2..2,[[x(0)=1,y(0)=0,z(0)=2]],stepsize=.05,

scene=[t,x(t)],linecolour=black,method=classical[foreuler],thickness=2);

> DEplot([D(x)(t)=y(t)-z(t),D(y)(t)=z(t)-x(t),D(z)(t)=x(t)-y(t)*2],

[x(t),y(t),z(t)],t=-2..2,[[x(0)=1,y(0)=0,z(0)=2]],stepsize=.05,

scene=[t,y(t)],linecolour=black,method=classical[foreuler],thickness=2);

> DEplot([D(x)(t)=y(t)-z(t),D(y)(t)=z(t)-x(t),D(z)(t)=x(t)-y(t)*2],

[x(t),y(t),z(t)],t=-2..2,[[x(0)=1,y(0)=0,z(0)=2]],stepsize=.05,

scene=[t,z(t)],linecolour=black,method=classical[foreuler],thickness=2);

Для обычного графического представления результатов решений дифференциальных уравнений может использоваться функция odeplot из описанного выше пакета plots. Эта функция используется в следующем виде:

odeplot(s, vars, r,o)

где s -- запись (в выходной форме) дифференциального уравнения или системы дифференциальных уравнений, решаемых численно функцией dsolve, vars -- переменные, r -- параметр, задающий пределы решения (например, a . . b), и o -- необязательные дополнительные опции.

Ниже представлен пример решения одиночного дифференциального уравнения с выводом решения с помощью функции odeplot.

В этом примере решается дифференциальное уравнение

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

> with(plots):

> p:=dsolve({diff(y(x),x)=cos(x^2*y(x)),y(0)=2},y(x),type=numeric);

> odeplot(p,[x,y(x)],-5..5,labels=[x,y],color=black,thickness=2);

Интегрирование уравнения

, .

> p:= dsolve({D(y)(x) = y(x), y(0)=1}, type=numeric, range=-5..2);

> odeplot(p,color=black,thickness=2);

Интегрирование уравнения

,

> p := dsolve({ diff(y(x),x) = sin(x*y(x)),y(0)=2},y(x),type=numeric);

> odeplot(p,[x,y(x)],0..6,labels=["x","y"],color=black,thickness=2);

Интегрирование системы дифференциальных уравнений

,

при начальных условиях , .

> sys := diff(y(x),x)=z(x),diff(z(x),x)=y(x);

fcns := {y(x), z(x)};

p:= dsolve({sys,y(0)=0,z(0)=1},fcns,type=numeric,method=classical);

> odeplot(p, [x,y(x)], -4..4, numpoints=25,color=black,thickness=2);

> odeplot(p, [[x,y(x),color=black],[x,z(x),color=red]],-4..4,thickness=2);

27. Типовые средства программирования

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

Задание функции пользователя.

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

name:=(x,y,…) -- >expr

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

Следующие примеры иллюстрирует сказанное

> reatart;

> x:=0;y:=0;

>

>

>

>

Нетрудно заметить, что при вычислении функции m (х, у) переменные имели значения 3 и 4, однако за пределами функции они сохраняют нулевые значения, заданные им перед введением определения функции пользователя Использование хотя бы одного параметра функции в виде числа с плавающей точкой ведет к тому, что функция возвращает результат также в виде числа с плавающей точкой.

Конструктор функций unapply.

Еще один способ задания функции пользователя базируется на применении функции-конструктора unapply:

name:=unapply(ехрг,var1,var2,...)

Ниже даны примеры такого задания функции пользователя

> p := x^2 + sin(x) + 1;

> f := unapply(p,x);

> f(Pi/6);

> q := x^2 + y^3 + 1;

> f := unapply(q,x);

> f(2);

> g := unapply(q,x,y);

> g(2,3);

> h := unapply(q,[x,y]);

> h(2,3);

>

>

>

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

Импликативные функции

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

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

>

>

>

>

>

>

Для графической визуализации импликативных функций служит функция implicitplot пакета plots. Ниже представлено задание двух импликативных функций и построение их графиков.

>

>

>

>

>

28. Управляющие структуры

Условные выражения

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

Простейшую конструкцию разветвляющихся программ в Maple-языке программирования задает оператор if или оператор условного выражения

if <условие сравнения> then <элементы>

| elif <условие сравнения> then <элементы> |

| else <элементы> |

fi;

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

if <условие> then <элементы 1> fi

-- если условие выполняется, то исполняются элементы 1, иначе ничего не выполняется.

if <условие> then <элементы 1> else <элементы 2> fi

-- если условие выполняется, то исполняются элементы 1, иначе исполняются элементы 2.

В задании условий используются любые логические конструкции со знаками сравнения (< , <=, >, >= , =, < >) и логические операторы and, or и not, конструкции с которыми возвращают логические значения true и false.

Pacсмотрим следующий пример

>

>

>

В этом примере анализируется значение . Если оно отрицательно, то с помощью функции вывода print на экран выводится сообщение «Negative», а если неотрицательно, то не выводится никакого сообщения. В другом примере, если неотрицательно, то выводится сообщение «Positive»

>

>

>

>

> a := 3; b := 5;

> if (a > b) then a else b end if;

Приведем еще один пример, показывающий особую форму задания конструкции if-then-else-fi

>

>

>

>

В этой конструкции вида

` if ` (Условие, Выражение1, Выражение 2)

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

29. Циклы for и while

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

| for <name> | | from <expr1> | | to <expr3> | | by <expr2> | | while <expr4> |

do <statement sequence> od;

Здесь name -- имя управляющей переменной цикла, expr1, expr2 и ехрrЗ -- выражения, задающие начальное значение, конечное значение и шаг изменения переменной name, expr4 -- выражение, задающее условие, пока цикл (набор объектов между словами do и od) будет выполняться.

В ходе выполнения цикла управляющая переменная меняется от значения expr1 до значения ехрr2 с шагом, заданным ехрrЗ. Если блок by <expr2 > отсутствует, то управляющая переменная будет меняться с шагом +1 при expr1<expr2. Это наглядно поясняет следующий пример.

>

В нем выводятся значения переменной i в ходе выполнения цикла. Нетрудно видеть, что она и впрямь меняется от значения 1 до значения 5 с шагом +1. Следующий пример показывает, что границы изменения управляющей переменной можно задать арифметическими выражениями.

>

Еще один пример показывает задание цикла, у которого переменная цикла меняется от значения 1 до 10 с шагом 2.

>

В этом случае выводятся нечетные числа от 1 до 9. Шаг может быть и отрицательным.

>

Следует отметить, что если exprl>expr2 задать заведомо невыполнимое условие, например, exprl>expr2 и положительное значение шага, то цикл выполняться не будет. Цикл можно прервать с помощью дополнительного блока while <ехрr4>. Цикл с таким блоком выполняется до конца или до тех пор, пока условие ехрr4 истинно.

>

Таким образом, конструкция цикла в Maple-языке программирования вобрала в себя основные конструкции циклов for и while. Есть еще одна, более физическая конструкция цикла

| for <name> | | in <exprl> | | while <expr2> | do <statement sequence> od;

Здесь exprl задает список значений, которые будет принимать управляющая переменная name. Цикл будет выполняться, пока не будет исчерпан список и пока выполняется условие, заданное выражением ехрr2. Следующий пример иллюстрирует сказанное.

>

>

>

30. Вложенные циклы и задание с их помощью матриц

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

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

Циклы могут быть вложенными. Это иллюстрирует следующий пример, создающий единичную матрицу на базе заданного массива М

>

>

>

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

>

Другие примеры применения циклов

Размещено на Allbest.ru

...

Подобные документы

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

    курсовая работа [369,3 K], добавлен 13.01.2018

  • Программирование численных методов одномерной оптимизации. Решение одномерных задач оптимизации методами последовательного поиска. Градиентные методы и их применение для оптимизации на ЭВМ математических моделей объектов. Методы нулевого порядка.

    контрольная работа [257,9 K], добавлен 15.01.2009

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

    презентация [3,5 M], добавлен 01.04.2014

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

    реферат [29,6 K], добавлен 23.03.2010

  • Построение и использование математических и алгоритмических моделей для решения линейных оптимизационных задач. Освоение основных приемов работы с инструментом "Поиск решения" среды Microsoft Excel. Ввод системы ограничений и условий оптимизации.

    лабораторная работа [354,7 K], добавлен 21.07.2012

  • Использование объектно-ориентированной методологии при программировании математических процессов. Среда языка программирования Delphi для решения математических задач. Объектно-ориентированные, декларативные и императивные языки программирования.

    дипломная работа [1,8 M], добавлен 14.09.2011

  • Основные особенности создания работоспособных программ по решению математических задач. Рассмотрение и характеристика типовых структурных элементов схемы алгоритма: внутренний цикл, ветвление. Анализ результатов машинного тестирования программы.

    контрольная работа [502,8 K], добавлен 07.01.2013

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

    курсовая работа [80,5 K], добавлен 29.05.2014

  • Создание библиотеки классов имитационного моделирования и реализация алгоритма имитационного моделирования системы массового обслуживания "Модель комиссионного магазина". Использование для разработки среды программирования C++. Словарь предметной области.

    курсовая работа [581,0 K], добавлен 23.01.2013

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

    курсовая работа [382,9 K], добавлен 19.05.2011

  • Обзор средств компьютерного имитационного моделирования по созданию веб-приложения для визуализации имитационных моделей. Система имитационного моделирования AnyLogic, Arena, SimuLab. Серверная, клиентская часть. Модель работы отдела банка и участка цеха.

    дипломная работа [3,3 M], добавлен 25.05.2015

  • Чарлз Бэббидж и его чудесные машины. Ada - название единого языка программирования американских вооруженных сил. Метод разделения математических расчетов. Причастность Ады Лавлейс к разработке многофункционального инструмента для решения прикладных задач.

    статья [628,1 K], добавлен 06.04.2010

  • Основы технологии моделирования Arena. Построение простой имитационной модели. Моделирование работы системы обслуживания покупателей на кассе супермаркета. Построение модели IDEF3. Анализ результатов имитационного моделирования и аналитического решения.

    курсовая работа [659,1 K], добавлен 24.03.2012

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

    курсовая работа [294,6 K], добавлен 15.06.2009

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

    курсовая работа [527,6 K], добавлен 16.08.2012

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

    курсовая работа [178,7 K], добавлен 08.08.2011

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

    статья [208,6 K], добавлен 01.05.2010

  • Характеристика, свойства и возможности программного пакета Maple. Применение аналитических, численных, графических возможностей системы Maple для моделирования физических явлений. Использование графики и анимации в системе Maple в педагогическом процессе.

    курсовая работа [1,5 M], добавлен 12.01.2016

  • Методы языка программирования C#. Алгоритмизация и программирование задач на языке высокого уровня C#. Внутренний цикл, ветвление, внешний цикл, вложенные друг в друга структуры ветвления. Вывод элементов массива на экран. Остальные элементы матрицы.

    курсовая работа [250,2 K], добавлен 27.02.2015

  • Использование вычислительных возможностей программ общего назначения при решении базовых геодезических задач. Решение прямой угловой засечки по формулам Юнга и обратной геодезической задачи. Решение с помощью системы для математических расчетов MATLAB.

    курсовая работа [11,4 M], добавлен 31.03.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.