close

Вход

Забыли?

вход по аккаунту

?

FreeBASIC13

код для вставкиСкачать
Пособие для начинающих программировать на языке высокого уровня FreeBASIC. Работа состоит из нескольких глав. В главе 13 "Решение дифференциальных уравнений" – продолжение пособия, которое будет интересно для учащихся школ, студентов институтов, а
 1
Евгений Рыжов, инженер
Программирование на языке FreeBASIC
пособие для начинающих
Пособие для начинающих программировать на языке высокого уровня FreeBASIC.
Работа состоит из нескольких глав. В главе 13 "Решение дифференциальных
уравнений" –
продо
лжение пособия, которое будет интересно для учащихся школ,
студентов институтов, а также преподавателей.
Фрагмент 13. Решение дифференциальных уравнений
Пожалуйста, не пугайтесь, если увидите в шапке брошюры цифру "9". Девять -
символ завершенности и вы
сшего умственного и духовного достижения. В христианстве "9" —
ангельское число, ибо в Библии упоминается о девяти ликах ангелов. Число "9" часто считается главным числом нумерологии, со специальным, иногда даже сакральным значением... В брошюре –
никакой мистики нет!
2
Возможное объяснение того факта, что физики используют математику для формулировки законов природы, состоит в том, что физики —
довольно безответственные люди. Именно поэтому, когда физик обнаруживает взаимосвязь между двумя физическими велич
инами, которая напоминает связь, хорошо известную из математики, он немедленно приходит к заключению, что найденная им связь тождественна связи, рассмотренной в математике, просто потому, что он не знает никакой другой. Цель приведенного рассуждения состои
т отнюдь не в том, чтобы опровергнуть обвинение физиков в известной безответственности. Не исключено, что это обвинение и справедливо. Тем не менее важно подчеркнуть, что математическая формулировка результатов наблюдений физика, часто довольно грубых, при
водит в неправдоподобно многочисленных случаях к удивительно точному описанию большого класса явлений. Это обстоятельство показывает, что математический язык следует рассматривать как нечто большее, чем просто язык, на котором мы должны говорить; оно показ
ывает, что математика на самом деле является правильным (подходящим) языком...
Е
. Wigner, The Unreasonable Effectiveness of Mathematics in the Natural Sciences, Comm. Pure and Appl. Math. 131, 1 (1960). Лекция Юджина Вигнера
в честь Рихарда Куранта, прочит
анная 11 мая 1959 в Нью
-
Йоркском университете.
1.
Почтовый ящик.
Уже знакомый нам "по мудрому совету" читатель SS
задает каверзный вопрос:
"
Как правильно называть ту область человеческой деятельности, которая представлена в брошюрах
"
?
Очень интересный
(не без подвоха) вопрос!
Ответ на него потребует не меньших усилий, чем сама эта деятельность, результаты которой публикуются в серии брошюр под общим названием "Фрагменты". Конечно, как автору, приятно было бы считать брошюры хоть немного "научными", нап
ример, связанными с математикой. Представляется такой "диалектический" путь:
От мифа к логосу;
От логоса к преднауке;
От преднауки к науке;
От науки к псевдонауке.
Ответ можно даже превратить в очередную брошюру, пока же для экономии места и времени огран
ичимся третьим пунктом, да и то, применительно к математике...
Думаю, что "математика" появилась после того как Фалес ввел доказательства как необходимый элемент математического знания. Дальнейшее развитие математической науки связано с пифагорейцами, элл
еатами, Платоном и Евклидом. Пифагорейцы пытались объяснить мироустройство через числовые отношения. Мир –
это космос (гармония, порядок), где господствуют числа. Они были первыми, кто пытался не только технически "жонглировать" числами, но и вникать в их сущность. Например: единица –
как обобщающий момент существующих вещей, единица есть то, через что каждое из существующих является единым. Уже в учении пифагорейцев 3
создается возможность возникновения чистой математики, т.е. она как бы получает источник со
бственного творческого саморазвития. Эллеаты (Парменон, Зенид) поставили неожиданную для того времени проблему соотношения конечного и бесконечного, движения и покоя, прерывного и беспрерывного...
Справка:
Фалес (640/624 —
548/545 до н.э.) —
древнегречес
кий философ и математик из Милета (Малая Азия). Представитель ионической натурфилософии и основатель милетской (ионийской) школы, с которой начинается история европейской науки. Традиционно считается основоположником греческой философии (и науки) —
он неиз
менно открывал список "семи мудрецов", заложивших основы греческой культуры и государственности.
Платон не занимался математикой, но считал ее наиболее необходимым точным знанием. Платон, создавая свою теорию, помог математике обрести "сферу чистого разум
а". Он как бы санкционировал дальнейшее отделение математики от насущных практических задач. Но сразу возник вопрос о "непостижимой эффективности математики", который, как мы понимаем, распадается на два главных вопроса
:
почему реальность физическая может быть описана при помощи моделей из реальности математической?
насколько реальны в действительности математические абстракции, используемые физиками для описания этой физической реальности?
Из представленного рисунка с очевидностью следует, что современн
ая математика является очень "своеобразной" наукой
и, по мнению некоторых ученых, она категорически не относится к естественным наукам, но является важнейшим элементом их мышления. Хотя до сих пор бытует определение: "наука" —
сфера человеческой деятельнос
ти, направленная на выработку и теоретическую 4
систематизацию объективных знаний о действительности. Открою маленький секрет –
к публикации этого рисунка подтолкнула проведенная в субботу, 6 апреля 2013 года акция "Тотальный диктант
-
2013"
(по слухам проходи
ла в 177 городах мира, охватив 35 стран). Текст диктанта подготовила израильская писательница Дина Рубина и посвятила его Интернету.
Почему именно она и почему именно эту тему –
для многих осталось загадкой...
В прошлом году
текст для "Тотального диктант
а" написал Захар Прилепин
(настоящее имя Евгений Николаевич Прилепин, род. 7 июля 1975 года). Вот почитайте романа "Санькя" Захара Прилепина он есть на отлично оформленном сайте:
http://www.sankya.ru/
Он же был авто
ром статьи "Письмо товарищу Сталину", первоначально опубликованной 30 июля 2012 года на сайте "Свободная пресса". Статья вызвала огромный резонанс в "интеллектуальной среде", расколов его на два лагеря...
В середине XX века оригинальную классификаци
ю наук предложил В.И.Вернадский
. В зависимости от характера изучаемых объектов он выделял два рода (типа) наук:
1.
науки, объекты (и законы) которых охватывают всю реальность -
как нашу планету и ее биосферу, так и космические просторы. Иначе говоря, это наук
и, объекты которых отвечают основным, общим явлениям реальности;
2.
науки, объекты (и законы) которых свойственны и характерны только для нашей Земли. В соответствии с таким пониманием объектов разных наук мы можем различать в ноосфере (сфера разума) науки, о
бщие для всей реальности (физика, астрономия, химия, математика), и науки о Земле (науки биологические, геологические и гуманитарные).
Логика, по мнению русского ученого, занимает особое положение, поскольку, будучи неразрывно связанной с человеческой мы
слью, она одинаково охватывает все науки -
и гуманитарные, и естественно
-
математические. Все стороны научного знания образуют единую науку, которая находится в бурном развитии, и область, охватываемая ею, все увеличивается.
5
Справка:
Владимир Иванович Вер
надский (1863 -
1945)
—
русский и советский естествоиспытатель, мыслитель и общественный деятель XX века. Академик Императорской Санкт
-
Петербургской академии наук, один из основателей и первый президент Украинской академии наук. Создатель многих научных шк
ол. Один из представителей русского космизма; создатель науки биогеохимии.
Современная классификация наук не блещет оригинальностью, она проводятся по самым различным основаниям (критериям). По предмету и методу познания можно выделить науки о природе -
е
стествознание, об обществе -
обществознание (гуманитарные, социальные науки) и о самом познании, мышлении (логика, гносеология, диалектика, эпистемология и др.). Отдельную группу оставляют технические науки. И, наконец, математика. По своей "удаленности" о
т практики науки можно разделить на два крупных типа: фундаментальные, которые выясняют основные законы и принципы реального мира, в которых нет прямой ориентации на практику, и прикладные разрабатывающие непосредственное применение результатов научного по
знания для решения конкретных производственных и социально
-
практических проблем.
Ясности от всего сказанного выше не добавилось
, поэтому предлагаю считать, что брошюры посвящены "Вычислительной математике", т.е. разделу математики, включающему круг вопрос
ов, связанных с производством разнообразных вычислений. В более узком понимании вычислительная математика —
теория численных методов решения типовых математических задач. Современная вычислительная математика включает в круг своих проблем изучение особенно
стей вычисления с применением компьютеров. На основе вычислительной математики уже образовались новые области естественных наук, например, вычислительная химия, вычислительная биология и так далее.
Вычислительная математика возникла довольно давно. Ещё в Месопотамии были разработаны алгоритмы вычисления квадратного корня. Позже, в эпоху научной революции, вычислительная математика развивалась быстрыми темпами из практических применений параллельно с математическим анализом. XVII и XVIII век стали временем разработки значительного количества численных методов и алгоритмов. Необходимость производить большое количество инженерных вычислений в XIX и XX веках потребовало создания соответствующих приборов. Об этом уже было немного сказано в брошюре "Фрагмент 3. Н
екое техническое устройство". А в брошюре "Фрагмент 4. Алгоритмы вокруг нас" был, правда, вскользь упомянут А.Н.Тихонов. Здесь его уместно вспомнить в связи со статьей "Вычислительная математика" из Большой советской энциклопедии. С ней можно ознакомиться по ссылке:
http://slovari.yandex.ru/~книги/БСЭ/Вычислительная математика/
В "Вычислительной математике" можно выделить следующие три больших раздела
. Первый связан с примене
нием ЭВМ в различных областях научной и практической деятельности и может быть охарактеризован как анализ математических моделей. Второй —
с разработкой методов и алгоритмов решения типовых математических задач, возникающих при исследованиях математических
моделей. Третий раздел связан с вопросом об упрощении взаимоотношений человека с ЭВМ, включая теорию и практику программирования задач для ЭВМ, в том числе автоматизацию программирования задач для ЭВМ.
6
Справка:
Андрей Николаевич Тихонов (1906 -
1993) —
советский математик и геофизик, академик АН СССР, дважды Герой Социалистического Труда. В 1939 в возрасте 33 лет избран членом
-
корреспондентом Академии наук СССР, в 1948 по распоряжению правительства организовал вычислительную лабораторию для расчёта проце
сса взрыва атомной бомбы, выполнил фундаментальные исследования по разработке теории и методике применения электромагнитных полей для изучения внутреннего строения земной коры. Является основоположником крупного направления в асимптотическом анализе —
теор
ии дифференциальных уравнений с малым параметром при старшей производной. Под руководством Тихонова созданы алгоритмы решения многих прикладных задач. В 1956
—
1963 годах совместно с Александром Самарским развита теория однородных разностных схем. В рамках р
абот над проблемами поиска полезных ископаемых создал концепцию обратных и некорректных задач, и разработал методы регуляризации, тем самым стал основателем крупного научного направления, получившего мировое признание.
В сети легко найти интереснейшую кни
гу:
Тихонов А.Н., Арсенин В.Я. Методы решения некорректных задач. Изд. 3
-
е. М., Наука, 1986. 288 с.
Книга посвящена методам построения устойчивых приближенных решений широкого класса некорректно поставленных математических задач. К этому классу задач относ
ится большой круг так называемых обратных задач, к которым приводят проблемы обработки и интерпретации экспериментальных наблюдений. Освещаются вопросы нахождения обобщенных решений обратных задач, так как в классической постановке эти задачи могут не имет
ь решений.
В 1970 Тихонов был инициатором создания в МГУ факультета вычислительной математики и кибернетики, стал первым деканом нового факультета и возглавлял его до 1990, с момента создания факультета заведовал кафедрой вычислительной математики, с 1981
года —
кафедрой математической физики. В 1978, после смерти Мстислава Келдыша, назначен директором Института прикладной математики АН СССР, с 1989 —
почётный директор института. Входил в число четырех академиков (Дородницын А.А., Прохоров А.М., Скрябин Г.
К., Тихонов А.Н.), подписавших открытое письмо "Когда теряют честь и совесть" (опубликовано в газетах "Правда" 2 июля и в газете "Известия" 3 июля 1983) с осуждением Андрея Сахарова.
7
Конечно меня, как металлурга, радуют слова завершающие статью Тихонова "В
ычислительная математика" о необходимости создания многомашинных комплексов включающих машины различных типов, оборудованных устройствами ввода
\
вывода, каналами связи между машинами и пользователем, а зачастую и уникальные физические установки, сложное обо
рудование предприятий. Задача развития вычислительных систем, в частности информационных систем и автоматизированных систем управления, является одной из наиболее актуальных научных проблем. В конце брошюры постараемся вернуться к этой проблеме...
Е
ще нем
ного
об истории перехода от преднауки к науке, в рамках темы брошюры, конечно. Несмотря на отсутствие логических обоснований и неопределенность центрального понятия, дифференциальное и интегральное исчисления позволяли решать целый ряд математических задач
в теоретической физике. Математический анализ дал "новую жизнь" этой древней науке: представления о движении стали отображать дифференциальными уравнениями. Успехи привели к появлению у математиков своего рода "утилитаристкой" идеологии: оправдании нестро
гости новых счислений их практическими успехами. Связанные с этим настроения выразил Даламбер в обращении к современникам: "Идите вперед, уверенность придет к вам позднее!". А мы не торопясь "посетим" нашу традиционную "художественную галерею"
. В этой брош
юре пусть будет представлена картина Сандро Боттичелли "Весна" (что связано с происходящими за окном не по сезону скучными явлениями)...
Справка:
Сандро Боттичелли (Sandro Botticelli, 1445 —
1510) —
прозвище флорентийского художника Алессандро ди Мариано
ди Ванни Филипепи (Alessandro di Mariano di Vanni Filipepi). Боттичелли родился в семье дубильщика Мариано ди Джованни Филипепи и его жены Смеральды в квартале Санта
-
Мария Новелла во Флоренции. Прозвище "Боттичелли" (бочонок) перешло к нему от старшего бр
ата Джованни, который был толстяком.
На создание полотна живописца в его "Allegoria della Primavera" вдохновил, в частности, фрагмент из дидактической поэмы Тита Лукреция Кара "О природе вещей" ("De rerum natura"):
Вот и Весна, и Венера идет, и Венеры к
рылатый
Вестник грядет впереди, и, Зефиру вослед, перед ними
Шествует Флора
-
мать и, цветы на путь рассыпая,
Красками все наполняет и запахом сладким...
Ветры, богиня, бегут пред тобою; с твоим приближеньем
Тучи уходят с небес, земля
-
искусница пышный
Стелет
цветочный ковер, улыбаются волны морские,
И небосвода лазурь сияет разлившимся светом.
В основе сюжета картины "Весна" лежит миф о том, как весенний ветер Зефир силой своей любви превратил нимфу Хлорис в богиню весны и цветения. Композиция картины постро
ена таким образом, что сюжетная линия развивается справа налево. В 8
правом верхнем углу видна летящая фигура с крыльями в развевающемся плаще. Это Зефир, щеки его раздуты, от его стремительного полета склонились деревья -
ветер весны догоняет убегающую Хлор
ис.
"Весна" (Primavera) (1478)
"Весна" была написана Боттичелли по заказу молодого отпрыска семьи Медичи. Искусствоведы считают, что картина должна была укрепить в юноше нравственные идеалы, привитые ему воспитателями. Течение времени и трагическое р
азвитие событий во Флоренции –
смерть Лоренцо Медичи, мученическая казнь Савонаролы, политический и экономический упадок флорентийской буржуазии, первые признаки наступающей церковной Реформации –
способствовали тому, что душевное беспокойство художника на
чало перерастать в тревогу и отчаяние...
9
2.
Введение.
Физические законы, которым подчиняются те или иные явления, записываются в виде математических уравнений, выражающих определенную зависимость между какими
-
то величинами. Часто речь идет о соотношени
и между величинами, изменяющимися с течением времени, например экономичность двигателя, измеряемая расстоянием, которое автомашина может проехать на одном литре горючего, зависит от скорости движения автомашины. Соответствующее уравнение содержит одну или несколько функций и их производных и называется дифференциальным уравнением. (Темп изменения расстояния со временем определяется скоростью; следовательно, скорость -
производная от расстояния; аналогично, ускорение -
производная от скорости, так как ускоре
ние задает темп изменения скорости со временем.) Большое значение, которое имеют дифференциальные уравнения для математики и ее приложений, объясняются тем, что к решению таких уравнений сводится исследование многих физических и технических задач. Дифферен
циальные уравнения играют существенную роль и в других науках, таких, как биология, экономика и электротехника; в действительности, они возникают везде, где есть необходимость количественного (числового) описания явлений (коль скоро окружающий мир изменяет
ся во времени, а условия изменяются от одного места к другому).
Все дифференциальные уравнения можно разделить на обыкновенные (ОДУ), в которые входят только функции (и их производные) от одного аргумента, и уравнения с частными производными (УРЧП), в кот
орых входящие функции зависят от многих переменных. Существуют также стохастические дифференциальные уравнения (СДУ), включающие случайные процессы. Выполняя "программу минимум", будем рассматривать только дифференциальные уравнения первого типа
и соответс
твующие системы дифференциальных уравнений. Кроме того ограничимся только первой из двух стандартных "постановок" задач для дифференциальных уравнений:
задачи с начальными условиями, в которых значения зависимых переменных задаются для одного и того же зн
ачения независимой переменной (задачи Коши);
задачи при наличии условий на значения зависимых переменных, задаваемых для различных значений независимой переменной (краевые задачи).
На сегодня это все подробности...
Не забудьте прочитать очередной прогноз главного футуролога Cisco Дэйва Эванса (Dave Evans, уже приводили его прогноз в брошюре "Фрагмент 5. Некоторые штришки"): "Первый человек, который доживет до 300 лет, уже появился на свет".
http://www.avite.ru/novoe/glavnyiy
-
futurolog
-
cisco
-
pervyiy
-
chelovek
-
kotoryiy
-
dozhivet
-
do
-
300
-
let
-
uzhe
-
poyavilsya
-
na
-
svet.html
Справка:
Cisco Systems, Inc. (также Cisco; читается сиско) —
американская транснациональная компания, разрабатывающая и продающая сетевое оборудование. Стремится представить полный спектр сетевого оборудования, и таким образом предоставить возможность клиенту закупить абсолютно всё необходимое сетевое обору
дование исключительно у Cisco Systems. Штаб
-
квартира компании находится в Сан
-
Хосе, штат Калифорния. Во главе компании длительное время находится президент и генеральный директор Джон Чемберс.
10
3.
Численное решение дифференциальных уравнений.
Все нижесл
едующее представляет собой два блока:
Программа минимум по решению дифференциальных уравнений.
Краткое введение в управление динамическими системами.
3.1.
Программа минимум по решению дифференциальных уравнений.
В рамках сформулированных выше ограничен
ий, "программа минимум" будет представлена пятью подпрограммами на языке FreeBASIC. Это не означает, что их состав не будет впоследствии расширяться. Просто сейчас необходимо получить набор инструментов дающих возможность самостоятельно пробовать варианты решения различных практических задач с использованием представленных подпрограмм и, возможно, оптимизировать тексты подпрограмм.
Большая часть программ написана под впечатлением книги:
Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик, Фортран и Паск
аль.
Томск: МП "РАСКО", 1991. 272 с: ил.
Стр.176: Глава 6. Задача Коши для обыкновенных дифференциальных уравнений
6.1. Типы задач для обыкновенных дифференциальных уравнений
Систему ОДУ часто удается представить в каноническом виде, в так называемой форме
Коши. Простейший алгоритм решения задачи Коши называется методом Эйлера или методом ломаных. Последнее название связано с геометрической интерпретацией процесса...
В качестве дополнительного источника информации можно использовать книгу:
Березин И.С., Жи
дков Н.П. Методы вычислений
, 2 изд., т. 2, М., 1962.
Стр. 259: Глава 9. Приближенные методы решения обыкновенных дифференциальных уравнений.
§ 1. Введение
Обыкновенные дифференциальные уравнения встречаются довольно часто в различных прикладных вопросах. П
ри этом во многих случаях имеют дело с уравнениями, общее решение которых не "выражается в квадратурах". Поэтому возникает необходимость применять те или иные методы, дающие приближенное решение задачи...
3.1.1.
Метод Эйлера.
Метод Эйлера дает сравните
льно низкую точность, так как имеет первый порядок.
Справка: Функции Бесселя в математике —
семейство функций, являющихся каноническими решениями дифференциального уравнения Бесселя. Впервые они были определены швейцарским математиком Даниилом Бернулли, а
названы в честь Фридриха Бесселя. Уравнение Бесселя возникает во время нахождения решений уравнения Лапласа и уравнения Гельмгольца в цилиндрических и сферических координатах. Поэтому функции Бесселя применяются при решении многих задач о распространении волн, статических потенциалах и т.п.
11
Для контроля вычислений ниже приведен фрагмент таблицы значений функции Бесселя первого рода:
X
Y(1)
Y(2)
0.500
0.9384698072408129
-
0.2422684576748739
0.625
0.9047022230027635
-
0.2974875523613260
0.750
0.8642422751
666486
-
0.3492436021748622
0.875
0.8175603610005849
-
0.3969444806508056
1.000
0.7651976865579666
-
0.4400505857449335
1.125
0.7077592621323531
-
0.4780817363768455
2.000
0.2238907791412357
-
0.5767248077568734
3.000
-
0.2600519549019334
-
0.339058958525936
5
4.000
-
0.3971498098638474
0.0660433280235491
' P R O G R A M "Diff1_Euler"
' 20.02.2013
'
--------------------------
-----------------------------------
' Программа решения дифференциальных уравнений
'
-------------------------------------------------------------
' Ординарная переработка программы 6.1В из книги:
' Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик,
' Фортран и Паскаль. Т
омск: МП "РАСКО", 1991. 272 с: ил.
' На примере функции Бесселя (Bessel function).
' P —
порядок функции Бесселя (действительное число);
' H -
шаг
интегрирования
(Step of integration)
#Lang "FB" ' Режим совместимости с FreeBASIC
' Subprogr
amme computation of right parts of equations
Sub RPart(X As Single, P As Single, Y() As Single, F() As Single)
F(1) = Y(2) ' Правые части уравнений
F(2) = ((P/X)^2
-
1)*Y(1) -
Y(2)/X
End Sub
' Subprogramme algorithm Euler's method
Sub Euler
(N As Integer, X As Single, P As Single, H As Single, Y() As Single, F() As Single)
Dim As Integer I
RPart(X, P, Y(), F()) ' Вычисление
правых
частей
For I = 1 To N: Y(I) = Y(I) + H*F(I): Next I
End Sub
'
Dim As Integer N
N = 2
Dim As Single P, X, X0, X9, H, Y(N), Y0(N), F(N)
P = 0 ' порядок функции X0 = 0.500: X9 = 1.125: H = 0.125
Y0(1) = 0.938469807: Y0(2) = -
0.242268458
Open Cons For Output As #2
'Open "Diff.res" For Output As #2
Print #2, " Solution of differential equations of Euler method"
12
Do
Y(1) = Y0(1): Y(2) = Y0(2)
Print #2,: Print #2, Using " Step = ##.#######"; H Print #2, " X Y(1) Y(2)": Print #2,
For X = X0+H To X9 Step H
Euler(N, X, P, H, Y(), F()) ' Подпрограмма интегрирования
Print #2, Using " ##.### ##.####### ##.#######"; X; Y(1); Y(2)
Next X
H = H/2
Loop While H > 0.05
Close #2
Sleep
' Результат выполнения программы:
' Solution of differential equations of Euler method
' Step = 0.1250000
' X Y(1) Y(2)
' 0.625 0.9081863 -
0.3111235
' 0
.750 0.8692958 -
0.3727929
' 0.875 0.8226967 -
0.4281987
' 1.000 0.7691719 -
0.4775110
' 1.125 0.7094830 -
0.5206007
' Step = 0.0625000
' X Y(1) Y(2)
' 0.563 0.9233280 -
0.2740041
' 0.625 0.9062028 -
0.3043117
' 0.688 0.8871833 -
0.3332847
' 0.750 0.8663530 -
0.3609599
' 0.813 0.8437930 -
0.3873408
' 0.875 0.8195843 -
0.4124107
' 0.938 0.7938086 -
0.4361407
' 1.000 0.7665498 -
0.4584949
' 1.063 0.7378938 -
0.4794340
' 1.125 0.7079292 -
0.4989172
3.1.2.
Метод Рунге
-
Кутты второго порядка.
Для уменьшения погрешности метода интегрирования ОДУ, использующего разложение искомого решения в ряд Тейлора, желательно учитывать большее количество членов ряда. Однако при этом возникает необходимость аппрокси
мации производных от правых частей ОДУ...
' P R O G R A M "Diff2_RnKt2"
' 20.02.2013
'
-------------------------------------------------------------
' Программа решения дифференциального уравнения
'
-------------------------------------------------------------
' Ординарная переработка программы из книги:
' Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик,
' Фортран и Паскаль. Томск: МП "РАСКО", 1991. 272 с: ил.
13
' Программа 6.2: Метод Рунге
-
Кутта
' На примере функции Бесселя (Bessel function).
' H -
шаг
интегрирования
(Step of integration)
#Lang "FB" ' Режим совместимости с FreeBASIC
Sub RPart(N As Single, X As Single, P As Single, Y() As Single, F() As Single)
F(1) = Y(2) ' Правые части уравнений
F(2) = ((P/X)^2
-
1)*Y(1) -
Y(2)/X
End Sub
' Subprogramme algorithm Runge and Kutta method
Sub RnKt2(N As Integer, X As Single, P As Single, H As Single, Y() As Single, F() As Single)
Dim As Integer I
Dim As Sin
gle H2, F0(N)
H2 = H/2: RPart(N, X, P, Y(), F())
For I = 1 To N: Y(I) = Y(I) + H*F(I): F0(I) = F(I): Next I
X = X + H: RPart(N, X, P, Y(), F())
For I = 1 To N: Y(I) = Y(I) + H2*(F(I)
-
F0(I)): Next I
End Sub
'
Dim As Integer N
N = 2
Dim As Single P, X, X0, X
9, H, Y(N), Y0(N), F(N)
P = 0 ' порядок функции X0 = 0.500: X9 = 1.125: H = 0.125
Y0(1) = 0.938469807: Y0(2) = -
0.242268458
Open Cons For Output As #2
'Open "Diff.res" For Output As #2
Print #2, " Solution of differential equations of Runge
-
Kutta
-
2 met
hod"
Do
Y(1) = Y0(1): Y(2) = Y0(2)
Print #2,: Print #2, Using " Step = ##.#######"; H Print #2, " X Y(1) Y(2)": Print #2,
For X = X0+H To X9 Step H
RnKt2(N, X, P, H, Y(), F()) ' Подпрограмма интегрирования
Print #2, Using " ##.### ##.#
###### ##.#######"; X; Y(1); Y(2)
Next X
H = H/2
Loop While H > 0.05
Close #2
Sleep
' Результат выполнения программы:
' Solution of differential equations of Runge
-
Kutta
-
2 method
' Step = 0.1250000
' X Y(1) Y(2)
' 0.625 0.9038828 -
0.3075306
' 0.750 0.8615833 -
0.3661101
' 0.875 0.8123573 -
0.4184529
' 1.000 0.7569733 -
0.4645922
' 1.125 0.6962118 -
0.5043939
14
' Step = 0.0625000
' X Y(1) Y(2)
' 0.563 0.9223363 -
0.2732901
' 0.625 0.9043083 -
0.302
9375
' 0.688 0.8844690 -
0.3312653
' 0.750 0.8629001 -
0.3582896
' 0.813 0.8396829 -
0.3840028
' 0.875 0.8148999 -
0.4083835
' 0.938 0.7886351 -
0.4314015
' 1.000 0.7609748 -
0.4530224
' 1.063 0.7320074 -
0.4732094
' 1.125 0.7018237
-
0.4919260
3.1.3.
Метод Рунге
-
Кутты четвертого порядка.
Для построения вычислительных схем методов Рунге
-
Кутты четвертого порядка в тейлоровском разложении искомого решения учитываются члены, содержащие степени шага интегрирования до четвертой включи
тельно...
' P R O G R A M "Diff3_RnKt4"
' 20.02.2013
'
-------------------------------------------------------------
' Программа решения дифференциального уравнения
'
-------------------------------
------------------------------
' Ординарная переработка программы из книги:
' Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик,
' Фортран и Паскаль. Томск: МП "РАСКО", 1991. 272 с: ил.
' Программа 6.4: Метод Рунге
-
Кутты (Runge and Kut
ta methods)
' На примере функции Бесселя (Bessel function).
#Lang "FB" ' Режим совместимости с FreeBASIC
' Подпрограмма
-
функция вычисления правых частей
Sub RPart(N As Single, X As Single, P As Single, Y() As Single, F() As Single)
F(1) = Y(2) ' Правые части уравнений
F(2) = ((P/X)^2
-
1)*Y(1) -
Y(2)/X
End Sub
' Subprogramme algorithm Runge and Kutta method
Sub RnKt4(N As Integer, X As Single, P As Single, H As Single, Y() As Single, F() As Single)
Dim As Integer I, J
Dim As Single H1
, H2, X0, Y0(N), Y1(N), Q
H1 = 0: H2 = H/2: X0 = X ' Метод Рунге
-
Кутты 4
-
го порядка
For I = 1 To N: Y0(I) = Y(I): Y1(I) = Y(I): Next I
For J = 1 To 4
X = X0 + H1: RPart(N, X, P, Y(), F()) ' Вычисление
правых
частей
H1 = H2: If J = 3 Then H1 = H
F
or I = 1 To N: Q = H1*F(I): Y(I) = Y0(I) + Q
If J = 2 Then Q = 2*Q
15
Y1(I) = Y1(I) + Q/3
Next I
Next J
For I = 1 To N: Y(I) = Y1(I): Next I
End Sub
'
' Основной модуль программы
Dim As Integer N = 2
N = 2 ' порядок
системы
Dim As Single P, X, X0
, X9, H, Y(N), Y0(N), F(N)
P = 0 ' порядок функции X0 = 0.500: X9 = 1.125: H = 0.125
Y0(1) = 0.938469807: Y0(2) = -
0.242268458
Open Cons For Output As #2
'Open "Diff.res" For Output As #2
Print #2, " Solution of differential equations of Runge
-
Kutta
-
4 method"
Do
Y(1) = Y0(1): Y(2) = Y0(2)
Print #2,: Print #2, Using " Step = ##.#######"; H Print #2, " X Y(1) Y(2)": Print #2,
For X = X0+H To X9 Step H
RnKt4(N, X, P, H, Y(), F()) ' Подпрограмма интегрирования
Print #2, Using " ##.### #
#.####### ##.#######"; X; Y(1); Y(2)
Next X
H = H/2
Loop While H > 0.05
Close #2
Sleep
' Результат выполнения программы:
' Solution of differential equations of Runge
-
Kutta
-
4 method
' Step = 0.1250000
' X Y(1) Y(2)
' 0.625 0.904037
5 -
0.3074689
' 0.750 0.8618775 -
0.3660391
' 0.875 0.8127855 -
0.4184090
' 1.000 0.7575323 -
0.4646045
' 1.125 0.6968974 -
0.5044870
' Step = 0.0625000
' X Y(1) Y(2)
' 0.563 0.9223514 -
0.2732859
' 0.625 0.9043376 -
0.
3029318
' 0.688 0.8845124 -
0.3312600
' 0.750 0.8629572 -
0.3582864
' 0.813 0.8397539 -
0.3840033
' 0.875 0.8149846 -
0.4083891
' 0.938 0.7887337 -
0.4314135
' 1.000 0.7610871 -
0.4530420
' 1.063 0.7321333 -
0.4732380
' 1.125 0.7019
629 -
0.4919645
16
3.1.4.
Метод Рунге
-
Кутты
-
Мерсона.
Мерсон предложил модификацию метода Рунге
-
Кутты четвертого порядка, позволяющую оценивать погрешность на каждом шаге и принимать решение об изменении шага... ' P R O G R A M "Diff4_RnKtM"
' 20.03.2013
'
-------------------------------------------------------------
' Метод Рунге
-
Кутты
-
Мерсона четвертого порядка
'
-------------------------------------------------------------
' Ординарная перераб
отка программы из книги:
' Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик,
' Фортран и Паскаль. Томск: МП "РАСКО", 1991. 272 с: ил.
' Программа 6.5: Метод Рунге
-
Кутты
-
Мерсона
' На примере функции Бесселя (Bessel function).
#Lang "FB
" ' Режим совместимости с FreeBASIC
' Подпрограмма вычисления правых частей
Sub RPart(N As Single, X As Single, P As Single, Y() As Single, F() As Single)
F(1) = Y(2) ' Правые части уравнений
F(2) = ((P/X)^2
-
1)*Y(1) -
Y(2)/X
End Sub
'
S
ub RnKtM(N As Integer, X As Single, H As Single, E As Single, Y() As Single, F() As Single, P As Single)
Dim As Integer I
Dim As Single X1, H3, H4, Z(N), F0(N), K1(N), K3(N), R, A
X1 = X
RPart(N, X, P, Y(), F())
For I = 1 To N: Z(I) = Y(I): F0(I) = F(I): N
ext I
Do
H3 = H/3: H4 = 4*H3
For I = 1 To N: K1(I) = H3*F0(I): Y(I) = Z(I)+K1(I): Next I
X = X1 + H3
RPart(N, X, P, Y(), F())
For I = 1 To N: Y(I) = Z(I) + (K1(I) + H3*F(I))/2: Next I
RPart(N, X, P, Y(), F())
For I = 1 To N
K3(I) = H*F(I): Y(I) = Z(I) + 0.
375*(K1(I) + K3(I))
Next I
X = X1 + H/2
RPart(N, X, P, Y(), F())
For I = 1 To N
K1(I) = K1(I) + H4*F(I): Y(I) = Z(I) + 1.5*(K1(I) -
K3(I))
Next I
R = 0: X = X1 + H
RPart(N, X, P, Y(), F())
For I = 1 To N
A = H3*F(I): Y(I) = Z(I) + (K1(I) + A)/2
A = 2*K1(I)
-
3*K3(I) -
A: If Y(I) <> 0 Then A = A/Y(I)
17
If Abs(A) > R Then R = Abs(A)
Next I
If 0.1*R <= E Then Exit Do
H = H/2
Loop
If 32*R < E Then H = 2*H
End Sub
' Основной модуль программы
Dim As Integer N
N = 2 ' Порядок системы уравнений
Dim As Single X, X
0, X1, X9, Y0(N), Y(N), F(N), H, E, P
P = 0 ' порядок функции
X0 = 0.500: X9 = 1.125: H = 0.125 ' интервал аргумента, шаг вывода
Y0(1) = 0.938469807: Y0(2) = -
0.242268458 ' в точке X = 0.5!
Open Cons For Output As #2
'Open "Diff.res" For Output A
s #2
E = 0.0001 ' допустимая
погрешность
Print #2, " Solution of differential equations of Runge
-
Kutta
-
Merson method"
Y(1) = Y0(1): Y(2) = Y0(2)
Print #2, " X Y(1) Y(2)": Print #2,
For X1 = X0+H To X9 Step H
X = X1
-
H
RnKtM(N, X, H, E, Y
(), F(), P) ' Подпрограмма интегрирования
Print #2, Using " ##.### ##.####### ##.#######"; X1; Y(1); Y(2)
Next X1
Close #2
Sleep
' Результаты вычисления по программе:
' Solution of differential equations of Runge
-
Kutta
-
Merson method
' X Y(1) Y(2)
' 0.625 0.9047022 -
0.2974876
' 0.750 0.8642423 -
0.3492436
' 0.875 0.8175604 -
0.3969445
' 1.000 0.7651978 -
0.4400506
' 1.125 0.7077593 -
0.4780818
3.1.5.
Метод Решения дифференциального уравнения 2
-
ого порядка.
Если задача решения дифференциального уравнения второго порядка сформулирована не в каноническом виде, т.е. в виде системы уравнений первого порядка, а в виде уравнения записанного относительно старшей производной, то возможно использование программы, приведенной в кн
иге:
Жермен
-
Лакур П., Жорж П. Л., Пистр Ф., Безье П. Математика и САПР. Книга 2. М., Мир, 1989. 264 с.
Часть 3. Вычислительные методы. Глава 2. Численные методы.
Текст программы на языке FreeBASIC приведен ниже.
18
' P R O G R A M "Diff5_DIF2"
' 20.03.2013
'
-------------------------------------------------------------
' Решения дифференциального уравнения 2
-
ого порядка
'
-------------------------------------------------------------
' Ординарная пере
работка программы из книги:
' Математика и САПР, кн.2, М., Мир, 1989, 264 с., ил.
' Уравнение вида y" = f(x, y, y') (стр.23)
' Используется подпрограмма DIF2, которая использует
' подрограмму
-
функцию FUN для вычисления значения Y".
#Lang
"FB" ' Режим совместимости с FreeBASIC
' Подпрограмма
-
функция вычисления значения производной Y"
Const Pi As Single = 3.1415926536 ' видно
всем
модулям
!
Function FUN(X As Single, Y As Single, YP As Single) As Single
Dim As Single Omega, OM2
Omega = 2*
Pi
OM2 = Omega*Omega
FUN = -
OM2*Y
End Function
'
Sub DIF2(ByRef X As Single, ByRef Y As Single, ByRef YP As Single, ByRef H As Single)
' Решение дифференциального уравнения второго порядка
' Используется подпрограмма
-
функция FUN вычисления Y" = F(X, Y, Y')
'
Dim As Single A, T, YS, YS1, Y1, YP1
A = 1/6: T = 1/2 ' погрешность пятого порядка
YS = FUN(X, Y, YP) ' вторая производная (n)
YS1 = YS ' вторая производная (n+1)
Y1 = Y + H*YP +0.5*H*H*(A*YS1 + (1 -
A
)*YS)
YP1 = YP + H*(T*YS1 + (1 -
T)*YS)
YS1 = FUN(X+H, Y1, YP1) ' вторая производная (n+1)
Y1 = Y + H*YP +0.5*H*H*(A*YS1 + (1 -
A)*YS)
YP1 = YP + H*(T*YS1 + (1 -
T)*YS)
X = X + H ' новая исходная точка
Y = Y1 ' новое значение функции
YP = YP1 ' новое значение производной
End Sub
'
Dim As Integer I
Dim As Single H, X, Y, YP, Omega, V, E
Dim As String F = " ##.#### ##.###### ##.###### ##.####^^^^"
'
Open Cons For Output As #2
'Open "Diff.res" For Output As #2
H = Pi/80 ' величина приращения Cos(Pi/2) = 0!
X = 0 ' начальное значение аргумента
Y = 1 ' начальное значение функции
YP = 0 ' начальное значение производной
Omega = 2*Pi ' константа для про
верочной формулы
19
Print #2, " Solution of differential equation of the second order"
Print #2, " X Y V E"
Print #2,
'
For I = 0 To 20
V = Cos(Omega*X) ' точное
значение
Y
E = Abs((V -
Y)/V) ' ошибка вычисления
Print #2,
Using F; X; Y; V; E
DIF2 (X, Y, YP, H) ' вызов подпрограммы
Next I
'
Close #2
Sleep
' Solution of differential equation of the second order
' X Y V E
' 0.0000 1.000000 1.000000 0.0000E+00
' 0.0393 0.969714 0.969714 3.0733E
-
07
' 0.0785 0.880696 0.880690 6.7003E
-
06
' 0.1178 0.738345 0.738320 3.4472E
-
05
' 0.1571 0.551294 0.551228 1.1959E
-
04
' 0.1963 0.330879 0.330748 3.9782E
-
04
' 0.2356 0.090456 0.090233 2.4775E
-
0
3
' 0.2749 -
0.155409 -
0.155748 2.1770E
-
03
' 0.3142 -
0.391822 -
0.392294 1.2034E
-
03
' 0.3534 -
0.604466 -
0.605079 1.0127E
-
03
' 0.3927 -
0.780463 -
0.781212 9.5845E
-
04
' 0.4320 -
0.909159 -
0.910025 9.5168E
-
04
' 0.4712 -
0.9827
66 -
0.983716 9.6583E
-
04
' 0.5105 -
0.996834 -
0.997821 9.8951E
-
04
' 0.5498 -
0.950519 -
0.951485 1.0156E
-
03
' 0.5890 -
0.846636 -
0.847515 1.0370E
-
03
' 0.6283 -
0.691488 -
0.692210 1.0426E
-
03
' 0.6676 -
0.494479 -
0.494975 1.00
27E
-
03
' 0.7069 -
0.267548 -
0.267758 7.8491E
-
04
' 0.7461 -
0.024447 -
0.024323 5.0964E
-
03
' 0.7854 0.220097 0.220585 2.2130E
-
03
20
3.2.
Краткое введение в управление динамическими системами.
Динамическая система (в нашем случае –
мате
матический объект), это совокупность звеньев соответствующая реальным физическим, химическим, биологическим и другим системам, эволюция во времени, которых на любом интервале времени однозначно определяется начальным состоянием. Таким математическим объект
ом может быть система автономных дифференциальных уравнений. Эволюцию динамической системы можно наблюдать в пространстве состояний системы. Дифференциальные уравнения решаются аналитически в явном виде редко. Использование ЭВМ дает приближенное решение ди
фференциальных уравнений на конечном временном отрезке, что не позволяет понять поведение фазовых траекторий в целом. Поэтому важную роль приобретают методы качественного исследования дифференциальных уравнений.
Ответ на вопрос о том, какие режимы поведен
ия могут устанавливаться в данной системе, можно получить из так называемого фазового портрета системы
–
совокупности всех ее траекторий, изображенных в пространстве фазовых переменных (фазовом пространстве). Среди этих траекторий имеется некоторое число осн
овных, которые и определяют качественные свойства системы. К ним относятся прежде всего точки равновесия, отвечающие стационарным режимам системы, и замкнутые траектории (предельные циклы), отвечающие режимам периодических колебаний. Будет ли режим устойчи
в или нет, можно судить по поведению соседних траекторий: устойчивое равновесие или цикл притягивает все близкие траектории, неустойчивое отталкивает хотя бы некоторые из них. Таким образом, "фазовая плоскость, разбитая на траектории, дает легко обозримый "портрет" динамической системы, она дает возможность сразу, одним взглядом охватить всю совокупность движений, могущих возникнуть при всевозможных начальных условиях". (Андронов А.А., Витт А.А., Хайкин С.Э.Теория колебаний).
На рубеже XVIII
-
XIX веков в эп
оху промышленного переворота в Европе начинается новый этап развития автоматики, связанный с внедрением ее в промышленность. 1765 год знаменуется постройкой регулятора уровня котла паровой машины И.И.Ползунова. В 1784 году появляется центробежный регулятор
скорости паровой машины Уатта. В это время формируется ряд важных принципов автоматики: принцип регулирования по отклонению Ползунова
-
Уатта и принцип регулирования по нагрузке Понселе. Первый из них развился в концепцию обратной связи, второй -
в теорию и
нвариантности.
Задача синтеза систем управления является одной из важнейших в теории управления. Среди многочисленных подходов к решению поставленной проблемы рассмотрим метод, использующий результаты линейной алгебры, а именно: синтез на основе модальног
о управления. Модальное управление (синтез модальных регуляторов) можно определить как задачу управления, в которой изменяются моды (собственные числа матрицы объекта) с целью достижения желаемого качества управления...
Далее изложение следует тексту книг
и:
Кузовков Н.Т. Модальное управление и наблюдающие устройства. М., 1976. 184 с.
В книге изложены методы обеспечения желаемого расположения корней замкнутой системы, образованной многомерным линейным объектом и регулятором, выходной 21
сигнал которого –
линей
ная комбинация переменных состояния объекта и их интегралов (модальное управление). Рассмотрены наблюдающие устройства детерминированных и стохастических объектов, восстанавливающие по измеряемой части вектора состояния весь этот вектор, что необходимо для
свободного управления корнями Указаны способы оценки внешних возмущений, не поддающихся прямому измерению, и схемы самонастраивающихся устройств, определяющих не только вектор состояния, но и параметры объекта.
Стр. 5: 1.1. Метод стандартных коэффициенто
в.
Помещение всех корней (полюсов) замкнутой системы в любые наперед выбранные положения составляют предмет интенсивно разрабатываемой теории, называемой теорией модального управления. Происхождение термина "модальное управление" можно объяснить тем, что к
орням соответствуют составляющие свободного движения системы, называемые иногда модами.
Вы, наверное, еще не забыли рисунок упрощенной схемы замкнутой системы управления, приведенный в брошюре "Фрагмент 11" на странице 15. Вот он и пригодился. На рисунке были введены следующие обозначения:
X(t) –
выход управляемого объекта;
Y(t) –
желаемое значение выхода объекта (задание);
t -
свободный аргумент –
физическое время.
Предполагается, что все звенья системы и сама система могут быть описаны обыкновенным л
инейным дифференциальным уравнением относительно выходной и входной переменных, как функций времени t
(основная гипотеза классической Теории автоматического управления). Если это не так, уравнение может быть линеаризовано вблизи выбра
нной рабочей точки. Дифференциальное уравнение имеет вид:
u
b
...
u
dt
d
b
u
dt
d
b
x
a
x
dt
d
a
...
x
dt
d
a
x
dt
d
a
m
1
m
1
m
1
m
m
0
n
1
n
1
n
1
n
1
n
n
0
Здесь
)
t
(
x
и )
t
(
u
-
выходной и входной сигналы динамического звена;
i
a
и j
b
-
постоянные коэ
ффициенты (действительные числа).
Как правило, предполагается, что m
n
и 0
a
0
.
Можно ввести обозначение:
)
p
(
A
)
p
(
B
a
...
p
a
p
a
b
...
p
b
p
b
)
p
(
W
n
1
n
1
n
0
m
1
m
1
m
0
где функция )
p
(
W
, равная отношению двух полиномов, называется передато
чной функцией звена
, а уравнение:
0
a
...
p
a
p
a
)
p
(
A
n
1
n
1
n
0
являющееся характеристическим уравнением дифференциального уравнения, называется характеристическим полиномом звена.
В
брошюре "Фрагмент 8. Решение нелинейных уравнений" приведена программа "PoliRo
ot.bas"
нахождение комплексных корней действительного полинома методом Берстоу
-
Хичкока.
Определим корни для "стандартных" характеристических уравнений (здесь рассмотрен случай n
= 3)
.
22
Чтобы обеспечить "оптимальное" протекание реакции могут быть предло
жены различные распределения корней характеристического уравнения системы:
a
0
a
1
a
2
a
3
1.00
3.00
3.00
1.00
Re
Im
-
1.000
0.000
-
1.000
0.000
-
1.000
0.000
1.00
2.00
2.00
1.00
Re
Im
-
1.000
0.000
-
0.500
-
0.866
-
0.500
0.866
1.00
1.00
2.00
1.00
Re
Im
-
0.570
0.000
-
0.215
-
1.307
-
0.215
1.307
1.00
1.75
2.15
1.00
Re
Im
-
0.708
0.000
-
0.521
-
1.068
-
0.521
1.068
Вид расположения корней характеристических полиномов
далее будем называть
:
а) "Биномиальн
ый
",
б) "Баттерворта",
в) "Квадратичн
ый"
,
г) "Ин
тегральн
ый
".
23
24
' P R O G R A M "Diff6_System"
' 01.04.2013
'
-------------------------------------------------------------
' Синтез системы управления (Модальные регуляторы)
'
-----------------------
--------------------------------------
' Книга: Кузовков Н.Т. Модальное управление...
' Используется подпрограмма Рунге
-
Кутты
-
Мерсона.
' X(t) -
выход управляемого объекта (системы)
' U(t) -
возмущение (задание)
' t -
время -
свободный аргумент
'
#Lang "FB" ' Режим совместимости с FreeBASIC
Common Shared P() As Single ' параметры
видны
всем
модулям
!
' Подпрограмма вычисления правых частей уравнений
Sub RPart(N As Single, t As Single, L As Integer, X() As Single, Xp() As Si
ngle)
' Внешнее воздействие U = P(L,0)
Xp(1) = X(2) ' Правые части уравнений
Xp(2) = X(3)
Xp(3) = P(L,0)
-
P(L,1)*X(3)
-
P(L,2)*X(2)
-
X(1)
End Sub
'
Sub RnKtM(N As Integer, t As Single, dt As Single, E As Singl
e, X() As Single, Xp() As Single, L As Single)
Dim As Integer I
Dim As Single t1, dt3, dt4, Z(N), Xp0(N), K1(N), K3(N), R, A
t1 = t
RPart(N, t, L, X(), Xp())
For I = 1 To N: Z(I) = X(I): Xp0(I) = Xp(I): Next I
Do
dt3 = dt/3: dt4 = 4*dt3
For I = 1 To N: K1(
I) = dt3*Xp0(I): X(I) = Z(I)+K1(I): Next I
t = t1 + dt3
RPart(N, t, L, X(), Xp())
For I = 1 To N: X(I) = Z(I) + (K1(I) + dt3*Xp(I))/2: Next I
RPart(N, t, L, X(), Xp())
For I = 1 To N
K3(I) = dt*Xp(I): X(I) = Z(I) + 0.375*(K1(I) + K3(I))
Next I
t = t1 + dt/
2
RPart(N, t, L, X(), Xp())
For I = 1 To N
K1(I) = K1(I) + dt4*Xp(I): X(I) = Z(I) + 1.5*(K1(I) -
K3(I))
Next I
R = 0: t = t1 + dt
RPart(N, t, L, X(), Xp())
For I = 1 To N
A = dt3*Xp(I): X(I) = Z(I) + (K1(I) + A)/2
A = 2*K1(I) -
3*K3(I) -
A: If X(I) <> 0 Th
en A = A/X(I)
If Abs(A) > R Then R = Abs(A)
Next I
If 0.1*R <= E Then Exit Do
25
dt = dt/2
Loop
If 32*R < E Then dt = 2*dt
End Sub
' Основной модуль программы
Dim As Integer N, L, M
N = 3: L = 4: M = 2 ' Порядок системы, вариант, номер
Dim As Single t, t0, t
1, t9, X0(N), X(N), Xp(N), dt, E, P(L,M)
Dim As Single Xmin, Xmax
' Варианты стандартных форм:
'1)Биномиальные, 2)Баттерворта, 3)Квадратичного 4)Интегральные
P(1,0) = 1.0: P(2,0) = 1.0: P(3,0) = 1.0: P(4,0) = 1.00 ' величина скачка
P(1,1) = 3.0: P(2,1) = 2
.0: P(3,1) = 1.0: P(4,1) = 1.75 ' первый параметр
P(1,2) = 3.0: P(2,2) = 2.0: P(3,2) = 2.0: P(4,2) = 2.15 ' второй параметр
For L = 1 To 4 ' просмотреть 4
-
варианта
t0 = 0.0: t9 = 20: dt = 0.125 ' интервал аргумента, шаг вывода
X0(1) = 0: X0(2) = 0 ' Начальные значения
E = 0.0001 ' допустимая погрешность
' Восстановление исходных данных
X(1) = X0(1): X(2) = X0(2)
Xmin = 0.0: Xmax = 2.0
' Построение графика переходного процесса
' Вывод рабочего поля
Screen 12 ' Графический экран 640x480
View (1, 1)
-
(478, 478), , 15 ' Квадратное "физическое" окно
Window (t0, Xmin)
-
(t9, Xmax) ' "Логическое" окно вывода
Line (t0, P(L,0))
-
(t9, P(L,0)), 7, , &HAAAA ' Линия оси t
' Вывод точек двух графиков
For t1 = t0+dt To t9 S
tep dt
t = t1
-
dt
RnKtM(N, t, dt, E, X(), Xp(), L) ' Подпрограмма интегрирования
PSet(t1, X(1)), 13 ' Вывод точек графика величины (красн)
PSet(t1, X(2)+1), 11 ' Вывод точек графика производной (зелен)
Next t1
Sleep
Next L
End
Конечно, материал
этой главы требует более детального рассмотрения. Например, представляют интерес следующие вопросы:
идентификация параметров моделей реальных технологических процессов;
реакция системы на всевозможные возмущающие сигналы;
разработка алгоритмов расчета пар
аметров стандартных регуляторов.
Но сегодня лимит времени и объема брошюры исчерпан!
26
На этом позвольте закруглиться.
До новых встреч!
Пишите: eugene_r@mail.ru
Документ
Категория
Информатика
Просмотров
138
Размер файла
831 Кб
Теги
алгоритм, программа, freebasic, дифференциальное уравнение
1/--страниц
Пожаловаться на содержимое документа