您的位置:首页 > 其它

学习笔记

2016-04-20 14:45 267 查看
#define ll long long
#define cit(a) scanf("%d",&a)
#define cis(a) scanf("%s",a)
#define pit(a) printf("%d\n",a)
#defien pis(a) printf("%s\n",a)


/*  相关公式

S(x) = M[j]*(x[j+1]-x)^3/(6*h[j])+M[j+1]*(x-x[j])^3/(6*h[j])+
  (y[j]-M[j]*h[j]^2/6)*(x[j+1]-x)/h[j]+(y[j+1]-M[j+1]*h[j]^2/6)*(x-x[j])/h[j];
ps:h[j] = x[j+1]-x[j];
ps:u[j] = h[j-1]/(h[j-1]+h[j]), l[j] = h[j]/(h[j-1]+h[j]);
ps:d[j] = 6*fs[x[j-1],x[j],x[j+1]] = 6*(ff[x[j],x[j+1]]-ff[x[j-1],x[j]])/(h[j-1]+h[j]);
ps:d[j] = 6*fs[j-1][j][j+1] = 6*(ff[j][j+1]-ff[j-1][j])/(h[j-1]+h[j]);
ps:ff[i][j] = (f[j]-f[i])/(x[j]-x[i]);


 追赶法

ps: a=u,b=2,l=c,x=M,f=d
ps: B[1] = c[1]/b[1]; B[i] = c[i]/(b[i]-a[i]*B[i-1]); -> B[1-n]
ps: y[1] = f[1]/b[1]; y[i] = (f[i]-a[i]*y[i-1])/(b[i]-a[i]*B[i-1]);
ps: x
= y
; x[i] = y[i]-B[i]*x[i+1];


替换:
b[0] = l[0]/2; b[i] = l[i]/(2-u[i]*b[i-1]);
y[0] = d[0]/2; y[i] = (d[i]-u[i]*y[i-1])/(2-u[i]*b[i-1]);
M
= y
; M[i] = y[i]-b[i]*M[i+1];
ps:第一类边界条件: S'(x[0])=f'[0], S'(x
)=f'

 l[0]=1,d[0]=6*(ff[0][1]-f'[0])/h[0],u
=1,d
=6*(f'
-ff[n-1]
)/h[n-1];
ps:第二类边界条件: S"(x[0])=f"[0], S"(x
)=f"

 M[0]=f"[0],M
=f"
,l[0]=u
=0,d[0]=2*f"[0],d
=2*f"
; 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: