Tôi đang cố gắng giải quyết vấn đề triển khai sau trong Mathematica 7.0 trong vài ngày và tôi không hiểu chính xác điều gì đang xảy ra vì vậy tôi hy vọng ai đó có thể cho tôi một số gợi ý. Tôi có 3 hàm mà tôi đã triển khai trong Mathematica trong tệp nguồn có phần mở rộng * .nb. Chúng hoạt động tốt cho tất cả các ví dụ. Bây giờ tôi muốn đặt các chức năng này thành 3 gói khác nhau. Vì vậy, tôi đã tạo ra ba gói khác nhau với phần mở rộng. * M trong đó tôi đặt tất cả hàm Mathematica mong muốn. Một ví dụ trong gói "stereographic.m" có chứa mã:Đầu ra với nội dung "Riêng tư" trong Gói Mathematica
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[]
Bây giờ để kiểm tra chức năng tôi tải các gói
Needs["stereographic`"]
mọi thứ đều ổn. Nhưng khi tôi kiểm tra chức năng ví dụ với
formEqs[x^2-y^2,{x,y}]
tôi nhận được ouput sau:
{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}
Tất nhiên tôi không hiểu tại sao Private` xuất hiện trước mặt bất kỳ biến địa phương mà tôi trở về trong kết quả cuối cùng. Tôi không muốn có tính riêng tư này trong kết quả tính toán. Bất kỳ ý tưởng hay giải thích nào tốt hơn có thể cho tôi biết lý do tại sao điều này xảy ra?
Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn.
Best wishes, madalina
Hãy thử đăng bài trên comp.soft-sys.mathematica, tôi nghĩ cộng đồng người dùng Mathematica ở đó lớn hơn và hiểu biết nhiều hơn cộng đồng ở đây. –
Tính đến thời điểm này, bạn đã hỏi 23 câu hỏi nhưng chưa chấp nhận bất kỳ câu trả lời nào. Không có câu trả lời nào đáp ứng tiêu chí của bạn? – rcollyer