Python - найти среднее двух комплексных координат - PullRequest
0 голосов
/ 18 июня 2019

Учитывая набор координат, Как найти среднее значение того же самого?

ip = [[100.0 - 11.3*I, 82.8], [100.0 + 11.3*I, 82.8]]

Окончательный результат должен быть в случае комплексных чисел,

op = ((100.0 - 11.3*I + 100.0 + 11.3*I)/2 , (82.8 + 82.8)/2))
op = (100, 82.8)

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Прежде всего, для создания комплексных значений используйте j или J в качестве мнимой единицы (в отличие от i в большинстве книг по математике) и размещайте ее сразу за числовым значением без оператора *:

>>> z = 3 + 4j
>>> z
(3+4j)

Затем вы можете выполнять с ним обычные математические операции:

>>> abs(z)
5.0
>>> z**2
(-7+24j)

, а также те, которые определены для комплексных чисел только из модуля cmath встандартная библиотека .

Для ввода двух комплексных двухмерных векторов правильный синтаксис будет следующим:

ip = [[100.0 - 11.3j, 82.8], [100.0 + 11.3j, 82.8]]

Вы можете индексировать этот список напрямую, чтобы получить отдельные компоненты идобавьте их:

>>> (ip[0][0] + ip[1][0])/2
(100+0j)

Более простой способ вычисления среднего значения - использовать функцию массива .mean из numpy математической библиотеки :

>>> import numpy
>>> ip = numpy.array(ip)
>>> ip.mean(axis=0)
array([100. +0.j,  82.8+0.j])
0 голосов
/ 20 июня 2019

В SymPy векторные операции можно записать компактно, используя матрицы:

>>> ip = [[100.0 - 11.3*I, 82.8], [100.0 + 11.3*I, 82.8]]
>>> a,b=map(Matrix, ip)
>>> (a+b)/2
Matrix([
[100.0],
[ 82.8]])
>>> list(_)
[100.0, 82.8]
...