数值分析上机报告Word文件下载.docx
- 文档编号:14824793
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:17
- 大小:142.73KB
数值分析上机报告Word文件下载.docx
《数值分析上机报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《数值分析上机报告Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
{12.38412,2.115237,-1.061074,1.112336,-0.113584,0.718719,1.742382,3.067813,-2.031743},
{2.115237,19.141823,-3.125432,-1.012345,2.189736,1.563849,-0.784165,1.112348,3.123124},
{-1.061074,-3.125432,15.567914,3.123848,2.031454,1.836742,-1.056781,0.336993,-1.010103},
{1.112336,-1.012345,3.123848,27.108437,4.101011,-3.741856,2.101023,-0.71828,-0.037585},
{-0.113584,2.189736,2.031454,4.101011,19.897918,0.431637,-3.111223,2.121314,1.784317},
{0.718719,1.563849,1.836742,-3.741856,0.431637,9.789365,-0.103458,-1.103456,0.238417},
{1.742382,-0.784165,-1.056781,2.101023,-3.111223,-0.103458,14.713846,3.123789,-2.213474},
{3.067813,1.112348,0.336993,-0.71828,2.121314,-1.103456,3.123789,30.719334,4.446782},
{-2.031743,3.123124,-1.010103,-0.037585,1.784317,0.238417,-2.213474,4.446782,40.00001}
};
doublep,v,s,w;
inti,j,h,m,g;
doubleu[9],x1[9],y[9],q[9],b1[9][10],x[9];
doubled[9]=
{2.1874369,33.992318,-25.173417,0.84671695,1.784317,-86.612343,1.1101230,4.719345,-5.6784392};
/*--------------------开始迭代----------------------*/
for(j=0;
j<
7;
++j)/*Household变换*/
{
s=0.0;
for(i=j+1;
i<
9;
++i)
s=s+t[i][j]*t[i][j];
s=sqrt(s);
v=(t[j+1][j]>
0)?
(s*s+s*t[j+1][j]):
(s*s-s*t[j+1][j]);
for(g=0;
g<
++g)
{
if(g<
=j)
u[g]=0;
elseif(g==j+1)
u[g]=t[j+1][j]+s*sign(t[j+1][j]);
elseu[g]=t[g][j];
}
for(m=0;
m<
++m)
y[m]=0;
for(h=0;
h<
++h)
y[m]=y[m]+t[m][h]*u[h];
y[m]=y[m]/v;
p=0;
for(i=0;
p=p+u[i]*y[i];
p=0.5*p/v;
q[i]=y[i]-p*u[i];
for(h=0;
for(m=0;
t[m][h]=t[m][h]-(q[m]*u[h]+u[m]*q[h]);
}
printf("
Household:
\h"
);
for(i=0;
for(j=0;
++j)
if(j%9==0)
printf("
\n"
printf("
%-9.5f"
t[i][j]);
printf("
w=1.4;
/*超松弛法*/
i++)/*开始循环*/
x1[i]=0;
i++)
for(j=0;
j++)
{
if(i==j)
b1[i][j]=0;
elseb1[i][j]=-t[i][j]/t[i][i];
}
for(i=0;
b1[i][9]=d[i]/t[i][i];
h++)
for(i=0;
{
s=0;
for(j=0;
s=s+b1[i][j]*x1[j];
s=s+b1[i][9];
x1[i]=x1[i]*(1-w)+w*s;
}
if(i==5)
printf("
printf("
x%d=%-10.6f"
i,x1[i]);
/*输出结果*/
u[0]=t[0][0];
/*以下是消去法*/
y[0]=d[0];
for(i=1;
q[i]=t[i][i-1]/u[i-1];
u[i]=t[i][i]-q[i]*t[i-1][i];
y[i]=d[i]-q[i]*y[i-1];
x[ge]=y[ge]/u[ge];
for(i=ge-1;
i>
=0;
i--)
x[i]=(y[i]-t[i][i+1]*x[i+1])/u[i];
x%d=%-10.6f"
i,x[i]);
intsign(doublex)
intz;
/*定义变量*/
z=(x>
=(1e-6)?
1:
-1);
return(z);
/*主函数返回z告诉系统程序结束*/
三、运行结果:
四.问题讨论:
题中矩阵B是对称正定阵,且是三对角的,所以选择合适的松驰因子ω,收敛速度是很快的。
已经求出x的第m解,第m-1基础上,经过重新组合得新的序列,而在此新序列收敛速度加快。
第三题:
3、已知函数值如下表:
x
1
2
3
4
5
f(x)
0.69314718
1.0986123
1.3862944
1.6094378
6
7
8
9
10
1.7917595
1.9459101
2.079445
2.1972246
2.3025851
f’(x)
f’
(1)=1
f’(10)=0.1
试用三次样条插值求f(4.563)用f’(4.563)的近似值。
这里,所以只要求出,就能得出插值函数S(x)。
求的方法为:
这里
最终归结为求解一个三对角阵的解。
用追赶法解三对角阵的方法如下:
,
综上可得求解方程Ax=d的算法:
二、程序如下:
#include<
stdio.h>
math.h>
main()
doubleth[10][10];
inti;
doubled[10];
doubley[10]={0,0.69314718,1.0986123,1.3862944,
1.6094378,1.7917595,1.9459101,2.079445,2.1972246,2.3025851},
xm[10]={1,2,3,4,5,6,7,8,9,10};
doubleh=1;
a;
doublex[10];
doubleb[10],l[10];
doublec[10],c1[10],c2[10];
floatf[10],f1[10];
for(i=0;
10;
th[i][i]=2;
th[0][1]=1;
for(i=1;
th[i][i+1]=0.5;
th[i][i-1]=0.5;
th[9][8]=1;
\*输入矩阵值*\
d[0]=6*((y[1]-y[0])/h-1)/h;
d[i]=6*((y[i+1]-y[i])/h-(y[i]-y[i-1])/h)/(2*h);
d[9]=6*(0.1-(y[9]-y[8])/h)/h;
\*计算d值*\
b[0]=th[0][0];
c[0]=d[0];
l[i]=th[i][i-1]/b[i-1];
b[i]=th[i][i]-l[i]*th[i-1][i];
c[i]=d[i]-l[i]*c[i-1];
x[9]=c[9]/b[9];
for(i=8;
x[i]=(c[i]-th[i][i+1]*x[i+1])/b[i];
\*用追赶法求解三样条插值法中的M*\
printf("
pleaseinput:
"
\*输入x值*\
scanf("
%lf"
&
a);
{
c1[i]=(x[i-1]*pow(h,2)/6+y[i]-x[i]*pow(h,2)/6-y[i-1])/h;
\*求出c1值*\
c2[i]=y[i]-x[i]*pow(h,2)/6;
\*求出c1值*\f[i]=x[i-1]*pow((xm[i]-a),3)/6+x[i]*pow((a-xm[i-1]),3)/6+c1[i]*(a-xm[i])+c2[i];
\*f(x)表达式*\
f1[i]=x[i]*pow((a-xm[i-1]),2)/2+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 上机 报告