计算机的错误计算(一百零七)

摘要  回复网友来信,本节与下一节再谈多项式的错误计算。

       有网友问:计算机的错误计算(一百零五)中介绍了一个多项式;对此多项式,Visual Studio与 Excel 均给出错误结果,并且错的相同。那么,请问:

    (1)该多项式是一个特例,还是具有普遍性?

    (2)另外,其它环境或软件的效果如何?即只有微软的Visual Studio与Excel有问题吗?还是这些多项式在别的软件或环境下也是错误结果?

    (3)最后,它们错的相同吗?还是都大不一样?即错误结果有规律吗?

答:就第1个问题的答复是:是的,具有普遍性。不妨访问 不可信计算,即可产生无数个多项式(比如,输入 123,然后点  产生 按钮,则可产生一个关于123的多项式)。然后在各种环境下试试。其它的,不多说,请看案例。

例1.  计算

111990\times45678^7-5115500000\times45678^6+949100000\times45678^5+4058000000\times45678^4+1531000000\times45678^3+5781000000\times45678^2+350800000\times45678-321499872.52\,.

       不妨首先用Java编程计算:

import java.lang.Math;
public class Poly{
    public static void main(String[] args) {
        double x=45678;
        double c7=111990,c6=5115500000.0,c5=949100000,c4=4058000000.0,c3=1531000000,c2=5781000000.0,c1=350800000,c0=-321499872.52;
        double y1 = c7*Math.pow(x,7)+c6*Math.pow(x,6)+c5*Math.pow(x,5)+c4*Math.pow(x,4);
        double y2 = c3*Math.pow(x,3)+c2*Math.pow(x,2)+c1*Math.pow(x,1)+c0;

        System.out.println(y1+y2);
    }
}

则运行后输出 9.293099042477446E37 .

然后,使用Go语言编程:

package main

import (
    "fmt"
    "math"
)

func main() {
    x := 45678.0; 
    c7 := 111990.0; c6 := 5115500000.0; c5 := 949100000.0; c4 := 4058000000.0; c3 := 1531000000.0; c2 := 5781000000.0; 
    c1 := 350800000.0; c0 := -321499872.52;
    result := c7*math.Pow(x,7)+c6*math.Pow(x,6)+c5*math.Pow(x,5)+c4*math.Pow(x,4)+c3*math.Pow(x,3)+c2*math.Pow(x,2)+c1*math.Pow(x,1)+c0;
    fmt.Printf("%v", result) 
}

则运行后的输出完全相同:9.293099042477446e+37 .

       然而,正确值为 -0.64307299252e9(ISRealsoft 提供)。这样,二者具有相同的错误输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值