(一)避免相近两数相减

当x充分大时:

对于小的正数ε:
sin(x+ε) – sinx=2cos(x+ε/2)sin(ε/2)
(: sin(x) – sin(y)=2 cos [(x+y)/2] sin [(x-y)/2] )

(二)要防止大数“吃掉“小数,注意保护重要数据

在五位浮点十进制计算机上,计算
y=54321+0.4+0.3+0.4
如果按从左到右的顺序进行加法运算,后三个数都在对阶过程中被当作零,得出含有较大绝对误差的结果y=54321。要避免这种大数“吃掉”小数的现象,可以调整计算顺序,采用先小数后大数的计算次序,即先将0.4,0.3,0.4加起来,然后再加上54321,结果等于54322。
一般情况下,若干数相加,采用绝对值较小者先加的算法,结果的相对误差限较小。

(三)秦九韶算法

通常,计算多项式
Pn(x)=anxn+ an-1xn-1+…+ a1x+a0
的值,若直接计算再逐项相加,一共需做n(n+1)/2次乘法和n次加法。
若采用 Pn(x)=(…((anx+an-1)x+an-2)x+…+a1)x+a0 即“秦九韶算法”。
则只需n次乘法和n次加法就可以算出Pn(x)的值。“秦九韶算法”的优点是不仅运算量小,而且数值稳定。
实例代码如下:

#include "stdio.h"
main()
{static float a[]={2.1296,1.912,1.215,0.425,0.0625};float y;int i;float x=1.0;y=a[4];for (i=3;i>=0;i--)y=y*x+a[i];printf("x=%4.2f,y=%6.4f",x,y);}

(四)要避免绝对值小的数作除数

当x接近于0时 (1-cosx)/sinx的分子、分母都近0,为避免绝对值小的数作接除数,可将原式
化为 (1-cosx)/sinx=sinx/(1+cosx)

(五)设法控制误差的传播

数值计算:设计算法的若干原则相关推荐

  1. 【万字总结】以插排和分治为例来看如何分析与设计算法

    插入排序及其解决思路 算法的作用自然不用多说,无论是在校学生,还是已经工作多年,只要想在计算机这条道路走得更远,算法都是必不可少的. 就像编程语言中的"Hello World!"程 ...

  2. 百度出品,Nature重磅 -- 优化的mRNA设计算法可改善mRNA的稳定性和免疫原性

    摘要 尽管mRNA疫苗已用于COVID-19的预防,但仍然面临不稳定和易降解的风险,这是mRNA疫苗存储.配送.效价等面临的重要障碍.先前的研究已表明,增加二级结构可延长mRNA的半衰期,再加上选择优 ...

  3. 深入分析游戏设计的8条原则

    原文链接:http://gamerboom.com/archives/78680 深入分析游戏设计的8条原则 发布时间:2013-11-11 16:33:03  Tags: 反馈, 奖励, 平衡, 流 ...

  4. 函数设计的两个原则(单一出口、一专多能)和实例

    函数设计应该像模块设计一样,讲究接口和封装.函数的命名应该让使用函数的程序员见名知意,函数应该封装成简单易用的形式,而且当函数内部实现算法变化时,函数还能够保持接口的稳定性. 下面的例子来源于浙江大学 ...

  5. UI设计培训分享:app图标设计要遵循哪些原则

    APP图片设计是UI设计工作中经常会遇到的,一个好的APP产品,图标的设计是非常重要的,本期小编为大家分享的UI设计培训教程就是app图标设计要遵循哪些原则?来看看下面的详细介绍. UI设计培训分享: ...

  6. UI设计学习的对比原则怎么运用?

    本期小编为大家介绍的UI设计培训教程就是关于UI设计学习的对比原则怎么运用?因为在UI设计中分组原则这一项在文字排版中运用的几率是比较频繁的,并且分组对于层次感和整合信息都有一定的帮助,但是光有分组还 ...

  7. 经典算法面试题目-设计算法移除字符串中重复的字符(1.3)

    题目 Design an algorithm and write code to remove the duplicate characters in a string without using a ...

  8. 软件设计中的一些原则

    本文为大家介绍软件设计中的一些原则,都是经过长期经验总结出来的知识,每一个程序员都应该了解,相信对大家在进行软件设计的过程中会有很大帮助. Don't Repeat Yourself (DRY) DR ...

  9. C#软件设计——小话设计模式原则之:依赖倒置原则DIP

    前言:很久之前就想动笔总结下关于软件设计的一些原则,或者说是设计模式的一些原则,奈何被各种bootstrap组件所吸引,一直抽不开身.群里面有朋友问博主是否改行做前端了,呵呵,其实博主是想做" ...

最新文章

  1. Ubuntu 13.10 安装软件失败后出现的问题——已安装 post-installation 脚本 返回了错误号 1...
  2. zookeeper图形工具——zkui
  3. yum update php5.5,(二)Centos7下Yum更新安装PHP5.5,5.6,7.0
  4. linux对文件的描述,对Linux文件系统的简单理解
  5. 低内阻的MOS管 4N04R7
  6. 【深度学习系列】迁移学习Transfer Learning
  7. HH SaaS电商系统的线上服务商品库存和采购设计
  8. 大数据从入门到就业的四个必备常识
  9. chain.doFilter(request,response)含义
  10. 洛达项目AB152xP资料SDK相关说明
  11. 计算机主板cpu插座分类,Intel历代CPU插槽类型、架构、常用主板大全
  12. 如何成为早起者(二)
  13. c# 弹出虚拟键盘关闭虚拟键盘(适用win10、win7)学习记录(转载)
  14. sql 数据库前两列值乘_SQL | SQL 必知必会笔记 (一 )
  15. 【C++】1018 锤子剪刀布 (20 分)
  16. 1008day1:列表-字符串基础知识、正则提取字符串小数、python数据类型、判断为假的方法、格式判断if elif elif else、字符串遍、计算器、提取str字母、斐波那契数列、水仙花数
  17. Oracle中ltrim的用法
  18. 惊天阴谋-陈晓如何窃取国美电器的
  19. 类似于快手、美拍、抖音短视频录制SDK接入教程
  20. 20221119 今天的世界发生了什么

热门文章

  1. 深入浅出MyBatis:「映射器」全了解
  2. 【VMCloud云平台】SCCM(八) OSD(一)- 部署准备
  3. 移动混合应用HTML5数据查询优化
  4. Linux系统上Crontab定时执行教程
  5. Oracle Parallel Execution(并行执行)
  6. Spring Boot整合Servlet,Filter,Listener,访问静态资源
  7. java 递归 遍历目录下的所有文件
  8. 【Fiddler 问题】解决关于Fiddler 抓包中,手机网络配置代理后,无法上网
  9. Python中68个内置函数的总结
  10. “The server requested authentication method unknown to the client.”的解决方案