wunderwaffe: рабочее (Default)
[personal profile] wunderwaffe
Как известно, комплексные числа (К.Ч.) могут быть представлены в трех записях - z=x+i*y = R*(sin(f)+i*cos(f)) = R*exp(i*f) (алгебраическая, тригонометрическая, показательная)

Здесь f=actan(y/x), R=sqrt(x2+y2) и обратно - x=R*sin(f), y=R*cos(f).

Геометрически комплексное число может быть представлено как вектор на комплексной плоскости, что аналогично представлению вектора в обычных декартовых кооржинатах -

Поставим следущую задачу -

1) у нас есть вектор 11), он повернулся вокруг начала координат на угол f2. Нужно найти его новые координаты (x',y')

И обратную задачу -

2) у нас есть вектор (x1,y1) и он повернулся относительно начала координат так, что его новые координаты cтали равны (x',y') - нужно найти угол поворота f2.

Решенение задачи (1) в общем-то очевидно, она просто для иллюстрации того, как представить вектор в виде комплексного числа.)

Перемножение комплексных чисел в показательной форме таково -

z' = z1*z2 = R1*exp(i*f1)*R1*exp(i*f1) = R1*R2*exp(i(f1+f2))

- и из него видно, что результирующий вектор будет повернут на угол (f1+f2), а его длина будет равной R1*R2.

то есть повороту вектора z = x+i*y = R1*exp(i*f1) на угол f2 соответствует его умножение как комплексного числа (в показательной записи) на комплексное число z2=exp(i*f2) (так как длина вектора не меняется, то R2=1)

С помощью этого знания решим задачу (1) -

а) переведем вектор (x1,y1) в его показательную запись -
z1 = R1*exp(i*f1), где R1 = sqrt(x12+y12), f1=arctan(y1/x1)
б) умножим его на z2=exp(i*f2) -
z' = R1*exp(i*(f1+f2))
в) представим результат в алгебраическом виде -
z' = R1*sin(f1+f2)+i*R1*cos(f1+f2) = x'+i*y'
г) откуда сразу получаются его новые координаты -
x' = R1*sin(f1+f2);
y' = R1*cos(f1+f2)


Теперь решим задачу (2), чуть посложнее. Она обратна задаче (1) - там мы поворачивали вектор на известный угол и нужно было узнать результат - здесь конечный результат известен, но надо найти угол.

В первом случае результат z' как К.Ч. был равен перемножению исходного вектора z1 как К.Ч. на угол поворота z2 как К.Ч. -

zR=z1*z2;

Теперь нам надо найти не z', а z2, поэтому нам надо поделить обе части этого равенства на z1 -

z'/z1=z2.

(Таким образом, поворот в одну сторону соответствует умножению комплексных чисел, в лругую - деление комплексных чисел)

Записываем это равенство в показательном виде (учитывая, что длина вектора не меняется, т.е. R'=R1)

z'/z1 = exp(i*f')/exp(i*f1) = exp(i*(f'-f1)) = exp(i*f2)

Теперь представляем результат в тригонометрическом виде -

z'/z1 = exp(i*f2) = sin(f2)+i*cos(f2)

А теперь в алгебраическом виде -

z'/z1 = (x'+i*y')/(x1+i*y1)

Результат деления по известной формуле преобразуется в комплексное число в алгебраическом виде -

(x'+i*y')/(x1+i*y1) = (x1*x'+y1*y')/(x12+y12)+i*(x1*y'-x'*y1)/(x12+y12) = sin(f2)+i*cos(f2)

откуда сразу можно найти f_2, приравняв реальную и мнимую части -

sin(f2) = (x1*x'+y1*y')/(x12+y12)
cos(f2) = (x1*y'-x'*y1)/(x12+y12)


откуда f_2 можно найти аж тремя путями -

1) f2 = arcsin((x1*x'+y1*y')/(x12+y12))
2) f2 = arccos((x1*y'-x'*y1)/(x12+y12))
3) f2 = arctan((x1*x'+y1*y')/(x1*y'-x'*y1))


Какой из этих путей лучше, кстати?

If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

wunderwaffe: рабочее (Default)
доктор Вандершпигель

April 2022

S M T W T F S
     12
34567 89
1011 12 1314 1516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 8th, 2025 10:04 am
Powered by Dreamwidth Studios