MATLAB第二讲__数值计算和符号计算
matlab2_matlab教程
x1+2x2+3x3=1 2x1+3x2+4x3=2 a=[1 2 3;2 3 4];b=[1;2]; x=a\b x= 1.00 0 x=
x1 1 2 3 1 x2 = 2 3 4 2 x3
a
x = b
x=pinv(a)b
0.83 0.33
0
-0.17
六、微分方程求解
微分方程求解的仿真算法有多种,常用 的有Euler(欧拉法)、Runge Kutta(龙 格-库塔法。 Euler法称一步法,用于一阶微分方程
a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10]; a.*b ans = 2 8 18 4 15 30 49 72 90
a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10];
a*b ans = 25 55 85
37 85 133
二、数据的保存与获取
把matlab工作空间中一些有用的数 据长久保存下来的方法是生成mat数 据文件。 save —— 将工作空间中所有的变 量存到matlab.mat文件中。 默认文件名
save data——将工作空间中所
有的变量存到data.mat文件中。
save data a b ——将工作空间 中a和b变量存到data.mat文件中。
rand —— 随机矩阵
eye —— 单位矩阵
zeros ——全部元素都为0的矩阵
ones ——全部元素都为1的矩阵
还有伴随矩阵、稀疏矩阵、魔方 矩阵、对角矩阵、范德蒙等矩阵的创 建,就不一一介绍了。
注意:matlab严格区分大小写字母,因
此a与A是两个不同的变量。 matlab函数名必须小写。
Matlab上机操作2——符号计算
Matlab上机操作2——符号计算1、%创建数值常量和符号常量a1=2*sqrt(5)+pi %创建数值常量a2=sym('2*sqrt(5)+pi') %按符号表达式创建符号常量a3=sym(2*sqrt(5)+pi) %按最接近的两个正整数表示符号常量a4=sym(2*sqrt(5)+pi,'d') %按最接近的十进制浮点数表示符号常量a31=a3-a1 %数值常量和符号常量的计算a5='2*sqrt(5)+pi' %字符串常量2、%创建符号变量和符号表达式f1=sym('a*x^2+b*x+c') %创建符号表达式syms a b c x %创建符号变量f2=a*x^2+b*x+c %创建符号表达式syms('a','b','c','x') %注意这里是syms,不是sym>> sym('a','b','c','x')错误使用sym输入参数太多。
f3=a*x^2+b*x+c; %创建符号表达式syms x y real %创建实数符号变量z=x+i*y; %创建z为复数符号变量real(z) %复数z的实部是实数xsym('x','unreal'); %清除符号变量的实数特性real(z) %复数z的实部3、%比较符号矩阵与字符串矩阵A=sym('[a,b;c,d]') %创建符号矩阵B='[a,b;c,d]' %创建字符串矩阵C=[a,b;c,d] %创建数值矩阵C=sym(B) %转换为符号矩阵whos4、%计算符号矩阵的行列式值、非共轭转置和特征值syms a11 a12 a21 a22A=[a11 a12;a21 a22] %创建符号矩阵det(A) %计算行列式A.' %计算非共轭转置eig(A)%计算特征值5、%符号表达式的代数运算f=sym('2*x^2+3*x+4')g=sym('5*x+6')f+g %符号表达式相加f*g %符号表达式相乘6、%对符号表达式进行任意精度控制并用三种运算方式表示同一符号常量a=sym('2*sqrt(5)+pi')digits %显示默认的有效位数vpa(a) %用默认的位数计算并显示vpa(a,20) %按指定的精度计算并显示digits(15) %改变默认的有效位数vpa(a) %按digits指定的精度计算并显示a1 =2/3 %数值型a2 = sym(2/3) %有理数型digitsa3 =vpa('2/3',32) %VPA型format longa17、%符号变量与数值变量进行转换a1=sym('2*sqrt(5)+pi')b1=double(a1) %转换为数值变量a2=vpa(sym('2*sqrt(5)+pi'),32)b2=numeric(a2) %转换为数值变量b2=numeric(a2)未定义函数或变量'numeric'。
MATLAB中的数值计算与符号计算
哈 工 程 大 学 数 学 实 验 电 子 教 案
syms x y; dblquad('x*y',0,1,-1,2) ans = 0.7500 这说明 , 不是语法错误 . 实际上 ,这个命令只能计算 矩形区域的积分,如果积分区域不上矩形区域,那么, 你就得定义一个二元函数 , 让这个函数在积分区域 外为0,比如,对此积分,定义
xy , ( x ,y ) D f( x ) 0 , ( x ,y ) D
而且,它也只能计算二重积分的数值解.
上页 下页 退出
◆关于微分方程的求解
哈 工 程 大 学 数 学 实 验 电 子 教 案
命令格式: dsolve(‘eqn1’, ‘eqn2’, …….); 如果不额外说明, 默认的变量是t dsolve('Dy=y^2*(1-y)') Warning: Explicit solution could not be found; implicit solution returned. > In C:\MATLABR12\toolbox\symbolic\dsolve.m at line 292 ans = t+1/y-log(y)+log(-1+y)+C1=0 dsolve('D2y = -a^2*y', 'y(0) = 1, Dy(pi/a) = 0') ans =cos(a*t) [x,y]=dsolve('Dx = y', 'Dy = -x', 'x(0)=0', 'y(0)=1') x =sin(t) y =cos(t)
第一种方法,用梯形法计算,其命令为trapz(x,y), 其中x, y 是具有相同长度的向量 , 表示用梯形法分割时 , 数据 点上的值. 此积分的实际值为0.199(精确到20位) x=1:0.1:10; y=sin(sin(x)); trapz(x,y) ans = 1.1981
第二讲道客巴巴MATLAB的数值计算
例 在区间[20,50]内均匀分布的5阶随机 矩阵。
命令如下:
x=20+(50-20)*rand(5) 此外,常用的函数还有reshape(A,m,n), 它在矩阵总元素保持不变的前提下,将 矩阵A重新排成m×n的二维矩阵。
也可用linspace函数产生行向量。其调用 格式为: linspace(a, b, n) 其中a和b是生成向量的第一个和最后一 个元素,n是元素总数。 例 》a=linspace(1 , 10 , 10)
当一个指令或矩阵太长时,可用••• 续行
冒号的作用 用于生成等间隔的向量,默认 间隔为1。 用于选出矩阵指定行、列及元 素。 循环语句
2.用matlab函数创建矩阵
空阵 [ ] — matlab允许输入空阵,当一 项操作无结果时,返回空阵。 rand —— 随机矩阵 eye —— 单位矩阵 zeros ——全部元素都为0的矩阵 ones ——全部元素都为1的矩阵 diag ——产生对角矩阵
a=[1,2,3;4,5,6;7,8,9];a^2 ans =30 36 42
66 81 96 102 126 150
※当一个方阵有复数特征值或负实 特征值时,非整数幂是复数阵。
a^0.5
ans =
0.4498 + 0.7623i 0.5526 + 0.2068i 0.6555 -0.3487i 1.0185 + 0.0842i 1.2515 + 0.0228i 1.4844 - 0.0385i 1.5873 - 0.5940i 1.9503 - 0.1611i 2.3134 + 0.2717i
3.conv多项式乘运算(向量卷积)
例:a(x)=x2+2x+3; b(x)=4x2+5x+6; c = (x2+2x+3)(4x2+5x+6) a=[1 2 3];b=[4 5 6]; c=conv(a,b)或c=conv([1 2 3],[4 5 6]) c = 4.00 13.00 28.00 27.00 18.00 p=poly2str(c,‘x’) 其中x表示自变量 p = 4 x^4 + 13 x^3 + 28 x^2 + 27 x + 18
matlab数值运算和符号运算
《深度探讨:从数值运算到符号运算的MATLAB应用》在科学计算领域中,MATLAB无疑是一个不可或缺的工具。
它被广泛应用于数学建模、数据分析、图形可视化和算法开发等领域。
在MATLAB中,数值运算和符号运算是两个核心概念,它们分别在不同的领域中发挥着重要作用。
本文将从数值运算和符号运算两个方面展开讨论,带您深入探索MATLAB的应用价值。
一、数值运算1. MATLAB中的数值数据类型在MATLAB中,常见的数值数据类型包括整数、浮点数和复数等。
它们在科学计算中有着广泛的应用,例如在矩阵运算、微分方程求解和优化算法中。
2. 数值计算函数的应用MATLAB提供了丰富的数值计算函数,包括线性代数运算、插值和拟合、统计分布和随机数生成等。
这些函数为科学计算提供了强大的支持,使得复杂的数值计算变得更加简单高效。
3. 数值方法在实际问题中的应用通过具体的案例,我们可以深入了解MATLAB在实际问题中的数值计算方法。
通过有限元分析解决结构力学问题、通过数值积分求解物理方程、通过数值微分求解工程问题等。
二、符号运算1. MATLAB中的符号计算工具MATLAB提供了符号计算工具包,可以进行符号变量的定义、代数运算、微分积分和方程求解等。
这为数学建模、符号推导和精确计算提供了强大的支持。
2. 符号计算函数的应用通过具体的例子,我们可以深入了解MATLAB中符号计算函数的应用。
利用符号计算求解微分方程、利用符号变量定义复杂的代数表达式等。
3. 符号计算在科学研究中的应用通过详细的案例,我们可以了解符号计算在科学研究中的应用。
利用符号计算推导物理模型、利用符号运算求解工程问题等。
总结与展望:通过本文的深度探讨,我们对MATLAB中的数值运算和符号运算有了全面的了解。
数值运算为我们提供了高效的数值计算工具,而符号运算则为我们提供了精确的符号计算工具。
这两者相辅相成,在不同的领域中发挥着重要的作用。
希望通过本文的阐述,读者可以更加深入地理解MATLAB中数值运算和符号运算的应用,提升科学计算的能力和水平。
MATLAB2 - 符号运算
二、符号表达式的代数运算
符号运算与数值运算的区别主要有以下几点: 1. 传统的数值型运算因为要受到计算机所保留的有效位数的 限制,它的内部表示法总是采用计算机硬件提供的 8位浮 点表示法,因此每一次运算都会有一定的截断误差,重复 的多次数值运算就可能会造成很大的累积误差。符号运算 不需要进行数值运算,不会出现截断误差,因此符号运算 是非常准确的。 2. 符号运算可以得出完全的封闭解或任意精度的数值解。
三、 符号表达式的操作和转换
符号表达式中自由变量的确定
1. 自由变量的确定原则 MATLAB将基于以下原则选择一个自由变量:
(1) 小写字母i和j不能作为自由变量。 (2) 符号表达式中如果有多个字符变量,则按照以下顺序 选择自由变量:首先选择x作为自由变量;如果没有x,则 选择在字母顺序中最接近x的字符变量;如果与x相同距离, 则在x后面的优先。 (3) 大写字母比所有的小写字母都靠后。
符号矩阵
用sym和syms命令也可以创建符号矩阵。
例如,使用syms命令创建相同的符号矩阵:
syms a b c d A=[a b; c d] A =[ a, b] [ c, d] 例3 比较符号矩阵与字符串矩阵的不同。 A=sym('[a,b; c,d]') %创建符号矩阵 A =[ a, b] [ c, d] B='[a,b;c,d]' %创建字符串矩阵 B =[a,b; c,d] A*2 v.s. B*2
例9 三种形式的符号表达式的表示。
符号表达式的化简
同一个数学函数的符号表达式的可以表示成三种形式,例 如以下的f(x)就可以分别表示为:
(1) 多项式形式的表达方式:f(x)=x3-6x2+11x-6 (2) 因式形式的表达方式:f(x)=(x-1)(x-2)(x-3) (3) 嵌套形式的表达方式:f(x)=x(x(x-6)+11)-6
第二讲 Matlab的基本计算
>>a3=mat2str( a,2 ) %一行字符
字符串的应用:作出函数图形,并标注最大值点。 字符串的应用:作出函数图形,并标注最大值点。
y = e 2t sin(3t ) 0 ≤ t ≤ 10
clear %清除内存变量 t = 0 : 0.01 : 10; %时间 t 从 0 到 10 每隔 0.01 均匀采样 y = exp( -2*t ) .* sin( 3*t ); %对应每一个 t 求 y 值 %求最大值 y_max 及其下标 i_max [ y_max, i_max ] = max( y ); %横坐标字符串 t_text = [ 't = ', num2str( t(i_max) ) ]; %纵坐标字符串 y_text = [ 'y = ', num2str( y_max ) ]; %三行字符来标识最大值点 max_text = char( 'Maxium', t_text, y_text ); %图名称字符串 Title = [ 'y = exp( -2*t ) .* sin( 3*t )' ]; %新建一个图形窗 figure %画一条黑色的水平线 plot( t,zeros( size(t) ), 'k' ) %保持图形不被清除 hold on %蓝色实线画曲线 y(t) plot( t, y, 'b' ) %大小为 20 的红圆点标记最大值点 plot( t(i_max), y_max, 'r.', 'MarkerSize', 20 ) %在最大值点附近显示注释字符 text( t(i_max)+0.3, y_max+0.05, max_text ) %显示图名、横坐标名、纵坐标名 title( Title ); %取消图形保持 xlabel( 't' ) ylabel( 'y' ) hold off
第二章matlab02数值运算功能2
2.4.3矩阵的关系和逻辑运算 矩阵的关系和逻辑运算
1.矩阵的关系运算符:<, >, <=, >=, = =, ~= 矩阵的关系运算符: 矩阵的关系运算符 • 矩阵之间的每个元素进行比较,运算结果 矩阵之间的每个元素进行比较, 为与原矩阵大小一样的由0 为与原矩阵大小一样的由0和1组成的矩阵 注意:1=<a<=2错误 注意: 错误 例: 1<=a<=2正确 = 正确
• •
§2.4 矩阵的运算
矩阵的数学运算 矩阵的点(数组 运算 矩阵的点 数组)运算 数组 矩阵的关系和逻辑运算
2.4.1矩阵的数学运算 矩阵的数学运算
矩阵运算符 含义 A’ 矩阵转置 A+B 矩阵相加 A-B 矩阵相减 A*B 矩阵相乘 A/B 矩阵相除(右除) 矩阵相除(右除) B\A 矩阵相除(左除) 矩阵相除(左除) A^n A阵的 n次幂 阵的 次幂
x X = y z
10 B = 5 −1
要解上述的联立方程式, 要解上述的联立方程式,可利用矩阵左除 \ 做运 时要求A、 的行数相等 相等。 算,即:X=A\B, 左除时要求 、B的行数相等。 , 左除时要求
如果将原方程式改写成 X*A=B,且令 X, A 和 B , 分别为
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)变量操作
第2章 MATLAB数值计算
第2章 MATLAB数值计算MATLAB的数学计算=数值计算+符号计算其中符号计算是指使用未定义的符号变量进行运算,而数值计算不允许使用未定义的变量。
2.1 变量和数据2.1.1数据类型数据类型包括:数值型、字符串型、元胞型、结构型等数值型=双精度型、单精度型和整数类整数类=无符号类(uint8、uint16、uint32、uint64)和符号类整数(int8、int16、int32、int64)。
2.1.2数据1. 数据的表达方式▪可以用带小数点的形式直接表示▪用科学计数法▪数值的表示范围是10-309~10309。
以下都是合法的数据表示:-2、5.67、2.56e-56(表示2.56×10-56)、4.68e204(表示4.68×10204)2. 矩阵和数组的概念在MATLAB的运算中,经常要使用标量、向量、矩阵和数组,这几个名称的定义如下:▪标量:是指1×1的矩阵,即为只含一个数的矩阵。
▪向量:是指1×n或n×1的矩阵,即只有一行或者一列的矩阵。
▪矩阵:是一个矩形的数组,即二维数组,其中向量和标量都是矩阵的特例,0×0矩阵为空矩阵([])。
▪数组:是指n维的数组,为矩阵的延伸,其中矩阵和向量都是数组的特例。
3. 复数复数由实部和虚部组成,MATLAB用特殊变量“i”和“j”表示虚数的单位。
复数运算不需要特殊处理,可以直接进行。
复数可以有几种表示:z=a+b*i或z=a+b*jz=a+bi 或z=a+bj(当b 为标量时) z=r*exp(i*theta)● 得出一个复数的实部、虚部、幅值和相角。
a=real(z) %计算实部 b=imag(z) %计算虚部 r=abs(z) %计算幅值 theta=angle(z) %计算相角 说明:复数z 的实部a=r*cos(θ); 复数z 的虚部b=r*sin(θ); 复数z 的幅值22b a r +=;复数z 的相角theta=arctg(b/a),以弧度为单位。
第二讲 MATLAB基本操作
三、矩阵及其运算
(四)矩阵的基本数值运算
(1)矩阵与常数的四则运算(同向量与数的四则运算) 矩阵与常数的四则运算(同向量与数的四则运算) 矩阵与常数的四则运算是指矩阵各元素与常 数之间的四则运算。 数之间的四则运算。 例如: 例如 a=[1,2,3;4,5,6;7,8,9]; 求: c=a+2; d=a-2; e=a*2; f=a/2;
(一)矩阵的生成
矩阵的生成有多种方式,通常使用的有四种: 矩阵的生成有多种方式,通常使用的有四种: (1)在命令窗口中直接输入矩阵; 在命令窗口中直接输入矩阵; 把矩阵的元素直接排列到方括号中, 把矩阵的元素直接排列到方括号中,每行 内的元素用空格或逗号相隔, 内的元素用空格或逗号相隔,行于行之间的内 容用分号相隔。 容用分号相隔。 通过语句和函数产生矩阵; (2)通过语句和函数产生矩阵; 文件中建立矩阵; (3)在M文件中建立矩阵; 从外部的数据文件中导入矩阵; (4)从外部的数据文件中导入矩阵; 例如: 例如 a=[1 2 3;4 5 6;7 8 9], b=[2,4,6,8;1,3,5,7;1,2,3,4],
四、数组及其运算
(一)数组的生成
(1)在命令窗口中直接输入向量 格式:a=[a1,a2,a3, …an ] 格式: (2)等差元素向量的生成 生成法: 格式: (i)冒号“:”生成法: 格式:a=a1:m:an )冒号“ (ii)使用线性等分向量函数 )使用线性等分向量函数linspace法: 法 格式: 格式:a=linspace(a1,an,n)
三、矩阵及其运算
(三)矩阵中元素的操作
的第r行 (1)提取矩阵 的第 行:A(r,:) )提取矩阵A的第 ( ,:) 的第r列 (:,r) (2)提取矩阵 的第 列:A(:, ) )提取矩阵A的第 (:, 的每一列, 拉伸为一个列向量: (:) (3)依次提取矩阵 的每一列,将A拉伸为一个列向量:A(:) )依次提取矩阵A的每一列 拉伸为一个列向量 (4)取矩阵 的第 1~i2行、第j1~j2列构成新矩阵 的第i 列构成新矩阵:A(i1:i2, j1:j2) )取矩阵A的第 的第i 构成新矩阵:A(i2:-1:i1,:) (5)以逆序提取矩阵 的第 1~i2行,构成新矩阵 )以逆序提取矩阵A的第 : 的第j 构成新矩阵:A(:, j2:-1:j1 ) (6)以逆序提取矩阵 的第 1~j2列,构成新矩阵 )以逆序提取矩阵A的第 : 的第i 构成新矩阵:A(i1:i2,: ] ,:)=[ (7)删除 的第 1~i2行,构成新矩阵 )删除A的第 的第j 构成新矩阵:A(:, (8)删除 的第 1~j2列,构成新矩阵 :, j1:j2)=[ ] )删除A的第 拼接成新矩阵: (9)将矩阵 和B拼接成新矩阵:[A B];[A;B] )将矩阵A和 拼接成新矩阵 ; ;
第4章-MATLAB数值计算与符号计算
• 10 40 100 160 170 120 • conv指令可以嵌套使用,如conv(conv(a, b), c)。 • 命令[q, r]=deconv(v, u)表示u整除v。 向量q表示商
,向量r表示余, 即有v=conv(u, q)+r。
• (3) 多项式的导函数
• 对多项式求导数的函数有
• yi=interp1(x, y, xi, method) • 函数根据x, y的值,计算函数在xi处的值。x, y是两个等
长的已知向量,分别描述采样点和样本值,xi是一个向 量或标量,描述欲插值的点,yi是一个与xi等长的插值 结果。method是插值方法,允许的取值有'linear'、 'nearest'、'cubic'、'spline',分别表示线性插值、最近点 插值、3次多项式插值、3次样条插值。 • 注意:xi的取值范围不能超出x的给定范围,否则,会 给出“NaN”错误。
plot(x,y,'o',x,Y) xlabel('年龄') ylabel('体重')
运行结果如下:
p=
0.0141 -0.2230 2.5809 3.5313
Y' =
%显示Y的转置Y'
3.5313 4.7678 5.9033 9.6478 14.0360 17.1301 26.7709 39.6895
0.8797 0.0102
• 绘出sinx和多项式P(x)在给定区间的函数曲线, 如图4.1所示。
图4.1 用6次多项式对正弦函数进行拟合
【例】 经测量某人从出生到成年之间的体重,得到年龄 与体重的数据如表1所示,试建立年龄与体重之间的关系。
2、MATLAB的数学运算基础
例子: 计算表达式的值,并显示计算结果。
在MATLAB命令窗口输入命令: x=1+2i; y=3-sqrt(17); z=(cos(abs(x+y))-sin(78*pi/180))/(x+abs(y)) 输出结果是:
z= -0.3488 + 0.3286i
六、MATLAB的数值显示格式 的数值显示格式
• 和其他的程序设计语言不同,MATLAB能 自动根据赋值和操作来识别变量类型。即 变量使用之前,不需要指定变量的数据类 型,也不必事先声明变量。
MATLAB中变量的作用域一般默认为局 部变量,仅在当前调用的M文件中有效。如 果要定义全局变量,则必须用global来声明。 一般情况下,为了和局部变量有所区别, 常将全局变量用大写字母表示,但这并不 是必需的,只是人为的一种约定而已。
• • • •
>> clear xy yx %删除变量xy及yx >> whos >> xy %这时变量xy已经不存在了 ??? Undefined function or variable 'xy'.
其它
• 保存工作空间
命令格式: >>save filename variables
• 将变量列表variables所列出的变量保存到磁盘文 件filename中 • Variables所表示的变量列表中,不能用逗ariables时,表示将当前工作空间中所有 变量都保持到磁盘文件中。 • 缺省的磁盘文件扩展名为“.mat”,可以使用“-” 定义不同的存储格式(ASCII、V4等)
• 5.2、表达式的规则
MATLAB的表达规则与一般手写算式基 本相同。
• a) 表达式由变量名、运算符和函数名组成。 • b) 表达式按优先级自左向右运算,括号可改变优 先级顺序。 • c)优先级顺序由高到底为:指数运算、乘除运算、 加减运算。 • d)表达式中赋值符“=”和运算符两侧允许有空格。
Matlab基础(数值计算、符号计算和绘图)
Matlab基础(数值计算、符号计算和绘图)Matlab基础(数值计算、符号计算和绘图)第一章 MATLAB帮助1.常用的帮助命令Help lookfor which set/get doc type edit helpin2.帮助窗口3.演示系统第二章MATLAB基础1.MATLAB特点基本计算单元是矩阵、向量,功能的扩展性(除了基本部分外还有专业扩展部分)2.MATLAB组成MATLAB MATLAB Compiler Simulink Stateflow RTW3.MATLAB主要功能数学计算开发工具(MATLAB Editor M-Lint Code Checker MATLAB Profiler Directory Reports) 数据的可视化交互式编辑创建图形集成的算法开发编程语言和环境图形用户界面开发环境--GUIDE 开放性、可扩展性强专业应用工具箱4.MATLAB变量需要注意系统变量,如:ans eps i j pi5.MATLAB数据类型需要注意在命令窗口中可以通过输入help datatypes命令来获取MATLAB的数据类型列表。
class函数可用来获取一个变量的数据类型。
需要注意MATLAB中变量默认的类型为双精度浮点型(double)。
MATLAB的数据类型名称同样就是数据类型转换的函数。
6.MATLAB路径管理MATLAB搜索路径(菜单栏File-Set Path)MATLAB目录管理命令(path which addpath rmpath)7.MATLAB工作空间工作空间的存取(save load)工作空间管理命令(who whos clear pack size disp length)8.MATLAB的其他命令管理命令和函数(help doc what type lookfor which path)与文件和操作系统有关的命令(cd dir delete getenv ! unix)控制命令窗口)(cedit clc clf home more)启动和退出MATLAB(quit startup)一般信息(info subscribe hostid whatsnew ver )第三章 MATLABA数据1.矩阵的建立方式命令窗口中直接输入通过语句和函数建立矩阵(from:step:to linspace logspace)从外部数据文件中导入矩阵2.特殊类型矩阵Zeros(m,n) ones(m,n) eye(m,n) rand(m,n) randn(m,n) randperm(n) magic(n)字符串3.矩阵下标与子矩阵4.矩阵处理技巧矩阵赋值矩阵元素的删除矩阵的合并5.字符串的建立注意多个字符串可以用strcat函数连接在一起。
matlab数值计算与符号计算
例4.3 用一个6次多项式在区间[0, 2]内 逼近函数
• MATLAB程序如下: • x=linspace(0, 2*pi, 50); • y=sin(x); • P=polyfit(x, y, 6) %得到6次多项式的系
16 -563 -12089 -43779
0
0
0
0
0
0
0
0
0
0
0
0
• (5) 多项式的根 • 使用函数roots可以求出多项式等于0的根,
根用列向量表示, 其调用格式为
• r=roots(p) • 若已知多项式等于0的根, 函数poly可以求出
相应多项式, 调用格式为
• p=poly(r)
• 例4.2 求多项式x4 + 8x3 - 10的根。 • 命令如下: • A=[1, 8, 0, 0, -10]; • x=roots(A) • 返回 • x= • -8.0194 • 1.0344 • -0.5075 + 0.9736i • -0.5075 - 0.9736i • 再输入 • p=poly(x) • 返回 • p= • 1.0000 8.0000 -0.0000 -0.0000 -10.0000
• (2) 二维数据插值 • 在MATLAB中, 提供了解决二维插值问题的函数
interp2, 其调用格式为
• Z1=interp2(X, Y, Z, X1, Y1, 'method') • 其中, X, Y是两个向量, 分别描述两个参数的采样
点;Z是与参数采样点对应的函数值;X1, Y1是两 个向量或标量, 描述欲插值的点;Z1是根据相应 的插值方法得到的插值结果。method的取值与一 维插值函数相同。X, Y, Z也可以是矩阵形式。 • 同样, X1, Y1的取值范围不能超出X, Y的给定范围, 否则, 会给出“NaN”错误。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(4)数值运算中必须先对变量赋值;符号运算无须事先对变 量赋值,但必须先定义,运算结果以标准的符号表达 式形式给出。
Matlab基础应用 21
2.2.2 符号运算中的运算符
(1)基本运算符 符号矩阵:‚+”,‚-”,‚*‛,‚\”, ‚/”, ‚^”, ‚ ’ ” 符号数组:‚.*”,‚./”,‚.\‛,‚.^”, ‚.’ ” (2)关系运算符 运算符只有‚==”,‚~=”。
Matlab基础应用 7
1.3.4 多项式乘除运算(续)
例4: a(x)=x2+2x+3; b(x)=4x2+5x;求c=a(x)*b(x)。 解: >>a=[1 2 3];b=[4 5 0]; >>c=conv(a,b) c= 4 13 22 15 0 >>[d,r]=deconv(c,a) d= 4 5 0 r= 0 0 0 0 0
注意: 方法一只创建了符号表达式,没有创建符号变量; 而方法二既创建了符号表达式,又创建符号变量.
Matlab基础应用 19
2.1.3 创建符号矩阵
使用sym和syms命令创建
例4: A=sym(‘[a,b;c,d]’) A= [ a, b] [ c, d] syms f g h k B=[f,g;h,k] B=
%方法二
Name Size Bytes Class a 1x1 126 sym object b 1x1 126 sym object c 1x1 126 sym object f2 1x1 146 sym object x 1x1 126 sym object Grand total is 20 elements using 650 bytes
Matlab基础应用 8
1.4 字符串
(1)字符串用字符数组来存储,以单引号‘ ’来界定。 (2)常见的字符串函数:
length(str):计算字符串的长度; double(str):查看字符串的ASCII码; char(x):将ASCII码转换成字符串形式; strcmp(x,y):比较两字符串是否相同;
将数值对象转化为符号对象 格式:sym(s)或vpa(s),其中s为数值对象 例7:>> A = [2.5,1.8;1/1.6,3/5] >> B = sym(A)或B = vpa(A,n) 将符号对象转化为数值对象 格式:numeric(s)或double(s)或eval(s), 其中s为符号对象 例8:>>a1=sym(‘2*sqrt(5)’) >>a2=eval(a1) ans=4.4721
0 15.3750
Matlab基础应用
42.0000
80.6250 132.0000 196.8750 276.0000
4
1.3.2多项式求根
---求方程的解
在MATLAB利用函数:roots
例3:p(x)=x3-6x2-72x-27
解: >>p=[1 -6 -72 -27] >>r=roots(p) r =12.1229 -5.7345 -0.3884
r为[r1,…rn]留数行向量;
p为[p1…pn]极点行向量; k为直项行向量。
Matlab基础应用 6
1.3.4 多项式乘除运算
多项式的乘法
语法:p=conv(p1,p2) 说明:p是多项式p1和p2的乘积多项式。
多项式的除法
语法:[q,r]=deconv(p1,p2)
说明:p1被p2除,商为多项式q,余数式为r。
数值运算: syms s r >>r=5 s=pi*r^2 >>s=pi*r^2 r=5 s = 78.5398 s=vpa(subs(s),32) 如果要求求解的精度保 s =78.5398163397448 留到小数点后10位,怎样 30961566084581988 求解呢?
※符号运算是数值运算的扩展,为了得到更高精度的运算结果
1.7.3 卷积和快速傅立叶变换--离散序列
卷积
Conv: 计算向量的卷积。 conv2:计算二维(矩阵或二维数组)卷积。 deconv:解卷积运算。
快速傅立叶变换
fft:一维快速傅立叶变换。 ifft:一维快速傅立叶逆变换。
Matlab基础应用 15
2 符号运算
课程导入
求半径为5的圆的面积 符号运算:
Matlab基础应用 16
2.1 符号对象的建立
符号对象:是一种数据结构,用来存储代表符号 的字符串,包括符号常量、符号变量和符号 表达式,符号运算的结果也都是符号对象。 2.1.1 创建符号常量(sym是symbolic缩写) 语法:sym(‘常量’)
例1:创建数值常量和符号常量 >>a1=2*sqrt(5)+pi %数值常量 >>a2=sym(‘2*sqrt(5)+pi’) %符号常量
cumsum(X,n)
cumprod(X,n) trapz(x,y) cumtrapz(x,y,n)
Matlab基础应用
沿第n维求累计和
沿第n维求累计乘积 梯形法求积分近似于求元素和,把相邻两点数 据的平均值乘以步长表示面积。x为自变量,y 为函数。 用梯形法沿第n维求函数y对自变量x累计积分。
14
X=A{2,1}
Matlab基础应用
X=[1 1 1; 1 1 1; 1 1 1]
10
1.6 结构数组
(1)结构数组的基本组成是结构,每个结构都包含某一对象的 多个域,以‘.’来标识域。
(2)结构数组的创建: 方法1:TU(1)=struct(‘name’,‘曲线1’,‘color’,’red’,…) 方法2:TU(1).name=‘曲线1’; TU(1).color=‘red’ TU(1).shape=‘sin’; TU(2).name=‘曲线2’; TU(2).shape=‘cos’; TU(1).position=[0 pi] TU(2).color=‘blue’ TU(2).position=[0 2*pi] X=cos
%数值型
>>digits digits=32 %默认的32位有理数型 vpa(a2) ans =.66666666666666666666666666666667 >>a3=vpa(‘2/3’,15) a3=0.666666666666667 %VPA型
Matlab基础应用 26
2.2.5 数值对象与符号对象的相互转换
矩阵中各列间的协方差。
沿第n维按模增大重新排序,k为S元素的 [S,k]=sort(X,n) 原位置。
Matlab基础应用 13
1.7.2 差分与积分
函数名 diff(X,m,n) 功能 沿第n维求第m阶列向差分。差分是求相邻行(列 )之间的差,结果会减少一行(列)
[fx,fy]=gradient(Z) 对Z求x、y方向的数值梯度。 sum(X) 矩阵各列元素的和。
用行向量 p=[an an-1 …… a1 a0]表示。
多项式
Matlab基础应用
行向量
3
1.3.1 多项式求值
可用polyval函数,计算多项式在变量
为特定值的结果。
例2:计算x=0:0.5:3时,p(x)=x3+21x2+20x值。
解: >>p1=[1 21 20 0]; >>x=0:0.5:3; >>polyval(p1,x)
例5: 求符号矩阵
共轭转置和特征值。
a11 A a 21
a12 a 22
的行列式值、
>>syms a11 a12 a21 a22
>>A=[a11,a12;a21,a22];
>>det(A) >>A’ >>eig(A) %计算行列式值 %计算共轭转置 %计算特征值
Matlab基础应用
转使矩阵变成按列进行分类.
12
Matlab基础应用
ห้องสมุดไป่ตู้
1.7.1数据统计和相关分析
函数名
max(X)
功能
矩阵中各列的最大值。
min(X) mean(X)
std(X) median(X) var(X) C=cov(X)
矩阵中各列最小值。 矩阵中各列平均值。 矩阵中各列标准差,指各元素与该列平均 值(mean)之差的平方和开方。 矩阵中各列的中间元素。 矩阵中各列的方差。
第二讲
数值计算和符号运算
Matlab基础应用
1
1.数值计算
1.1 矩阵和数组基础
•创建矩阵 •元素标识 •矩阵操作 •矩阵函数 1.2 矩阵和数组的计算
Matlab基础应用 2
1.3 多项式运算
MATLAB语言把多项式表达成一个行向 量,该向量中的元素是按降幂排列多项式 各项系数的,如果缺某次幂项,则该次幂 项系数为0。 f(x)=anxn+an-1xn-1+…… a1x+a0
(2)元胞数组的创建: 方法1:直接创建 如:A={‘THIS’,[3 4];ones(3),{‘ONE’,‘TWO’}} 方法2:由各元胞创建 如:A(1,1)={‘THIS’} A(1,2)={[3 4]} A(2,1)={ones(3)} A(2,2)={{‘ONE’,‘TWO’}}
(3)元胞数组元素内容的获取:
>>f1=sym(‘a*x^2+b*x+c’)
%方法一
>> whos Name Size Bytes Class f1 1x1 146 sym object Grand total is 12 elements using 146 bytes