2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Бикомплексные чила в Maple
Сообщение16.11.2011, 20:06 
Аватара пользователя
Как в Maple задать бикомплексное число вида
$q=a+b \cdot i + c \cdot j + d \cdot i \cdot j $
где, $a,b,c,d$ - действительные числа, $i,j$ - мнимые единицы $i^2=j^2=-1$, и их свойство $i \cdot j = j \cdot i$ ?

Также нужно задать функции сопряжения по мнимым единицам.
Определил функции:
Код:
> conjugatej:=proc(expr)
> algsubs(j=-j,expr); end proc:
> conjugatei:=proc(expr)
> algsubs(i=-i,expr); end proc:
> conjugateij:=proc(expr)
> conjugatej(conjugatei(expr)) end proc:

Если функция содержит в выражении $i$ или $j$, например,
Код:
Z:=2*i+3*j-4*i*j;

то результатом
Код:
cojnugatei(Z)
будет
Код:
$-2*i+3*j-4*i*j$

Но, естественно, что в таком случае не вычисляются степени мнимых единиц. И в сложных формулах вычисления идут неправильно. Прошу помощи в доведении функций до ума.

 
 
 
 Re: Бикомплексные чила в Maple
Сообщение16.11.2011, 20:18 
Аватара пользователя
Может можно свести к матрицам?

 
 
 
 Re: Бикомплексные чила в Maple
Сообщение16.11.2011, 21:15 
Аватара пользователя
caxap в сообщении #504582 писал(а):
Может можно свести к матрицам?

Думаю, что там еще много побочных проблем возникнет.
Я думал решить так:
Код:
> restart;
> with(LinearAlgebra):
#Процедура умножения
> P:=proc(u,v)
> local L,A,n,B;
> A:=expand(u*v);
> L:=[i^2=-1,j^2=1];
> for n to nops(L) do
> A:=expand(algsubs(L[n],A));
> od;
> B:=collect(A,[i,j]);
> B;
> end proc:
#Процедура сопряжения по j
> conjugatej:=proc(expr)
> local L,A,n,B;
> A:=expand(expr);
> L:=[j=-j];
> for n to nops(L) do
> A:=expand(algsubs(L[n],A));
> od;
> B:=collect(A,[i,j]);
> B;
> end proc:
#Процедура сопряжения по i
> conjugatei:=proc(expr)
> local L,A,n,B;
> A:=expand(expr);
> L:=[i=-i];
> for n to nops(L) do
> A:=expand(algsubs(L[n],A));
> od;
> B:=collect(A,[i,j]);
> B;
> end proc:
#Процедура сопряжения по i и j
> conjugateij:=proc(expr)
> local L,A,n,B;
> A:=expand(expr);
> L:=[i=-i,j=-j];
> for n to nops(L) do
> A:=expand(algsubs(L[n],A));
> od;
> B:=collect(A,[i,j]);
> B;
> end proc:

> eta:=1-j/rho;A:=1;
#Задаю функции
> Z[1]:=j*A/sqrt(2)/rho*(eta-rho^(-2))*sin(theta)*exp(j*psi);
> Z[2]:=j*i*A/sqrt(2)/rho*eta*sin(theta)*exp(j*psi);
> Z[3]:=sqrt(2)*A/rho^2*eta*cos(theta)*exp(j*psi);
#Вычисляю
> q1[1]:=P(Z[2],conjugatej(Z[3]))-P(Z[3],conjugatej(Z[2]));collect(q1[1],1/rho^5);


Ответ $q^1_1$ неверный.

 
 
 
 Re: Бикомплексные чила в Maple
Сообщение18.11.2011, 01:06 
Нужно аккуратно проверить каждую процедуру. Например уже первая процедура умножения выдает неправильный результат


Код:
>u:=1+i+j:v:=2+2*i+3*j+10*i*j;
                     v := 2 + 2 i + 3 j + 10 i j

> P(u,v);

                       (15 j + 14) i - 5 j + 3


Я б так бы исправил

Цитата:
P:=proc(u,v)
subs({i^2=-1,j^2=-1},expand(u*v)):
end proc;


Ето уже работает.
Исправьте и двигайтесь дальше.

 
 
 
 Re: Бикомплексные чила в Maple
Сообщение18.11.2011, 13:22 
Аватара пользователя
Спасибо, я тоже заметил $j^2=-1$. Но почему Вы предложили subs? Мне кажется, что algsubs резонней.

 
 
 
 Re: Бикомплексные чила в Maple
Сообщение18.11.2011, 13:49 
Резонней то что дает правильный результат. Ваша программа не работает даже если поменять на $j^2=-1.$

 
 
 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group