matlab学习指导实战方案Word文件下载.docx
《matlab学习指导实战方案Word文件下载.docx》由会员分享,可在线阅读,更多相关《matlab学习指导实战方案Word文件下载.docx(13页珍藏版)》请在冰点文库上搜索。
limit((exp(0+h)-exp(0))/h,h,0)
得结果:
ans=1.可知
(2)导数的几何意义是曲线的切线斜率.
例3.2.画出在处()的切线及若干条割线,观察割线的变化趋势.
在曲线上另取一点,则的方程是:
.即
取,分别作出几条割线.
h=[3,2,1,0.1,0.01];
a=(exp(h)-1)./h;
x=-1:
0.1:
3;
plot(x,exp(x),’r’);
holdon
fori=1:
5;
plot(h(i),exp(h(i)),’r.’)
plot(x,a(i)*x+1)
end
axissquare
作出在处的切线
plot(x,x+1,’r’)
从图上看,随着与越来越接近,割线越来越接近曲线的割线.
3.求一元函数的导数.
(1)的一阶导数.
例3.3.求的导数.
打开matlab指令窗,输入指令:
dy_dx=diff(sin(x)/x).
dy_dx=cos(x)/x-sin(x)/x^2.
matlab的函数名允许使用字母、空格、下划线及数字,不允许使用其他字符,在这里我们用dy_dx表示.
例3.4.求的导数.
输入命令:
dy_dx=diff(log(sin(x))).
dy_dx=cos(x)/sin(x).
在matlab中,函数用log(x)表示,而log10(x)表示.
例3.5.求的导数.
dy_dx=diff((x^2+2*x)^20).
dy_dx=20*(x^2+2*x)^19*(2*x+2).
注意输入时应为2*x.
例3.6.求的导数.
dy_dx=diff(x^x).
dy_dx=x^x*(log(x)+1).
利用matlab命令diff一次可以求出若干个函数的导数.
例3.7.求下列函数的导数:
1..
2..
3..
4..
a=diff([sqrt(x^2-2*x+5),cos(x^2)+2*cos(2*x),4^(sin(x)),
log(log(x))]).
a=
[1/2/(x^2-2*x+5)^(1/2)*(2*x-2),-2*sin(x^2)*x-4*sin(2*x),
4^sin(x)*cos(x)*log(4),1/x/log(x)].
dy1_dx=a
(1).
dy1_dx=1/2/(x^2-2*x+5)^(1/2)*(2*x-2).
dy2_dx=a
(2).
dy2_dx=-2*sin(x^2)*x-4*sin(2*x).
dy3_dx=a(3).
dy3_dx=4^sin(x)*cos(x)*log(4).
dy4_dx=a(4).
dy4_dx=1/x/log(x).
由本例可以看出,matlab函数是对矩阵或向量进行操作的,a(i)表示向量a的第i个分量.
(2)参数方程所确定的函数的导数.
设参数方程确定函数,则的导数.
例3.8.设,求.
解:
dx_dt=diff(a*(t-sin(t)));
dy_dt=diff(a*(1-cos(t)));
dy_dx=dy_dt/dx_dt.
dy_dx=sin(t)/(1-cos(t)).
其中分号的作用是不显示结果.
4.求多元函数的偏导数.
例3.9.设u=求u的一阶偏导数.
diff((x^2+y^2+z^2)^(1/2),x).
ans=1/(x^2+y^2+z^2)^(1/2)*x.
在命令中将末尾的x换成y将给出y的偏导数:
ans=1/(x^2+y^2+z^2)^(1/2)*y.
也可以输入命令:
jacobian((x^2+y^2+z^2)^(1/2),[xy]).
ans=[1/(x^2+y^2+z^2)^(1/2)*x,1/(x^2+y^2+z^2)^(1/2)*y]
给出矩阵.
例3.10.求下列函数的偏导数:
diff(atan(y/x).
ans=-y/x^2/(1+y^2/x^2).
输入命令:
diff(atan(y/x),y).
ans=1/x/(1+y^2/x^2).
diff(x^y,x).
ans=x^y*y/x.
diff(x^y,y).
ans=x^y*log(x).
使用jacobian命令求偏导数更为方便.
jacobian([atan(y/x),x^y],[x,y]).
ans=[-y/x^2/(1+y^2/x^2),1/x/(1+y^2/x^2)]
[x^y*y/x,x^y*log(x)].
5.求高阶导数或高阶偏导数.
例3.11.设,求.
输入指令:
diff(x^2*exp(2*x),x,20).
ans=
99614720*exp(2*x)+20971520*x*exp(2*x)+1048576*x^2*exp(2*x)
例3.12.设,求.
diff(x^6-3*y^4+2*x^2*y^2,x,2)
可得到:
ans=30*x^4+4*y^2.
将命令中最后一个x换为y得:
ans=-36*y^2+4*x^2.
diff(diff(x^6-3*y^4+2*x^2*y^2,x),y)
可得:
ans=8*x*y
同学们可自己计算比较它们的结果.
注意命令:
diff(x^6-3*y^4+2*x^2*y^2,x,y),是对y求偏导数,不是求.
6.求隐函数所确定函数的导数或偏导数
例3.13.设,求
,先求,再求.
df_dx=diff(log(x)+exp(-y/x)-exp
(1),x)
得到:
df_dx=1/x+y/x^2*exp(-y/x).
df_dy=diff(log(x)+exp(-y/x)-exp
(1),y)
df_dy=-1/x*exp(-y/x)
dy_dx=-df_dx/df_dy
可得所求结果:
dy_dx=-(-1/x-y/x^2*exp(-y/x))*x/exp(-y/x).
例3.14.设,求
a=jacobian(sin(x*y)+cos(y*z)+tan(z*x),[x,y,z])
可得矩阵
[cos(x*y)*y+(1+tan(z*x)^2)*z,cos(x*y)*x-sin(y*z)*z,
-sin(y*z)*y+(1+tan(z*x)^2)*x].
dz_dx=-a
(1)/a(3)
得:
dz_dx=
(-cos(x*y)*y-(1+tan(z*x)^2)*z)/(-sin(y*z)*y+(1+tan(z*x)^2)*x)
dz_dy=-a
(2)/a(3)
dz_dy=
(-cos(x*y)*x+sin(y*z)*z)/(-sin(y*z)*y+(1+tan(z*x)^2)*x)
实验二 矩阵与线性方程组
实验目的:
1.掌握matlab求矩阵的秩命令.
2.掌握matlab求方阵的行列式命令.
3.理解逆矩阵概念,掌握matlab求逆矩阵命令.
4.会用matlab求解线性方程组.
实验内容:
1.矩阵的秩.
指令rank(A)将给出矩阵A的秩.
例1:
a=[32-1-3-2;
2-131-3;
705-1-8]
a=
32-1-3-2
2-131-3
705-1-8
rank(a)
ans=
2
2.方阵的行列式.
指令det(A)给出方阵A的行列式.
例2:
b=[1234;
2341;
3412;
4123];
det(b)
160
det(b'
)
c=b;
c(:
1)=2*b(:
1);
det(c)
320
det(b(:
[3214]))
-160
d=b;
d(2,:
);
det(d)
你能解释上例中的运算结果吗?
在这里我们实际上验证了行列式的性质.
3.逆矩阵
指令inv(A)给出方阵A的逆矩阵,如果A不可逆,则inv(A)给出的矩阵的元素都是Inf.
例3:
设,求的逆矩阵.
解:
输入指令:
A=[123;
221;
343];
B=inv(A)
B=
1.00003.0000-2.0000
-1.5000-3.00002.5000
1.00001.0000-1.0000
还可以用伴随矩阵求逆矩阵,打开m文件编辑器,建立一个名为companm的M-文件文件内容为:
functiony=companm(x)
[n,m]=size(x);
y=[];
forj=1:
n;
a=[];
x1=det(x([1:
i-1,i+1:
n],[1:
j-1,j+1:
n]))*(-1)^(i+j);
a=[a,x1];
y=[y;
a];
利用该函数可以求出一个矩阵的伴随矩阵.
输入命令:
C=1/det(A)*companm(A)
C=
利用初等变换也可以求出逆矩阵,构造n行2n列的矩阵(AE),并进行行初等变换,当把A变为单位矩阵时,E就变成了A的逆矩阵.利用matlab命令rref可以求出矩阵的行简化阶梯形.输入命令:
D=[A,eye(3)]
D=
123100
221010
343001
rref(D)
1.0000001.00003.0000-2.0000
01.00000-1.5000-3.00002.5000
001.00001.00001.0000-1.0000
线性方程组的求解是用矩阵除来完成的,,当且可逆时,给出唯一解.这时矩阵除相当于;
当时,矩阵除给出方程的最小二乘解;
当时,矩阵除给出方程的最小范数解.
例4:
解方程组:
输入命令:
a=[1-112;
11-21;
1110;
101-1];
b=[1;
1;
2;
1];
x=a\b
x=
0.8333
0.7500
0.4167
0.2500
z=inv(a)*b
z=
0.2500
例5:
方程的个数和未知数不相等,用消去法,将增广矩阵化为行简化阶梯形,如果系数矩阵的秩不等于增广矩阵的秩,则方程组无解;
如果系数矩阵的秩等于增广矩阵的秩,则方程组有解,方程组的解就是行简化阶梯形所对应的方程组的解.输入命令:
a=[211-1-22;
1-121-14;
2-343-18];
rref(a)
100000
010-1-10
0010-12
由结果看出,,为自由未知量,方程组的解为:
例6:
解:
a=[1-1-11;
1-11-3;
1-10-1;
1-1-23];
1-10-1
001-2
0000
0000