IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 警惕数值计算过程的误差传播,以一个实例说明 -> 正文阅读

[人工智能]警惕数值计算过程的误差传播,以一个实例说明

作者:recommend-item-box type_blog clearfix


??最近在工程实践中,遇到一个数值计算精度丢失与误差传播的问题,折腾了许久。在此,记录下该问题,时刻警惕数值计算过程的精度丢失与误差传播的问题。关于数值计算的四种误差参见博文: 模型误差、观测误差、截断误差(或称方法误差)、舍入误差

一、问题描述

??现有函数表达式 f ( x 0 , x 1 , x 2 ) = x 0 2 + x 1 2 ? x 2 2 f(x_0,x_1,x_2)=x_0^2+x_1^2-x_2^2 f(x0?,x1?,x2?)=x02?+x12??x22?,其中自变量 x 0 , x 1 , x 2 x_0,x_1,x_2 x0?,x1?,x2?是根据其他表达式(包含三角函数、平方根函数等)计算而来。发现问题:在不同的平台下 x 0 , x 1 , x 2 x_0,x_1,x_2 x0?,x1?,x2?的值略有不同,误差很小,但是计算所得 f f f的值却大为不同!
??在平台1上(所计算值存在误差), x 0 = ? 226300.537317 , x 1 = ? 728435.474466 , x 2 = ? 762777.937573 , f ( x 0 , x 1 , x 2 ) = ? 8397.6499023437500 x_0=-226300.537317,x_1=-728435.474466,x_2=-762777.937573,f(x_0,x_1,x_2)=-8397.6499023437500 x0?=?226300.537317,x1?=?728435.474466,x2?=?762777.937573,f(x0?,x1?,x2?)=?8397.6499023437500
??在平台2上(可以认为所计算值为精确的), x 0 = ? 226300.5077347187 , x 1 = ? 728435.4269486722 , x 2 = ? 762777.8319934641 , f ( x 0 , x 1 , x 2 ) = 70054.236328125000 x_0=-226300.5077347187,x_1=-728435.4269486722,x_2=-762777.8319934641,f(x_0,x_1,x_2)=70054.236328125000 x0?=?226300.5077347187,x1?=?728435.4269486722,x2?=?762777.8319934641,f(x0?,x1?,x2?)=70054.236328125000
??自变量较小的绝对误差与很小的相对误差,经过简单的函数映射后,因变量计算结果竟然差距这么大。失之毫厘,谬以千里。

二、代码实例

#include <stdio.h>
void main(void)
{
	double x_[3] = { -226300.537317,     -728435.474466,     -762777.937573 };     //平台1带误差计算值
	double x[3] = { -226300.5077347187, -728435.4269486722, -762777.8319934641 };  //平台2计算值(认为是精确的)
	double absoluteErrorX[3], relativeErrorX[3], f_, f, absoluteErrorF, relativeErrorF;

	for (int i = 0; i < 3; i++)
	{
		absoluteErrorX[i] = x_[i] - x[i];
		relativeErrorX[i] = absoluteErrorX[i] / x[i];
	}

	f_ = x_[0] * x_[0] + x_[1] * x_[1] - x_[2] * x_[2];
	f = x[0] * x[0] + x[1] * x[1] - x[2] * x[2];
	absoluteErrorF = f_ - f;
	relativeErrorF = absoluteErrorF / f;

	printf("三个自变量绝对误差:%.7f %.7f %.7f\n", absoluteErrorX[0], absoluteErrorX[1], absoluteErrorX[2]);
	printf("三个自变量相对误差:%.7f%% %.7f%% %.7f%%\n", relativeErrorX[0] * 100, relativeErrorX[1] * 100, relativeErrorX[2] * 100);
	printf("因变量绝对误差:%.7f\n", absoluteErrorF);
	printf("因变量相对误差:%.7f%%\n", relativeErrorF * 100);
}

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:28:52  更:2022-02-28 15:29:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:43:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码