Я пытаюсь решить следующую проблему реализации в Mathematica 7.0 уже несколько дней, и я не совсем понимаю, что происходит, поэтому я надеюсь, что кто-то может дать мне несколько советов.
У меня есть 3 функции, которые я реализовал в Mathematica в исходном файле с расширением * .nb.
Они работают хорошо для всех примеров. Теперь я хочу поместить эти функции в 3 разных пакета. Поэтому я создал три разных пакета с расширением. * M, в которые я поместил все нужные функции Mathematica.
Пример в пакете "stereographic.m", который содержит код:
BeginPackage["stereographic`"]
stereographic::usage="The package stereographic...."
formEqs::usage="The function formEqs[complexBivPolyEqn..."
makePoly::usage="The function makePoly[algebraicEqn] ..."
getFixPolys::usage="The function..."
milnorFibration::usage="The function..."
Begin["Private`"]
Share[];
formEqs[complex_,{m_,n_}]:=Block[{complexnew,complexnew1, realeq, imageq, expreal,
expimag, polyrealF, polyimagF,s,t,u,v,a,b,c,epsilon,x,y,z},
complexnew:=complex/.{m->s+I*t,n->u+I*v};
complexnew1:=complexnew/.{s->(2 a epsilon)/(1+a^2+b^2+c^2),t->(2 b
epsilon)/(1+a^2+b^2+c^2),u->(2 c epsilon)/(1+a^2+b^2+c^2),v->(-
epsilon+a^2 epsilon+b^2 epsilon+c^2
epsilon)/(1+a^2+b^2+c^2)};
realeq:=ComplexExpand[Re[complexnew1]];
imageq:=ComplexExpand[Im[complexnew1]];
expreal:=makePoly[realeq];
expimag:=makePoly[imageq];
polyrealF:=expreal/.{a->x,b->y,c->z};
polyimagF:=expimag/.{a->x,b->y,c->z};
{polyrealF,polyimagF}
]
End[]
EndPackage[]
Теперь для проверки функции загружаю пакет
Needs["stereographic`"]
все в порядке. Но когда я проверяю функцию, например, с
formEqs[x^2-y^2,{x,y}]
Я получаю следующий вывод:
{Private`epsilon^2 + 2 Private`x^2 Private`epsilon^2 +
Private`x^4 Private`epsilon^2 -
6 Private`y^2 Private`epsilon^2 +
2 Private`x^2 Private`y^2 Private`epsilon^2 +
Private`y^4 Private`epsilon^2 -
6 Private`z^2 Private`epsilon^2 +
2 Private`x^2 Private`z^2 Private`epsilon^2 +
2 Private`y^2 Private`z^2 Private`epsilon^2 +
Private`z^4 Private`epsilon^2,
8 Private`x Private`y Private`epsilon^2 +
4 Private`z Private`epsilon^2 -
4 Private`x^2 Private`z Private`epsilon^2 -
4 Private`y^2 Private`z Private`epsilon^2 -
4 Private`z^3 Private`epsilon^2}
Конечно, я не понимаю, почему Private` появляется перед любой локальной переменной, которую я возвратил в конечном результате. Я бы не хотел иметь этот Private` в вычисленном выводе.
Любая идея или лучшие объяснения, которые могли бы указать мне, почему это происходит?
Большое спасибо за вашу помощь.
С наилучшими пожеланиями,
Madalina