KoreaUniv

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
글 쓴 이(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 
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.