2012-10-31 2 views
1

과 같이 희소 배열을 사용하고 싶습니다. a = SparseArray [{}, {m, n}, "*"] 0 대신에 *가됩니다. 그러한 방법 에서 플러스와 시간을 연장 할 수 하다 :Mathematica에서 플러스와 타임을 재정의

플러스 [1, = 시간 [1, = 하지만 플러스 [0, * = 0

감사합니다, 당신은 내장 함수를 수정하는 방법에 대한 조언 여기를 요구하고 있기 때문에

답변

3

Lavoslav, 난 당신이 안전하게 등의 수정 작업을 위해 아직 티카의 경험이 충분한 사용자가 아닌 것으로 결론 지었다.

예, Mathematica의 내장 함수의 정의와 활동을 PlusTimes과 같이 수정할 수 있습니다. 그러나 그것은 거의 확실히 매우 나쁜 생각입니다. 가장 큰 위협은 추가 및 곱셈과 같은 기본적인 작업에 특히 적용되므로 영향을 원하고 이해하는 상황에만 이러한 수정의 영향을 제어하는 ​​것은 매우 어렵습니다.

훨씬 더 좋은 생각은 사용자가 원하는대로 작동하도록 함수 버전을 정의하는 것입니다. 이러한 작업은 다음과 같이 시작될 수 있습니다.

mySparseArrayPlus[term1_SparseArray,term2_] :=

난 당신이 대신 Symbol를 사용, 같은 당신의 SparseArray의의 기본 값 "*"로 문자열의 사용을 피해야하는 것도 생각합니다.

PlusTimes을 수정해야하는 경우 UpValues의 정의를 통해 접근하십시오. Mathematica 문서에서 this page을 읽는 것이 좋습니다.

마지막으로 간섭해야하는 경우 Unprotect을 모두 읽으십시오. 행운을 빈다. 추가와 곱셈을 깨뜨릴 때 도움을 요청하지 마라.

+0

예, 저는 매우 초보자입니다. :) 조언 해 주셔서 감사합니다. L. – user1764592

관련 문제