第6章 MATLAB数值运算
第06章_MATLAB数值计算_参考解答

%可参见教材第 157 页例 6.19
运行结果: dx =
000
%当 x=pi/2 时单独计算 x=pi/2; f=inline('sin(x).^2+cos(x).^2'); dx=diff(f([x, pi]))/(pi/2)
dx = 0
(2) 程序设计: clear all; close all; clc; x=1:3; f=inline('sqrt(x.^2+1)'); dx=diff(f([x, 4]))
运行结果:
U= 1.0e-004 * -0.0675
0.1715
fmin = 1.9920e-010
(2) 程序设计: clear all; close all; clc; f=inline('-sin(x)-cos(x.^2)'); fmax=fminbnd(f, 0, pi)
%用内联函数,求负的最小值 %注意函数名 f 不加单引号'
高教社刘卫国《MATLAB 程序设计与应用》(第二版)习题参考解答
第 6 章:MATLAB 数值计算
教材 P189 习题六
第 6 章 MATLAB 数值计算
1. 利用 MATLAB 提供的 randn 函数生成符合正态分布的 10×5 随机矩阵 A,进行如下操 作:
(1) A 各列元素的均值和标准方差。 (2) A 的最大元素和最小元素。 (3) 求 A 每行元素的和以及全部元素之和。 (4) 分别对 A 的每列元素按升序、每行元素按降序排列。 答:
运行结果: P=
0
15.0000
7.0000 -3.5000
0.5000 -2.0000 -2.0000
MATLAB的数值运算

2.2.2 矩阵常规运算
矩阵的常规运算应符合矩阵维数的要求,其常规运算符有: +; - ; *; .*; ^; .^; \; / ; ./ a’ ; inv(a) 矩阵翻转fliplr,flipud,rot90 关于除法
左除“\”: 相当于Ax=B的解,x=A-1B。 右除“/”:相当于xA=B的解,x=BA-1
2.1.5 永久变量
matlab中预定义的一些特殊的量。 i,j 虚数单位 Realmin 最小的正浮点数, pi 圆周率 Realmax 最大的浮点数, eps 浮点运算的相对精度 Inf 无穷大 NaN not a number ,不定值
>>1/0 Warning: Divide by zero. ans = Inf >>0/0 Warning: Divide by zero. ans = NaN
1 3
Байду номын сангаас
2 4
2.1 基本语法结构
(3)变量赋值 常数赋值:如上例中矩阵A的赋值,x=9; 字符串赋值:f1=‘This is a string’; 表达式赋值:f2=‘exp(-2*x)*sin(x/5)’; (4)变量查询 (A) 变量值的查询:直接键入变量名 (B)变量信息:who,whos命令 >> whos A Name Size Bytes Class A 3x2 48 double array Grand total is 6 elements using 48 bytes
数据的显示格式
2.1.4 变量精度 MATLAB中一律使用双精度数 可用format命令设置数据的显示格式 format只是影响结果的显示,不影响计算与存储。
format (short):短格式(5位定点数) format long:长格式(15位定点数 ) format short e:短格式e方式 format long e:长格式e方式 format bank:2位十进制 99.12(银行货币形式) format hex:十六进制格式
matlab数值计算方法

Matlab提供了多种数值计算方法,以下是其中一些常用的方法:
1. 整数计算:Matlab中的计算方式和计算器类似,可以直接输入数值然后加上运算符进行运算。
2. 小数计算:小数计算的方式和整数相似。
3. 分数计算:Matlab可以切换至分数模式,这一点较计算器等具有较大优势。
4. 赋值运算:Matlab中除了和计算器一样直接运算,还能进行赋值运算,直接将其中一个值赋值后,带入运算即可。
5. 多重赋值运算:Matlab在数值计算的时候,还支持多重赋值计算。
这样可以很方便的求解列出的问题。
以上内容仅供参考,建议查阅Matlab官方文档获取更全面和准确的信息。
matlab基础matlab数值运算

