基于 MATLAB的数值分析 以软件 MATLAB作为辅助工具介绍数值分析(科学 与工程计算)的基本内容,注重讲授一些求解方程以及 结果可视化的知识和技巧,使同学们能够有效地解决问 题并处理计算结果。 内容包括: 1、 MATLAB编程和绘图 2、数值分析的数学基础 3、数值算法在工程、科学中的应用
基于MATLAB的数值分析 以软件MATLAB作为辅助工具介绍数值分析(科学 与工程计算)的基本内容,注重讲授一些求解方程以及 结果可视化的知识和技巧,使同学们能够有效地解决问 题并处理计算结果。 内容包括: 1、MATLAB编程和绘图 2、数值分析的数学基础 3、数值算法在工程、科学中的应用
第一章 MATLAB入门 、 MATLAB的命令窗口 工作都在此处完成 2、怎样进行计算 运算对象:矩阵 算术运算符:+ 倒除:\ab=ba 变量与变量名:变量名和变量名类型不需声明
第一章 MATLAB入门 1、MATLAB的命令窗口 工作都在此处完成。 2、怎样进行计算 运算对象:矩阵 算术运算符:+ - * ^ .* ./ .^ 倒除:\ a\b=b/a 变量与变量名:变量名和变量名类型不需声明
3、数据显示格式 默认格式:5位( format short) format long16位 format e短的浮点格式 format long e长的浮点格式 4、清除命令 clear:清除所有使用过的变量或某个(些)变量 cle:清除命令窗口 5、程序结构 分支: if else end; if elseif end; if break end 循环: for end; while end
3、数据显示格式 默认格式:5位(format short) format long 16位 format e 短的浮点格式 format long e 长的浮点格式 4、清除命令 clear:清除所有使用过的变量或某个(些)变量 clc: 清除命令窗口 5、程序结构 分支:if __else__end; if__elseif__end; if__break__end 循环:for__end; while__end
6、读写 输入数据:z- input( type youe input:)键盘输入 格式化输出: sprint( e format%12.5ein’,vol) 7、数学函数 8、功能函数 sort(x) sum(x)max(x) min(x) mod(x,y) rand(n eval(s) 9、编程(编写M文件) 10、绘图
6、读写 输入数据:z=input(‘type youe input:’) 键盘输入 格式化输出:fprintf(‘e_format %12.5e \n’,vol) 7、数学函数 8、功能函数 sort(x) sum(x) max(x) min(x) mod(x,y) rand(n) eval(s) 9、编程(编写M文件) 10、绘图
第二章数值代数 内容:数值代数就是研究有关矩阵计算的问题。主要包括: 线性代数方程组的求解; 2、矩阵特征值问题 要求:1、掌握用 MATLAB求解的方法 2、知道那些问题是困难的,那些问题是不可解的
第二章 数值代数 内容:数值代数就是研究有关矩阵计算的问题。主要包括: 1、 线性代数方程组的求解; 2、 矩阵特征值问题 要求:1、掌握用MATLAB求解的方法 2、知道那些问题是困难的,那些问题是不可解的
21矩阵 A= zeros(m,n)m行n列的零矩阵 =eye(n)n阶单位矩阵 A=one(mn)元素均为1 AA的转置 A( k)A(k, )A(m1 m2, nl: n2) inv(A)A的逆 size(A)A的大小 hib(n) Hilbert矩阵
A=zeros(m,n) m行n列的零矩阵 I=eye(n) n阶单位矩阵 A=ones(m,n) 元素均为1 A’ A的转置 A(:,k) A(k,:) A(m1:m2,n1:n2) inv(A) A的逆 size(A) A的大小 hilb(n) Hilbert矩阵 2.1 矩阵
22解线性代数方程组的 MATLAB命令 Ax=b 情况1:mn(正规方程),最常见 情况2:mn(超定方程); 本节只介绍情况1。 MATLAB命令: x=A\b效率最高 x=iv(A)*b计算时间大约是上面的50倍
Ax = b 情况1:m=n(正规方程),最常见; 情况2:mn(超定方程); 本节只介绍情况1。 计算时间大约是上面的 倍 效率最高 ( )* 50 \ x inv A b x A b = = MATLAB命令: 2.2 解线性代数方程组的MATLAB命令
23不可解问题 线性代数方程组并不总是数值可解的。只有当矩阵A 的行列式不为零时才行!矩阵A的行列式即使不为零,但 当很小或很大时,解的误差可能很大。 计算矩阵行列式的 MATLAB命令 D= det(a) 24病态问题 有许多线性代数方程组理论上是可解的,但实际计算中 由于受到舍入误差的影响而无法得到精确解。此类问题成 为病态问题 病态问题的计算过程中,小的舍入误差或系数矩阵的微 小变化都可能使解产生很大误差。(例子P97)
线性代数方程组并不总是数值可解的。只有当矩阵A 的行列式不为零时才行!矩阵A的行列式即使不为零,但 当很小或很大时,解的误差可能很大。 计算矩阵行列式的MATLAB命令: D = det(A) 2.4 病态问题 有许多线性代数方程组理论上是可解的,但实际计算中 由于受到舍入误差的影响而无法得到精确解。此类问题成 为病态问题。 病态问题的计算过程中,小的舍入误差或系数矩阵的微 小变化都可能使解产生很大误差。(例子 P97) 2.3 不可解问题
病态矩阵的一个重要标志是条件数: con(A)=4|4 MATLAB命令:cond(A) 矩阵是病态时,其条件数一定很大,但它并不能直 接说明解的误差。 线性方程组解的误差程度也取决于计算环境的精度。 条件数和行列式与计算环境是相互独立的。所以大条件数 或小行列式未必意味无法直接精确求得线性方程组的解, 它只意味着有很大误差可能。而实际上如果采用更高精度 的计算环境则很可能得到非常满意的解。 Hilbert矩阵是非常著名的病态矩阵( hilb(n)),它经常用 来检验算法的数值稳定性的好坏
病态矩阵的一个重要标志是条件数: 1 ( ) − cond A = A A MATLAB命令: cond(A) 当矩阵是病态时,其条件数一定很大,但它并不能直 接说明解的误差。 线性方程组解的误差程度也取决于计算环境的精度。 条件数和行列式与计算环境是相互独立的。所以大条件数 或小行列式未必意味无法直接精确求得线性方程组的解, 它只意味着有很大误差可能。而实际上如果采用更高精度 的计算环境则很可能得到非常满意的解。 Hilbert矩阵是非常著名的病态矩阵(hilb(n)),它经常用 来检验算法的数值稳定性的好坏
2.5线性代数方程组的求解方法(算法) 两种原因使我们想了解求解线性代数方程组的算法。 是实际工作中要用其它计算机语言( Fortran&C等)编写 应用程序;二是 MATLAB处理大型稀疏矩阵方程组显得很 笨拙或无能为力。 由线性代数的理论: Ax=b分B=(Ab)分(初等行变换) II 12
两种原因使我们想了解求解线性代数方程组的算法。 一是实际工作中要用其它计算机语言(Fortran&C等)编写 应用程序;二是MATLAB处理大型稀疏矩阵方程组显得很 笨拙或无能为力。 = = n n n n n a b a a b a a a b Ax b B A b 2 2 2 2 1 1 1 2 1 1 ( ) (初等行变换) 2.5 线性代数方程组的求解方法(算法) 由线性代数的理论: