matlab.docx

上传人:b****3 文档编号:5267197 上传时间:2022-12-14 格式:DOCX 页数:14 大小:36.14KB
下载 相关 举报
matlab.docx_第1页
第1页 / 共14页
matlab.docx_第2页
第2页 / 共14页
matlab.docx_第3页
第3页 / 共14页
matlab.docx_第4页
第4页 / 共14页
matlab.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

matlab.docx

《matlab.docx》由会员分享,可在线阅读,更多相关《matlab.docx(14页珍藏版)》请在冰豆网上搜索。

matlab.docx

matlab

三.科学计算

Randn

A=randn(10,5)

(1)mean(A);均值std(A);标准方差

(2)max(max(A));最大元素min(min(A));最小元素

(3)B=sum(A,2);A每行元素的和sum(B);A全部元素之和

(4)sort(A);A的每列元素按升序排列

sort(A,2,’descend’);A的每行元素按将序排列

求导求根求乘积

f=[1,5,-3];

g=[1,2,1,1];

df=polyder(f)

dg=polyder(g)

rf=roots(f)

rg=roots(g)

c=conv(f,g)

极小值

functionf=fxy(u)

x=u

(1);y=u

(2);

f=3.*x.^2+2*x.*y+y.^2

在命令窗口中输入以下命令:

[U,fmin]=fminsearch('fxy',[1,1])

结果:

U=

1.0e-004*

-0.06750.1715

fmin=

1.9920e-010

最大值f=inline('-sin(x)-cos(x.^2)');

fmax=fminbnd(f,0,pi)

fmax=

0.7310

四.应用题

插值钢轨温度

x=0:

2.5:

10;h=[0:

30:

60]';T=[95,14,0,0,0;88,48,32,12,6;67,64,54,48,41];xi=[0:

0.5:

10];hi=[0:

10:

60]';

temps=interp2(x,h,T,xi,hi,'cubic');mesh(xi,hi,temps);

插值气象站

h=6:

2:

18;

x=6.5:

2:

17.5;

t1=[18,20,22,25,30,28,24];

t2=[15,19,24,28,34,32,30];

T1=spline(h,t1,x)

T2=spline(h,t2,x)

插值参数线性linear(可不写)

T=0:

5:

65;

X=2:

5:

57;

F=[3.2015,2.2560,879.5,1835.9,2968.8,4136.2,5237.9,6152.7,...

6725.3,6848.3,6403.5,6824.7,7328.5,7857.6];

F1=interp1(T,F,X)%用线性插值方法插值

F1=interp1(T,F,X,'nearest')%用最近点插值方法插值

F1=interp1(T,F,X,'spline')%用3次样条插值方法插值

F1=interp1(T,F,X,'cubic')%用3次多项式插值方法插值

拟合练习六三实验数据

x=[165123150123141];

y=[187126172125148];

P=polyfit(x,y,3)

P=

1.0e+003*

-0.00000.0013-0.17798.4330

所以它的线性拟合曲线为:

p(x)=1.3x2—177.9x+8433

拟合例题

X=linspace(0,2*pi,50);

Y=sin(X);

P=polyfit(X,Y,3)%得到3次多项式的系数和误差X=linspace(0,2*pi,20);

Y=sin(X);

Y1=polyval(P,X)

plot(X,Y,':

o',X,Y1,'-*')

极坐标绘图

绘制ρ=sin(2θ)cos(2θ)的极坐标图。

theta=0:

0.01:

2*pi;

rho=sin(2*theta).*cos(2*theta);

polar(theta,rho,'k');

线性方程求解

A=[6,5,-2,5;9,-1,4,-1;3,4,2,-2;3,-9,0,2];

b=[-4;13;1;11];

(1)x=inv(A)*b

(2)X=A\b

(3)[L,U]=lu(A);

x=U\(L\b)

五、程序设计

裴波那

首先建立函数文件:

functionY=fib(k)

if(k==1|k==2)

Y=1;

elseY=fib(k-1)+fib(k-2);

end

然后在命令窗口输入:

fib(20)

员工工资

n=input('请输入员工工号:

');

h=input('该员工工作时数是:

');

ifh>120

x=(h-120)*84*(1+0.15)+120*84;

elseifh<60

x=h*84-700;

else

x=h*84;

end

disp([num2str(n),'号员工','的应发工资为',num2str(x)]);

六,建模与求解

clear;close;

fplot('18-t^(2/3)',[0,20]);gridon;holdon;

fplot('5+t+2*t^(2/3)',[0,20],'r');holdoff;

%发现t约为4

[t,f,h]=fsolve('18-x^(2/3)-5-x-2*x^(2/3)',4)

%求得t=4.6465

t=linspace(0,t,100);y=18-t.^(2/3)-5-t-2*t.^(2/3);

trapz(t,y)-20

%最大利润6.3232(百万元)

铁路

假设将D选在距离A点Xkm处。

我们将问题归结为如下的非线性规划问题,其数学模型为:

fun='5*sqrt(x^2+400)+300-3*x'

[X,fval]=fminbnd(fun,0,100)

-实线:

虚线-•点划线–-双划线b蓝色g绿色r红色c青色m品红色y黄色k黑色w白色

1、在MATLAB的若干通用操作指令中,清除命令窗口的所有显示内容的是(D)

A.clearB.claC.clfD.clc

2、下列说法错误的是(C)

A.ans是系统自动给出的,还可以做变量用

B.标量只有大小而没有其他含义

C.数组是由一连串具有逻辑关系的矢量组成的

D.矩阵在MATLAB中是按先列后行的方式储存的

3、Matlab图形用户界面开发环境中可以建立开关按钮的是(B)

A.PushButtonB.ToggleButtonC.RadioButtonD.checkbox

4、下列Matlab语句不正确的是(C)

A.A=[1,2,3;456;780];sum(A(:

))

B.A=[1,2,3;456;780];C=A>6

C.A=[1,2,3;4,5,6;7,8,0];A(1,:

).*A(:

3)

5、我们平时得到的第一手信号常常都是D信号,而计算机保存和处理的都是信号

A.连续的数字、离散的模拟

B.离散的数字、连续的模拟

C.离散的模拟、连续的数字

D.连续的模拟、离散的数字

1、在MATLAB的若干通用操作指令中,清除内存中的变量的是(A)

A.clearB.claC.clfD.clc

2、下列说法错误的是(C)

A若我们直接指定变量,则系统不再提供ans变量

B矢量既有大小又有方向,两者缺一不可

C矩阵之间是一种标量的组合

D矩阵在MATLAB中是按先列后行的方式储存的

1.下列哪个变量的定义是不合法的(A)。

(A) abcd-3(B) xyz_3(C) abcdef(D) x3yz

2.指出下列错误的指令(B)。

(A) symsab;(B) symsa,b;

(C) syms(‘a',‘b');(D)syms(‘a','b','positive');

3.下列哪条指令是求矩阵的行列式的值(C)。

        

(A) inv

(B) diag

(C) det

(D) eig

4.清空Matlab工作空间内所有变量的指令是(C)。

(A) clc

(B) cls

(C) clear

(D) clf

5.以下哪个说法是正确的(D)。

(A)Matlab进行数值计算的表达精度与其指令窗口中的数值显示精度相同。

(B)Matlab指令窗口中显示的数值有效位数不能超过7位。

(C)输入二维数值数组时,需要用到逗号和分号,它们可以在中文状态下输入。

(D)历史指令窗口所记录的内容与diary指令所产生“日志”内容是不同的。

《》试卷(A/B)第页(共页)

《》试卷(A/B)第页(共页)

1、求矩阵A的共轭转置的指令是A’

2、写出下列语句的显示结果:

A=[1,2,3;3,4,2;5,2,3];A^2=

221616

252623

262428

3、A=[0110],b=[1100],则X=xor(A,B)的显示结果为1010

4、求矩阵A的逆矩阵的指令是A-1

5、x=[10-2530];a=sign(x);显示结果为1-11

6、打开MATLAB图形用户界面的命令是GUIDE

7、M=[567;8910;111213];生成矩阵M的特征多项式的语句为poly(M)

8、用辛普生法求

的语句为quad('sin(x)',0,2*pi)

9、对

求二阶微分的语句y=sym('x^3+3.*x');diff(y,2)

10、验证MATLAB系统是否正常的命令是peaks

11、由A的1、3、5行,2、4、6列交叉点上的元素生成A的子矩阵的命令是A3=A([135],[246])

12、在MATLABCommandWindow中直接键入

显示结果为0+1.0000i

13、a=[123;456;789];b=[987;654;321];c=a.*b;显示结果为

91621

242524

21249

14、求

的语句为A=sym('((1+x)/(1-x))^(1/x)');b=limit(A)

Symsamx;f=函数;limit(f,x,a);limit(f,x,inf,’left’);limit(f,x,a,’right’)

15、求

的语句为A=sym('sin(a*x)*sin(b*x)*sin(c*x)')B=int(A)

3、A=[0110],b=[1100],则X=A|B的显示结果为1110

6、计算

的命令是log10(99)

8、写出利用向量A=[1234]生成多项式的语句poly(A)

9、用牛顿-科西法求

的语句为quad('sin(x)',0,2*pi)

10、求

的语句为A=sym('x*log(1+x)/sin(x^2)')B=limit(A)

11、对

求导的语句为Y=sym('x*sin(x)*log(x)')dfdx=diff(y)

14、求

的语句为A=sym('x^5+x^3-sqrt(x)/4')B=int(A)

15、求矩阵A的逆矩阵的指令是inv(A)

matlab常用函数语句及说明

matlab常用到的永久变量:

ans:

计算结果的默认变量名。

ij:

基本虚数单位。

eps:

系统的浮点(F10a9Bg个oht):

inf:

无限大,例1/0

nanNaN:

非数值(N航anmnb谢)

pi:

圆周率n(n=3.1415926..)。

realmax:

系统所能表示的最大数值。

realmin:

系统所能表示的最小数值,

nargin:

函数的输入参数个数:

nargout:

函数的输出多数个数

①matlab的所有运算都定义在复数城上。

对于方根问题运算只返回处于第一象限的解。

⑦matlab分别用左斜/和右\来表示“左除和“右除”运算。

对于标量运算而言,这两者的作用没有区别:

但对于矩阵运算来说,二者将产生不同的结果。

多项式的表示方法和运算

p(x)=x^3-3x-5可以表示为p=[10–35],求x=5时的值用plotval(p,5)

也可以求向量:

a=[345],plotval(p,a)

函数roots求多项式的根roots(p)

p=[10-35];

r=roots(p)

 

多项式乘法(执行两个数组的卷积)

a=[1234];

b=[14916];

c=conv(a,b)

多项式的加减法,低阶的多项式必须用首零填补,使其与高阶多项式有同样的阶次

多项式除法[q,r]=deconv(c,b)表示b/cq为商多项式,r为余数

多项式的导数polyder(f)

f=[245621];

s=polyder(f)

多项式的曲线拟合

x=[12345];

y=[5.640150250498.9];

p=polyfit(x,y,n)数据的n次多项式拟合poly:

矩阵的特征多项式、根集对应的多项式

x2=1:

0.1:

5;n取1时,即为最小二乘法

y2=polyval(p,x2);计算多项式的值

(polyvalm计算矩阵多项式)

plot(x,y,'*',x2,y2);gridon

 

多项式插值

YI=interp1(x,y,XI,’method’)一维插值

(XI为插值点的自变量坐标向量,可以为数组或单个数。

method为选择插值算法的方法,包括:

linear(线性插值)

cubic(立方插值)

spline(三次样条插值)

nearst(最近临插值)

求解一元函数的最小值

y=fminbnd('humps',0.3,1)humps为一内置函数

求解多元函数的最小值

函数fminserch用于求多元函数的最小值。

它可以指定一个开始的矢量,并非指定一个区间。

此函数返回一个矢量为此多元函数局部最小函数值对应的自变量

求函数的零点

求函数humps在[1,2]区间上的零点fzero(‘humps’,[1,2]);

也可以给一个初始值fzero(‘humps’,0.9);

对于多项式可直接由roots求其根roots(‘4*x^3+……’);

也可以用solve

c=sym('c','real');

x=sym('x','real');

s=solve(x^3-x+c)

函数定积分

q=quadl(‘humps’,0,1)求humps函数在01区间上的定积分,也可以用quad语句

二重积分首先计算内积分,然后借助内积分的中间结果再求出二重积分的值,类似于积分中的分步积分法。

Result=dblquad(‘integrnd’,xin,xmax.,ymin,ymax)integrnd为被积函数的名称字符串

符号积分运算int(f),最精确的是符号积分法

计算s=∫12[∫01xydx]dy

symsxy中间为空格,不能为逗号

s=int(int(‘x^y’,’x’,0,1),’y’,1,2)引号可省略

vpa(s)显示s的值

 

微分运算(diff)

微分是描述一个函数在一点处的斜率,是函数的微观性质、因此积分对函数的形状在小范围内的改变不敏感,而微分很敏感。

—个函数的小的变化,容易产生相邻点的斜率的大的改变。

由干微分这个固有的困难.所以尽可能避免数值微分.特别是对实验获得的数据进行微分。

在这种情况,最好用最小二乘曲线拟合这种数据,然后对所得到的多项式进行微分;或用另一种方法对点数据进行三次样条拟合,然后寻找样条微分,但是,有时微分运算是不能避免的,在MATLAB中.用函数diff汁算一个矢量或者矩阵的微分(也可以理解为差分)。

a=[12333789];

b=diff(a)一次微分

bb=diff(a,2)二次微分

实际上diff(a)=[a

(2)-a

(1),a(3)-a

(2),……,a(n)-a(n-1)]

对于求矩阵的微分,即为求各列矢量的微分,从矢量的微分值可以判断矢量的单调性、是否等间距以及是否有重复的元素。

符号微分运算(diff)

symsxta

f=cos(a*x)

df=diff(f)由findsym的规则,隐式的指定对x进行微分

dfa=diff(f,'a')指定对变量a进行微分

dfa=diff(f,'a',3)三次微分

diff函数不仅作用在标量上,还可以在矩阵上,运算规则就是按矩阵的元素分别进行微分

symsax

A=[cos(a*x),sin(a*x),-sin(a*x),cos(a*x)];

dA=diff(A)

 

微分方程dsolve

在matlab中,符号表达式中包含字母D用来表示微分运算,D2,D3分别对应第二,第三阶导数,D2y表示d2y/dt2把t缺省了

y=dsolve(‘Dy=f(y)’)单个方程,单个输出

[u,v]=dsolve(‘Du=f(u,v)’,’Dv=g(u,v)’)2个方程,2个输出

s=dsolve(‘Dx=f(x,y,z)’,’Dy=g(x,y,z)’,’Dz=k(x,y,z)’)

s.xs.ys.z3个方程,架构数组

dsolve('Dx=-a*x')结果:

C1*exp(-a*t)没给定初值,所以结果中含参变量

x=dsolve('Dx=-a*x','x(0)=1','s')结果exp(-a*s)给定了初值,独立变量设为s

 

matlab字符串运算

利用sym命令创建表达式

f=sym(‘cos(x)+sin(x)’)或symsx,f=cos(x)+sin(x)

diff(f)求其导数

(也可直接用命令f=diff(‘cos(x)+cos(y)’)

当字符表达式中含有多于一个的变量时,只有—个变量是独立变量。

如果不告诉matlab哪一个变量是独立变量,则可以通过findsym命令询问

 

符号表达式的化简和替换

collect函数collect(f,v)表示将f表示为关于符号变量v的多项式形式,即关于v合并同类项,v缺省,则用findsym确定的缺省变量

symsxy

f=x^2*y+y*x-x^2-2*x+1

collect(f)得到(-1+y)*x^2+(y-2)*x+1

collect(f,y)得到(x+x^2)*y+1-x^2-2*x

expand函数expand(f)将f展开,写成和的形式

symsx

expand((x-1)^3)得到x^3-3*x^2+3*x-1

factor函数factor(f)将f转换成低阶有理多项式的乘积

symsx

f=x^3-6*x^2+11*x-6

factor(f)得到(x-1)*(x-2)*(x-3)

simplify(f)函数

综合化简

simple(f)函数的最简形式

symsx

f=2*sin(x^2)+cos(3*x)

simple(f)如果不想看到中间过程,可z=simple(f)有时使用两次simple命令可以得到最简式

如果想知道哪个简化命令得到最后结果,可以加一个参数how

[z,how]=simple(f)

线性方程组的求解

求解线性方程组,用反斜杠\

a=hilb(3)

b=[123]'

a\b

矩阵的特征值和特征向量

用eig(v,d)函数,[v,d]=eig(A);其中d将返回特征值,v返回相应的特征向量,缺省第二个参数将只返回特征值

symsabcreal

A=[abc;bca;cab];

[v,d]=eig(A);

f=poly(A)poly函数

用来求A的特征多项式

d=solve(f)solve(f)函数用来求多项式的解

svd()函数

求矩阵的奇异值分解,将矩阵分解为两个正交矩阵和对角矩阵的乘积

a=sym(hilb

(2))

[u,s,v]=svd(a)

代数方程和方程组

代数方程的求解可用solve(f)命令,如果f不含=,matlab将给表达式置零。

方程的未知量在默认的情况下由findsym决定或显式指出

symsabcx

solve(a*x^2+b*x+c)以x为默认变量

solve(a*x^2+b*x+c,a)指定对a为变量

求含有等号的方程的解(一定要加单引号)

f=solve(‘cos(x)=sin(x)’)

x=solve('exp(x)=tan(x)')如果不能求得符号解,就计算可变精度解。

求解方程组与单方程类似

解一个三元一次方程

v=solve('a*u^2+v^2','u-v=1','a^2-5*a+6')

结果为v=

a:

[4x1sym]u:

[4x1sym]v:

[4x1sym]

极限运算limit

limit(f)求x到0的极限

limit(f,x,a)或limit(f,a)求x到a的极限

limit(f,a,’left’)limit(f,a,’right’)求x到a的左极限和右极限

limit(f,inf)求x趋于无穷的极限

符号求和symsum(s)

symsum(s)以默认的findsym决定的变量求和

symsum(s,v)以s中指定的变量v求和

symsum(s,a,b)symsum(s,v,a,b)从a到b的有限项求和

symskn

symsum(k)从0到k求和

symsum(k,0,n-1)从0到n-1求和

symsum(1/k^2,1,inf)无限项求和

泰勒级数taylor(f)

taylor(f)表示求f的5阶talor展开,可以增加参数指定展开的阶数(默认式5),也可以对于多元函数指定展开的变量,还可以指定在哪个点展开

symsxt

taylor(exp(-x))

taylor(log(x),6,1)在1点的6阶taylor展开

taylor(x^t,3,t)对t的3阶taylor展开

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1