Initial commit
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
SUBROUTINE spline(x,y,n,yp1,ypn,y2)
|
||||
INTEGER n,NMAX
|
||||
REAL yp1,ypn,x(n),y(n),y2(n)
|
||||
PARAMETER (NMAX=500)
|
||||
INTEGER i,k
|
||||
REAL p,qn,sig,un,u(NMAX)
|
||||
if (yp1.gt..99e30) then
|
||||
y2(1)=0.
|
||||
u(1)=0.
|
||||
else
|
||||
y2(1)=-0.5
|
||||
u(1)=(3./(x(2)-x(1)))*((y(2)-y(1))/(x(2)-x(1))-yp1)
|
||||
endif
|
||||
do 11 i=2,n-1
|
||||
sig=(x(i)-x(i-1))/(x(i+1)-x(i-1))
|
||||
p=sig*y2(i-1)+2.
|
||||
y2(i)=(sig-1.)/p
|
||||
u(i)=(6.*((y(i+1)-y(i))/(x(i+
|
||||
*1)-x(i))-(y(i)-y(i-1))/(x(i)-x(i-1)))/(x(i+1)-x(i-1))-sig*
|
||||
*u(i-1))/p
|
||||
11 continue
|
||||
if (ypn.gt..99e30) then
|
||||
qn=0.
|
||||
un=0.
|
||||
else
|
||||
qn=0.5
|
||||
un=(3./(x(n)-x(n-1)))*(ypn-(y(n)-y(n-1))/(x(n)-x(n-1)))
|
||||
endif
|
||||
y2(n)=(un-qn*u(n-1))/(qn*y2(n-1)+1.)
|
||||
do 12 k=n-1,1,-1
|
||||
y2(k)=y2(k)*y2(k+1)+u(k)
|
||||
12 continue
|
||||
return
|
||||
END
|
||||
Reference in New Issue
Block a user