Исследование RC-генератора синусоидальных колебаний
|
|PRAV |Подпрограмма. |Подпрограмма, возвращающая значения |
| | |производных. |
|N |Целый. |Порядок решаемой системы. |
|XN |Вещественный. |Исходный массив начальной точки шага. |
|XK |Вещественный. |Результирующий массив конечной точки шага. |
|F |Вещественный. |Массив возвращаемых подпрограммой РRAV |
| | |производных. |
|TN |Вещественный. |Начальное на шаге значение независимой |
| | |переменной. |
|K |Целый. |Номер переменной. |
|J |Целый. |Номер частичного приращения. |
|T |Вещественный. |Независимая переменная. |
|H |Вещественный. |Задаваемая величина шага. |
|P |Вещественный |Массив размера (4,2), содержащий необходимые |
| | |для вычисления и накопления приращений |
| | |константы (0,.5,.5,1,6,3,3,6) |
|R |Вещественный |Рабочий массив размера (N,3) |
Блок-схема алгоритма изображена на Рисунке 2. Номер переменной записан как
верхний индекс.
В цикле с номерами блоков 2, 3, 4, 5 обнуляются второй и третий столбцы
рабочего массива R.
Внешний цикл с номерами блоков 6 - 18 вычисляет производные в четырех
им формируемых точках и накапливает средневзвешенное значение приращений в
третьем столбце рабочего массива R. Вдоль столбца расположены значения,
соответствующие всем N искомым переменным.
Блок 7 задает в цикле последовательно значения независимой переменной
: TN, TN+0.5H, TN+0.5H, TN+H .Константы 0, 0.5, 0.5 и 1 содержатся в
первом столбце массива Р.
Цикл 8 - 11 записывает в первый столбец рабочего массива значения
переменных для вычисления производных. Для этого к начальному значению
переменной прибавляется сначала нулевое приращение, затем половина
приращения, получаемого на шаге со значением производной в начальной точке,
потом половина приращения, получаемого на шаге с значением производной во
второй точке, и , наконец, полное приращение, получаемое на шаге со
значением производной в третьей точке.
В блоке 12 выполняется обращение к подпрограмме вычисления
производных. Подпрограмме передается значение независимой переменной и
первый столбец рабочего массива, содержащий значения зависимых переменных в
задаваемой точке. Подпрограмма возвращает массив F значений производных.
В цикле 13 - 16 во второй столбец рабочего массива по вычисленным
значениям производных записываются приращения, а в третьем столбце
накапливаются суммы четырех приращений с весовыми коэффициентами 1/6, 1/3,
1/3, 1/6 . Константы 6, 3, 3, 6 для этого хранятся во втором столбце
массива Р.
В цикле 19 - 22 полученные приращения прибавляются к начальной точке
и результат записывается в выходной массив.
В блоке 23 вычисляются производные в конечной точке шага.
3 Блок - схема алгоритма одного шага по методу Рунге - Кутта
[pic]
Рисунок 2
4 Подпрограмма одного шага по методу Рунге-Кутта.
SUBROUTINE SH(TN,H,XN,XK,F,PRAV,N,R)
DIMENSION XN(N),XK(N),F(N),P(4,2),R(N,3)
DATA P/0.,.5,.5,1.,6.,3.,3.,6./
DO 1 K=1,N
R(K,2)=0.
1 R(K,3)=0.
DO 4 J=1,4 !
Начало внешнего цикла определения 4-х приращений
T=TN+P(J,1)*H ! Задание
независимой переменной.
DO 2 K=1,N ! Цикл
задания массива значений зависимых переменных.
2 R(K,1)=XN(K)+P(J,1)*R(K,2)
CALL PRAV(T,R,F,N) ! Вычисление
производных в заданной точке.
DO 3 K=1,N ! Цикл
вычисления и накопления частичных приращений.
R(K,2)=H*F(K)
3 R(K,3)=R(K,3)+R(K,2)/P(J,2)
4 CONTINUE
DO 5 K=1,N
5 XK(K)=XN(K)+R(K,3) ! Вычисление
переменных в конечной точке.
CALL PRAV(TN+H,XK,F,N) ! Вычисление
производных в конечной точке.
RETURN
END
5 Описание алгоритма метода Рунге - Кутта с автоматическим выбором шага
Блок -схема алгоритма приведена на Рисунке 3.
В алгоритме используются следующие идентификаторы
Таблица 5
|Имя |Тип |Назначение |
|PRAV |Подпрограмма|Подпрограмма, возвращающая значения производных. |
| |. | |
|OUT |Подпрограмма|Подпрограмма, составляемая Пользователем для вывода |
| |. |результатов. |
|N |Целый. |Порядок решаемой системы. |
|X |Вещественный|Массив размера (N,4). |
| |. | |
|R |Вещественный|Рабочий массив размера (N,3). |
| |. | |
|F |Вещественный|Массив размера (N,4). |
| |. | |
|TN |Вещественный|Начальное на шаге значение независимой переменной. |
| |. | |
|TK |Вещественный|Конец интервала интегрирования. |
| |. | |
|T |Вещественный|Независимая переменная. |
| |. | |
|HМ |Вещественный|Задаваемая величина максимального шага. |
| |. | |
|E |Вещественный|Задаваемое значение абсолютной погрешности. |
| |. | |
|EH |Вещественный|Погрешность, вычисленная на шаге. |
| |. | |
|IER |Целый. |Выходной код ошибки. |
|H |Вещественный|Текущий шаг. |
| |. | |
|HB |Вещественный|Удвоенный шаг. |
| |. | |
|T |Вещественный|Текущее значение независимой переменной. |
| |. | |
|T1 |Вещественный|T1=T+H |
| |. | |
|T2 |Вещественный|T2=T+2H |
| |. | |
|KP |Целый. |Признак достижения конца интервала интегрирования. |
|KLP |Целый. |Признак вывода последовательно двух вычисленных точек. |
|K |Целый. |Индекс. |
Второй столбец массива Х должен содержать весовые коэффициенты
погрешности, на которые умножаются найденные погрешности каждой
интегральной переменной, чтобы после сложения этих произведений получить
общий критерий погрешности системы и сравнить его с заданной погрешностью.
Во втором столбце они задаются с целью удобства ввода. Первый столбец
массива Х заполняется начальными условиями, а затем , подряд, вводятся
весовые коэффициенты. Алгоритм начинается с переписывания весовых
коэффициентов в четвертый столбец массива F (блоки 2,3). Номера столбцов
обозначены нижним индексом, а номера строк - верхним. После задания
начальных значений параметров (4) вызывается подпрограмма вычисления
производных (5) в начальной точке интервала интегрирования и начальная
точка с производными в ней передается подпрограмме вывода (40). Затем
начинается основной цикл выполнения шагов интегрирования. Задается шаг,
равный максимальному (6), и выполняются шаги из точки Т в точку Т1 и из
точки Т1 в точку Т2. Результаты записываются, соответственно, во второй и
третий столбцы массивов X и F. Затем, для проверки точности выполняется
удвоенный шаг из точки Т в точку Т2. Результаты этого шага записываются в
четвертый столбец массива Х и в первый столбец массива F . В цикле (13,
14) накапливается критерий погрешности ЕН, как сумма взятых с весами
погрешностей по каждому из уравнений. Погрешность каждой переменной
вычисляется как 1/15 модуля разности между значениями этой переменной,
вычисленными с разными шагами. Далее выполняется анализ критерия (15) и в
зависимости от его значения шаг увеличивается, уменьшается или остается
прежним. Если текущая погрешность ЕН не больше заданной Е , то
результаты шага выводятся (25). При этом, если выполнялось два малых шага
(КLР=1), то выводятся и результаты предыдущего шага (23). Так случается в
начале интервала интегрирования и тогда, когда предыдущий шаг оказался
неудачным и из-за большой погрешности величина шага умень
| | скачать работу |
Исследование RC-генератора синусоидальных колебаний |