Хмельник Соломон Ицкович : другие произведения.

Matlab-программа решения системы линейных дифференциальных уравнений со ступенчатыми и игольчатыми возмущающими воздействиями

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:
Школа кожевенного мастерства: сумки, ремни своими руками
 Ваша оценка:
  • Аннотация:
    В книге [1] описан (в частности) новый метод решения указанных задач. В данной книжке описывается программа для такого решения в системе MATLAB. Более полный вариант книжки и открытые коды этой MATLAB-программы можно приобрести у автора на сайте http://mic34.com/bookrumatlab.htm, позиция 357. С предложениями о дополнительных разработках можно обратиться по адресу solik@netvision.net.il.


Содержание

   1. Введение
   2. Уравнения
   3. Система дифференциальных уравнений второго порядка при ступенчатых воздействиях
   4. Система дифференциальных уравнений первого порядка при ступенчатых воздействиях
   5. Многоступенчатые воздействия
   6. Воздействия в виде функций Дирака
   7. Литература
   8. Программы
  
   1. Введение
   В книге [1] описан (в частности) метод решения системы линейных дифференциальных уравнений со ступенчатыми и игольчатыми (в виде функций Дирака) возмущающими воздействиями. Метод основан на совмещении вариационного исчисления для электрических цепей и принципа максимума Понтрягина.
   Здесь описываются программы решения системы линейных дифференциальных уравнений первого и второго порядков со ступенчатыми и игольчатыми (имеющими вид бесконечно узкого импульса) возмущающими воздействиями. Описываются также тестовые программы. Приводятся открытые коды MATLAB-программ.
   Известные возмущающие воздействия могут быть заданы таблично. Результирующие функции выдаются в виде коэффициентов степенного ряда. Система не обязательно должна быть разрешена относительно старшей производной. Программа дает возможность варьировать длину результирующего степенного полинома, точность и дительность вычислений. Программа разработана в системе MATLAB-6 и код программы открыт.
   С предложениями о дополнительных разработках можно обратиться по адресу solik@netvision.net.il.
  
   2. Уравнения
   Рассматриваются системы уравнений вида

0x01 graphic

  
   3. Система дифференциальных уравнений второго порядка при ступенчатых воздействиях
   В этом случае рассматривается уравнение (1, 3). Для его решения используются следующие М-функци:
   DEjump - основная функция,
   ValueSeries - вычисление значения вектора степенных рядов,
   DifSeries - дифференцирование вектора степенных рядов,
   IntegraSeries - интегрирование вектора степенных рядов,
   errtio - вычисление ошибки в заданный момент.
   Рассмотрим
   function [tio,err,x,x1,x2,er]=...
   DEjump(S,R,M,E,erToler,N)
  

0x01 graphic

  
   В функции используются следующие параметры:
   входные:
   S, М, R, E - см. выше,
   N - максимальное количество членов ряда,
   erToler - минимально допустимая погрешность на конце интервала наблюдения,
   выходные:
   x, х1=x',x2=x'' - см. выше,
   tio=T - интервал наблюдения,
   err - вычисленная погрешность на конце интервала наблюдения,
   er - вектор невязки в уравнении (24), также представленный степенным рядом.
   Расчет ведется итеративно. При этом образуется ряд, размер которого вдвое превышает число итераций. Одновременно вычисляется размер максимального интервала наблюдения (tio), на котором относительная погрешность меньше заданного допустимого значения (erToler).
   При большом N может возникнуть случай, когда величина T^N выходит за пределы разрядной сетки процессора. Это можно обнаружить по тому, что графики функций обрываются до достижения конца интервала наблюдения. В этом случае следует уменьшить значение N.
   Далее приводятся тестовые функции
   testDEJ_1 - решение уравнения (1), где S, R, M, E - скалярные величины. Выдаются графики функций x,х1,x2 и err=S*x+R*x'+M*x''-E.
   testDEJ_2 - решение трех независимых уравнений (1). Выдаются графики трех функций 0x01 graphic
(см. пример 6.3.6 в [1]).
   testDEJ_3 - решение системы трех уравнений (1). Выдаются графики трех функций х1 и трех функций err=S*x+R*x'+M*x''-E, где функции x,х1,x2 подставляются без постоянной (не зависящей от времени) составляющей.
   testDEjump3 - решение системы трех уравнений (1). Выдаются графики трех функций х1.
   testDEjump4 - решение системы трех уравнений (1). Выдаются графики трех функций х1. Графики функций обрываются до достижения конца интервала наблюдения. Это свидетельствует о том, что выбрано очень большое значение N и величина T^N вышла за пределы разрядной сетки процессора.
   testDEJ_127 - решение системы 127 уравнений (1). Выдаются графики трех (выбранных из 127) функций х1.
   testDEJ_255 - решение системы 255 уравнений (1). Выдаются графики трех (выбранных из 255) функций х1.
   testEDJconv - решение уравнения (1), где S, R, M, E - скалярные величины. Выдаются графики функций х1 при двух значениях N=50 и N=100. Пример иллюстрирует вычислительную сходимость на данном интервале наблюдения.
   testEDJconv2 - решение уравнения (1), где S, R, M, E - скалярные величины, причем M<0. Выдаются графики функций х1 при двух значениях N=50 и N=100. Пример иллюстрирует случай, когда решение расходится при сохранении вычислительной сходимости на данном интервале наблюдения.
  
   О переполнении
   При большом N может возникнуть случай, когда величина T^N выходит за пределы разрядной сетки процессора. Это можно обнаружить по тому, что графики функций обрываются до достижения конца интервала наблюдения. В этом случае следует уменьшить значение N (см. testDEjump4).
  
   О сходимости
   Вне зависимости от вида матриц имеет место вычислительная сходимость, которая заключается в том, что на данном интервале наблюдения вид искомых функций практически не зависит от длины ряда (напомним: длину ряда нужно увеличивать только для того, чтобы увеличить интервал наблюдения).
   Однако при плохо определенных матрицах решение расходится - значение функций растет неограниченно. При этом вычислительная сходимость продолжает иметь место. Напомним, что в нашем случае хорошо определенные матрицы - это положительно полуопределенные матрицы 0x01 graphic
и положительно определенная матрица. При 0x01 graphic
решение отсутствует. В следующем разделе это ограничение снимается (см. тесты testEDJconv и testEDJconv2).
  
   4. Система дифференциальных уравнений первого порядка при ступенчатых воздействиях
   В этом случае рассматривается уравнение (2, 3). Для его решения используются указанные выше М-функци ValueSeries, DifSeries, IntegraSeries, errtio. Отличается только основная функция
   function [tio,err,x,x1,er]=...
   DEjumpRC(S,R,E,erToler,N)
  
   Далее приводятся тестовые функции
   testDEJRC_1 - решение уравнения (1), где S, R, E - скалярные величины. Выдаются графики функций х, х1.
   testDEJRC_2 - решение двух независимых уравнений (1). Выдаются графики двух функций х1.
   testDEJRC_3 - решение системы трех уравнений (1). Выдаются графики трех функций х1.
   testDEJ_127 - решение системы 127 уравнений (1). Выдаются графики трех (выбранных из 127) функций х1 (см. пример 6.4.8 в [1]).
  
   5. Многоступенчатые воздействия
   В этом случае рассматривается уравнение (1, 5), где toi>0 - некоторые моменты времени - см., например, фиг. 1.

0x01 graphic

Фиг. 1.

   Для решения этой задачи используются, кроме вышеупомянутых, функция jumpMany для отображения графика ступенчатых воздействий и основная функция
   function [tio,err,t,xt,x1t,x2t] = ...
   DEjumpMany(tjump,jump,pixels,...
   S,R,M,EE,erToler,N)
   В функции используются следующие параметры:
   входные:
   S, V, R, erToler, N - см. выше в описании функции DEjump,
   EЕ - вектор, в котором все компоненты, кроме одной, равны нулю, а ненулевая компонента е = 1,
   jump - вектор скачков напряжения ненулевой компоненты е, jump = [jump(1), jump(2),...,jump(n)],
   tjump - вектор моментов скачка,
   tjump = [t1=0,t2,t3,...,tn,999],
   pixels - количество точек наблюдения на интервале наблюдения,
   выходные:
   tio=T, err - см. выше в описании функции DEjump.
   xt, x1t, x2t - искомые функции,
   t - моменты наблюдения этих функций.
   На фиг. 1 иллюстрируется смысл обозначений некоторых переменных в этой функции. На выходе функции DEjumpMany образуются матрицы значений искомых функций во всех точках наблюдения.
  
   Далее приводятся тестовые функции
   testDEjump - решение системы трех уравнений (1) из примера testDEJ_3 при воздействии прямоугольным импульсом. Выдаются графики трех функций и прямоугольный импульс воздействия длительностью delta.
   testDEjumpNр - решение системы трех уравнений (1) из примера testDEJ_3 при импульсивном воздействии, которое состоит из pulses прямоугольных импульсов длительностью delta. Выдаются графики трех функций и прямоугольный импульс воздействия.
   testDEjump2s - решение системы трех уравнений (1) из примера testDEJ_3. Выполняется суперпозиция трех воздействий, в сумме равных воздействию из примера testDEJ_3. Выдаются графики трех функций.
   testDEJmany - решение системы трех уравнений (1) из примера testDEJ_3 при многократных ступенчатых воздействиях. В тесте выполняется обращение к функции DEjumpMany. Выдаются графики трех функций и трех ступенчатых воздействий (см. пример 6.5.9 в [1]).
  
   6. Воздействия в виде функций Дирака
   В этом случае рассматривается уравнение (2, 4). Для его решения используется основная функция (аналогичная вышеприведенной функции DEjump) основная функция
   function [tio,err,x,x1,er,iter,x000] =...
   DEdirak(S,R,E,erToler,N)
  
   Далее приводятся тестовые функции
   testDirak_1 - решение уравнения при воздействии в виде функций Дирака (см. пример 6.6.9а в [1]).
   testDirak_2 - решение двух уравнений при воздействии в виде функций Дирака (см. пример 6.6.9d в [1] и пример 2 ниже).
   testDirak_3 - решение системы трех уравнений при воздействиях в виде функций Дирака (см. пример 6.6.9с в [1] и пример 1 ниже).
   testDirak4 - решение системы двух уравнений при воздействиях в виде функций Дирака. Здесь используются функции funcDirak4c, funcDirak4, CableDispley2. В тесте сначала результат вычисляется сначала функцией funcDirak4c, а затем функцией funcDirak4; функция CableDispley2 отображает графики искомых функций и по ним вычисляет тот же результат, что и функция funcDirak4c.
   funcDirak4c - решение системы уравнений для testDirak4 непосредственно по формулам нижеприведенного примера 3.
   funcDirak4 - решение системы уравнений для testDirak4 путем обращения к функции Dedirak для вычисления степенных рядов искомых функций.
   CableDispley2 - отображение графиков функций.
  

7. Литература

   1. Хмельник С.И. Вариационный принцип экстремума в электромеханических и электродинамических системах, третья редакция. Publisher by 'MiC', printed in USA, Lulu Inc., ID 1769875. Россия-Израиль, 2010, ISBN 978-0-557-4837-3.
  

8. Программы

Оглавление

   function
   CableDispley2.M
   function
   DEdirak.M
   function
   DEjump.M
   function
   DEjumpMany.M
   function
   DEjumpRC.M
   function
   errtio.M
   function
   funcDirak4.M
   function
   funcDirak4c.M
   function
   jumpMany.M
   function
   DifSeries.M
   function
   IntegraSeries.M
   function
   ValueSeries.M
   function
   testDEJ_1.M
   function
   testDEJ_2.M
   function
   testDEJ_3.M
   function
   testDEJ_127.M
   function
   testDEJ_255.M
   function
   testDEJconv.M
   function
   testDEJconv2.M
   function
   testDEJmany.M
   function
   testDEjump2s.M
   function
   testDEjump2p.M
   function
   testDEjumpNp.M
   function
   testDEjump3.M
   function
   testDEjump4.M
   function
   testDEJRC_1.M
   function
   testDEJRC_2.M
   function
   testDEJRC_3.M
   function
   testDEJRC_127.M
   function
   testDirak_1.M
   function
   testDirak_2.M
   function
   testDirak_3.M
   function
   testDirak4.M
  
  
  
  
  
  
  
  
  
  
  
  
  
   2
  
  
   1
  
  
  
  

 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список

Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"