matlab.docx
- 文档编号:5267197
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:14
- 大小:36.14KB
matlab.docx
《matlab.docx》由会员分享,可在线阅读,更多相关《matlab.docx(14页珍藏版)》请在冰豆网上搜索。
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展开
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab