69
数值分析 李小舟

Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

数值分析

李小舟

Page 2: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

基础知识

•科学计算软件

•数值分析的基本概念

Page 3: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

科学计算软件

Page 4: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

计算机的语言

Page 5: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

计算机的语言

• 机器语言是一种由数码0与1组成

Page 6: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

计算机的语言

• 机器语言是一种由数码0与1组成

• 电脑可以直接认识的语言。

Page 7: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

计算机的语言

• 机器语言是一种由数码0与1组成

• 电脑可以直接认识的语言。

• 极其有限并且晦涩难懂

Page 8: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

计算机的语言

• 机器语言是一种由数码0与1组成

• 电脑可以直接认识的语言。

• 极其有限并且晦涩难懂

• 一般人并不擅长这种语言

Page 9: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

科学计算软件

Page 10: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

科学计算软件

• 所有计算机软件都分成两类:

Page 11: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

科学计算软件

• 所有计算机软件都分成两类:

• 商用软件和开源软件

Page 12: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

科学计算软件

• 所有计算机软件都分成两类:

• 商用软件和开源软件

• 那么科学计算软件的类型呢?

Page 13: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

程序设计语言

Page 14: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

程序设计语言

• C语言、Fortran语言等

Page 15: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

程序设计语言

• C语言、Fortran语言等

• 人类编写指令代码,编译器将其翻译成机器语言,优化速度

Page 16: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

程序设计语言

• C语言、Fortran语言等

• 人类编写指令代码,编译器将其翻译成机器语言,优化速度

• 非常通用,非常快速

Page 17: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

程序设计语言

• C语言、Fortran语言等

• 人类编写指令代码,编译器将其翻译成机器语言,优化速度

• 非常通用,非常快速

• 非常难学,并且不易与图形或者代数过程交互

Page 18: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

科学计算软件包

Page 19: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

科学计算软件包

• Matlab、R等

Page 20: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

科学计算软件包

• Matlab、R等

• 人类输入语句之后,软件包“解释器”自动生成等效的核心语言代码并进行动态编译。

Page 21: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

科学计算软件包

• Matlab、R等

• 人类输入语句之后,软件包“解释器”自动生成等效的核心语言代码并进行动态编译。

• 处理数据能力,代数和分析功能

Page 22: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

科学计算软件包

• Matlab、R等

• 人类输入语句之后,软件包“解释器”自动生成等效的核心语言代码并进行动态编译。

• 处理数据能力,代数和分析功能

• 速度较慢,并且范围有限

Page 23: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

理想中的工具

Page 24: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

理想中的工具

• 即易理解,且具有广泛表达能力的成熟程序设计语言

Page 25: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

理想中的工具

• 即易理解,且具有广泛表达能力的成熟程序设计语言

• 集成代数、数值处理、图形函数等功能。

Page 26: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

理想中的工具

• 即易理解,且具有广泛表达能力的成熟程序设计语言

• 集成代数、数值处理、图形函数等功能。

• 能够生成以速度优先的数值算法

Page 27: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

理想中的工具

• 即易理解,且具有广泛表达能力的成熟程序设计语言

• 集成代数、数值处理、图形函数等功能。

• 能够生成以速度优先的数值算法

• 开源软件

Page 28: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

理想中的工具

Page 29: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

理想中的工具

• 在线帮助、完善文档

Page 30: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

理想中的工具

• 在线帮助、完善文档

• 相关教科书、社区中具有丰富的扩展内容

Page 31: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

理想中的工具

• 在线帮助、完善文档

• 相关教科书、社区中具有丰富的扩展内容

• 在所有标准平台(Linux、Mac OS X、UNIX、乃至Windows)上实现

Page 32: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

理想中的工具

• 在线帮助、完善文档

• 相关教科书、社区中具有丰富的扩展内容

• 在所有标准平台(Linux、Mac OS X、UNIX、乃至Windows)上实现

• 简洁的软件包

Page 33: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

Python语⾔

Page 34: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

Python语⾔

使用Python进行科学计算

Page 35: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

Python语⾔

使用Python进行科学计算

• 数值处理:Numpy

Page 36: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

Python语⾔

使用Python进行科学计算

• 数值处理:Numpy

• 科学计算:Scipy

Page 37: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

Python语⾔

使用Python进行科学计算

• 数值处理:Numpy

• 科学计算:Scipy

• 代数处理:Sympy

Page 38: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

Python语⾔

使用Python进行科学计算

• 数值处理:Numpy

• 科学计算:Scipy

• 代数处理:Sympy

• 图形处理:Matplotlib

Page 39: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

