- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
项目一 无理数的分析与研究
无理数是数轴上确定的一点,只能用戴狄金分割表示该数,可以表示成无限不循环小数。求无理数100位以上的近似值,是工程上常用的数值,要求用高精度方法表示。分析与研究无理数的计算方法和计算精度,掌握java的高精度数与大整数的编程思想,开发计算无理数高精度结果的Java应用软件,为用户提供计算无理数的实用程序。
课程设计目的:
Java SE课程设计是学生综合应用所学Java程序设计语言的知识,编制和开发实用的应用程序,通过课程设计,对学生进行较为系统的技能训练,从而巩固和加深对Java SE程序设计基础理论知识的理解,培养学生综合运用所学软件开发知识,解决实际具体应用问题的能力,并积累开发软件的实践经验,培养学生使用Java SE程序设计语言的独立编程能力,使学生成为具有扎实功底和较强能力的应用型软件开发人才。
课程设计程序功能要求:
1、提出正确的高精度数表示方法;
2、提出和实现无理数的计算方法;
3、实现高精度数的加法运算;
4、实现高精度数的减法运算;
5、实现高精度数的乘法运算;
6、实现高精度数的除法运算;
7、具有友好的用户界面和便捷的操作方法;
8、方便程序调用。
课程设计参考资料:
一、系数为1的一元二次方程
一元二次方程 方程的正根 近似值 递推公式 x2+x+1=0 x = (-1+jsqrt(3))/2 复根,与根号3有关 x2+x-1=0 x = (sqrt(5)-1)/2 0.6180339887…… xn+1=1/1+xn=1-xn+xn2-xn3+xn4…… x2-x+1=0 x = (1+jsqrt(3))/2 复根,与根号3有关 x2-x-1=0 x = (1+sqrt(5))/2 1.6180339887…… xn+1=1+1/(1+xn)=2-xn+xn2-xn3+xn4…… 可见数为1的一元二次方程根的计算与无理数根号5 即sqrt(5)和根号3即sqrt(3)有关,将方程x2+x-1=0与y2-y-1=0的根相加,有:
x+y = (sqrt(5)-1)/2+(1+sqrt(5))/2 = sqrt(5)= sqrt(1*1+2*2)
将方程x2+x+1=0与y2-y+1=0的根虚部相加,有:
Im(x+y)=Im(x)+Im(y) = sqrt(3)/2+sqrt(3)/2=sqrt(3)= sqrt(2*2-1*1)
求任意数a的平方根即x2 = a,可以写成 x = a/x,进一步写成2x = x+a/x,即
x =(x+a/x)/2
写成根号a的递推公式为:
xn+1=(xn +a/xn)/2;
二、java的高精度数与大整数的编程思想
1、阅读JDK帮助文档,查阅高精度数类和大整数BigInteger:
查阅java.lang包Number类的BigDecimal类,查阅java.math包的BigInteger类,阅读帮助文档的信息,仔细查看两者的字段摘要和方法摘要,理解高精度数与大整数的编程思想。
2.查看JDK中的源代码
在安装JDK的文件夹jdk1.7.0_60中有一个src压缩文件包,这个压缩包里压缩了JDK文档的源代码,将二个JDK帮助文档复制到用户文件夹,将src压缩文件包解压到用户文件夹,查看源文件与帮助文档之间的一一映射,一边阅读原代码,一边学习java的高精度数与大整数的编程思想。
3、查看根类、math类的源代码:
查阅包信息(package-info)、标记可变大整数(SignedMutableBigInteger)、大整数(BigInteger)、高精度数(BigDecimal)、可变大整数(MutableBigInteger)、舍入模式(RoundingMode)、数学背景(MathContext)、位筛(BitSieve)的源代码。
三、高精度数的运算
1、高精度数的加、减、乘、除、乘方运算
在java中高精度数的运算是用数组进行运算的大数运算,分别用加add()、减subtract()、乘multiply()、除divide()、乘方pow()等方法进行运算,不能直接用运算符对高精度数进行运算。
高精度的数值定义如下:
// Cache of common small BigDecimal values.
private static final BigDecimal zeroThroughTen[] = {
new BigDecimal(BigInteger.ZERO, 0, 0, 1),
new BigDecimal(BigInteger.ONE, 1, 0, 1),
new BigDecimal(Bi
文档评论(0)