#include<stdio.h>
#include<math.h>
main()
{ long int n,k
double s1,s2,e=1e-8 //e代表计算精度
n=1k=1//k=n×n
s1=(3.0*k+n)/(2*k+3)
do{
s2=s1
k=k+2*n+1 //(n+1) ^2=n^2+2n+1
n=n+1
s1=(3.0*k+n)/(2*k+3)
}while(fabs(s1-s2)>e)
printf("%lf",s1)
}
简单地说可以,一般除了无限递归等特殊的不行,其他的都可以。一楼的不懂不要乱说。
C语言可以做的很精确,只要计算机的内存硬盘足够,就能足够精确,当然前提是极限存在。
如果需要很长很长的位数最好用数学函数库,因为一般80x87的精度都是80位,超过此限制需要自己用C语言或者汇编语言提高继续提高精度。但对于非专业计算机人士来说很难。
计算机就是做计算的,大部分可计算问题都没有问题,只是时间和空间的问题。
X趋于无穷大是不可能计算的,举一个简单的例子,假设计算机的内存1TB(目前还没有)。
如果存储了一个整数,那么这个最大值是2的8T次方,但是这个和无穷大相差太远。
考虑函数ackman(6,6),这个函数的值根本无法通过目前的计算机(甚至未来的计算机也不能计算出来),就算计算出来,这个数写出来一个地球也放不下,但是比无穷大小很多吧。
但是你说的问题就不一样,如果极限是收敛的,那么随着x的值增大,就可以取得那个极限的近似值。注意计算机C语言一般只能取得足够接近的值。
否则可以考虑使用公式推理软件,看看能不能解方程获得极限,那才可能是精确值。
比如说某个数列的极限为π,那要写一个相当复杂的程序才能打印出π字样。但是π的值又是什么呢?3.14159……,这个精确的值可能又是地球上不够写了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)