Как реализовать обратное преобразование Лапласа в javascript?

Я пишу апплет javascript, чтобы другим было легко увидеть, как работает система с пропорциональным контроллером и без него и каковы результаты.

Сначала небольшое объяснение апплета (вы можете пропустить это, если хотите, реальный вопрос в последнем абзаце):

Мне удалось реализовать способ ввода для системы (в частотной области), поэтому апплет может выполнять математику и показывать пользователям предоставленную ими систему. На данный момент апплет вычисляет полюса и нули системы, строит их вместе с корневыми локусами, строит кривую Найквиста системы и строит графики Боде системы.

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

Теперь реальный вопрос: у меня есть функция (передаточная функция) в частотной области. Функция является рациональной функцией, хранящейся в программе в виде двух полиномов (числитель и знаменатель хранятся в виде их коэффициентов). Как лучше всего преобразовать эту функцию во временную область? (обратный Лаплас). Или есть библиотека с открытым исходным кодом, которая уже реализует это. Я уже искал его, но нашел только несколько математических библиотек с более простой математикой.

заранее спасибо


person mathijs    schedule 19.08.2014    source источник
comment
Математические функции Javascript почти такие же, как и в большинстве других языков. Какие операции у вас возникли проблемы?   -  person Barmar    schedule 19.08.2014
comment
что ты пробовал? R-lang может быть более любезным, а затем отправлять JS-запрос с некоторым ответом... но я не знаю!   -  person Pogrindis    schedule 19.08.2014
comment
На данный момент я еще ничего не пробовал. Я ищу в Интернете какое-то четкое объяснение численного алгоритма для обратного Лапласа. Уже нашел несколько методов: метод Уикса, метод Тальбота,... есть опыт работы с одним из них?   -  person mathijs    schedule 19.08.2014
comment
Да, немного, и Формула Поста, но что касается реализации JS, очень сложно дать вам ответ.   -  person Pogrindis    schedule 19.08.2014
comment
Это не обязательно должен быть JS, но он должен быть реализован с помощью JS. Также обратите внимание, что сервер, на котором будет размещен сайт, не мой, поэтому я не могу на него устанавливать тяжелые проги.   -  person mathijs    schedule 19.08.2014
comment
Вход представляет собой рациональную функцию, заданную в довольно символическом формате как отношение двух (комплексных?) полиномов, P(x)/Q(x). Кажется, вы хотите выполнить обратное преобразование Лапласа численно, возможно, используя один из методов, найденных в Интернете. Успех этих численных методов будет частично зависеть от символических свойств P(x)/Q(x). Удовлетворены ли вы тем, что ввод был проверен?   -  person hardmath    schedule 19.08.2014


Ответы (2)


Это достаточно сложная и интересная проблема. Пара идей.

(1) Если решение должно быть строго JS: обратная LT некоторых рациональных функций может быть найдена путем разложения на неполные дроби. У вас есть числовые коэффициенты для многочленов, верно? Вы можете попробовать реализовать разложение на частичные дроби в JS или, может быть, найти его. Сложность здесь в том, что не гарантируется, что вы сможете найти обратный LT через неполные дроби.

(2) Используйте JS в качестве связующего кода и отправьте рациональную функцию другому процессу (работающему, например, Sympy или Maxima) для вычисления обратного LT. Таким образом, вы можете воспользоваться всеми доступными функциями, но потребуется некоторая работа, чтобы подключиться к другому процессу и проанализировать результат. По крайней мере, для Maxima было много проектов, использующих Maxima в качестве вычислительной базы; см.: http://maxima.sourceforge.net/relatedprojects.html

person Robert Dodier    schedule 19.08.2014
comment
Спасибо за идеи! Я посмотрю на это на следующей неделе (на следующей неделе нужно сосредоточиться на чем-то другом). - person mathijs; 19.08.2014

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

Спасибо за ваши предложения ;)

Спросите меня, хотите ли вы взглянуть на код.

person mathijs    schedule 04.09.2014
comment
Рад слышать, что у вас все получилось. Если возможно, вы можете опубликовать ссылку на репозиторий кода или другое место, чтобы другие могли увидеть, как вы решили эту проблему. - person Robert Dodier; 05.09.2014