版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章MATLAB的数值计算matlab具有出色的数值计算能力,占据世界上数值计算软件的主导地位数值运算的功能
创建数组矩阵运算
数值统计多项式运算
线性方程组微分方程的数值解函数优化插值计算
2.1Matlab矩阵(数组)的表示数组的概念一维数组变量的创建二维数组变量的创建数组元素的标识与寻访
数组定义:按行(row)和列(column)顺序排列的实数或复数的有序集,被称为数组。数组中的任何一个数都被称为这个数组的元素,由其所在的行和列标识,这个标识也称为数组元素的下标或索引。Matlab将标量视为1×1的数组。对m行、n列的2维数组a:计为m×n的数组a;行标识、列标识均从1开始;行标识从上到下递增;列标识从左到右递增。2.1.1.数组(array)的概念12345222232425332333435442434445a(3,4)=34rowisfirsta=数组的分类一维数组,也称为向量(vector)。行向量(rowvector)、列向量(columnvector)。二维数组(矩阵matrix)。多维数组。有效矩阵:每行元素的个数必须相同,每列元素的个数也必须相同。行向量列向量a(2,1)=3a(1,2)=2b(3)=3c(2)=2第一种方法:使用方括号“[]”操作符【例2-1】创建数组(行向量)a=[13pi3+5i]>>a=[13pi3+5*i]%ora=[1,3,pi,3+5*i]
a=1.00003.00003.14163.0000+5.0000i所有的向量元素必须在操作符“[]”之内;向量元素间用空格或英文的逗点“,”分开。第二种方法:使用冒号“:”操作符【例2-2】创建以1~10顺序排列整数为元素的行向量b。>>b=1:10b=123456789102.1.2、创建一维数组变量【例2-3】键入并执行c=1:2:10和d=1:2:9>>c=1:2:10c=13579>>d=1:2:9d=13579利用冒号“:”操作符创建行向量的基本语法格式:x=Start:Increment:EndStart表示新向量x的第一个元素;新向量x的最后一个元素不能大于End;Increment可正可负,若负,则必须Start>End;若正,则必须Start<End,否则创建的为空向量。若Increment=1,则可简写为:x=Start:End。第三种方法:利用函数linspace函数linspace的基本语法x=linspace(x1,x2,n)该函数生成一个由n个元素组成的行向量;x1为其第一个元素;x2为其最后一个元素;x1、x2之间元素的间隔=(x2-x1)/(n-1)。如果忽略参数n,则系统默认生成100个元素的行向量。【例2-4】键入并执行x=linspace(1,2,5)x=1.00001.25001.50001.75002.0000同学们可以在实验时察看x=linspace(1,2)执行结果。课外:利用函数logspace2.1.3、创建二维数组变量第一种方法:使用方括号“[]”操作符使用规则数组元素必须在“[]”内键入;行与行之间须用分号“;”间隔;行内元素用空格或逗号“,”间隔。【例3-1】键入并执行a2=[123;456;789]a2=123456789【例3-2】键入并执行a2=[1:3;4:6;7:9]%结果同上【例3-3】由向量构成二维数组。>>a=[123];b=[234];>>c=[a;b];>>c1=[ab];第二种方法:函数方法函数ones(生成全1矩阵)、zeros(生成全0矩阵)、reshape“helpelmat”获得基本的矩阵生成和操作函数列表【例3-4】创建全1的3x3数组。>>ones(3)【例3-5】创建全1的3x4数组。>>ones(3,4)【例3-5】
reshape的使用演示>>a=-4:4a=-4-3-2-101234>>b=reshape(a,3,3)b=-4-12-303-214数组元素的排列顺序,从上到下按列排列,先排第一列,然后第二列,…要求数组的元素总数不变。数组元素的标识“全下标(index)”标识经典数学教科书采用“全下标”标识法:每一维应一个下标。如对于二维数组,用“行下标和列下标”标识数组的元素,a(2,3)就表示二维数组a的“第2行第3列”的元素。对于一维数组,用一个下标即可,b(2)表示一维数组b的第2个元素,无论b是行向量还是列向量。“单下标”(linearindex)标识所谓“单下标”标识就是用一个下标来表明元素在数组的位置。对于二维数组,“单下标”编号:设想把二维数组的所有列,按先后顺序首尾相接排成“一维长列”,然后自上往下对元素位置执行编号。两种“下标”标识的变换:sub2ind、ind2sub2.1.3、数组元素的标识与寻访>>aa=[1:4;5:8]>>aa([258])=[102030]aa=12204106730>>aa(:,[23])=ones(2)%双下标方式寻访并修改aa=1117101130二维数组可以“单下标”方式或“全下标”方式访问、赋值;“单下标”方式赋值时,等号两边涉及的元素个数必须相等;“全下标”方式赋值时,等号右边数组的大小必须等于原数组中涉及元素构成的子数组的大小。【例4-3】二维数组元素与子数组的寻访与赋值>>aa=zeros(2,4)%创建2*4的全0数组aa=00000000>>aa(:)=1:8%全元素赋值法aa=13572468>>aa([258])%单下标方式寻访多个元素
ans=258注意元素的排列顺序>>aa(:,end)ans=730>>aa(:,end-1)ans=11>>aa(:,end:-1:3)ans=71301>>aa(end,:)ans=101130>>aa(end,[2:4])ans=1130>>aa([46])=6:7aa=1117106730>>aa(end,[2:end-1])
Whatistheresult?某一维的末尾元素下标【例4-4】
size、length函数>>a=ones(4,6)*6>>m=size(a)>>len=length(a)>>b=1:5;>>length(b)>>c=b’>>length(c)
size函数返回变量的大小,即变量数组的行列数
length函数返回变量数组的最大维数双下标到单下标的转换【例4-5】
sub2ind函数-双下标转换为单下标>>A=[172418;222714;461320];>>sub2ind(size(A),2,2)>>A(5)单下标到双下标的转换【例4-6】
ind2sub函数-单下标转换为双下标>>b=zeros(3);>>b(:)=1:9>>IND=[3456]>>[I,J]=ind2sub(size(b),IND)Note:只要是赋过值的变量,不管是否在屏幕上显示过,都存储在工作空间中,以后可随时显示或调用。变量名尽可能不要重复,否则会覆盖。当一个指令或矩阵太长时,可用•••续行例:
用matlab函数创建矩阵
空阵[]—matlab允许输入空阵,当一项操作无结果时,返回空阵。
rand(1,N)—产生[01]上均匀分布的随机序列,长度为Nrandn(1,N)—产生均值为0,方差为1的高斯随机序列,即白噪声序列,长度Neye——单位矩阵
zeros——全部元素都为0的矩阵
ones——全部元素都为1的矩阵
此外,还有伴随矩阵、稀疏矩阵、魔方矩阵、对角矩阵、范德蒙等矩阵的创建,就不一一介绍了。Note:matlab严格区分大小写字母,因此a与A是两个不同的变量。matlab函数名必须小写。1.矩阵加、减(+,-)运算规则:相加、减的两矩阵必须有相同的行和列,两矩阵对应元素相加减。矩阵与标量的加减运算是标量与矩阵的所有元素分别进行加减操作。矩阵运算包括:矩阵的四则运算、特征根、奇异解的求解等。2.2矩阵运算2.矩阵乘()运算规则:
A矩阵的列数必须等于B矩阵的行数
标量可与任何矩阵相乘。例:<<a=[123;456;780];b=[1;2;3];c=a*bc=143223
例:<<d=[-1;0;2];f=pi*df=-3.141606.28323.
乘除运算在matlab中有两种矩阵除运算,矩阵左除和矩阵右除,\和/。如果A矩阵是非奇异方阵,则A\B和B/A运算可以实现。A\B等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。例:利用矩阵除法求解线性方程:>>A=[321;50.72;743];b=[5;2;7];X=A\bX=2.26091.7391-5.2609
a^p——a自乘p次幂方阵>1的整数4.矩阵乘方——a^n,a^p,p^aP=0,结果为与a相同的矩阵,当p<0,只有在a的逆存在时才可定义a^p,其意义为inv(a)^(-p)
例:
>>
a=[1,2,3;4,5,6;7,8,9];a^2ans=303642668196102126150a.^2有什么不同?例:
>>
a=[1,2,3;4,5,6;7,8,9];a^0.5ans=0.4498+0.7623i0.5526+0.2068i0.6555-0.3487i1.0185+0.0842i1.2515+0.0228i1.4844-0.0385i1.5873-0.5940i1.9503-0.1611i2.3134+0.2717i>>eig(a)%求矩阵a的特征值ans=16.1168-1.1168-0.0000当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵。inv(A)——矩阵求逆det(A)——矩阵A所对应的行列式的值eig(A)——矩阵的特征值及特征向量diag(A)——提取A对角元素或生成对角矩阵sqrtm(A)——矩阵A的平方根
logm(A)——矩阵A的自然对数
expm(A)——A的矩阵指数函数
trace(A)——求矩阵的迹
rank(A)——求矩阵的秩5.矩阵的其它运算
6.矩阵的一些特殊操作矩阵的变维例:>>a=[1234;5678;9101112]a=123456789101112>>b=reshape(a,4,3)%把指定的矩阵改变形状,但是元素个数不变
b=161151049382712矩阵的旋转例:>>a=[1234;5678;9101112]a=123456789101112>>b=rot90(a)%矩阵逆时针旋转90度
b=481237112610159矩阵的对称交换例:>>a=[-4-1-2;-30-3;-214]a=-4-1-2-30-3-214>>flipud(a)%上下对称交换ans=-214-30-3-4-1-2>>
fliplr(a)%左右对称交换ans=-2-1-4-30-341-2提取矩阵的上、下三角阵例:>>a=[-4-1-2;-30-3;-214]a=-4-1-2-30-3-214>>
tril(a)%提取a的下三角阵ans=-400-300-214>>
triu(a)%提取a的上三角阵ans=-4-1-200-3004
求矩阵的维数(size)或向量的长度(length)例:>>a=[14710;25811;36912]a=147102581136912>>k=size(a)k=34>>A=[123486];n=length(A)n=6
矩阵的转置运算符
’
可进行矩阵的共轭转置运算,运算符.’可进行矩阵的转置运算,当矩阵元素为实数时,两者结果相同。例>>A=[123;456]A=123456>>B=A'B=1425367.矩阵的关系运算MATLAB提供了6种关系运算符:
关系符号意义<<=>>===~=小于小于或等于大于大于或等于等于不等于它们的含义不难理解,但要注意其书写方法与数学中的不等式符号不尽相同。关系运算符的运算法则为:当两个比较量是标量时,直接比较两数的大小若关系成立,关系表达式结果为1,否则为0。当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。>>c=(a<4)c=111000000>>a>bans=000001111>>a=[123;456;789]a=123456789>>b=10-ab=987654321例:例:建立5阶方阵A,判断其元素能否被3整除。<<A=[24,35,13,22,63;23,39,47,80,80;...90,41,80,29,10;45,57,85,62,21;37,19,31,88,76]A=24351322632339478080904180291045578562213719318876<<P=rem(A,3)==0%被3除,求余P=10001010001000011001000008.矩阵的逻辑运算
在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。设参与逻辑运算的是两个标量a和b,那么,
a&b(与)a,b全为非零时,运算结果为1,否则为0。
a|b(或)a,b中只要有一个非零,运算结果为1。
~a(非)当a是零时,运算结果为1;当a非零时,运算结果为0。MATLAB提供了3种逻辑运算符:&(与)、|(或)和~(非)。逻辑运算的运算法则为:
若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成。
在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。
若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算结果是一个与矩阵同维的矩阵,其元素由1或0组成。>>a=[-301;24-5;-7-89]a=-30124-5-7-89>>x=~a%等价于not(a),元素为0时,结果为1,否则为0x=010000000例:>>x1=~(a>0)x1=110001110>>x2=a>-2&a<4x2=011100000例:在[0,3π]区间,求的值。要求:
消去负半波,即(π,2π)区间内的函数值置零。x=0:pi/100:3*pi;y=sin(x);y1=(y>=0).*y;%消去负半波例:建立矩阵A,找出在[10,20]区间的元素的位置。<<A=[4,15,-45,10,6;56,0,17,-45,0];<<find(A>=10&A<=20)%找到非零元素的位置A=415-4510656017-450ans=367
数组运算指元素对元素的算术运算,与通常意义上的由符号表示的线性代数矩阵运算不同。数组加减(.+,.-)9.数组运算
数组乘除(
,./,.\)
ab——a,b两数组必须有相同的行和列,两数组相应元素相乘。对应元素相加减(与矩阵加减等效)a.+ba.-b>>a=[123;456;789];b=[246;135;7910];a.*bans=281841530497290
例:>>a=[123;456;789];b=[246;135;7910];a*bans=253746558510985133172
数组相乘矩阵相乘a./b=b.\aa.\b=b./a——给出a,b对应元素间的商.a./b=b.\a———都是a的元素除b的对应元素例:>>a=[123];b=[456];c1=a.\b,c2=b./ac1=4.00002.50002.0000c2=4.00002.50002.0000
数组乘方(.^)—元素对元素的幂例:>>a=[123],b=[456],a=123b=456>>a.^2ans=149>>a.^bans=1327292.3数值统计1、求向量的最大值和最小值格式:
y=max(X):返回向量X的最大值存入y,如果X中包含复数元素,则按模取最大值。
[y,I]=max(X):返回向量X的最大值存入y,最大值的序号存入I,如果X中包含复数元素,则按模取最大值。求向量X的最小值的函数是min(X),用法和max(X)完全相同。例:求向量x的最大值。>>x=[-43,72,9,16,23,47];y=max(x)%求向量x中的最大值
[y,l]=max(x)%求向量x中的最大值及其该元素的位置2、求矩阵的最大值和最小值求矩阵A的最大值的函数常用有2种调用格式:max(A):返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。[Y,U]=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。求矩阵A的最小值的函数是min(X),用法和max(X)完全相同。例:>>A=[2816;0-230;3614]A=28160-2303614>>max(A)ans=36130>>[y,u]=max(A)y=36130u=332sum(X):返回向量X各元素的和。prod(X):返回向量X各元素的乘积。sum(A):返回一个行向量,其第i个元素是A的第i列的元素和。prod(A):返回一个行向量,其第i个元素是A的第i列的元素乘积。3、求和与求积
数据序列求和与求积的函数是sum和prod,其使用方法类似。设X是一个向量,A是一个矩阵,函数的调用格式为:sum(A,dim):当dim为1时,该函数等同于sum(A);当
dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素之和。prod(A,dim):当dim为1时,该函数等同于prod(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素乘积。例:>>A=[2816;0-230;3614]A=28160-2303614>>
sum(A)ans=56750>>prod(A)ans=0-9761920??sum(A,2)4、统计分布的数字特征
mean(X)——返回向量X的算术平均值
mean(A)——返回一个行向量,其第i个元素是A的第i列的算术平均值。
std(X)——返回向量X的样本标准差
std(A)——返回一个行向量,它的各个元素便是矩阵A各列或各行的标准差。
var(X)——返回向量X的样本方差
var(A)——返回一个行向量,它的各个元素便是矩阵A各列或各行的标准方差。
corrcoef(X)——返回从矩阵X形成的一个相关系数矩阵。此相关系数矩阵的大小与矩阵X一样。它把矩阵X的每列作为一个变量,然后求它们的相关系数。>>X=randn(10000,5);M=mean(X)D=std(X)R=corrcoef(X)例、生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。M=0.00110.00660.00090.02640.0101D=1.00111.00361.00491.00581.0061R=1.00000.01190.0051-0.0114-0.00110.01191.00000.0093-0.00120.00710.00510.00931.00000.00480.0095-0.0114-0.00120.00481.0000-0.0017-0.00110.00710.0095-0.00171.0000运行结果:1.带有白噪声干扰的频率为10Hz的正弦信号和白噪声信号的自相关函数并进行比较。可以看出:
含有周期成分和噪声成分的自相关函数在τ=0时具有最大值。且在τ较大时仍具有明显的周期性,其频率和周期信号的频率相同;不含周期成分的纯噪声信号在τ=0时具有最大值。且在τ稍大时很快衰减至零。
自相关的这一性质被用来识别随机信号中是否含有周期成分并用于确定所含周期成分的频率。(相关检测)
相关的应用2.若信号x(t)和信号y(t)是同类信号且有时移,用互相关函数可以准确地计算出两个信号时移大小。这种特性使得互相关函数广泛地应用于工程测量技术中。例1.2.8两个sinc信号有0.2s的时移,用互相关函数计算时移的大小。可以看到:第二个信号相对于第一个信号延迟了0.2s,即在-0.2s处出现相关极大值。因此可以采用该项技术检测延迟信号。5、排序函数:sort(X)函数返回一个对X中的元素按升序排列的新向量。sort函数也可以对矩阵A的各列或各行重新排序,其调用格式为:[Y,I]=sort(A,dim)其中dim指明对A的列还是行进行排序。若dim=1,则按列排;若dim=2,则按行排。Y是排序后的矩阵,而I记录Y中的元素在A中位置。>>A=[2816;0-230;3614]A=28160-2303614>>
sort(A)ans=
0-24281636130>>sort(A,2)ans=
2816-20303461例:matlab语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。P(x)=anxn+an-1xn-1+……+a1x+a0可用系数行向量表示:
P=[anan-1……a1a0]2.4多项式运算
1.多项式的表达方式Note:多项式中系数为0的项不能忽略,p中相应元素应置为0。>>p=[3,5,1,7]或>>p=[3517]>>p1=[3,0,2,4]或>>p1=[3024]2.多项式因式分解——多项式方程求根利用函数roots()求多项式方程的根,进行因式分解。在MATLAB中表示为:例:多项式,>>p=[1,-20.5,137,-297.5];>>r=roots(p)r=8.50007.00005.0000多项式因式分解:例:求多项式的根。3.P=poly(ar)——产生特征多项式系数向量若ar是方阵,P就是多项式系数向量;若ar=[ar1ar2…arn],ar的元素是多项式P的根,
满足(x-ar1)(x-ar2)…(x-arn)=anxn+an-1xn-1+……+a0。例:展开多项式。>>ar=[207-5];>>p=poly(ar)p=1-225700多项式展开:例:求3阶方阵A的特征多项式。>>A=[111213;141516;171819];>>PA=poly(A)%A的特征多项式PA=1.0000-45.0000-18.00000.0000>>PB=poly2str(PA,‘x’)%以x作为自变量,返回三次多项式
PB=x^3-45x^2-18x+1.8303e-014Note:
poly2str是一个函数文件。
n阶方阵的特征多项式系数存放为1×(n+1)的一维数组。
特征多项式系数向量的第一个元素必是1。4.conv多项式乘运算例:a(x)=x2+2x+3;b(x)=4x2+5x+6;求:c(x)=a(x)*b(x)>>a=[123];b=[456];>>c=conv(a,b)%计算两多项式相乘后系数c=413282718>>p=poly2str(c,'x')p=4x^4+13x^3+28x^2+27x+185.deconv多项式除运算例:<<p1=conv([102],conv([14],[11]));p2=[1011];[qr]=deconv(p1,p2)q=15r=00543<<cq=‘商多项式’;cr=‘余多项式’;
disp([cq,poly2str(q,’s’)]),disp([cr,poly2str(r,’s’))商多项式s+5余多项式5s^2+4s+36.多项式微分matlab提供了polyder函数求多项式的微分。命令格式:polyder(p):
求p的微分例:<<a=[12345];poly2str(a,’x’)ans=x^4+2x^3+3x^2+4x+5<<b=polyder(a)b=4664<<poly2str(b,’x’)ans=4x^3+6x^2+6x+42.5函数的极值1.固定区间单变量函数的最小值利用fminbnd函数求固定区间单变量函数的最小值。用法:fun:单变量函数的函数名,[x1x2]为给定的计算区间,[x,fval]为最小值点的位置和最小值。例:求在区间[0,2]的最小值>>f=inline('x.^3-2*x.^2-5','x');%采用内联函数表示测试函数>>x=0:0.1:2;plot(x,f(x))>>[x,y]=fminbnd(f,0,2)x=1.3333y=-6.1852或:f='x.^3-2*x.^2-5'2.固定区间多变量函数的最小值
利用fminsearch函数求固定区间多变量函数的最小值。用法:从函数fun的给定点开始搜索附近的最小值点x,fval为最小值点对应的最小值。例:求在区间x=0.3,y=0.7附近的最小值点。>>f=inline(‘p(1).^2+p(2).^2+7’,‘p’);%采用内联函数表示测试函数>>[minpoint,minval]=fminsearch(f,[0.3,0.7])minpoint=1.0e-004*-0.1766-0.1636minval=7.00002.6代数方程求解求非线性方程式的根的步骤:
定义方程式(形式),可用inline函数定义;代入适当范围的x及其对应f(x)值,画出方程函数曲线,了解该方程式根的大致位置;由图中决定f(x)与x轴相交的大致位置x0,通过fzero函数求出在x0附近的根。例:求方程>>f=inline('2*exp(x).*sin(2*pi*x)-0.5','x');>>x=0:0.1:2;y=f(x);plot(x,y)>>r=fzero(f,0.5)r=0.4752>>r=fzero(f,1)r=1.0144>>r=fzero(f,1.5)r=1.49102.7数值积分与微分
数值积分基本原理求解定积分的数值方法多种多样,如简单的梯形法、辛普生(Simpson)法、牛顿-柯特斯(Newton-Cotes)法等都是经常采用的方法。它们的基本思想都是将整个积分区间[a,b]分成n个子区间[xi,xi+1],i=1,2,…,n,其中x1=a,xn+1=b。这样求定积分问题就分解为求和问题。
数值积分的实现方法
变步长辛普生法基于变步长辛普生法,MATLAB给出了quad函数来求定积分。该函数的调用格式为:
[In]=quad('fname',a,b)其中fname是被积函数名。a和b分别是定积分的下限和上限。返回参数I即定积分值。n为被积函数的调用次数。例:求定积分。>>f=inline(‘exp(-0.5*x).*sin(x+pi/6)’);%定义被积函数>>s=quad(f,0,3*pi)s=0.9008n=77
牛顿-柯特斯法
基于牛顿-柯特斯法,MATLAB给出了quad8函数来求定积分。该函数的调用格式为:
[In]=quad8('fname',a,b)其中参数的含义和quad函数相似,该函数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于quad函数,从而保证能以更高的效率求出所需的定积分值。例:分别用quad函数和quad8函数求定积分的近似值,并在相同的积分精度下,比较函数的调用次数。>>f=inline(‘exp(-0.5*x).*sin(x+pi/6)’);%定义被积函数>>[s,n]=quad8(f,0,3*pi)s=0.9008
n=33例:求定积分。
>>f=inline('x.*sin(x)./(1+cos(x).*cos(x))');>>s=quad8(f,0,pi)s=2.4674n=33
二重定积分的数值求解使用MATLAB提供的dblquad函数就可以直接求出上述二重定积分的数值解。该函数的调用格式为:
I=dblquad(f,a,b,c,d)该函数求f(x,y)在[a,b]×[c,d]区域上的二重定积分。例:>>z=inline('x.^y','x','y')z=Inlinefunction:z(x,y)=x.^y>>s1=dblquad(z,0,1,1,2)s1=0.4055>>s1=dblquad(z,1,2,0,1)s1=1.2293一维插值函数:yi=interp1(x,y,xi,'method')插值方法被插值点插值节点xi处的插值结果‘nearest’
最邻近插值;‘linear’
线性插值;‘spline’
三次样条插值;‘cubic’
立方插值;缺省时分段线性插值.注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围.2.8插值计算例:从1点12点的11小时内,每隔1小时测量一次温度,测得的温度的数值依次为:5,8,9,15,25,29,31,30,22,25,27,24.试估计每隔1/10小时的温度值.ToMATLAB(temp)<<hours=1:12;temps=[589152529313022252724];h=1:0.1:12;t=interp1(hours,temps,h,'spline');%直接输出数据将是很%多的plot(hours,temps,'+',h,t,hours,temps,'r:')%作图xlabel('Hour'),ylabel('DegreesCelsius’)
数值插值要求逼近函数在采样点与被逼近函数相等,但由于测量误差,所获得的数据不一定准确,如果强求逼近显然不够合理。曲线拟合不要求逼近函数通过各采样点,但要尽量的接近这些点,使误差在某种意义上达到最小。曲线拟合的实现:在matlab中,用polyfit函数来求得最小二乘拟合多项式的系数,再用polyval函数按所得的多项式计算所给出点上的函数近似值。
polyfit函数的调用格式为:[P,S]=polyfit(X,Y,m)
函数根据采样点X和采样点函数值Y,产生一个m次多项式P及其在采样点的误差向量S。其中X、Y是两个等长的向量,P是一个长度为m+1的向量,P的元素是多项式系数。polyval函数的功能是按多项式的系数计算x点多项式的值。2.8曲线拟合例:用一个三次多项式在区间[0,2π]内逼近函数sinx。在给定区间内,均匀的选择20个采样点,并计算采样点的函数值然后利用3次多项式逼近。<<x=linspace(0,2*pi,20);y=sin(x);p=polyfit(x,y,3)y1=polyval(p,x)plot(x,y,':o',x,y1,'-*')legend('sin(x)','fit')空数组(emptyarray)有一维是0的数组即为空数组空数组不占据存储空间最简单的空数组:0*0的矩阵复杂的空
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石油行业油田化学剂研发项目技术创新总结报告
- 初中八年级英语(冀教版)Unit 45 中考精讲教案
- 九年级健康教育 健康概念与三维观 教学设计
- 2024年渝江盛宏职业学院单招综合素质考试模拟试卷含完整答案详解【名师系列】
- 2026年青海西宁夏都职业学院高职单招职业技能考试模拟试卷含答案详解【达标题】
- 2027年西安数字经济职业学院单招综合素质考试题库含完整答案详解(历年真题)
- 2024年函谷丝路职业学院高职单招职业适应性测试考试模拟试卷附完整答案详解(历年真题)
- 2026年骆马湖职业学院高职单招职业适应性测试考试题库(全优)附答案详解
- 2025年九嶷山文旅学院单招职业技能考试模拟试卷附完整答案详解(有一套)
- 2026年山东昌邑职业学院高职单招职业适应性测试考试模拟试卷附参考答案详解【完整版】
- 教师如何上好一节课培训
- 2026北京市大兴区教委招聘劳务派遣人员38人考试参考试题及答案解析
- 领导干部报告个人有关事项培训
- 银屑病生物制剂转换治疗指南
- 小学语文阅读理解与思维可视化训练课题报告教学研究课题报告001
- 2026年传媒行业招聘考试核心知识点配套练习题含答案
- 女性就业创业培训课件
- 日文客服招聘笔试题目及答案
- 2025年通风管道专业清洗合同协议
- 工作手机使用协议书
- 《基层常见病诊疗指南》
评论
0/150
提交评论