以下是引用ysr2857在2021-2-18 00:18:43的发言:
程序可以这么计算:小数化分数,分子是乘方,分母是开方,而手工计算是不能这么算的,用幂级数公式计算,选用收敛速度快的,几步除法和假发就可以得到精确的结果(大多是无理数,只有到无穷多位才能相等所以精确到点后某位就行,就是某项的小数在点后多少位是0再往后才是数字,就不用再算了),比如这个可以转换为对数,再还原位指数:先计算3.21*ln1.23(当然,手工计算需要用级数展开式,各项的和,某一项非常小了之后就不必再算了),设结果为x,再算e^x就还原回去了(也是级数展开)。仅是举例,可能有其他收敛速度快的公式和方法,还有牛顿迭代,就是求出函数方程在某点的导数比如在点3.21处的导数,就是初值,再经过迭代可以快速得到精确的结果。
我的说法不一定对,仅供参考。我也没有学过,某些如无穷级数是高等数学,咱不懂瞎说的,可以网上查阅。仅提供个思路,自己参考试验一下。网上可能有现成的程序,可以运行试试,帮组您弄懂道理。
晚安,祝愉快!(可以用计算器比较一下两种方法的结果是否相同,比如前面的方法和计算器直接计算的1.23^3.21是否一样?)
结果不对,小数化分数,分子是乘方,分母是开方
应该不是计算精度的问题,差好多。
程序代码:
Private Sub Form_Load()
Debug.Print 0.3 ^ 0.3
Dim a As Double, b As Double, c As Double, d As Double, e As Double
Dim f As Double, g As Double, h As Double, i As Double, j As Double
Dim k As Double
a = 0.3 ^ 3
b = Sqr(a)
c = Sqr(b)
d = Sqr(c)
e = Sqr(d)
f = Sqr(e)
g = Sqr(f)
h = Sqr(g)
i = Sqr(h)
j = Sqr(i)
k = Sqr(j)
Debug.Print k
End Sub
图片附件: 游客没有浏览图片的权限,请
登录 或
注册