⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svdfit.f90

📁 FORTRANvisualfortran常用数值算法集及源码
💻 F90
字号:
SUBROUTINE svdfit(x,y,sig,ndata,a,ma,u,v,w,mp,&
                  np,chisq,funcs)
INTEGER ma,mp,ndata,np,NMAX,MMAX
REAL chisq,a(ma),sig(ndata),u(mp,np),v(np,np),&
     w(np),x(ndata),y(ndata),TOL
EXTERNAL funcs
PARAMETER (NMAX=1000,MMAX=50,TOL=1.e-5)
!USES svbksb,svdcmp
INTEGER i,j
REAL sum,thresh,tmp,wmax,afunc(MMAX),b(NMAX)
do i=1,ndata
  call funcs(x(i),afunc,ma)
  tmp=1./sig(i)
  do j=1,ma
    u(i,j)=afunc(j)*tmp
  end do
  b(i)=y(i)*tmp
end do
call svdcmp(u,ndata,ma,w,v)
wmax=0.
do j=1,ma
  if(w(j)>wmax) wmax=w(j)
end do
thresh=TOL*wmax
do j=1,ma
  if(w(j)<thresh)w(j)=0.
end do
call svbksb(u,w,v,ndata,ma,b,a)
chisq=0.
do i=1,ndata
  call funcs(x(i),afunc,ma)
  sum=0.
  do j=1,ma
    sum=sum+a(j)*afunc(j)
  end do
  chisq=chisq+((y(i)-sum)/sig(i))**2
end do
END SUBROUTINE svdfit

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -