本文摘要(由AI生成):
本文介绍了针对病态方程组数值不稳定性的问题,可采用高精度数值运算解决。Fortran内置的SELECTED_REAL_KIND函数能够根据需要选择实型数据的精度和范围,保持程序通用性。函数调用方式灵活,参数可选。文章通过算例展示了采用不同精度计算的结果,并指出更复杂的方程组同样可用该函数选择所需精度。往期相关介绍了病态方程组的来源和背景。
针对病态方程组对任何算法都将产生数值不稳定性,可采用高精度数值运算解决这个问题。
Fortran内置函数SELECTED_REAL_KIND(p, r),默认两个参数p是精度,r是范围。p是所需精度的十进制数值,r是以10^r次方表示的所需数值的范围。当执行该函数的时候,会返回达到或者超过指定精度或者范围的的实型数据的最小类别参数。使用该函数可以保持程序通用性,而不受平台限制。
kind_num = SELECTED_REAL_KIND(13,100)
kind_num = SELECTED_REAL_KIND(13)
kind_num = SELECTED_REAL_KIND(r=100,p=13)
kind_num = SELECTED_REAL_KIND(r=100)
以上都是函数的调用方法皆正确,因为函数参数是可选的。
注意程序中第二个变量所需的精度为13位小数和10^200次方的范围,但是处理器实际分配的精度为15位小数和10^308次方的范围.
●算例
采用的精度计算,结果为:
采用双精度计算,结果为:
更复杂的方程组可以用函数SELECTED_REAL_KIND选择所需精度。
★★★ 往期相关 ★★★