04
数值运算进阶
线性方程组求解
直接法
使用高斯消元法、LU分解等直接求解线性方程组的方法。
迭代法
使用如雅可比迭代、高斯-赛德尔迭代等迭代方法求解线性方程 组。
预处理技术
通过预处理手段改进直接法或迭代法的收敛速度和稳定性。
数值积分与微分
数值积分
使用如梯形法、辛普森法等数值积分方法计算 函数的积分值。
频谱分析
通过快速傅里叶变换等数值方法对信号进行频谱分析,提 取信号的频率成分和特征,用于音频、雷达、通信等领域。
信号压缩
利用数值方法对信号进行压缩编码,减小存储和传输成本, 用于音频、视频、遥感等领域。
在图像处理中的应用
图像增强
通过数值运算对图像进 行增强处理,提高图像 的对比度、清晰度等, 用于医学影像、安防监 控等领域。
数值微分
通过差分法计算函数的导数值,如前向差分、 后向差分和中心差分。
自动微分
利用Matlab的符号计算功能,自动求取函数的导数。
插值与拟合
一维插值
使用如拉格朗日插值、牛顿插值等一维插值方法。
多维插值
使用如样条插值、克里金插值等多维插值方法。
曲线拟合
通过最小二乘法等手段对数据进行曲线拟合。
数值优化
流体动力学模拟
通过数值方法求解流体动力学方程,模拟流体流动、传热等现象, 用于航空航天、流体机械等领域。
电磁场模拟
利用数值方法求解电磁场方程,模拟电磁波的传播、散射等现象, 用于雷达、通信、电磁兼容等领域。
在信号处理中的应用
信号滤波
利用数值运算对信号进行滤波处理,去除噪声、增强信号 特征,用于语音、图像、通信等领域。
图像去噪
利用数值方法对图像进 行去噪处理,去除图像 中的噪声和干扰,用于 遥感影像、医学影像等 领域。
1.Matlab数值运算功能

向量的乘除运算
a. 向量的乘法运算
点乘运算的运算符为 .*, 其意义为两个向量的对应 元素进行乘法运算,例如
a=[1 2], b=[3 4] 则c=a.*b=[3 8]
^ 为向量的乘方运算,例如
c=a.^2=[1 4]
b. 向量的除法运算
Matlab与科学计算
点积、叉积和混合积
X = inv(E) X= -2.0000 1.0000 1.5000 -0.5000 (8)矩阵元素的赋值与运算
Matlab允许用户对矩阵的单个元素进行赋值和操作,Matlab 此时命 令方式为 X(i,j)=变量名
Matlab与科学计算
( 9)矩阵的指数和对数运算 expm(a), expm1(a), expm2(a), expm3(a) logm(a) ( 10)矩阵的开方运算 sqrtm(m) 注意:以上函数如果去掉最后的‘m’,都变成只对 矩阵中的每个元素进行相应的运算。 ( 11)矩阵的行列式运算: a1=det(a)
在matlab的命令窗口键入以下字符 >> a = [1 2 3 4 5 6 9 8 7] a= 1 2 3 4 5 6 9 8 7
希望得到元素从0到20,步距为2的一个向量,只需键入以下命令即可
>> t = [0:2:20] t= 2 4 6 8 10 12 14 16 18 20
Matlab与科学计算
》x=258×369 x= 95202
Matlab与科学计算
变量
(1)变量的命名:变量的名字必须以字母开头(不超 过19个字符),之后可以是字母、数字或下划线;变 量名区分字母的大小写;变量中不能包含有标点符号。 (2)一些特殊的变量 ans:用于结果的缺省变量名 i、j:虚数单位 pi:圆周率 eps:计算机的最小数(相对精度) inf:无穷大 realmin:最小正实数 realmax:最大正实数 nan:不定量(not a number) (3)变量操作
matlab的数值运算

matlab的数值运算当使用MATLAB 进行数值运算时,可以使用各种内置函数和运算符进行计算。
下面是一些常见的数值运算操作的详细说明:基本数学运算:加法:使用"+" 运算符进行两个数的相加。
例如,计算2 和3 的和:2 + 3。
减法:使用"-" 运算符进行两个数的相减。
例如,计算5 减去2 的结果:5 - 2。
乘法:使用"*" 运算符进行两个数的相乘。
例如,计算4 乘以3 的结果:4 * 3。
除法:使用"/" 运算符进行两个数的相除。
例如,计算10 除以2 的结果:10 / 2。
取余数:使用"mod" 函数或"%" 运算符计算两个数的余数。
例如,计算11 除以3 的余数:mod(11, 3) 或11 % 3。
幂运算:使用"^" 运算符进行幂运算。
例如,计算2 的3 次幂:2^3。
数学函数:MATLAB 提供了许多内置的数学函数,可以进行各种数值计算和分析操作。
这些函数包括但不限于:abs(x):返回x 的绝对值。
sin(x):返回x 的正弦值。
cos(x):返回x 的余弦值。
exp(x):返回e 的x 次幂,其中e 是自然对数的底数。
log(x):返回x 的自然对数。
sqrt(x):返回x 的平方根。
round(x):返回x 的四舍五入值。
floor(x):返回不大于x 的最大整数。
ceil(x):返回不小于x 的最小整数。
max(x, y):返回x 和y 中的较大值。
min(x, y):返回x 和y 中的较小值。
数组运算:MATLAB 中的数值计算通常涉及数组操作。
可以对向量、矩阵和多维数组执行各种运算,例如:矩阵相加:使用"+" 运算符对两个相同大小的矩阵进行元素级别的相加。
矩阵相乘:使用"" 运算符对两个矩阵进行乘法运算。
matlab的数值运算

matlab的数值运算Matlab是一种强大的数值计算和科学计算软件,它提供了丰富的数值运算功能,包括基本的数学运算、矩阵运算、符号计算以及常见的数值方法等。
在本文中,我们将讨论一些常见的数值运算方法和函数,并介绍它们的使用方法。
1. 基本的数学运算在Matlab中,可以使用基本的算术运算符进行数学运算,例如加法(+)、减法(-)、乘法(*)、除法(/)等。
例如,可以使用以下代码计算两个数的和:```a = 3;b = 4;c = a + b;disp(c);```这将输出结果为7。
此外,Matlab还提供了许多数学函数,可以进行各种复杂的数学运算。
例如,可以使用`sin`函数计算一个角度的正弦值,如下所示:```angle = pi/6;sin_value = sin(angle);disp(sin_value);```这将输出结果为0.5,表示30度的正弦值为0.5。
2. 矩阵运算Matlab中的矩阵运算非常方便,可以对矩阵进行加法、减法、乘法、转置等操作。
例如,可以使用以下代码计算两个矩阵的乘法:```A = [1 2; 3 4];B = [5 6; 7 8];C = A * B;disp(C);```这将输出结果为:```19 2243 50```表示两个2x2矩阵的乘积。
此外,Matlab还提供了许多专门用于矩阵运算的函数,例如`inv`函数可以计算一个矩阵的逆矩阵,`eig`函数可以计算一个矩阵的特征值和特征向量等。
3. 符号计算Matlab还提供了符号计算的功能,可以进行代数运算、求解方程、微积分等。
通过使用符号变量,并调用Matlab中的符号计算函数,可以进行复杂的数值计算。
例如,以下代码演示了如何计算方程的解:```syms x;eqn = x^2 - 3*x + 2 == 0;sol = solve(eqn, x);disp(sol);```这将输出结果为2和1,表示方程的两个解分别为2和1。
实验09数值微积分与方程数值解(第6章)

实验09数值微积分与方程数值解(第6章)《数学软件》课内实验王平(第6章MATLAB数值计算)一、实验目的1.掌握求数值导数和数值积分的方法。
2.掌握代数方程数值求解的方法。
3.掌握常微分方程数值求解的方法。
二、实验内容1.求函数在指定点的数值导数某f(某)1程序及运行结果:某2某36某2某3某2,某1,2,3 022.用数值方法求定积分(1)I120cot24in(2t)21dt的近似值。
程序及运行结果:(2)I220ln(1某)d某1某2程序及运行结果:3.分别用3种不同的数值方法解线性方程组6某5y2z5u49某y4zu133某4y2z2u13某9y2u11程序及运行结果:4.求非齐次线性方程组的通解2某17某23某3某463某15某22某32某449某4某某7某22341程序及运行结果(提示:要用教材中的函数程序line_olution):5.求代数方程的数值解(1)3某+in某-e某=0在某0=1.5附近的根。
程序及运行结果(提示:要用教材中的函数程序line_olution):(2)在给定的初值某0=1,y0=1,z0=1下,求方程组的数值解。
in某y2lnz70y33某2z10某yz50程序及运行结果:26.求函数在指定区间的极值某3co某某log某(1)f(某)在(0,1)内的最小值。
e某程序及运行结果:332(2)f(某1,某2)2某1在[0,0]附近的最小值点和最小值。
4某1某210某1某2某2程序及运行结果:7.求微分方程的数值解,并绘制解的曲线某d2ydy5y0d某2d某y(0)0y'(0)0程序及运行结果(注意:参数中不能取0,用足够小的正数代替):令y2=y,y1=y',将二阶方程转化为一阶方程组:1'5yy1某1某y2'y2y1y(0)0,y(0)0218.求微分方程组的数值解,并绘制解的曲线y'1y2y3y'yy213y'0.51yy123y1(0)0,y2(0)1,y3(0)1程序及运行结果:3三、实验提示四、教程:第6章MATLAB数值计算(2/2)6.2数值微积分p1556.2.1数值微分1.数值差分与差商对任意函数f(某),假设h>0。
MATLAB的数值运算与符号运算

MATLAB与控制系统仿真实践, 北京航空航天大学出版社,2009.8. 在线交流,有问必答
演示例9: 求2矩阵的和。
MATLAB与控制系统仿真实践, 北京航空航天大学出版社,2009.8. 在线交流,有问必答
• 2. 矩阵/数组的乘法运算 数组相乘是对应元素的相乘,这与矩阵相乘 是不同的。矩阵A、B相乘要求A的列数和B 的行数相等,除非其中一项是标量。矩阵 相乘可表示为:
M = magic(n) y = linspace(a,b) y = linspace(a,b,n) y = logspace(a,b) y = logspace(a,b,n)
MATLAB与控制系统仿真实践, 北京航空航天大学出版社,2009.8. 在线交流,有问必答
3.1.1数组与矩阵的输入
演示例4: 通过MATLAB内建函数产生矩阵或数组。
• 3.2 MATLAB的基本数学运算
– – – – – – – – 3.2.1 算术运算 3.2.2 关系运算 3.2.3 逻辑运算 3.2.4 运算优先级 3.3.1 符号运算基本函数及示例 3.3.2 符号代数方程求解 3.3.3 符号微积分运算 3.3.4 Laplace, Z变换及反变换
MATLAB与控制系统仿真实践, 北京航空航天大学出版社,2009.8. 在线交流,有问必答
MATLAB与控制系统仿真实践, 北京航空航天大学出版社,2009.8. 在线交流,有问必答
3.1.1数组与矩阵的输入
• 3.通过提示语句输入矩阵或数组 x = input('prompt')或x= input('prompt','s')在屏 幕上显示一个提示符,等待用户从键盘输 入,并读取用户输入到工作空间中。第一 种方式供输入数字,而后一种方式供输入 字符串。
matlab数值运算

备注 指令
范得蒙矩阵 a7= vander([1 5 6 2])
希尔伯特矩阵 a8=hilb(4)
托普利兹矩阵 a9=toeplitz(1:6)
帕斯卡矩阵 pascal(5)
结果
(3) 练习矩阵运算 键入 a=[0 1 0;0 0 1;-6 –11 -6]; b=[1 2;3 4;5 6]; c=[1 1 0;0 1 1]; d=[1 3; 2 7]; e=[2 5;-3 0]; 按表 2-8 要求的相应运算,将结果记于表 2-8 中。 2
n
n 0 .9
1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.00 104.62 116.16 123.00 128.60 133.54 138.07 142.31 146.32 150.17 153.87 105.00 110.25 115.76 121.55 127.63 134.01 140.71 147.75 155.13 162.89 -0.38 5.91 7.24 7.05 5.92 4.06 1.60 -1.42 -4.97 -9.02 数据分析:该用户在 8 年后将资金用作其它投资,应该选择第二种方案,到时资金总额
1 7 13 4 3 2 a 2 8 5 3 9 5
4 7 9 8
1 11 4 7 6 9 8 6
7. 解决问题 现有圆柱形橡皮泥材料,直径 125cm,长 160cm,现用该材料加工实心球,每套 12 个, 半径从 3cm 开始递增以 0.2cm 为步长,问总共可以加工多少套? 程序为: r1=125/2; h1=160; v=pi*r1^2*h1 r=3:0.2:5.2 v2=4/3*pi*r.^3 v3=sum(v2) n=v/v3 round(n) % 根据直径求出半径 % 圆柱体长度 % 圆柱体总的体积 % 每套球的半径范围 % 每套球的体积矩阵 % % 每套 12 个球的体积之和 总共可加工的套数(小数)
第6章_MATLAB数值计算_part2

6.2.2 数值积分
b a b
f ( x)dx p1 ( x)dx (b a )
a
b
f (a ) f (b) 2 ab
( f (a) 4 f ( ) f (b)) 数值积分方法 6 2 n 1 求解定积分的数值方法多种多样, h T f ( a ) f ( b ) 2 f ( a kh ) n 如简单的梯形法、辛普生 2 k 1 (Simpson)• 法、牛顿-柯特斯 h S ( f (x ) 4 f (x ) f ( x 1)) (Newton-Cotes)法等都是经常采 6 用的方法。 h f (a) 4 f ( x ) 2 f ( x ) f (b) 基本思想 6
第6章 MATLAB数值计算
6.1 6.2 6.3 6.4 6.5 数据处理与多项式计算 数值微积分 线性方程组求解 最优化问.1 数值微分(导数) 不关心微分的形式和性质,只关心该微分在一串离散点 的近似值以及所计算的近似值有多大的误差。 MATLAB下求数值导数的两种方法:
I e
0
1
x2
dx
2 被积函数由一个表格定义
在科学实验和工程应用中,函数关系往往是不知道 的,只有实验测定的一组样本点和样本值,这时, 就无法使用quad函数计算其定积分。 在MATLAB中,对由表格形式定义的函数关系的求 定积分问题用trapz(X,Y)函数。 其中向量X、Y定义函数关系Y=f(X)。
值得一提的是,当已知给出的样本数N0不是2 的幂次时,可以取一个N使它大于N0且是2 的幂次,然后利用函数格式fft(X,N)或 fft(X,N,dim)便可进行快速傅立叶变换。这 样,计算速度将大大加快。 相应地,一维离散傅立叶逆变换函数是ifft。 ifft(F)返回F的一维离散傅立叶逆变换; ifft(F,N)为N点逆变换;ifft(F,[],dim)或 ifft(F,N,dim)则由N或dim确定逆变换的点数 或操作方向。
第六章MATLAB数据分析与功能函数

A=
8
1
6
3
5
7
4
9
2
>> [Y,I]=sort(A,2,'descend') Y=
861 753 942 I= 132 321 213
10 点击图形窗口的Tool\Data Statistics,对数据进行分析
6.1.2 用于场论的数据分析函数
1.两个向量点积运算dot 2. 两个向量叉积运算cross
7. 求积与累乘积 (和前面所有的数相乘放在现在的位置)
prod(X):返回向量X各元素的乘积。 prod(A):返回一个行向量,其第i个元素是A的第i列的元素乘积。 prod(A,dim):当dim为1时,该函数等同于prod(A);当dim为2时,返回一个 列向量,其第i个元素是A的第i行的各元素乘积。 cumprod(X):返回向量X累乘积向量。 cumprod(A):返回一个矩阵,其第i列是A的第i列的累乘积向量。 cumprod(A,dim):当dim为1时,该函数等同于cumprod(A);当dim为2时, 返回一个向量,其第i行是A的第i行的累乘积向量。
数据序列求和与求积的函数是sum和prod,其使用方法类似。设X是 一个向量,A是一个矩阵,函数的调用格式为: sum(X):返回向量X各元素的和。 sum(A):返回一个行向量,其第i个元素是A第i列的元素和。 sum(A,dim):当dim为1时,该函数等同于sum(A);当dim为2时,返回一 个列向量,其第i个元素是A的第i行的各元素之和。 cumsum(X):返回向量X累加和向量。 cumsum(A):返回一个矩阵,其第i列是A的第i列的累加和向量。 cumsum(A,dim):当dim为1时,该函数等同于cumsum(A);当dim为2时 ,返回一个矩阵,其第i行是A的第i行的累加和向量。
MATLAB课件 第6讲

π
y′′ − µ 1 − y 2 y′ + y = 0 y (0) = 1, y′(0 ) = 0, µ = 2
函数ode23和ode45是对一阶常微分方程组设计的,因此,对高阶常微 和 是对一阶常微分方程组设计的, 函数 是对一阶常微分方程组设计的 因此, 分方程,需先将它转化为一阶常微分方程组,即状态方程。 分方程,需先将它转化为一阶常微分方程组,即状态方程。 则可写出Van der Pol 方程的状态方程形式: 方程的状态方程形式: 令 x1 = y , x2 = y ′, 则可写出
求解器 Ode23 Ode45 Ode113 Ode23t Ode15s Ode23s Ode23tb ode15i 采用方法 2-3阶Runge-Kutta算法,低精度 算法, 阶 算法 4-5阶Runge-Kutta算法,中精度 阶 算法, 算法 Adams算法,精度可到 10 −3 ~ 10 −6 算法, 算法 梯形算法 Gear’s方向数值微分算法,中精度 方向数值微分算法, 方向数值微分算法 2阶Rosebrock算法,低精度 阶 算法, 算法 梯形算法,低精度 梯形算法, 可变秩方法 适用场合 非刚性 非刚性 非刚性, 非刚性, 适度刚性 刚性 刚性 刚性 完全隐式微分方程
∫
1
0
ln xdx .
(1)建立被积函数文件 )建立被积函数文件feln.m. function y=feln(x) y=exp(x).*log(x); (2)调用数值积分函数 求定积分。 )调用数值积分函数quadgk求定积分。 求定积分 format long; I=quadgk(@ feln,0,1) 3.梯形积分法 梯形积分法 在MATLAB中,对由表格形式定义的函数关系的求定积分问题用梯 中 形积分函数trapz.该函数调用格式如下。 该函数调用格式如下。 形积分函数 该函数调用格式如下 ●T=trapz(Y).例如:trapz([1:5;2:6]’) 例如: 例如 ●T=trapz(X,Y).
matlab基础教程教学课件杨德平第6章程序设计

end 说明 每当循环变量variable取expression中的一个值时,就执行循环体 statements一次,直到取完expression中的值。expression常用数组形成 表示。
【例6-4】编写求100!的程序,利用公式k!=(k-1)!×k。 s=1; for k=1:100 s=s*k; end s 运行结果如下: s= 9.3326e+157
表6-3 各种运算符优先级排序
优先级 最高
最低
运算符 ()小括号 ’转置 .^ 数组乘方 ^ 矩阵乘方 逻辑非(not,~) .* 点乘 ./点除 乘法 除法 加减法 冒号 关系操作符(==,~=,>,>=,<,<=) 逻辑与(and,&) 逻辑或、逻辑异或6(/1or,xor,|)
首页
6.2. 顺序语句
and(a,b)
| 或(or)
or(a,b)
6/1
~ 非(not)
not(a,b)
异或(xor)
xor(a,b) 首页
尚 辅 网 shangfuwang
逻辑操作运算法则如下: (1)a&b或and(a,b):表示a和b作“逻辑与”运算,当a和b全为非零时,运算 结果为1,否则为0; (2)a|b或or(a,b):表示a和b作“逻辑或”运算,当a和b只要有一个非零,运 算结果为1,否则为0; (3)~a或not(a):表示对a作“逻辑非”运算,当a是零时,运算结果为1,否 则为0; (4)xor(a,b):表示a和b作“逻辑异或”运算,当a和b的值一个为零,一个不 为零时运算结果为1,否则为0。
例如,判断当a为偶数时,显示a是偶数,并计算a/2;否则不作任何处理。 If rem(a,2)==0 disp('a is even') b=a/2; end
如何在MATLAB中进行数值计算

如何在MATLAB中进行数值计算MATLAB是一种用于数值计算和科学计算的程序设计语言和环境。
它提供了各种函数和工具箱,用于处理数值计算问题,包括线性代数、数值积分、数值微分、常微分方程求解、优化、插值等。
下面将介绍如何在MATLAB中进行数值计算的基本步骤和常用函数。
首先,启动MATLAB软件,创建一个新的脚本文件(.m文件),用于编写和保存MATLAB代码。
1.数值计算基础在MATLAB中进行数值计算的基本单位是矩阵和向量。
可以使用MATLAB提供的各种函数来创建和操作矩阵和向量。
例如,可以使用"zeros"函数创建一个全零的矩阵,使用"ones"函数创建一个全一的矩阵,使用"rand"函数生成一个随机矩阵。
2.线性代数计算MATLAB提供了丰富的线性代数函数,用于处理线性方程组、矩阵运算和特征值计算等问题。
例如,可以使用"inv"函数计算矩阵的逆,使用"det"函数计算矩阵的行列式,使用"eig"函数计算矩阵的特征值和特征向量。
3.数值积分MATLAB提供了多种数值积分方法,用于计算函数的定积分。
可以使用"quad"函数进行一维数值积分,使用"quad2d"函数进行二维数值积分,使用"quad3d"函数进行三维数值积分。
4.数值微分MATLAB提供了多种数值微分方法,用于计算函数的导数和偏导数。
可以使用"diff"函数计算函数的导数,使用"gradient"函数计算函数的梯度,使用"hessian"函数计算函数的Hessian矩阵。
5.常微分方程求解MATLAB提供了多种数值方法,用于求解常微分方程组。
可以使用"ode45"函数求解一阶常微分方程,使用"ode15s"函数求解刚性常微分方程。
MATLAB与计算机仿真课件第6章 MATLAB数值运算

