2014-03-05 3 views
2

나는라는 파일 test1.sage이 : 나는 .sage가 나에게이 임의 영 행렬을주는 파일을 실행하면세이지에서 스칼라 곱셈?

test1.sage:  
     M = Matrix([[1,2,3],[4,5,6]]) 
     R = 1/2*M 
     print R 
     print M 

%run test1.sage 
[1 2 3] 
[4 5 6] 

[0 0 0] 
[0 0 0] 

합니다. 하지만, 라인별로, 샐비어 셸에서, 그것은 완벽하게 괜찮아요, 어떤 아이디어를 작동합니까?

답변

2

문제는 Python (2.x)에서 1/2이 0입니다. 이것은 긴 표준이며, 확실히이 작업을 수행하는 유일한 언어는 아닙니다.

파일을 Sage과 함께 실행하면 괜찮을 것입니다.

$ sage test1.sage 
[1 2 3] 
[4 5 6] 
[1/2 1 3/2] 
[ 2 5/2 3] 

의견에 따르면 %run은 IPython "마법"기능이어야한다는 것을 나타냅니다. 내 생각 엔 그것에게 세이지 마법 기능을 만들기 위해 세이지 변경되지 않도록하고, 다음 그것을 확인 :

그냥 print 1/2 포함 된 파일을 확인합니다. 디렉토리에 test1.py 파일을 얻으려면 sage test1.sage을 수행하십시오. 그런 세이지를 실행하고이 작업을 수행 :

sage: %run test1.sage 
0 
sage: %run test1.py 
1/2 

나는 이것에 대한 Trac 15891을 열었습니다, 감사합니다!

+0

나는 R과 M을 의미했습니다. 지금 수정되었습니다. % run은 파일을 실행하기 위해 sage 셸 내에서 사용됩니다. 그러나 나는 왜 그것이 행렬을 모두 0으로 바꾸는 지 아직도 모른다. 나는 이것이 버그 일 수 있다고 생각하고있다 .. –

+0

왜 내 파이썬 2.6은 1/2을 제로로 생각 하는가? –

+0

정수를 나누는 것은 그런 식으로 정의됩니다. 나머지는 %로 액세스하십시오. IPython을 실행하는 것으로 보이며 python2를 사용합니다. –