Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
数值分析
李小舟
基础知识
•科学计算软件
•数值分析的基本概念
科学计算软件
计算机的语言
计算机的语言
• 机器语言是一种由数码0与1组成
计算机的语言
• 机器语言是一种由数码0与1组成
• 电脑可以直接认识的语言。
计算机的语言
• 机器语言是一种由数码0与1组成
• 电脑可以直接认识的语言。
• 极其有限并且晦涩难懂
计算机的语言
• 机器语言是一种由数码0与1组成
• 电脑可以直接认识的语言。
• 极其有限并且晦涩难懂
• 一般人并不擅长这种语言
科学计算软件
科学计算软件
• 所有计算机软件都分成两类:
科学计算软件
• 所有计算机软件都分成两类:
• 商用软件和开源软件
科学计算软件
• 所有计算机软件都分成两类:
• 商用软件和开源软件
• 那么科学计算软件的类型呢?
程序设计语言
程序设计语言
• C语言、Fortran语言等
程序设计语言
• C语言、Fortran语言等
• 人类编写指令代码,编译器将其翻译成机器语言,优化速度
程序设计语言
• C语言、Fortran语言等
• 人类编写指令代码,编译器将其翻译成机器语言,优化速度
• 非常通用,非常快速
程序设计语言
• C语言、Fortran语言等
• 人类编写指令代码,编译器将其翻译成机器语言,优化速度
• 非常通用,非常快速
• 非常难学,并且不易与图形或者代数过程交互
科学计算软件包
科学计算软件包
• Matlab、R等
科学计算软件包
• Matlab、R等
• 人类输入语句之后,软件包“解释器”自动生成等效的核心语言代码并进行动态编译。
科学计算软件包
• Matlab、R等
• 人类输入语句之后,软件包“解释器”自动生成等效的核心语言代码并进行动态编译。
• 处理数据能力,代数和分析功能
科学计算软件包
• Matlab、R等
• 人类输入语句之后,软件包“解释器”自动生成等效的核心语言代码并进行动态编译。
• 处理数据能力,代数和分析功能
• 速度较慢,并且范围有限
理想中的工具
理想中的工具
• 即易理解,且具有广泛表达能力的成熟程序设计语言
理想中的工具
• 即易理解,且具有广泛表达能力的成熟程序设计语言
• 集成代数、数值处理、图形函数等功能。
理想中的工具
• 即易理解,且具有广泛表达能力的成熟程序设计语言
• 集成代数、数值处理、图形函数等功能。
• 能够生成以速度优先的数值算法
理想中的工具
• 即易理解,且具有广泛表达能力的成熟程序设计语言
• 集成代数、数值处理、图形函数等功能。
• 能够生成以速度优先的数值算法
• 开源软件
理想中的工具
理想中的工具
• 在线帮助、完善文档
理想中的工具
• 在线帮助、完善文档
• 相关教科书、社区中具有丰富的扩展内容
理想中的工具
• 在线帮助、完善文档
• 相关教科书、社区中具有丰富的扩展内容
• 在所有标准平台(Linux、Mac OS X、UNIX、乃至Windows)上实现
理想中的工具
• 在线帮助、完善文档
• 相关教科书、社区中具有丰富的扩展内容
• 在所有标准平台(Linux、Mac OS X、UNIX、乃至Windows)上实现
• 简洁的软件包
Python语⾔
Python语⾔
使用Python进行科学计算
Python语⾔
使用Python进行科学计算
• 数值处理:Numpy
Python语⾔
使用Python进行科学计算
• 数值处理:Numpy
• 科学计算:Scipy
Python语⾔
使用Python进行科学计算
• 数值处理:Numpy
• 科学计算:Scipy
• 代数处理:Sympy
Python语⾔
使用Python进行科学计算
• 数值处理:Numpy
• 科学计算:Scipy
• 代数处理:Sympy
• 图形处理:Matplotlib
An Easy Solution: Anaconda https://www.anaconda.com
计算机问题
• 可以选择任意语言 (C,C++,Fortran,Java,Python,Matlab等)
• 不允许使用内置 函数完成主要功能
• 实践是唯一的方法
数值分析的基本概念
问题:单摆问题
数学建模
数据观测
数值方法
程序设计
数据结果
模型误差
观测误差
截断误差
舍入误差
• 截断误差:求解数学模型时,所采用的求解方法常 常是不精确的。要获得数学问题的精确解需要进行无限次或者无法接受的大量算术运算,因此需要寻找问题的近似解来替代其精确解。
• 舍入误差: 计算机表示的数的位数有限,把数据输入计算机、完成算术运算和输出数据时要进行舍入 操作。
误差的数学定义
设 是某个量的精确值,而 为其的一个近似值,则称
为 的绝对误差。
而称
为 的相对误差。
x* x
e(x) = x − x*
x
er(x) =x − x*
x*, (x* ≠ 0)
x
• 如果存在一个适当小的正数 ,使得
则称 为 的绝对误差限。
• 如果存在一个适当小的正数 ,使得
则称 为 的相对误差限。
ε
|e(x) | = |x − x* | ≤ ε
ε x
εr
|er(x) | =x − x*
x*≤ εr
εr x
有效数字概念
若近似值 的绝对误差限是某一位上的半个单位,该位到 的第一位非零数字一共有 位,则称近似值 有 位有效数字。
xx
n x n
有效数字与误差的关系
用科学计数法,记 ,其中是0-9中的任一整数,且 。
若绝对误差限满足:
则 有 位有效数字。
问: 位有效数字的相对误差限满足?
x = ± 0.a1a2⋯an × 10m
ai a1 ≠ 0
|e(x) | = |x − x* | ≤12
× 10m−n
x n
n
例:取 的有效位数如下( )
取 , ?位有效数字; 取 , ?位有效数字; 取 , ?位有效数字。
π π ≈ 3.1415926
x1 = 3.14x2 = 3.1415x3 = 3.1416
例 已知 的十进制浮点数第一位是5, 要使近似值的相对误差限小于0.1%, 问浮点数的有效数字的位数至少应该为多少?
30
有效数字
有效数字
• 计算机以浮点数的形式来表示实数
有效数字
• 计算机以浮点数的形式来表示实数
• 但计算机的精度是有限
有效数字
• 计算机以浮点数的形式来表示实数
• 但计算机的精度是有限
• 舍入误差不可避免
有效数字
• 计算机以浮点数的形式来表示实数
• 但计算机的精度是有限
• 舍入误差不可避免
• 避免运算中潜在的风险
例:已知二次方程 ,取,求方程的根,要求结果具有4位有效数字。
x2 − 16x + 1 = 063 ≈ 7.937
Ariane 5 failure
• On June 4, 1996 an Ariane 5 rocket launched by the European Space Agency exploded just about 40s after lift-off
• The cause: convert a 64 bit number to 16 bit
数值运算的误差估计
•函数计算的误差估计(准确值 )
•算术运算的误差估计
y* = f(x*)
ε( f(x)) ≈ | f′ (x) |ε(x)
ε(x1 ± x2) = ε(x1) + ε(x2)ε(x1x2) ≈ |x2 |ε(x1) + |x1 |ε(x2)
ε(x1/x2) ≈|x2 |ε(x1) + |x1 |ε(x2)
|x2 |2 , x2 ≠ 0.
数值计算中的基本原则
数值计算中的基本原则
• 避免两相近数相减
数值计算中的基本原则
• 避免两相近数相减
• 避免绝对值小的数做除数
数值计算中的基本原则
• 避免两相近数相减
• 避免绝对值小的数做除数
• 防止大数“吃”小数现象
数值计算中的基本原则
• 避免两相近数相减
• 避免绝对值小的数做除数
• 防止大数“吃”小数现象
• 减少计算工作量(效率)
多项式计算
多项式计算
• 多项式是很多计算技术的基础
多项式计算
• 多项式是很多计算技术的基础
• 只涉及最基本的加法、乘法
多项式计算
• 多项式是很多计算技术的基础
• 只涉及最基本的加法、乘法
• 如何高效地进行多项式计算?
例:计算 p(x) = x4 + 2x3 + 3x2 + 2x + 1
例 用秦九韶算法计算 pn(x) = anxn + an−1xn−1 + ⋯ + a1x + a0
谢谢