f '( x) 3x2 4x 3
polyder(p)的运算结果为[3 4 3]
三、多项式的求解
2、多项式的求根 格式: roots(p) (由多项式求根) 例如:p=[1 3 2]; roots(p)的运算结果为[-2 ; -1 ] 格式: poly(r) (由根求多项式)
2
A=[1,2,3;2,3,4]; B=[1;2]; X=pinv(A)*B XX=A\B
四、相关与卷积
对两组数据(或两个信号),可求其相关、协方差和卷积等
1、求协方差:
cov(x)
求x 的协方差阵
cov(x,y)
求x ,y的协方差
2、求相关系数
corrcoef(x) 求x的自相关阵
corrcoef(x,y) 求x,y的互相关系数
2
3
x1
4 x3
5
A=[1,2;2,3;3,4]; B=[1;2;5]; X=pinv(A)*B XX=A\B
3、欠定方程组的解 (有无穷多个解 )
有两种求解方法: (1) X= pinv(A)*B (具有最小长度或范数的解) (2) X=A\B (具有最多零元素的解)
例题:
x1 2x2 3x3 1 2x1 3x2 4x3
1、恰定方程组的解 (有唯一的一组解)
AX B ➡ A1AX A1B ➡ X A1B A \ B
有两种求解方法:(1) X= inv(A)*B (速度较慢) (2) X=A\B (速度快,精度高)
例:
x1 2x2 8 2x1 3x2 13
A=[1,2;2,3]; B=[8;13]; X=inv(A)*B XX=A\B
( sa+sb)= (1,1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3)四阶五级Runge-Kutta变步长算法(ode45 )
x n 1 x n K i hn f hn * i K i
i 1 6
t n i hn , x n i 1, 2 , ,6
j 1
>>x = fzero ( 'x*exp(x)-2' , [0 2] )
匿名函数:
>> fun=@ (x)x*exp(x)-2 >>x = fzero ( fun , [0 2] )
M文件函数名
function y=mfun(x) y=x*exp(x)-2 >> x = fzero ( mfun , [0 2] ) 得:x=0.8526
rank(A)=rand([A,B])=2
>>A=[1 –2 1 1;1 –2 3 –4;1 –2 1 5];B=[1;-1;5]; >>rank(A),rank([A,B]), X=A\B >> X=0 -0.0000 0 1.0000
6.1.2 解高次线性方程
x x 2x x 3 0
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
n=3 12 10 8 6 4 2 0 -2 12 10 8 6 4 2 0 -2
n=5
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
6.2.4 多项式插值(Interpolation) 由已知数据点来估计其间的未知数据点。 一维插值函数: yi = interp1(x,y,xi,method) 二维插值函数: ZI = interp2(X,Y,Z,XI,YI,method)
0.7408
>>C=E\y C =0.4760 0.3413 C为观测数据的最小 二乘解。
1.0000
1.0000 1.0000 1.0000
0.4493
0.3329 0.2019 0.1003
y 0.476 0.3413 e
t
则:E*C=y,E的维数为6*2,为超定方程。
0.9 0.85 0.8 0.75 0源自7 0.65 0.6 0.55 0.5
0.9
0.8
y c1 c2 e
t
0.7
0.6
下一步是用观测到的数据来估计 C=[c1 c2]。 建立方程:E*C=y
0 0.5 1 t 1.5 2 2.5
y
0.5
y c1 c2 e
E = 1.0000
1.0000
t
>>E = [ones(size(t)) exp(-t)]
1.0000
xe 2 0
x
e
x
2/x 3
2 x
g ( x) 2 x
ezplot('exp(x)') hold on ezplot('2/x') hold off grid [x,y]=ginput(1)
2
1
h( x) e x
0
-1
-2
-3
-6
-4
-2
0 x
2
4
6
xe 2 0
x
(2)求解 函数字符串:
6.2.3 多项式拟合(Fitting) p = polyfit(x,y,n) x,y是观测到的数据点向量,长度为N,n为多项式 的阶次,p为多项式的系数向量,长度为n+1。拟合 的算法是最小二乘法。 例:x=0 : 0.1 : 1;
y=[-0.47,1.97,3.28,6.16,7.08,7.34,7.66,8.36,9.28,9.60,10.2];
fplot('-x/6',[-4*pi,4*pi]) grid hold off [m,n]=ginput
3 2
1
0
-1
-2
-3
-10
-5
0
5
10
function f=myfun(x) f=[sin(x(1))+x(2) x(1)+6*x(2)];
(2)求解
3
sin x y 0 x 6 y 0
y 0.476 0.3413 e t
0
0.5
1
1.5
2
2.5
(3)欠定方程(Underdetermined),未知数个数多于方程个数, 当rank(A)=rand([A,B]),理论上有无穷个解,MATLAB可 求得一个基本解,其中至少有m个非零元素。
x1 2 x 2 x3 x 4 1 x1 2 x 2 x3 x 4 1 x 2x x 5x 5 2 3 4 1
a(s) s 2s 3
2
b( s ) 4 s 5s 6
2
求a(s)*b(s): >>a = [1 2 3]; b = [4 5 6]; c = conv(a,b) c =4 13 28 27 18
6.2.3 多项式求值(Polynomial Evaluation): >>p=[1 0 -2 -5] 3 p( x) x 2 x 5 >>polyval(p,5) ans = 110
5 4 3 2
>>p=[1 -1 2 1 0 3]; >>r=roots(p) r= 0.8679 + 1.1770i 0.8679 - 1.1770i -1.0000 0.1321 + 1.1770i 0.1321 - 1.1770i
6.1.3 解非线性方程
f ( x ) xe 2 0
a=[ 0.7800 0.5630 0.9130 0.6590] >>det(a) ans = 1.0000e-006 >>cond(a) ans = 2.1932e+006 >>s=svd(a) s= 1.48095205864320 0.00000067524130
(2)超定方程:实验数据的曲线拟合时,常遇到超定方程。 比如,实验中观测到下一组数据, t = [0 .3 .8 1.1 1.6 2.3]'; y = [.82 .72 .63 .60 .55 .50]'; t和y之间有什么关系呢?可用下面的函数近似描述:
把求微分变为求积分,然后用近似的方法求上 式中的积分,是数值积分法的基本思想。
2.3.1 欧拉法(Euler method)
用矩形面积近似曲边梯形的面积: f(x,t) 欧拉法递推公式如下:
x n 1 x n h * f ( x n , t n )
tn tn+1 t
误差
dx dt 30 x x (0) 1 / 3 0 t 0 .8
n
n 1
a n 1 x a n
将多项式的系数按降幂次序存放在一个行 向量中。缺少的幂次一定要补零。 p=[a0, a1,… an]
p( x) x 2 x 5
3
p=[1 0 -2 -5]
6.2.2 多项式乘除 多项式乘法实质上是系数向量的卷积 (convolution),除法实质上是系数向量的解 卷积(deconvolution)。
MATLAB语言
电气学院 叶满园 myye@
第6章 MATLAB数值运算
解析解:符号运算工具箱(Symbolic Math Toolbox) 数值解:很多工程问题不存在或很难得到解析解、解析解
计算太复杂时,需要用数值解法。
6.1 解方程 6.1.1 解线性方程组 方程A*X=B的解为:X=inv(A)*B=A\B, A\B称为A左除B,左除时要求两矩阵行数相等。 方程X*A=B的解为:X=B*inv(A)=B/A, A/B称为A右除B,右除时要求两矩阵列数相等
a1=polyfit(x,y,1); x1=linspace(0,1,100); subplot(2,2,1) plot(x,y,'o',x1,polyval(a1,x1),'r') title('线性拟合')
n=1 12 10 8 6 4 2 0 -2 12 10 8 6 4 2 0 -2
n=2
i 1
ij
K
j
f(x,t)
误差
tn
tn+1
t
(2)四阶Runge-Kutta法 多取几个点,然后将其斜率加权平均得一等效斜 率,就得到四阶龙格库塔法。
x n 1 x n h * ( k1 2 k 2 2 k 3 k 4 ) / 6 k1 f ( x n , t n ) k 2 f ( x n k1 * h / 2, t n h / 2 ) k f ( x k * h / 2, t h / 2 ) n 2 n 3 k 4 f ( xn k 3 * h, t n h )
6.3.2 龙格库塔算法(Runge-Kutta Method)
(1)二阶Runge-Kutta法 用梯形面积近似曲边梯形的面积:
x n 1 x n h * ( k1 k 2 ) / 2 k1 f ( x n , t n ) k f ( x k * h, t h ) n 1 n 2
6.1.4 解非线性方程组
sin x y 0 x 6 y 0
函数: x = fsolve(fun,x0),用来求解f(x)=0, 其中x是一个向量。 fun:关于向量x的M函数或匿名函数的句柄。 x0:寻找解的初始位置。 (1)估计解的位置