mfArray

 Description:   


Fortran ȯ°æ¿¡¼­ mfArray¸¦ ÀÌ¿ëÇÏ¸é µ¥ÀÌÅÍ Å¸ÀÔ°ú Â÷¿ø(Dimension)À» ¸Å¿ì µ¿ÀûÀ¸·Î Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.(¿ìÃø ¿¹Á¦ ÂüÁ¶).  ´ëºÎºÐÀÇ Ã³¸® ¹æ½ÄÀº ÀÌ·±ÇÑ ¿ø¸®¿¡ ±âÃÊÇϰí ÀÖ½À´Ï´Ù. mfArray ±â¹ÝÀÇ ÇÁ·Î½ÃÁ®´Â ¿©·¯ºÐÀÇ ¼Ò½º Äڵ带 ¼öÁ¤ÇÏÁö ¾Ê°í ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥¾È¿¡ ½±°Ô »ðÀÔÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ, Matlab°ú °°Àº ±¸¹®À» Fortran ȯ°æ¾È¿¡¼­ »ç¿ëÇÒ ¼ö µµ ÀÖ½À´Ï´Ù.

¿À¸¥ÂÊ ¿¹Á¦´Â mfArray°¡ ¾î¶»°Ô Á¤ÀÇµÇ°í »ç¿ëµÇ´ÂÁö¸¦ º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù.

 

 

 

 

  Numerical Procedures

 ¼³¸í: 
 
MATFORÀÇ numerical procedures´Â ±¸¹®(Syntax)À» ¸Å¿ì ½±°Ô ºÎ¸¦ ¼ö ÀÖ´Â ¹æ½ÄÀ» äÅÃÇϰí ÀÖ½À´Ï´Ù. µ¥ÀÌÅÍ ±¸Á¶ °ü¸®³ª ¾î¶»°Ô ÀÔ·Â Àμö¸¦ ´Ù·ç´Â °¡¿¡ ´ëÇÑ ¿°·Á¾øÀÌ ¿ÀÁ÷ ¹®Á¦ ÇØ°á¿¡ ÁßÁ¡À» µÑ ¼ö ÀÖµµ·Ï ÇÏ¿´½À´Ï´Ù. ¾Æ·¡ ¿¹Á¦´Â SVD(Singular Value Decomposition) ÇÁ·Î½ÃÁ®°¡ LAPACK°ú MATFOR¿¡¼­ ¾î¶»°Ô ºÎ¸¦ ¼ö Àִ°¡Áö¸¦ º¸½Ç ¼ö ÀÖ½À´Ï´Ù.

 

 

   
 

 

 Vector Programming

 

 Description: 

»ç¿ëÀÌ ½¬¿î ±¸¹®À» ÀÌ¿ëÇÏ¿©, MATFORÀÇ ÇÁ·Î½ÃÁ®´Â º¤ÅÍ(Vector ¾ð¾î ÇÁ·Î±×·¡¹ÖÀÇ ÀÌÁ¡À» ÃæºÐÈ÷ Žú¿ëÇÏ¿© °¡È÷ ¸Å¿ì Á÷°üÀûÀÌ´Ù¶ó°í ¸»ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â ÀüÇüÀûÀΠFortran¿¡¼­ ÀÛ¼ºÇÑ ÄÚµåµéÀ» MATFOR¿¡¼­ ¾î¶»°Ô ´ÜÈ­½Ãų ¼ö ÀÖ´ÂÁö¸¦ º¸¿© ÁÝ´Ï´Ù.


 

 

 Example I

 Code:

 

Program Mesh
use fgl
implicit None

integer i, j, N
real z(30,30)

c Create data for plotting
   do 100 i = 1, 30
      do 200 j = 1, 30
         z(i,j)=3.0*sin((i+1)/
         + 4.0)*cos((j+1)/4.0)+2.0
         + *sin((i+j)/4.0)
      200 continue
   100 continue

c Call msMesh for Mesh plot
call msMesh(mf(z))

c Pause to display the graph
call msViewPause()

End Program Mesh

 

 

 

#include <math.h>
#include ¡°fgl.h?/font>
void main()
{
   int i,j;
   double Dz[30][30];

// Create data for plotting
   for (i=0; i<30; i++){
      for (j=0; j<30; j++){
         Dz[i][j] = 3.0*sin((i+1)/4.0)
         *cos((j+1)/4.0)+2.0
         *sin((i+j)/4.0);
      }
   }

// Plot a mesh grid

mfMesh(mfArray(&Dz[0][0], 30,30));

// Pause to display the graph
mfViewPause();
}
 

 



 Result: 

 

 

 

 Example II

 Code:

 

Program Math
use fgl
use fml

implicit none

integer(4), parameter :: N=30
integer(4) :: i, j
real(8) :: z(N, N)

c Create data for plotting
do i = 1, N
¡¡do j = 1, N
¡¡¡¡z(i, j) = (j*2.0/N-1)*sin(i*6.28/N)
¡¡end do
end do

c Convert Fortran variable z to mfArray
c
and call msSurf for Surf plot
call msSurf(mf(z))

c Pause to display the graph
call msViewPause()

End Program Math

 

 

 

#include <math.h>
#include <fgl.h>
#include <cml.h>
#define N 30
 
void main()
{
¡¡int i, j;
¡¡double z[N][N];

// Create data for plotting
for (i=0; i<N; ++i)
{
¡¡for (j=0; j<N; ++j)
¡¡{
¡¡¡¡z[i][j] = (j*2.0/N-1) * sin(i*6.28/N);
¡¡}
}

// Plot a Surf grid using mfArray for the
//
grid intersections

mfSurf( mf(&z[0][0], N, N) );

// Pause to display the graph
mfViewPause();
}

 



 Result: