Как сделать преобразование лапласа в mathcad
Результаты исследований в основном в области расчёта конструкций. Выполнены в порядке развлечения (хобби) на базе моего опыта работы в прошлом. Научная строгость изложения будет обеспечиваться не всегда (лень выполнять рутинную работу). Однако все предложенные алгоритмы проверены на конкретном материале. .
1) Обратное преобразование Лапласа численными методоми. Предлагается алгоритм на основе полученного мною решения. Расчёт сводится к суммированию двойного ряда. Для всех значений аргумента оригинала функции достаточно один раз вычислить значения изображения только в равноотстоящих точках действительной оси. Методика предназначена, в частности, для решения некоторых дифференциальных уравнений при расчёте конструкций на динамические нагрузки. Приводится пример реализации..
Программу обратного преобразования Лапласа по этой же методике на языке Ruby можно скачать по ссылке:
2) С помощью замены одного параметра в приведённом выше решении можно получить формулу обратного преобразования Лапласа по типу квадратурной формулы, коэффициенты которой, в принципе можно табулировать. Расчёт становится предельно простым, но при этом для каждого аргумента оригинала надо заново вычислять значения изображения в точках действительной оси.
3) Применив апроксимирующую функцию, можно для коэффициентов, допускающих табуляцию, не использовать приведённую выше формулу суммирования ряда, а рассчитать эти коэффициенты непосредственно. Поскольку суммируемый ряд знакочередующийся с быстро растущими по абсолютной величине членами, значение N ограничивается погрешностью. Новая методика позволяет обойти эту трудность и сделать расчёт более корректным.
4) Метод, изложенный в предыдущей статье, можно видоизменить. Примем в качестве апроксимирующей функцию, имеющую свободный параметр. (В рассмотренном выше примере таким параметром может быть частота.) При формировании системы линейных уравнений для коэффициентов суммы можно варьировать не аргумент функции, значение которого в этом случае будет равно заданному, а параметр. Тогда снова для получения оригинала при разных значениях аргумента достаточно только раз вычислить значения изображения на действительной оси.
5)Обращение Лапласа указанными выше тремя методами запрограммировано также на языке Ruby. Программы объединены в гем-пакет, есть вывод результата в графиках, приведены примеры. Необходимые инструкции содержаться в комментариях. Ссылка для скачивания
Как уже было сказано, применение команд меню Символика позволяет осуществить символьные преобразования только над тем выражением, в котором находится курсор в момент выполнения команды. Любые другие операторы и вычисления на рабочем листе при этом невидимы для команды, они их игнорирует. В практике, однако, часто бывают случаи, когда необходимо символьно преобразовать выражение, предварительно подставив в него значения констант и уже вычисленных, в том числе символьно, выражений.
Также команды из меню Символика создают на листе выражение, которое остается статично. Если выражение-первоисточник было отредактировано, следует удалить результат преобразования, после чего повторно выполнить команду. Это неудобно.
Как было описано выше, команда Символика – Вычислить – Символьно и оператор символьныч вычислений могут производить основные символьные преобразования выражений. Однако через меню вызывается ряд дополнительных функций, позволяющих осуществлять более узкие преобразования. Такая возможность имеется и при использовании оператора символьных вычислений. Она достигается путем вставки в расчет оператора символьных вычислений с ключевым словом.
Соответствие ключевых слов и команд меню Символика показано в табл. 15.2.
Команда меню – аналог | Ключевое слово | Описание |
Вычислить – Плавающая точка… | float | Вычислить с записью результата в форме десятичной дроби или с плавающей точкой |
Вычислить – Комплексно | complex | Вычислить с записью результата в комплексной форме |
Переменная – Решить | solve | Решить уравнение относительно заданной переменной |
Упростить | simplify | Упростить выражение |
Переменная – Заменить | substitute | Осуществить преобразование, подставив значение переменной |
Множитель | factor | Разложить выражение на множители |
Расширить | expand | Раскрыть скобки в выражении и привести подобные слагаемые, в том числе относительно конкретных переменных |
Многочленные показатели | coeffs | Составить вектор из коэффициентов многочлена при заданной переменной |
Собрать | collect | Записывает выражение как произведение каждой из степеней выбранной переменной на скобку, в которой собраны все ее множители |
Переменная – Заменить по порядку | series | Разлагает выражение в ряд Тейлора или Лорана относительно заданной переменной. По умолчанию строится разложение для переменной, равной 0, однако возможны и другие значения |
Переменная – Обратить в простейшую дробь | parfrac | Записывает выражение относительно заданной переменной в виде суммы элементарных дробей |
Трансформация – Фурье | fourier | Преобразование Фурье выражения относительно заданной переменной |
Трансформация – Лапласа | laplace | Преобразование Лапласа выражения относительно заданной переменной |
Трансформация – Ось Z | ztrans | Z-преобразование выражения относительно заданной переменной |
Трансформация –Обратная Фурье | invfourier | Обратное преобразование Фурье выражения относительно заданной переменной |
Трансформация – Обратная Лапласа | invlaplace | Обратное преобразование Лапласа выражения относительно заданной переменной |
Трансформация – Обратная Ось Z | invztrans | Обратное Z-преобразование выражения относительно заданной переменной |
Матрица – Транспозиция | M T | Транспонирование матрицы |
Матрица – Инверсия | M -1 | Вычисление матрицы, обратной данной |
Матрица – Определитель | |M| | Нахождение определителя матрицы |
имеет смысл и вычисляется корректно.
Как было сказано выше, символьные вычисления через оператор (стрелку) учитывают все присвоения значения переменным, сделанные выше в документе. Однако иногда хочется выполнить преобразования через данный оператор, оставив уже определенную переменную в качестве неизвестной. Чтобы отменить произведенное выше по тексту присваивание, достаточно перед символьным преобразованием записать выражение вида
x:=x,
т.е. присвоить переменной ее же собственное имя.
Если символьное преобразование, выполняемое символьным оператором (с ключевым словом или без) не может быть произведено, Mathcad отображает ошибку (такая же ошибка отображается, если ключевое слово напечатано неправильно, так что будьте внимательны). Однако иногда бывают ситуации, когда Mathcad, таки осуществив преобразование, выдает результат в виде огромного выражения величиной в несколько строк (или десятков строк). Такое поведение программы может быть объяснено тем, что Mathcad по умолчанию рассматривает в качестве области определения каждой из переменных выражения всю комплексную плоскость. На практике такое полное преобразование выражения может быть ненужным.
Примеры вычислений с использованием оператора символьных вычислений и ключевых слов:
Цель работы: Построить переходные процессы в MathCad двумя способами:
а) используя метод обратного проеобразования Лапласа;
б) используя встроенную функцию rkfixed; в) с использованием программ и подпрограмм.
Построим переходные процессы с помощью преобразований Лапласа.
Рис.1. Структурная схема (№8) по заданию.
Построим переходные процессы с помощью встроенной функции rkfixed.
3. Построим переходные процессы с использованием программ и подпрограмм.
Цикл по шагам расчёта
Значение входного воздействия
Значение правых частей
Реализация метода Эйлера
Вывод: в ходе проведенной работы мы научились строить графики с помощью встроенной функции rkfixed и преобразований Лапласа и с помощью использования программ и подпрограмм.
Возможно вопрос идиотский, прошу не пинать, это моя первая работа в Mathcad.
Необходимо рассчитать и построить временные характеристики объекта с помощью системы Mathcad.
Cкрин:
При расчете импульсной функции w(t), с помощью обратного преобразования Лапласа (invlaplace), Mathcad выдает ошибку, что переменная t не определена и следовательно не строится график w(t). Однако при расчете переходной функции h(t) как видно проблем не возникло.
В чем может быть причина?
p.s. Пробовал различные версии Mathcad 2000, Mathcad 11, текущая версия Mathcad - урезанная 15.0 (15.0.0.436 [006041742])
Наверное на дельту ругается. Это, как я понимаю, функция Дирака. Попробуйте заменить её на приближённую \right)\cdot 100>$" />
(если задать больше $" />
, то Mathcad уже неправильно считает интеграл).
У меня на 2000-м все получается.
М.б. стоит попробовать избавиться от индексов?
Читайте также: