?? 三次樣條插值法.cpp
字號:
#include <iostream.h>
#include <math.h>
double yy[12]={0,0,0,0,0,0,0,0,0,0,0,0};
//附加兩個邊值條件:y"=0 at |x|=1
void main()
{
double x[12]={0,-1.0,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1.0};
double y[12]={0,1.0/26.0,1.0/17.0,0.1,0.2,0.5,1.0,0.5,0.2,0.1,1.0/17.0,1.0/26.0};
double gama[11]={0,0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0};
double beta[12]={0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0};
double alpha[12]={0,0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,0};
//y"的系數矩陣
double b[12];
for(int k=2;k<=10;k++)
{
b[k]=(y[k+1]+y[k-1]-2*y[k])*5.0;
//cout<<b[k]<<endl;
}
b[0]=b[1]=b[11]=0;
//右列向量
double g[11];
double h[11];
g[10]=-alpha[11]/beta[11];
h[10]=b[11]/beta[11];
for(int i=10;i>=2;i--)
{
g[i-1]=-alpha[i]/(beta[i]+gama[i]*g[i]);
h[i-1]=(b[i]-gama[i]*h[i])/(beta[i]+gama[i]*g[i]);
}
yy[1]=(b[1]-gama[1]*h[1])/(beta[1]+gama[1]*g[1]);
for(int j=1;j<=10;j++)
{
yy[j+1]=g[j]*yy[j]+h[j];
}
//以上求解y"
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -