Численное решение обыкновенных дифференциальных уравнений в среде LabVIEW
Функции численных методов (рис. 3.31) позволяют выполнять численное интегрирование массивов входных данных, рассчитывать значения как самой функции, заданной формулой, так и ее интеграла и производной, а также такие параметры, как предел и длину кривой. В состав палитры входят также функции расчета частных производных, поиска экстремумов двумерной функции и поиска нулей и экстремумов одномерной функции. Набор функций численных методов решения дифференциальных уравнений включает ВП, реализующие методы Эйлера, Рунге-Кутта и Кэш-Капа, а также ВП решения линейного ОДУ n-го порядка и системы линейных ОДУ в численном и символьном виде.
Расчетные алгоритмы
Рассматривается переходный процесс в электрической цепи, состоящей из источника постоянной электродвижущей силы E , резистора с сопротивлением R и конденсатора емкостью C (рис. 5.1). Величины E,R ,C можно задать самостоятельно. Начальное значение напряжения на конденсаторе u(0) принято равным 0. Требуется определить напряжение u(t) и ток в цепи i(t) при t>0 , полагая, что в момент t=0 замыкается ключ К.
На основании второго закона Кирхгофа ток в цепи
откуда после подстановки значения тока получается дифференциальное уравнение для определения переходного процесса
Решение данного дифференциального уравнения проводится с помощью программы LabVIEW, составленной с использованием явного либо неявного метода Эйлера интегрирования дифференциальных уравнений.
Для этого перейдем к конечным приращениям , и определим приращение напряжения на последующей итерации как
для явного метода Эйлера,
для неявного метода Эйлера,
где k — номер шага интегрирования, . Здесь значения приращений
шаг интегрирования . Таким образом, алгоритм явного метода Эйлера для расчета напряжения в переходном режиме имеет вид
в случае неявного метода
Выражая отсюда , получаем алгоритм неявного метода Эйлера
(4)
После определения напряжения ток вычисляется по уравнению (1). Известно, что явный метод Эйлера неустойчив. Действительно, нетрудно видеть, что при больших шагах расчета уравнение (3) дает расходящееся решение — это легко просчитать, задав, например, . Что касается неявного метода Эйлера, то он устойчив, то есть при любом значении даст решение, стремящееся к установившемуся режиму. Так, из уравнения (4) следует, что даже при , стремящемся к бесконечности, стремится к Е. Однако, при больших шагах погрешность вычисления характеристик переходного процесса u(t) и i(t) очень велика. Поэтому в нашей работе шаг расчета должен быть значительно меньше постоянной времени переходного процесса (в нашем случае ). Целесообразно его ориентировочное значение взять примерно на 2 порядка меньше, чем постоянная времени переходного процесса . Количество итераций N примерно должно соответствовать
1. Решение дифференциального уравнения явным методом Эйлера
Построить кривые напряжения u(t) и тока i(t) в цепи рис. 1 с использованием алгоритма явного метода Эйлера. Параметры цепи можно выбрать самостоятельно. Напряжение определяется по уравнению (3), ток - по уравнению (1).
1. Для выполнения работы используется цикл ForLoop. Вызов цикла ForLoop осуществляется через Functions =>Structures =>ForLoop.
2. В цикл нужно добавить регистр сдвига ShiftRegister, который осуществляет передачу результата вычислений из предыдущей операции в последующую, т.е. искомую переменную (и или i). Начальное условие в нашем случае будет нулевое.
Примечание. Для того, чтобы ток и номер операции не обозначались одной и той же буквой, рекомендуется вписать в эту рамку номера итерации букву k инструментом «ввод текста».
3. Внутрь цикла при помощи формульного узла (Functions =>Structures =>FormulaNode) записываются расчетные формулы (3) для расчета напряжения и (1) для расчета тока. Поскольку строятся зависимости тока и напряжения от времени, сюда же следует ввести значение времени
(5)
4. Для наблюдения зависимости напряжения и тока от времени при переходном процессе нужно вызвать два виртуальных двухкоординатных осциллографа (на лицевой панели: Controls =>Graph => XY Graph). Для того, чтобы на вход осциллографа можно было подать две величины - время и напряжение (или ток), применяется кластер (связка), вызываемый на панели блок-схем нажатием RMB на иконку осциллографа и далее ClusterTools =>Bundle. К верхнему входу кластера подводится сигнал t, к нижнему - u(t) или i(t), выход подается на осциллограф.
6. После задания значений ЭДС, сопротивления, емкости, шага расчета и количества операций N программу можно запустить на исполнение и рассчитать переходные процессы в цепи при различных значениях шага расчета в диапазоне примерно от до . При наблюдении переходных процессов на экране виртуального осциллографа нужно обратить внимание на картину процесса в области неустойчивости метода.