数值分析算法C语言程序Word下载.docx
- 文档编号:16156482
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:16
- 大小:125.54KB
数值分析算法C语言程序Word下载.docx
《数值分析算法C语言程序Word下载.docx》由会员分享,可在线阅读,更多相关《数值分析算法C语言程序Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
doublex[5]={0.2,0.4,0.6,0.8,1.0},y[5]={0.98,0.92,0.81,0.64,0.38},p=0,g,f;
inti,j,k;
for(j=4;
j>
i;
j--)
{f=x[j]-x[j-i-1];
y[j]=(y[j]-y[j-1])/f;
g=y[i+1];
for(k=0;
k<
=i;
k++)
g=g*(s-x[k]);
p=p+g;
输出插值点函数值:
p+y[0]);
return1;
scanf("
ND(x);
幕入摘值点:
0-7
計岀松憤点函数值:
0-733996
pessanykeytocontinue„
三、埃尔米特插值
voidHermite(floats)
doublex[3]={0.25,1,2.25},y[3]={0.125,1,3.375},z[3]={0.75,1.5,2.25};
doubleH=0.0,a,b,f,g;
inti,j;
3;
f=1.0;
g=0.0;
for(j=0;
3&
&
j!
j++){f=f*(s-x[j])/(x[i]-x[j]);
g=g+1/(x[i]-x[j]);
}a=(1-2*(s-x[i])*g)*f*f;
b=(s-x[i])*f*f;
H=H+y[i]*a+z[i]*b;
printf("
H);
Hermite(x);
i入插值点’0誌
.751254
四、
三次样条插值
#include
<
#include
voidmain()
intN=7,R=2,i,k;
doublep1,p2,p3,p4;
doublex[8]={0.5,0.7,0.9,1.1,1.3,1.5,1.7,1.9};
doubley[8]={0.4794,0.6442,0.7833,0.8912,0.9636,0.9975,0.9917,0.9463};
doubleP0=-0.4794,Pn=-0.9463,u[3]={0.6,0.8,1.2},s[3];
doubleh[7],a[8],c[7],g[8],af[8],ba[7],m[8];
for(k=0;
k<
N;
h[k]=x[k+1]-x[k];
for(k=1;
k++)for(k=1;
k++)c[0]=a[N]=1;
a[k]=h[k]/(h[k]+h[k-1]);
c[k]=1-a[k];
g[k]=3*(c[k]*(y[k+1]-y[k])/h[k]+a[k]*(y[k]-y[k-1])/h[k-1]);
g[0]=3*(y[1]-y[0])/h[0]-P0*h[0]/2;
g[N]=3*(y[N]-y[N-1])/h[N-1]+Pn*h[N-1]/2;
ba[0]=c[0]/2;
g[0]=g[0]/2;
for(i=1;
i<
{af[i]=2-a[i]*ba[i-1];
g[i]=(g[i]-a[i]*g[i-1])/af[i];
ba[i]=c[i]/af[i];
}af[N]=2-a[N]*ba[N-1];
g[N]=(g[N]-a[N]*g[N-1])/af[N];
m[N]=g[N];
for(i=N-1;
i>
=0;
i--)m[i]=g[i]-ba[i]*m[i+1];
for(i=0;
=R;
{k=0;
while(u[i]>
x[k+1])
k++;
p1=(h[k]+2*(u[i]-x[k])*pow((u[i]-x[k+1]),2)*y[k])/pow(h[k],3);
p2=(h[k]-2*(u[i]-x[k+1])*pow((u[i]-x[k]),2)*y[k+1])/pow(h[k],3);
p3=(u[i]-x[k])*pow((u[i]-x[k+1]),2)*m[k]/pow(h[k],2);
p4=(u[i]-x[k+1])*pow((u[i]-x[k]),2)*m[k+1]/pow(h[k],2);
s[i]=p1+p2+p3+p4;
printf("
\nx="
=N;
%8.1f"
x[i]);
\ny="
%8.4f"
y[i]);
\n\nu="
%9.2f"
u[i]);
\n插值点:
s="
printf("
%9.5f”,s[i]);
\n"
0.70.9
1.11.3
1.5
1.7
1-9
卜=0・47?
4
0・64420・7833
0.89120.9&
36
0.9975
0.9917
0・9463
1.20
傭值点;
S=
50・2837250.
3634650.46836
Pressanykey
to
continue
五、复合梯形公式
doubleFTX(intn,floata,floatb)
doublef=0,t,h,*x,*y;
inti;
x=(double*)malloc((n+1)*sizeof(double));
y=(double*)malloc((n+1)*sizeof(double));
h=(b-a)/n;
n+1;
{x[i]=a+i*h;
y[i]=sin(x[i]);
for(i=1;
n;
i++)f=f+2*y[i];
t=h/2*(y[0]+f+y[n]);
输出函数值:
%f\n"
t);
floata,b;
intn;
输入区间上,下限:
%f%f"
a,&
b);
输入等分区间数:
%d"
&
n);
FTX(n,a,b);
简入等分区间数:
?
俞出歯藪值,0-459225
anukeutocontinue
皤nai砸]
六、复合辛普森求积公式
doubleFSP(intn,floata,floatb)
doublef1=0,f2=0,h,*x1,*y1,*x2,*y2;
inti;
x1=(double*)malloc((n+1)*sizeof(double));
y1=(double*)malloc((n+1)*sizeof(double));
x2=(double*)malloc(n*sizeof(double));
y2=(double*)malloc(n*sizeof(double));
i++){x1[i]=a+h*i;
y1[i]=sin(x1[i])*x1[i];
}for(i=0;
{x2[i]=x1[i]+h/2;
y2[i]=sin(x2[i])*x2[i];
i++)f仁f1+2*y1[i];
i++)f2=f2+4*y2[i];
printf(”输出函数值:
h/6*(y1[0]+f1+f2+y1[n]));
FSP(n,a,b);
Ii入区间上’下限’0iiAfgg间数小
[出函数值;
0-301168
Pressemylieytocontinue
七、直接三角分解法
{double
A[3][3]={0.25,0.2,0.166667,0.3333,0.25,0.2,0.5,1,2},x[3],y[3],b[3]={9,8,8},L[3][3],U[3][3],f1=0,f2=0;
for(j=0;
j++)
{U[i][j]=O;
L[i][j]=O;
{U[0][i]=A[0][i];
L[i][0]=A[i][0]/U[0][0];
L[i][i]=1;
for(j=i;
{for(k=0;
=i-1;
k++){f1=f1+L[i][k]*U[k][j];
f2+=L[j][k]*U[k][i];
U[i][j]=A[i][j]-f1;
L[j][i]=(A[j][i]-f2)/U[i][i];
f1=0;
f2=0;
y[O]=b[O];
{for(j=0;
j++)f1+=L[i][j]*y[j];
y[i]=b[i]-f1;
x[2]=y[2]/U[2][2];
i__)
{for(j=i+1;
j++)f2+=U[i][j]*x[j];
x[i]=(y[i]-f2)/U[i][i];
printf(”输出L矩阵:
\n”);
%f"
L[i][j]);
printf(”输出U矩阵:
U[i][j]);
printf(”输出求解结果:
齣岀L矩阵:
1-0000000.0000000.000000
i・33日200000000WWW
000000-361.000000
输出U矩阵:
呵.闻.RL166667
0.000000-0.016640—0・022200
输出求解结果;
-227-572008477.807665-178.010831
Pressanykeytocontinue
八、改进的平方法
doubleA[3][3]={2,-1,1,-1,-2,3,1,3,1},x[3],y[3],b[3]={4,5,6},d[3],L[3][3],U[3][3],f1=0,f2=0;
inti,j,k,n=3;
j++){U[i][j]=0;
L[i][j]=0;
d[0]=A[0][0];
L[0][0]=1;
i++)
j++){for(k=0;
=j-1;
k++)f1+=U[i][k]*L[j][k];
L[i][j]=U[i][j]/d[j];
f2+=U[i][j]*L[i][j];
}d[i]=A[i][j]-f2;
y[0]=b[0];
i++){for(j=0;
x[n-1]=y[n-1]/d[n-1];
for(i=n-2;
i--){for(j=i+1;
j++)f2+=L[j][i]*x[j];
x[i]=y[i]/d[i]-f2;
j++)printf("
printf("
输出U矩阵:
输出求解结果:
i++)printf("
输岀L矩阵:
1.0000000-0006000.6000005000001.0000000.WWW
0-500000400000000000
输岀U矩阵:
Q.0000000-0000000-0B3B00-1.0000000・0000000・0000301.0000003-5006000.600000输出求解结果:
1-1111110.7777782.555556Pressani/keytocontinue^
九、追赶法
doubleA[5][5]={2,-1,0,0,0,-1,2,-1,0,0,0,-1,2,-1,0,0,0,-1,2,-1,0,0,0,-1,2},f[5]={1,0,0,0,0};
doublex[5],y[5],U[5][5];
inti,j,n=5;
n;
j++)U[i][j]=0;
U[0][0]=U[n-1][n-1]=1;
U[0][1]=A[0][1]/A[0][0];
n-1;
{U[i][i]=1;
U[i][i+1]=A[i][i+1]/(A[i][i]-A[i][i-1]*U[i-1][i]);
y[0]=f[0]/A[0][0];
y[i]=(f[i]-A[i][i-1]*y[i-1])/(A[i][i]-A[i][i-1]*U[i-1][i]);
x[n_1]=y[n-1];
i--)x[i]=y[i]-U[i][i+1]*x[i+1];
{for(j=0;
输岀U葩阵j
1.000030-0.5003000-0000000.0000000.000000
0.0000000.000000
0.8333330.666667
1.一0・7SHBRBH.OfJRflBO
0.0000001.000000-0.800000
0^500000
0.3333330.16G667
十、雅可比迭代法
doubleA[3][3]={5,2,1,-1,4,2,2,-3,10},x[50][3],b[3]={-12,20,3},f=0,L=1;
intn=3,i,j,k=1;
i++)x[0][i]=0;
/*初始值*/
while(L<
0.003)
n;
if(j!
=i)f=f+A[i][j]*x[k-1][j];
x[k][i]=(b[i]-f)/A[i][i];
L=x[k][0]-x[k-1][0];
if((x[k][i]-x[k-1][i])/(x[k][i-1]-x[k-1][i-1])>
1||(x[k][i]-x[k-1][i])/(x[k][i-1]-x[k-1][i-1])<
-1)
L=x[k][i]-x[k-1][i];
printf(”输出每次迭代求得的X值:
k;
第%d次迭代:
”,i);
x[i][j]);
\n”);
\n输出迭代次数:
%d\n"
k-1);
俞出迭代次数;
20
ressanytocontInue
咼斯一塞德尔迭代法
doubleA[3][3]={5,2,1,-1,4,2,2,-3,10},x[50][3],b[3]={-12,20,3},f1=0,f2=0,L=1;
inti,j,k=1,n=3;
while(L>
0.00001||L<
-0.00001)
{if(j<
i)f1+=A[i][j]*x[k][j];
elseif(j>
i)f2+=A[i][j]*x[k-1][j];
x[k][i]=(b[i]-f1-f2)/A[i][i];
printf(”输出迭代X矩阵:
荷出迭代X矩阵’
1
-1・412000
.952000
2
.048800
-1.292966
5
.036160
.083904
-1-263437
.062693
-096712
-1.251075
.075031
.102737
-1.245086
.081003
.105719
-i・242107
.083980
.107208
-1.240619
.085468
-107952
-1.239874
-胭6212
-108324
-1.239502
.886584
.106510
-1.239316
.086771
.108603
-1.239223
-086864
-108649
-1_239177
.086910
-108672
—239154
.086933
.108684
-1.239142
.086945
-108690
-1.239136
.086951
.108693
输出迭代次数:
U
Pressanvtocontinue
十二、超松弛迭代法
doubleA[3][3]={5,2,1,-1,4,2,2,-3,10},x[30][3],b[3]={-12,20,3},f1=0,f2=0,L=1,w=0.9;
inti,j,k=1,n=3;
0.0001||L<
-0.0001)
i)f2+=A[i][j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 算法 语言 程序