An Easy Solution: Anaconda https://www.anaconda.com

Page 40: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

计算机问题

• 可以选择任意语言 (C,C++,Fortran,Java,Python,Matlab等)

• 不允许使用内置 函数完成主要功能

• 实践是唯一的方法

Page 41: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

数值分析的基本概念

Page 42: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

问题:单摆问题

数学建模

数据观测

数值方法

程序设计

数据结果

模型误差

观测误差

截断误差

舍入误差

Page 43: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

• 截断误差:求解数学模型时,所采用的求解方法常 常是不精确的。要获得数学问题的精确解需要进行无限次或者无法接受的大量算术运算,因此需要寻找问题的近似解来替代其精确解。

• 舍入误差: 计算机表示的数的位数有限,把数据输入计算机、完成算术运算和输出数据时要进行舍入 操作。

Page 44: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

误差的数学定义

设 是某个量的精确值,而 为其的一个近似值,则称

为 的绝对误差。

而称

为 的相对误差。

x* x

e(x) = x − x*

x

er(x) =x − x*

x*, (x* ≠ 0)

x

Page 45: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

• 如果存在一个适当小的正数 ,使得

则称 为 的绝对误差限。

• 如果存在一个适当小的正数 ,使得

则称 为 的相对误差限。

ε

|e(x) | = |x − x* | ≤ ε

ε x

εr

|er(x) | =x − x*

x*≤ εr

εr x

Page 46: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

有效数字概念

若近似值 的绝对误差限是某一位上的半个单位,该位到 的第一位非零数字一共有 位,则称近似值 有 位有效数字。

xx

n x n

Page 47: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

有效数字与误差的关系

用科学计数法,记 ,其中是0-9中的任一整数,且 。

若绝对误差限满足:

则 有 位有效数字。

问: 位有效数字的相对误差限满足?

x = ± 0.a1a2⋯an × 10m

ai a1 ≠ 0

|e(x) | = |x − x* | ≤12

× 10m−n

x n

n

Page 48: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

例:取 的有效位数如下( )

取 , ?位有效数字; 取 , ?位有效数字; 取 , ?位有效数字。

π π ≈ 3.1415926

x1 = 3.14x2 = 3.1415x3 = 3.1416

Page 49: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

例 已知 的十进制浮点数第一位是5, 要使近似值的相对误差限小于0.1%, 问浮点数的有效数字的位数至少应该为多少?

30

Page 50: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

有效数字

Page 51: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

有效数字

• 计算机以浮点数的形式来表示实数

Page 52: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

有效数字

• 计算机以浮点数的形式来表示实数

• 但计算机的精度是有限

Page 53: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

有效数字

• 计算机以浮点数的形式来表示实数

• 但计算机的精度是有限

• 舍入误差不可避免

Page 54: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

有效数字

• 计算机以浮点数的形式来表示实数

• 但计算机的精度是有限

• 舍入误差不可避免

• 避免运算中潜在的风险

Page 55: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

例:已知二次方程 ,取,求方程的根,要求结果具有4位有效数字。

x2 − 16x + 1 = 063 ≈ 7.937

Page 56: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

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

Page 57: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

数值运算的误差估计

•函数计算的误差估计(准确值 )

•算术运算的误差估计

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.

Page 58: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

数值计算中的基本原则

Page 59: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

数值计算中的基本原则

• 避免两相近数相减

Page 60: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

数值计算中的基本原则

• 避免两相近数相减

• 避免绝对值小的数做除数

Page 61: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

数值计算中的基本原则

• 避免两相近数相减

• 避免绝对值小的数做除数

• 防止大数“吃”小数现象

Page 62: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

数值计算中的基本原则

• 避免两相近数相减

• 避免绝对值小的数做除数

• 防止大数“吃”小数现象

• 减少计算工作量(效率)

Page 63: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

多项式计算

Page 64: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

多项式计算

• 多项式是很多计算技术的基础

Page 65: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

多项式计算

• 多项式是很多计算技术的基础

• 只涉及最基本的加法、乘法

Page 66: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

多项式计算

• 多项式是很多计算技术的基础

• 只涉及最基本的加法、乘法

• 如何高效地进行多项式计算?

Page 67: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

例:计算 p(x) = x4 + 2x3 + 3x2 + 2x + 1

Page 68: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

例 用秦九韶算法计算 pn(x) = anxn + an−1xn−1 + ⋯ + a1x + a0

Page 69: Chapter1 1 Fundamentalxiaozhouli.com/resources/NA2020_master/Chapter1_1...若近似值 的绝对误差限是某一位上的 半个单位,该位到 的第一位非零数字 一共有

谢谢