글 쓴 이(By): guest (Welcome!) 날 짜 (Date): 1993년05월30일(일) 20시46분49초 KST 제 목(Title): Re:석주의 질문에 대해.... 석주야 안녕! 나는 주성인데 잘 있었니? 와.. 왜이렇게 ID얻기가 힘드는지? 맨날 guset 신세니.. 지금 나도 DOS환경에서 mathmatica를 쓰고 있는데 먼저 DOS의 edit.exe를 이용하여 프로그램 한다음 mathmatica내에서 이를 실행시키고 있지. 다음은 matrix의 eigenvalue를 구하는 프로그램과 이것을 어떻게 실행시키는지 에 관한 보기이다. A먼저, editer로 (edit.exe,bc.exe,qbasic.exe,hwp.exe(단 ASKI code로 저장) matrix-eq.m 이란 file를 만든다. <matrix-eq.m>의 내용. H1={{-W1,A,0,0},{W1-A,k,0,0},{-W2,A,0,0},{W2-A,k,0,0}} (* c의 /*처럼 reference text임, matrix H1을 변수로 지정 *) Print[" H1 is 4 x 4 matrix. cal1[] calculates eigenvalue. cal2[]..eigenfuction"] ; cal1[]:=Block[{},value=Eigenvalue[H1]; Print["eigenvalue =" ,value]; Save["eigenval.dat",value]; (* file에 계산결과를 쓴다 *) ] (* 고유치 계산과정과 출력을 cal1[]함수로 정의 했음 *) cal2[]:=Block[{vector},vector=Eigenfuction[H1];(* vector를 지역변수로 함*) Print["eigenvector =",MatrixForm[vector]]; Save["eigenvec.dat",vector]; ] 이상이 DOS 의 edit.exe에서 editing한 file의 내용임. mathmatica를 뛰우고 나서의 실행절차. << matrix-eq.m out[1]:= H1 is 4 x 4.......cal2[]....eigenfuction (* 이와같이 command를 함수로 지정(cal1[]:=처럼)하지 않으면 이처럼 file를 불러들일 때 직접 실행됨. 가능하면 모든 command를 함수로 지정하여 사용할 것 왜냐하면 mathmatica를 뛰운상태에서 !edit matrix-eq.m 명령을 이용 file편집하고 다시 불러들이면 됨.*) Int[2]:=cal1[] (* cal1[] 함수로 정의된 Eigenvalue[],Print[],Save[] 등이 실행됨*) out[2]:= eigenvalue= {0,0,-W1-A,-W2-A} Int[3]:=cal2[] out[3]:=eigenvector ={(*eigenvector의 matrixform이 출력됨*) Int[4]:=Quit 이와같이 하면 프로그램 가능하고 혹시 속도가 문제가 되면 mathmatica 상에서 !clanguag.exe 즉 c언어나 fortran언어로 짠 실행문을 실행시키고 그결과를 data=<<clanguaq.dat로 처리하면 됨. 다른 프로그램에서 mathmatica에서 정의한 수많은 함수를 library처럼 사용가능한지는 앞으로 연구해보기 바람. manual에서는 mathlink를 써서 프로그램사이에 communication이 가능하다고 말했음.[A |