кто-нибудь в курсе, есть ли классический вариант возведения в спепень выражения вида:
(a+ib)^n
(комплексного числа.)
Мне надо получить, например, (a+ib)^2=a^2+2iab+(ib)^2=a^2+2iab-b^2;
максимальное n=10.
Конечно, можно записать многочлен для каждой степени (и это оправдано с точки зрения производительности), но хотелось бы универсализма. А вдруг n=100, в ручную возводить - охренеешь.
возведение в степень
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
- SergeyS
- Сообщения: 196
- Зарегистрирован: 21 ноя 2006, 17:12
- Откуда: Хакасия, Абакан
- Контактная информация:
реализуй операцию умножения двух комплексных чисел, а потом разложи свою степень, как последовательность умножения N комплексных чисел, где N - степень. Причём из приведённого тобой примера, это решение просто напрашивается 

И как ты себе это представляешь?
Приведи пример для N=7, например на паскале.
Наверно стоит уйти от комплексных чисел, пусть будет (x+ay)^n.
(для комплексных все крайне просто)
Приведи пример для N=7, например на паскале.
Наверно стоит уйти от комплексных чисел, пусть будет (x+ay)^n.
(для комплексных все крайне просто)
- SergeyS
- Сообщения: 196
- Зарегистрирован: 21 ноя 2006, 17:12
- Откуда: Хакасия, Абакан
- Контактная информация:
Просишь пример? Хорошо вот тебе пример (но только для комплексных чисел, если будут ошибки в работе с ними прошу прощения, я комплексные числа изучал крайне давно и не работал больше с ними)
(a1+i*b1)*(a2+i*b2) = a1*a2+i*b2*a1+i*b1*a2+i*b1*i*b2 = a1*a2+i*b2*a1+i*b1*a2-b1*b2=a1*a2-b1*b2+i*(b1*a2+b2*a1) = a3+i*b3
это пример умножения двух комплексных чисел (разных), в результате чего получается новое комплексное число.
(a+ib)^N есть последовательное произведение N одинаковых комплексных чисел:
(a+ib) * (a+ib) * (a+ib) * ... * (a+ib)
думаю с этим может уже справиться и обыкновенный цикл.
Реализуешь функцию произведения двух комплексных чисел (например ComplexMul)
Что ещё надо?
(a1+i*b1)*(a2+i*b2) = a1*a2+i*b2*a1+i*b1*a2+i*b1*i*b2 = a1*a2+i*b2*a1+i*b1*a2-b1*b2=a1*a2-b1*b2+i*(b1*a2+b2*a1) = a3+i*b3
это пример умножения двух комплексных чисел (разных), в результате чего получается новое комплексное число.
(a+ib)^N есть последовательное произведение N одинаковых комплексных чисел:
(a+ib) * (a+ib) * (a+ib) * ... * (a+ib)
думаю с этим может уже справиться и обыкновенный цикл.
Реализуешь функцию произведения двух комплексных чисел (например ComplexMul)
Код: Выделить всё
type
TComplex = record
a, b: Real;
end;
function ComplexPower(a: TComplex; n: Integer): TComplex;
var
i: Integer;
begin
Result := a;
for i := 2 to n do
Result := ComplexMul(Result, a);
end;