数值计算第一次实验报告文档格式.docx
- 文档编号:19597507
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:14
- 大小:18.83KB
数值计算第一次实验报告文档格式.docx
《数值计算第一次实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《数值计算第一次实验报告文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
1111全是1;
所以再减去1的浮点数;
就得到了一个新的浮点数,取绝对值后,结果用浮点数表示的尾数部分只有最后一位是1,其余全是0;
所以这个结果就是近似的机器精度;
(2)
SC_E1_3_16308029_V1
单精度近似算法结果1.19209e-07
单精度真实结果1.19209e-07
双精度近似算法结果2.22045e-16
双精度真实结果2.22045e-16
(3)
不能在基底为3的系统用;
由第一问可以知道,必须设计公式让最后结果的尾数部分只有最后一位为1其余全是0;
这个式子明显不成立
1.4
SC_E1_4_16308029_V1
1-0.718282-0.264241
2-0.468282-0.172271
3-0.347911-0.127989
4-0.276876-0.101857
5-0.229962-0.0845982
6-0.196655-0.0723455
7-0.171782-0.0631951
8-0.152497-0.0561006
9-0.137107-0.0504389
10-0.124539-0.0458155
11-0.114083-0.0419687
12-0.105247-0.038718
13-0.0976809-0.0359348
14-0.0911303-0.033525
15-0.0854031-0.031418
16-0.0803533-0.0295603
17-0.0758675-0.0279101
18-0.071856-0.0264343
19-0.0682475-0.0251069
20-0.0649841-0.0239063
绝对误差和相对误差都在随着n的增大而减小;
e的定义就是这个公式,所以n增大的时候该式子不断接近e没有计算误差,传播误差在减小,所以相对误差,绝对误差都减小;
1.8
(a)原式=1/2+(1/3+1/4)+(1/5+1/6+1/7+1/8)+...
1/2+(1/4+1/4)+(1/8+1/8+1/8+1/8)+...
=1/2+1/2+1/2+...
所以原级数大于无穷个1/2相加,无穷个1/2相加发散;
故原级数也发散;
(b)因为当n足够大时,1/n在浮点数中将被表示为0;
之后的1/(n+1);
1/(n+2);
都会是0,所以调和级数就有限了;
(c)预测是在部分和足够大时,1/n小于机器精度与部分和的乘积;
导致浮点数相加实际上不会发生。
不过可以近似预测n取1.7977e+308时才会停止变化;
因为写过程序,尝试过精确计算n发现n极其巨大,要算很久,接近matlab所能表达的最大数了。
所以取matlab最大正数1.7977e+308;
所需时间为2*(1.7977e+308)/速度;
(d)
SC_E1_8_16308029_V6(200000)
Summing1/nfornfrom1to200000
Timecomsume:
0.031250
Partialsum:
n=20000,sum=10.480707168579
0.000000
n=40000,sum=11.173********0
n=60000,sum=11.579553604126
0.046875
n=80000,sum=11.866791725159
.0908********
n=120000,sum=12.272398948669
n=140000,sum=12.428012847900
n=160000,sum=12.561527252197
n=180000,sum=12.677227020264
n=200000,sum=12.782752037048
Totaltimecomsume:
0.156250
totalsum:
SC_E1_8_16308029_V6(single(200000))
0.546875
n=20000,sum=10.480678217229
0.515625
n=40000,sum=11.173********6
0.500000
n=60000,sum=11.579307172749
0.640625
n=80000,sum=11.866991328545
0.453125
.0901********
0.609375
n=120000,sum=12.272458519993
0.531250
n=140000,sum=12.426609795060
0.578125
n=160000,sum=12.560141634114
0.281250
n=180000,sum=12.677925016994
0.250000
n=200000,sum=12.783285810430
4.984375
判停标准:
总得级数和不再改变;
实际结果是:
运算极其庞大,花费时间太久;
执行时间:
太久了,双精度更久;
1.9
(b)当加数(x^k)/(k!
)小于机器精度与级数部分和的乘积时,停止;
(c)
SC_E1_9_16308029_V1(-1)
Theresultofmyfunctionis0.36787944117144232159552377016146
Theresultoffunctionexpis0.3679
SC_E1_9_16308029_V1
(1)
Theresultofmyfunctionis
2.7182818284590452353602874713527
Theresultoffunctionexpis2.7183
SC_E1_9_16308029_V1(-5)
Theresultofmyfunctionis0.0067379469990854670966360484231484
Theresultoffunctionexpis0.0067
SC_E1_9_16308029_V1(5)
Theresultofmyfunctionis148.41315910257660342111558004055
Theresultoffunctionexpis148.4132
SC_E1_9_16308029_V1(-10)
Theresultofmyfunctionis0.000045399929762484851535591515560551
Theresultoffunctionexpis4.5400e-05
SC_E1_9_16308029_V1(10)
Theresultofmyfunctionis22026.465794806716516957900645284
Theresultoffunctionexpis2.2026e+04
SC_E1_9_16308029_V1(-15)
Theresultofmyfunctionis0.00000030590232050182578837147949770229
Theresultoffunctionexpis3.0590e-07
SC_E1_9_16308029_V1(15)
Theresultofmyfunctionis3269017.3724721106393018550460917
Theresultoffunctionexpis3.2690e+06
SC_E1_9_16308029_V1(-20)
Theresultofmyfunctionis0.0000000020611536224385578279659403801558
Theresultoffunctionexpis2.0612e-09
SC_E1_9_16308029_V1(20)
Theresultofmyfunctionis485165195.40979027796910683054154
Theresultoffunctionexpis4.8517e+08
结果完全一样,只是exp函数的精确度没有我写的高;
(d)可以得到精确结果;
上问可以证明;
(e)可以把正数项分为一组,剩下的负数项为另一组;
结果就变成了
(1+x^2/2!
+x^4/4!
+x^6/6!
+...)-(x+x^3/3!
+x^5/5!
+...)这里x取负数的绝对值;
1.13
SC_E1_13_16308029_V1
(1)
N:
Way1Way2
1105.00000000000000000105.00000000000000000
SC_E1_13_16308029_V1(4)
4105.09453369140624000105.09453369140623000
SC_E1_13_16308029_V1(12)
12105.11618978817329000105.11618978817330000
SC_E1_13_16308029_V1(365)
365105.12674964674483000105.12674964674473000
两种算法很接近,第二种为近似值,n越大绝对误差越大,相对误差也越大;
当1+r/n与1相等时,总钱数将不再变化;
即0.05/n等于机器精度时即可;
借助第三题的结果;
经过计算单精度时约为4.1943e+05;
双精度时约为2.2518e+14;
1.16
精度排序:
根据方差计算容易发现:
a>
c>
b>
d>
e;
SC_E1_16_16308029_V1(2000000)
每组测试的第二行是总得测试数据数;
之后依次为a到e的输出
Result:
1
8.082248568535e-01
8.082248568535e-01
8.082248568535e-01
8.082248568535e-01
200001
1.001861406250e+05
1.001867265625e+05
1.001883515625e+05
1.001845390625e+05
400001
2.001972812500e+05
2.001991250000e+05
2.001972812500e+05
2.001993906250e+05
2.001892187500e+05
600001
2.996646250000e+05
2.996669375000e+05
2.996685937500e+05
2.996423125000e+05
800001
3.999951875000e+05
3.999962500000e+05
4.000130312500e+05
3.999871250000e+05
1000001
4.996321875000e+05
4.996257187500e+05
4.996321875000e+05
4.996448437500e+05
4.996192812500e+05
1200001
5.994913125000e+05
5.994693750000e+05
5.994969375000e+05
5.992646875000e+05
1400001
6.994252500000e+05
6.994230625000e+05
6.995638125000e+05
6.993849375000e+05
1600001
8.000868125000e+05
8.000660000000e+05
8.001243750000e+05
7.995398750000e+05
1800001
8.993791250000e+05
8.993792500000e+05
8.993791250000e+05
8.994428750000e+05
8.991016250000e+05
方法2到5各自的误差的方差如下
9.712609863281e+01
2.627036592457e-04
2.520199218750e+03
4.299264062500e+04
又很显然双精度算法最精确,所以a最精确;
解释原因:
a法双精度算法位数多所以最精确;
C法;
b法比较而言大数小数随机相加,不会那么容易出现大批数据相对于部分和而言可以忽略的情况;
d法从小到大的加,前面的数据较多的相加,但是后面还是出现部分和相对于随机数很大,使得随机数被忽略;
e法从大到小的加,当前面的和很大时,后面的数相对太小,相加后和不变,所以最终结果会较早的不变,即往后的小数其实被忽略了;
算法成本比较:
由于a发是双精度所以最高;
c法要反复计算多次,执行的步骤多所以成本第二高;
我又更改了代码V2版本;
SC_E1_16_16308029_V2(2000000)
t1=
0.0035
t2=
0.0037
t3=
0.0039
t4=
0.0052
t5=
0.0048
0.0085
0.0090
0.0216
0.0485
0.0529
0.0157
0.0188
0.0506
0.1506
0.2208
0.0277
0.0522
0.0556
0.1361
0.1359
0.0466
0.0373
0.0796
0.2633
0.2260
0.0433
0.0455
0.0913
0.2269
0.2048
0.0507
0.0610
0.1094
0.2327
0.2821
0.0592
0.0685
0.1244
0.3235
0.3496
0.0698
0.0735
0.1439
0.3789
0.4021
0.0775
0.1001
0.1588
0.3719
0.3692
所以法1最小,法2第二小,之后法3法5法4;
;
解释c算法:
较大数和较小数相加时,因为电脑计算有效数字的位数有限,会有一部分小数被无视;
c法则把无视的小数用变量c记录了会被忽略的小数,并在后面又补偿了回来,从而大大减少误差。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 计算 第一次 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)