数值计算从这里启航

本文探讨了数值计算的基础,介绍了计算机数系的概念,包括不同进制数的表示及浮点数的规格化形式。文章详细解释了β进制数、数的浮点表示,并分析了计算机所能表示的数的范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数值计算从这里启航

做数值的初衷

第一次写博客,博客上的编辑器用的不太熟练,以后会慢慢改进。最近在学习数值计算,所以我打算做一个以数值计算为主题的专题,一方面是回顾一下所学的知识,另一方面是希望将我的一些经验分享给大家。作为一名学生党,我很清楚学习不是一件很轻松的事(对绝大多数人来说),经常需要参考课堂以外的资料以及借鉴前人的经验,不是说鼓励抄袭或者不主张独立思考什么的,而是说一个人的能力确实有限,尽量要站在巨人的肩膀上看世界。可能数值计算这方面本站有很多牛人已经分享过经验了,不过我这里只是总结归纳,一期一期地讲,尽可能细致一点,当然有错误的地方欢迎指正。那么,题外话就不多说了,进入正题吧。

简单介绍

数值计算这门课,怎么说呢,一方面对数学的要求是比较高的,另一方面对程序语言的应用能力也是比较高的,这两方面后面会慢慢体现出来。基本上所有的数值计算课程都是从计算机的数系、误差、算法的数值稳定开始的,这里我们也不例外,首先讲讲计算机中的数系吧。

计算机的数系

β进制数

所谓β进制数其实就是以β为进制的数,说人话就是

X=±(an−1βn−1+an−2βn−2+an−3βn−3+…+a1β1+a0β0+a−1β−1+a−2β−2+…+a−mβ−m)=±(an−1an−2an−3…a0a−1a−2…a−m)βX=±(a_{n-1}β^{n-1}+ a_{n-2}β^{n-2}+ a_{n-3}β^{n-3}+…+ a_{1}β^{1}+ a_{0}β^{0}+ a_{-1}β^{-1}+ a_{-2}β^{-2}+…+ a_{-m}β^{-m}) =±(a_{n-1}a_{n-2}a_{n-3}…a_{0}a_{-1}a_{-2}…a_{-m})βX=±(an1βn1+an2βn2+an3βn3++a1β1+a0β0+a1β1+a2β2++amβm)=±(an1an2an3a0a1a2am)β,其中0≤aka_{k}ak<β为整数.

我们平常在做数值计算的时候用的比较多的是十进制数、二进制数、十六进制数.这里关于进制数之间的转换咱就不提了(说白了就是不想码公式)

数的浮点表示

规格化的浮点数:要求小数点后第一位数字非0.在β进制下,规格化的浮点数就可以表示成
0.a1a2...as×βc0.a_{1}a_{2}...a_{s} \times \beta ^{c}0.a1a2...as×βc
其中,1≦a1<β\leqq a_{1}\lt\betaa1<β,0≦ai<β,i=2,3,...,s.0\leqq a_{i}\lt\beta,i=2,3,...,s.0ai<β,i=2,3,...,s.0.a1a2...as0.a_{1}a_{2}...a_{s}0.a1a2...as为浮点数的尾数部分,s⩾1s\geqslant1s1为整数.c为阶码为β进制的整数.
例如:
0.11001×2−110,0.11001\times2^{-110},0.11001×2110,二进制

0.77×1012,0.77\times10^{12},0.77×1012,十进制

计算机的数系

对浮点数有一个大概的认识了之后,我们还应该了解到什么样的数计算机可以表示出来,那么显然的,计算机表示的数位数是有限的.
事实上机器的数系由(β.t.M.m)(\beta.t.M.m)(β.t.M.m)所确定,其中t为计算机的字长,m和M确定阶码c的范围,即m≦c≦Mm\leqq c\leqq MmcM,一般而言n=−Mn=-Mn=M,或n=−M+1.n=-M+1.n=M+1.记机器的数系就为F(β,t,m,M)F(\beta,t,m,M)F(β,t,m,M).下面我们就简记为F.显然对任意f属于F,成立
βm−1≦∣f∣≦(1−β−t)βM\beta^{m-1}\leqq|f|\leqq(1-\beta^{-t})\beta^{M}βm1f(1βt)βM
(推不出来的同学可以代几个实际的数验证一下,其实挺简单的)
那么这样一来计算机中所有十进制的数包括0的规格化浮点数个数就为:
18×10t−1×(M−m+1)+118\times10^{t-1}\times(M-m+1)+118×10t1×(Mm+1)+1
一般基数为β\betaβ的规格化浮点数个数为:
2(β−1)βt−1×(M−m+1)+12(\beta-1)\beta^{t-1}\times(M-m+1)+12(β1)βt1×(Mm+1)+1
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−--------------------------------
这次就先简单介绍一下计算机中数的表示,下次我们就接着聊聊误差
(第一次写博客是真的不容易。。。哎!尤其是公式码得我脑阔疼)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值