Вывод функций ЛАЧХ и ЛФЧХ в программе Maxima

Maxima — это консольная математическая программа для аналитических расчетов. Программа имеет версию с графическим интерфейсом, которая называется wxMaxima, ее можно бесплатно скачать с официального сайта.

Допустим имеется передаточная функция W(s) . Нужно получить две функций:

  • L(\omega) — ЛАЧХ (логарифмическая амплитудная частотная характеристика),
  • \Phi(\omega) — ЛФЧХ (логарифмическая фазовая частотная характеритиска),

где: \omega — угловая частота, рад/с.

Пример расчет ЛАЧХ и ЛФЧХ для передаточной функции апериодического звена второго порядка.


/* Передаточная функция */
W(s) := k/((1 + T[3]*s)*(1+T[4]*s)) $

/* Функция десятичного логарифма */
log10(x) := log(x) / log(10) $

print("ЛАЧХ") $
L(%omega) = 20 * log(cabs(W(%i*%omega)));

print("ЛФЧХ") $
%Phi(%omega) = carg(W(%i*%omega));

Вывод программ следующий.

ЛАЧХ

\mathrm{L}\left( \omega\right) =20\cdot \mathrm{log}\left( \frac{\left| k\right| }{\sqrt{{{T}_{3}^{2}}\cdot {{\omega}^{2}}+1}\cdot \sqrt{{{T}_{4}^{2}}\cdot {{\omega}^{2}}+1}}\right)

ЛФЧХ

\Phi\left(\omega\right) =-\mathrm{atan}\left( {{T}_{4}}\cdot \omega\right) -\mathrm{atan}\left( {{T}_{3}}\cdot \omega\right) +\mathrm{atan2}\left( 0,k\right)

В окне программы расчет выглядит следующим образом.

Вывод функций ЛАЧХ и ЛФЧХ в программе Maxima

Для тех, кто никогда не пользовался программой, объясню, что тут происходит. С помощью /* */ можно оставлять комментарии.

Сначала задается передаточная функция W(s) . Затем задается функция десятичного логарифма, потому что, к сожалению, она отсутствует в программе.

  • %i — мнимая единица.
  • %Phi — греческая буква \Phi
  • %omega — греческая буква \omega
  • функция cabs() возвращает модуль комплексного числа.
  • функция carg() возвращает аргумент комплексного числа.
Реклама

maxima + операторный метод расчета электрических цепей

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

В математической программе Maxima для этого дела есть замечательная функция:

partfrac(выражение, переменная)
где:

  • выражение — это выражение, которое следует разложить
  • переменная — это переменная, относительно которой надо сделать разложение

В случае операторного метода переменной будет оператор дифференцирования p.

Рассмотрим пример из Википедии, где половину расчета занимает разложение дроби:

\frac{U}{p(R+pL)}

на:

\frac{U}{Rp} - \frac{UL}{R(R+pL)}

Посмотрим как происходит разложение в Максиме:

(%i1) partfrac( U/(p*(R + p*L)), p );
                                U        L U
(%o1)                          --- - -----------
                               p R   R (R + p L)

Можно было бы не заморачиваться с разложением дроби, а сразу сделать обратное преобразование Лапласа:

(%i1) ilt( U/(p*(R + p*L)), p, t );
                                         t R
                                       - ---
                                          L
                                 U   %e      U
(%o1)                            - - ---------
                                 R       R

Вот так просто.

Последний результат выглядит не очень симпатично, так как я пользовался консольной версией Максимы. Но есть Максима и с графическим интерфейсом — wxMaxima, в которой последний расчет выглядит вот так:


%e — константа, основание натурального логарифма.