Функции Матье

Форум пользователей пакета Maple

Модератор: Admin

Valio
Сообщения: 7
Зарегистрирован: Пн сен 03, 2007 9:27 pm

Функции Матье

Сообщение Valio » Пн сен 03, 2007 9:34 pm

Подскажите где найти пример фомулы расчета функций Матье из Maple, таких к примеру как MathieuC и др. (MathieuCE,MathieuA, MathieuA,етс).

Спасибо.

aar
Сообщения: 100
Зарегистрирован: Чт авг 10, 2006 11:27 am

Сообщение aar » Ср сен 05, 2007 10:50 am

В хелпе Maple.

Valio
Сообщения: 7
Зарегистрирован: Пн сен 03, 2007 9:27 pm

Сообщение Valio » Чт сен 06, 2007 6:43 am

Спасибо, но у меня только матлаб. В Матлабе такой ф-ции нет, хочу сделать аналог. Искал в инете, инфы по составу формулы почти нет. Если не сложно для Вас могу попросить один файл скинуть почтой robo_9(гав)mail(тчк)ru.


Спасибо.

aar
Сообщения: 100
Зарегистрирован: Чт авг 10, 2006 11:27 am

Сообщение aar » Чт сен 06, 2007 10:58 am

Что скинуть? Вот кусочек хелпа:

The Mathieu functions MathieuC(a, q, x) and MathieuS(a, q, x) are solutions of the Mathieu differential equation:
y'' + (a - 2 q cos(2 x)) y = 0
MathieuC and MathieuS are even and odd functions of x, respectively.

For countably many values of a (as a function of q), MathieuC and MathieuS are 2*Pi-periodic. For n = 0,1,2,..., MathieuA(n, q) is the nth such characteristic value for MathieuC, and for n = 1,2,..., MathieuB(n, q) is the nth characteristic value for MathieuS. The resulting Mathieu functions are:
MathieuCE(n, q, x) = c1 * MathieuC(MathieuA(n, q), q, x),
MathieuSE(n, q, x) = c2 * MathieuS(MathieuB(n, q), q, x).
where c1 and c2 are normalization constants depending on n and q.
If the index n is even, then both MathieuCE and MathieuSE are Pi-periodic; they are 2*Pi-periodic otherwise. MathieuCE and MathieuSE are even and odd functions of x, respectively.

Valio
Сообщения: 7
Зарегистрирован: Пн сен 03, 2007 9:27 pm

Сообщение Valio » Пт сен 07, 2007 5:56 pm

Спасибо. Я думал можно будет найти алгоритм по которому эта функция составлена.

Irmantas
Сообщения: 589
Зарегистрирован: Ср апр 27, 2005 8:49 pm
Откуда: Литва, Каунас

Сообщение Irmantas » Сб сен 08, 2007 7:37 pm

Valio писал(а):Спасибо. Я думал можно будет найти алгоритм по которому эта функция составлена.

MathieuS =
proc (a, q, z)
local A, L, Q, Z, c, s, zz, myfrac, reduce, period;
option `Copyright (c) 2002 Waterloo Maple Inc. All rights reserved.`;
if nargs <> 3 then error "expected 3 arguments, received %1", nargs
elif false then error "expected non-negative integer as first argument, got %1", a
elif false then error "expected non-negative integer as first argument, got %1", a
elif `tools/membertype`(('complex')('float'),[args])
then s := evalf(('MathieuS')(args));
if type(s,('complex')('float')) then return s end if end if;
zz := z;
if `tools/type`(q = 0) then if ('MathieuS') = ('MathieuS')
then if `tools/type`(a = 0) then return zz end if
end if;
return 1/sqrt(a)*sin(sqrt(a)*zz) end if;
if `tools/type`(zz = 0) then return 0
elif `tools/type`(zz = 0) then return 1 end if;
s := 1;
c := `tools/conjugate_symmetry`([a, q, zz],'L');
if c = false then s := `trig/sign`(zz); s*('MathieuS')(a,q,s*zz)
else A, Q, Z := op(L); s := `trig/sign`(Z); conjugate(s*('MathieuS')(A,Q,s*Z)) end if
end proc

MathieuC =
proc (a, q, z)
local A, L, Q, Z, c, s, zz, myfrac, reduce, period;
option `Copyright (c) 2002 Waterloo Maple Inc. All rights reserved.`;
if nargs <> 3 then error "expected 3 arguments, received %1", nargs
elif false then error "expected non-negative integer as first argument, got %1", a
elif false then error "expected non-negative integer as first argument, got %1", a
elif `tools/membertype`(('complex')('float'),[args]) then s := evalf(('MathieuC')(args));
if type(s,('complex')('float')) then return s end if
end if;
zz := z;
if `tools/type`(q = 0) then
if ('MathieuC') = ('MathieuS') then
if `tools/type`(a = 0) then return zz end if
end if;
return cos(sqrt(a)*zz) end if;
if `tools/type`(zz = 0) then return 1 end if;
s := 1;
c := `tools/conjugate_symmetry`([a, q, zz],'L');
if c = false then s := `trig/sign`(zz); ('MathieuC')(a,q,s*zz)
else A, Q, Z := op(L); s := `trig/sign`(Z); conjugate(('MathieuC')(A,Q,s*Z)) end if
end proc

Valio
Сообщения: 7
Зарегистрирован: Пн сен 03, 2007 9:27 pm

Сообщение Valio » Пн сен 10, 2007 1:43 am

Спасибо Irmantas !


С уважением со всем,
Алексей.