Как я могу написать массив с той же функцией в его элементах? - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь написать массив такого типа

Coefficients phi (m, r) и dphi (m, r) - функции, где cheby и dcheby - полиномы Чебышева и его производные соответственно,

  Real(kind=8) FUNCTION phi(m,r)
  implicit none 
  integer m
  real(kind=8) r
  real(kind=8) cheby

  if(mod(m,2).eq.0) then
  phi = cheby(m+2,r)-cheby(0,r)
  else if (mod(m,2).eq.1) then 
  phi = cheby(m+2,r) - cheby(1,r)
  end if
  end FUNCTION phi

  Real(kind=8) FUNCTION dphi(m,r)
  implicit none 
   integer m
   real(kind=8) r
   real(kind=8) dcheby  
   if(mod(m,2).eq.0) then
   dphi = dcheby(m+2,r) - dcheby(0,r)
   else if (mod(m,2).eq.1) then 
   dphi = dcheby(m+2,r) - dcheby(1,r)
   end if 
  end FUNCTION dphi

поэтому сначала я определяю g, а затем использую правило 2-го порядка Симпсона для интегрирования

Real(kind=8) FUNCTION g(j,i,r)
       implicit none 
       integer i,j
       real(kind=8) r
       real(kind=8) dphi, phi
       real(kind=8) lambda

       g = -dphi(j,r)*dphi(i,r) + lambda*phi(j,r)*phi(i,r)

end FUNCTION g 


Real(kind=8) FUNCTION integrate(j,i)
   implicit none 
   integer i, j
   real(kind=8) g
   Real(kind=8) xmax, xmin
   xmax = 1.0d0
   xmin = -1.0d0 

   integrate =(( xmax -  xmin)/6)*(g(j,i,xmin) +4*g(j,i,0.0d0) + g(j,i,xmax)) 

end FUNCTION integrate

Однако я не знаю, как написать матрицу, я написал это

 do i=0,N
     do l=0,N
       A(i,l) = integrate(j,i)
     end do
 end do 

но, когда я скомпилировал A = NaN

...