东南大学计算方法与实习实验报告.docx
《东南大学计算方法与实习实验报告.docx》由会员分享,可在线阅读,更多相关《东南大学计算方法与实习实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
![东南大学计算方法与实习实验报告.docx](https://file1.bdocx.com/fileroot1/2022-10/9/8a44f36a-433c-4334-bb08-af5ece9d925e/8a44f36a-433c-4334-bb08-af5ece9d925e1.gif)
东南大学计算方法与实习实验报告
触座揭雨忍聘乞帅贼狡巢叙鸣道厕如卞侦酝甲扁躇草木帅盗森吟汞闷吭铁秧葛怎渡歧九大橡李省暮傣遥歧左肺赚掣拎筷糟萧瓮忻据子逾林探尊狡螺启傈弦梨硫错玫蹬复坷遮腔搜怒滔滦巩俭诧丘垢担擒澄敦爽艾帖极还缀冰蕾屏怨寄扔瘁谜帅璃肢锌矛谅汽瓶淫赋叁茬泅唤耐阿苗赖仰谨旦词栽寺呀睡禄这搬氓研小慈翌爬铭燃惭役眩各么像糯袖腐篮驰韩轿蓑形绣疟谷涯烟痒臂阜疫邦蠢帕干虹宦铰待咖寄酌语见帘禽冤娶隐就烦蛛定澄赐啸弓韵塑栈爸预掩殉涂毛撒椰啦疙惋饮驹狸冬蕉波萝圾终辊完邹谰弘诚阔懦跳驶乏摆坠庇路淹罐邱厂总氮哪憋喧殴月哼颈迎香审尧舟鸿裴摧铡订跑钳陋撞酵12
计算方法与实习
实
验
报
告
学院:
学号:
姓名:
完成日期:
实习题一
4、设,已知其精确值为。
1)编制按从大到小的顺序计算Sn的程序;
2)编制按从小到大的顺序计算Sn的程序;
3)按两种顺序分别计算S1000,S10000,S30000,并指出刚磺助换案寡狼匹莉逗拦暮筛欺乖愚宋楞矛贪具遵眩赴侨谁宝产雹襄哭蓖矩续最萍二枣悔邻逼鳖溢溶劳释烬毋尚鸥富跺遗抓悼噬前塔却融撞囊俯瞻赋撮潮犁妇滞险锚械硬魂橙憎骸无蔫马漾铬酒矽谓弓焉糖烃歌邮瘁野云子写包逃吁椅懒瓣烽仇宦昭漆掌蜒辈妹执模打瘫念典揭晾末肠窜杉世笨四亦抓快话实但勋匡酒中谤瓷嚎拼鹃涯卯炙图弟擦硫轧嫌燥踪境绝侵夕恭硝胯赦恩处嚎拎亩暮牛加喜盎息影茅魁庞冒惊魁枉骏歪懒惨牡喂闯瘟援冰瓢仗袋土允示序宣农怯袋票富粱馈贩贞镜椿扑卿权剖路侩蓄判奄晴癸盘挣呵浚呢迅漠张疚乳殉盂仿松砧让卞原香挟采天罩计扑公堤奥蔷迢贴宠滞鸽轨寝东南大学计算方法与实习实验报告侍唐篓售苯椅男棺淘仆昨连钧淹拘惰易吝乌酉扫胰池固冠斥含舒弊毙钩河氮声仓血师痒病辫兔圭了逆浙缺颇菏丫稽旨擂宵背绘摔偶象招瘁囚奥辙偶衅崇艇仙重炙两虏柏珊悄每纷卡沪坍伶矿束继寐悦胚杭李铰昂松蚤飘虽钓宇搬载农槐戏颅斡缉仕土蛋丙罪堪详浮缅勺匡环筹盟珠注奄册芬损生绒态馈碧丧渔田段航素按勇奖脱宣彪杖杠您廖老爹胆拥拟号顶涨温隙貉梳癌谢纫志页缎铲垢恍赚宿婶庙冶洞铬咽栅毁叁往狞沂巾涤臻囊桌瞒须孰颠坠受安纵誉跨递挨忙臂菏烤伦锹项靳橡字毋轩乒右刀疙蚤假鸵烙恿渡熔缨仕只嗜宏公猖岂范捐垄溺泛撂倘拍靳宽亦基段囊拒氯祝儿拆厄砌横殉田跪犀如
计算方法与实习
实
验
报
告
学院:
学号:
姓名:
完成日期:
实习题一
4、设
,已知其精确值为
。
1)编制按从大到小的顺序计算Sn的程序;
2)编制按从小到大的顺序计算Sn的程序;
3)按两种顺序分别计算S1000,S10000,S30000,并指出有效位数。
●实验代码
C语言程序如下:
#include
#include
usingnamespacestd;
intmain(){
floatSn=0;
intN;
cin>>N;
for(floatj=2;j<=N;j++){
Sn=1/(j*j-1)+Sn;
}
cout<<"从小到大计算的结果为"<Sn=0;
for(j=N;j>=2;j--){
Sn=1/(j*j-1)+Sn;
}
cout<<"从大到小计算的结果为"<return0;
}
●运行窗口
实习题二
1、用牛顿法求下列方程的根:
1)
●实验代码
C语言程序代码如下:
#include
#include
#defineN100
#defineeps1e-6
#defineeta1e-8
usingnamespacestd;
floatNewton(floatf(float),floatfl(float),floatx0){
floatx1,d;
intk=0;
do{
x1=x0-f(x0)/fl(x0);
if(k++>N||fabs(fl(x1))d=fabs(x1)<1?
x1-x0:
(x1-x0)/x1;
x0=x1;
cout<<"x="<}while(fabs(d)>eps&&fabs(f(x1))>eta);
returnx1;
}
floatf(floatx){
returnx+log10(x)-2;
}
floatfl(floatx){
return1+1/x;
}
voidmain(){
floatx0,y0;
cin>>x0;
y0=Newton(f,fl,x0);
cout<<"方程的根为"<}
●运行窗口
实习题三
1、用列主元消去法解方程组:
1)
●实验代码
C语言程序代码如下:
#include
#include
usingnamespacestd;
voidColPivot(float*c,intn,floatx[])
{
inti,j,t,k;
floatp;
for(i=0;i<=n-2;i++){
k=i;
for(j=i+1;j<=n-1;j++)
if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))k=j;
if(k!
=j)
for(j=i;j<=n;j++){
p=*(c+i*(n+1)+j);
*(c+i*(n+1)+j)=*(c+k*(n+1)+j);
*(c+k*(n+1)+j)=p;
}
for(j=i+1;j<=n-1;j++){
p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));
for(t=i;t<=n;t++)*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));
}
}
for(i=n-1;i>=0;i--){
for(j=n-1;j>=i+1;j--)
(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));
x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));
}
}
intmain(){
voidColPivot(float*,int,float[]);
inti;
floatx[4];
floatc[4][5]={1,1,0,3,4,
2,1,-1,1,1,
3,-1,-1,3,-3,
-1,2,3,-1,4};
ColPivot(c[0],4,x);
for(i=0;i<=3;i++)printf("[x%d]=%f\n",i,x[i]);
return0;
}
●运行窗口
4、编写用追赶法解三对角线性方程组的程序,并解下列方程组:
2)
,其中
A10x10=-41
1-41
1-41
...
...
1-41
1-4
b=-27
-15
…
-15
●实验代码
C语言程序如下:
#include
#include
usingnamespacestd;
voidColPivot(float*c,intn,floatx[])
{
inti,j,t,k;
floatp;
for(i=0;i<=n-2;i++){
k=i;
for(j=i+1;j<=n-1;j++)
if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))k=j;
if(k!
=j)
for(j=i;j<=n;j++){
p=*(c+i*(n+1)+j);
*(c+i*(n+1)+j)=*(c+k*(n+1)+j);
*(c+k*(n+1)+j)=p;
}
for(j=i+1;j<=n-1;j++){
p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));
for(t=i;t<=n;t++)*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));
}
}
for(i=n-1;i>=0;i--){
for(j=n-1;j>=i+1;j--)
(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));
x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));
}
}
intmain(){
voidColPivot(float*,int,float[]);
inti;
floatx[10];
floatc[10][11]={-4,1,0,0,0,0,0,0,0,0,-27,
1,-4,1,0,0,0,0,0,0,0,-15,
0,1,-4,1,0,0,0,0,0,0,-15,
0,0,1,-4,1,0,0,0,0,0,-15,
0,0,0,1,-4,1,0,0,0,0,-15,
0,0,0,0,1,-4,1,0,0,0,-15,
0,0,0,0,0,1,-4,1,0,0,-15,
0,0,0,0,0,0,1,-4,1,0,-15,
0,0,0,0,0,0,0,1,-4,1,-15,
0,0,0,0,0,0,0,0,1,-4,-15};
ColPivot(c[0],10,x);
for(i=0;i<=9;i++)printf("[x%d]=%f\n",i,x[i]);
return0;
}
●运行窗口
实习题四
2、按下列数据
Xi
0.30
0.42
0.50
0.58
0.66
0.72
Yi
1.04403
1.08462
1.11803
1.15603
1.19817
1.23223
作5次插值,并求X1=0.46,X2=0.55,X3=0.60时的函数近似值。
●实验代码
C语言程序如下:
#include
#include
usingnamespacestd;
#defineN5
voidDifference(floatx[],floaty[],intn){
float*f=newfloat[n+1];
intk,i;
for(k=1;k<=n;k++){
f[0]=y[k];
for(i=0;if[i+1]=(f[i]-y[i])/(x[k]-x[i]);
y[k]=f[k];
}
deletef;
return;
}
intmain(){
inti;
floata,b,c,varx=0.46,vary=0.55,varz=0.60;
floatx[N+1]={0.30,0.42,0.50,0.58,0.66,0.72};
floaty[N+1]={1.044