Как сделать функцию из доступных данных используя цикл for в python - PullRequest
0 голосов
/ 29 января 2019

У меня есть параметрическая функция, как показано ниже:

cr = xxx;
ci = xxx;
pr = xxx;
pi = xxx;
d = xxx;
H = (cr+I ci)/(s-(pr+I pi)) + (cr-I ci)/(s-(pr-I pi)) + d;

Как видно, числитель и знаменатель имеют комплексную сопряженную форму.Теперь у меня есть два списка для полюсов и остатков, как показано ниже:

poles: -1.95307e+09 + -7.78828e+09j, -1.95307e+09 + 7.78828e+09j, -2.68057e+08 + -5.9168e+09j, -2.68057e+08 + 5.9168e+09j, ....



residues: 1.88115e+07 + -4.32942e+07j, 1.88115e+07 + 4.32942e+07j, -251105 + 3.24774e+06j, -251105 + -3.24774e+06j, 2.95035e+06 + -2.80015e+06j, ...

d = 1.1

каждые два соседних элемента в полюсах или остатках находятся в сложной сопряженной форме.

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

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

1 Ответ

0 голосов
/ 30 января 2019

Нам, конечно, не нужны комплексные конъюгаты;мы можем вычислить их сами.Тогда это просто

d=…  # shared
def mkH(c,p):
  return lambda s: c/(s-p)+c.conjugate()/(s-p.conjugate())+d

funcs=map(mkH,residues,poles)

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

...