摘要 计算机的错误计算(四十五)探讨了(二)中一个class="tags" href="/XunHuanDieDai.html" title=循环迭代>循环迭代案例的错误计算原因。本节分析(二)中例1class="tags" href="/XunHuanDieDai.html" title=循环迭代>循环迭代错误计算的原因。
例1. 已知 c{1130}{x}+\frac{3000}{x^2}\,," class="mathcode" src="https://latex.csdn.net/eq?f%28x%29%3D111-%5Cfrac%7B1130%7D%7Bx%7D+%5Cfrac%7B3000%7D%7Bx%5E2%7D%5C%2C%2C" /> class="mathcode" src="https://latex.csdn.net/eq?x_0%3D6%5C%2C." /> 计算 class="mathcode" src="https://latex.csdn.net/eq?f%28x%29" /> 在 class="mathcode" src="https://latex.csdn.net/eq?x_0" /> 的class="tags" href="/CuoShu.html" title=错数>错数c;并用实例分析计算过程中的错误数字数量。
容易算得c;class="mathcode" src="https://latex.csdn.net/eq?f%28x_0%29%3D6%5C%2C%2C" /> class="mathcode" src="https://latex.csdn.net/eq?f%5E%7B%5Cprime%7D%28x%29%7C_%7Bx%3Dx_0%7D%3D3.6%5Cdot%7B1%7D%5C%2C." /> 因此c;根据计算机的错误计算(一百零四)中有关定义c;class="mathcode" src="https://latex.csdn.net/eq?m_1%3Dm_2%3D1%5C%2C%2C" /> class="mathcode" src="https://latex.csdn.net/eq?m_0%3D1%5C%2C." /> 这样c;class="tags" href="/CuoShu.html" title=错数>错数为 class="mathcode" src="https://latex.csdn.net/eq?m_1-m_2+m_0%3D1-1+1%3D1%5C%2C%2C" /> 或 class="mathcode" src="https://latex.csdn.net/eq?1-1%3D0%5C%2C." /> 于是c;若 class="mathcode" src="https://latex.csdn.net/eq?x_0" /> 有一点扰动c;函数值可能并且最多有1位错误数字。
不妨设
center;">ce{999999999999999}_{\textup{15 '9'}}2\,." class="mathcode" src="https://latex.csdn.net/eq?%5Ctilde%7Bx%7D_0%3D5.%5Cunderbrace%7B999999999999999%7D_%7B%5Ctextup%7B15%20%279%27%7D%7D2%5C%2C." />
利用它计算 class="mathcode" src="https://latex.csdn.net/eq?f%28x_0%29%3D6" /> 的另一个近似值 class="mathcode" src="https://latex.csdn.net/eq?f%28%5Ctilde%7Bx%7D_0%29%3A" />
center;">c{1130}{\tilde{x}_0}+\frac{3000}{\tilde{x}^2_0}=5.\underbrace{99999999999999}_{\textup{\textup{}14 '9'}}7...\,." class="mathcode" src="https://latex.csdn.net/eq?f%28%5Ctilde%7Bx%7D_0%29%3D111-%5Cfrac%7B1130%7D%7B%5Ctilde%7Bx%7D_0%7D+%5Cfrac%7B3000%7D%7B%5Ctilde%7Bx%7D%5E2_0%7D%3D5.%5Cunderbrace%7B99999999999999%7D_%7B%5Ctextup%7B%5Ctextup%7B%7D14%20%279%27%7D%7D7...%5C%2C." />
这样c;class="mathcode" src="https://latex.csdn.net/eq?%5Ctilde%7Bx%7D_0" /> 有16位正确数字;而与 class="mathcode" src="https://latex.csdn.net/eq?%5Ctilde%7Bx%7D_0" /> 相比c;class="mathcode" src="https://latex.csdn.net/eq?f%28%5Ctilde%7Bx%7D_0%29" /> 只有15位正确数字c;即减少1位c;正好与上面的class="tags" href="/CuoShu.html" title=错数>错数吻合。
例2. 利用例1分析计算机的错误计算(二)中下列class="tags" href="/XunHuanDieDai.html" title=循环迭代>循环迭代错误计算的原因:
center;">c="https://latex.csdn.net/eq?%5Cleft%5C%7B%20%5Cbegin%7Barray%7D%7Bll%7D%20u_1%3D2%2C%20%26%20%5C%5C%20u_2%3D-4%2C%20%26%20%5C%5C%20u_n%3D111-%5Cdisplaystyle%7B%5Cfrac%7B1130%7D%7Bu_%7Bn-1%7D%7D+%5Cfrac%7B3000%7D%7Bu_%7Bn-1%7Du_%7Bn-2%7D%7D%7D.%20%26%20%5Cend%7Barray%7D%20%5Cright." />
由于迭代趋向于6, 因此c;理论上c;迭代若干次后c;class="mathcode" src="https://latex.csdn.net/eq?u_%7Bn-1%7D" /> 与 class="mathcode" src="https://latex.csdn.net/eq?u_%7Bn-2%7D" /> 均很接近于6. 这样c;不妨将迭代表达式简化为
center;">c{1130}{u_{n-1}}+\frac{3000}{u^2_{n-1}}\,." class="mathcode" src="https://latex.csdn.net/eq?111-%5Cfrac%7B1130%7D%7Bu_%7Bn-1%7D%7D+%5Cfrac%7B3000%7D%7Bu%5E2_%7Bn-1%7D%7D%5C%2C." />
这时c;由例1知c;表达式在6的class="tags" href="/CuoShu.html" title=错数>错数为1(或0). 因此c;6只要有一点扰动(或误差)c;输出就可能含有1位错误数字。而上述迭代具有除法c;浮点运算下c;必定有舍入c;所以在迭代时c;减少1位正确class="tags" href="/YouXiaoShuZi.html" title=有效数字>有效数字的概率为50%. 这样c;在没有其它误差的情形下c;最多经过约32次迭代后c;16位正确数字全部消失。