MATLAB软件与基础数学实验Word格式.docx
《MATLAB软件与基础数学实验Word格式.docx》由会员分享,可在线阅读,更多相关《MATLAB软件与基础数学实验Word格式.docx(46页珍藏版)》请在冰点文库上搜索。
131
%det为求方阵的行列式命令
◄ans=-6
%inv为方阵的求逆命令
◄ans=-0.83330.33330.5000
-0.33330.3333-1.0000
0.8333-0.33330.5000
例1-8显示上例中矩阵A的第2行第3列元素,并对其进行修改.
►A(2,3)
◄A(2,3)=6
若想把该元素改为-1,只要输入下列语句:
►A(2,3)=-1;
例1-9分别画出函数
和
在区间[-6
6
]上的图形。
►x=(-6:
0.1:
6)*pi;
%从-6pi到6pi以0.1pi为步长生成向量x
►y=x.^2.*cos(x);
%产生与x对应的函数值向量y(两向量对应元素乘积,用.*)
►z=sin(x)./(x+eps);
%产生与x对应的函数值向量z(两向量对应元素相除,用./)
►subplot(1,2,1)%分图形窗口为1行2列,并在第一个子窗中绘图
►plot(x,y,'
linewidth'
2)%画函数y的曲线,默认为蓝色(参看实验2)
►grid%在第一个子窗中加坐标网格
►subplot(1,2,2)%在第二个子窗中绘图
►plot(x,z,'
2)%画函数z的曲线,默认为蓝色(参看实验2)
►grid%在第二个子窗中加坐标网格
例1-10试求方程组
的解。
►a=[1,2,1;
4,2,-6;
-1,0,2];
%输入系数矩阵a
►b=[2;
3;
4];
%输入右端列向量b
►d=det(a)%求系数矩阵的行列式
◄d=2
►c=inv(a)%求系数矩阵的逆阵
◄c=2.0000-2.0000-7.0000
-1.00001.50005.0000
1.0000-1.0000-3.0000
►x=c*b%矩阵左逆乘,结果为方程组的解
◄x=-30.0000
22.5000
-13.0000
►X=a\b%用\除法直接求方程组的解X(与上述x相同)
◄X=-30.0000
►disp([a,b,x])%显示增广矩阵及解向量
◄1.00002.00001.00002.0000-30.0000
4.00002.0000-6.00003.000022.5000
-1.000002.00004.0000-13.0000
例1-11试求矩阵方程
-1,0,2];
►b=[123;
111];
%输入右端矩阵b
►X=b/a%用/除法直接求方程组的解X
◄X=3.0000-2.0000-6.0000
2.0000-1.5000-5.0000
例1-12建立同时计算
的函数。
即任给a,b,n三个数,返回y1,y2.
function[y1,y2]=fun1(a,b,n)
%fun1isafunctionusedbyDEMOy1=(a+b)^n,y2=(a-b)^n
%CopyrightbyXJTU
y1=(a+b).^n;
y2=(a-b).^n;
例1-13设
,试画出在[0,2]上的曲线段。
►x=0:
0.01:
2;
%生成自变量x
►y=1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6;
%生成函数值y,注意点运算
2)%画函数曲线
►grid%加坐标网格
►f=inline('
1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6'
);
%生成数值函数f(x)
►fplot(f,[0,2])%画函数f在[0,2]上的曲线
►grid%加坐标网格
例如:
对于例题1-13中所定义的f(x),求其零点c.
►c=fzero(f,[0,2])%求函数f在[0,2]上的零点c,此处要求f(0)f
(2)<
◄c=1.2995
►fzero(f,1)%求函数f在x=1附近的零点
◄ans=1.2995
求一元函数最小值(fminbnd命令)
►fy=inline('
1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6'
►[xmin,fmim]=fminbnd(fy,0.2,0.8)%函数fy在[0.2,0.8]上最小值点及最小值
◄xmin=0.6370
◄fmim=11.2528
►ff=inline('
-1./((x-0.3).^2+0.01)-1./((x-0.9).^2+0.04)+6'
%函数ff=-fy
►[x,y]=fminbnd(ff,0.2,0.8);
%函数ff在[0.2,0.8]上最小值点及最小值
►xmax=x
◄xmax=0.3004
►fmax=-y
◄fmax=96.5014
求例题1-13中所定义f(x)在[0,1]上的定积分
.
►I=quad(f,0,1)%求f(x)在[0,1]上定积分
◄I=29.8583
例1-14求二重积分
及三重积分
►g=inline('
x.*y'
'
x'
'
y'
%建立二元函数g(x,y)=xy
►I=dblquad(g,0,1,1,2)%求g(x,y)在[0,1]×
[1,2]上的二重积分
◄I=0.7500
►h=inline('
x.*exp(y)+z.^2'
z'
%建立三元函数
►I=triplequad(h,0,1,0,1,0,1)%求h(x,y,z)在[0,1]×
[0,1]×
[0,1]上的三重积分
◄I=1.1925
例1-15已知
,设该曲线在区间[0,x]上所围曲边梯形面积为s,试求当s分别为5,10时的x的值。
分.
(1)对于s=5
1/4*x^4-5/3*x^3+3*x^2+5*x-5'
);
%建立函数
►x=fzero(f,[0,5])%求解方程
在[0,5]上的根
◄x=0.7762
(2)对于s=10
►g=inline('
1/4*x^4-5/3*x^3+3*x^2+5*x-10'
►x=fzero(g,[0,10])%求解方程
在[0,10]上的根
◄x=1.5179
例1-16利用MATLAB命令求解无理数的近似值。
(1)用函数零点命令(fzero)求无理数
的近似值;
(2)用定积分计算命令(trapz,quad,quadl)求无理数
的近似值。
(提示:
e=2.…,
=0.…)
(1)无理数
可以看成是方程
在x=2附近的实根,于是可以用fzero来求解。
log(x)-1'
►x0=fzero(f,2);
%求解方程
在x=2附近的根
►e=vpa(x0,10)%显示x0小数点后10位
◄e=2.
(2)由于无理数
,于是可以用trapz,quad,quadl命令分别来求解。
用梯形法(trapz)近似计算
►X=0:
0.01:
1;
%产生[0,1]区间上的划分向量
►Y=1./(1+X);
%求对应的分点处的函数值向量
►a=trapz(X,Y);
%求用梯形法求出积分近似值
►ln2=vpa(a,10)%显示a小数点后10位
◄ln2=0.(注意:
已精确到小数点后4位)
用高阶方法(quad,quadl)近似计算
1./(1+x)'
%建立被积函数f(x)
►a=quad(f,0,1);
%用辛浦生方法求f在[0,1]上的积分近似值
已精确到小数点后7位)
►a=quadl(f,0,1);
%用高阶方法求f在[0,1]上的积分近似值
已精确到小数点后9位)
例1-17求极限
►symsh
►fx=sym('
(sin(x+h)-sin(x))/h'
%建立符号函数fx
►limit(fx,h,0)%求fx:
h->
0的极限
◄ans=cos(x)
例1-18:
设
,求
►symsxyn%声明符号变量,注意变量间必须用空格分开
►fx=x^n*y+sin(y);
%建立符号函数
►diff(fx)%对变量x(默认)求一阶导数(偏导数)
◄ans=x^n*n/x*y即
►diff(fx,y)%对变量y求一阶导数(偏导数)
◄ans=x^n+cos(y)
►diff(fx,y,2)%对变量y求二阶导数(偏导数)
◄ans=-sin(y)
►diff(diff(fx,x),y)%先对x求导再对y求导(二阶混合偏导数)
◄ans=x^n*n/x即
例1-19:
求
►symsxyz%声明符号变量,注意变量间必须用空格分开
►f1=x*y/(1+x^2);
%建立符号函数
►f2=x+y+z;
►int(f1)%对f1关于变量x(默认)求不定积分
◄ans=1/2*y*log(1+x^2)%即
►symst
►int(f1,0,t)%对f1关于变量x(默认)在[0,t]上求定积分
◄ans=1/2*log(1+t^2)*y%即
►int(int(f1,y,0,sqrt(x)),x,0,1)%对f1先求对y的积分再求对x的积分(二重积分)
◄ans=1/2-1/8*pi%即
►int(int(int(f2,z,0,1-x-y),y,0,1-x),x,0,1)%对f2先对zy的积分再求对x的积分(二重积分)
◄ans=1/8
级数求和(symsum)
►symsak
►symsum(1/k,1,inf)%求级数
(ans=inf即
)
►symsum(1/(k*(k+1)),1,inf)%求级数
(ans=1)
►symsum(a*1/3^k,k,0,inf)%求级数
(ans=3/2*a)
泰勒展开(taylor)
►symsx
►fy=1/(1+x+x^2)
►f=taylor(fy)%求fx对自变量x(默认)在x=0点(默认)泰勒展开前6项(默认)
►f=taylor(fy,8,1)%求fx对自变量x(默认)在x=1点泰勒展开式前8项
方程求根(solve)
►fx=sym('
a*x^2+b*x+c'
►solve(fx)%求方程fx=0的符号解
◄ans=[1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[1/2/a*(-b-(b^2-4*a*c)^(1/2))]
►symsb
►solve(fx,b)%求方程fx=0关于变量b的符号解
◄ans=-(a*x^2+c)/x
微分方程(组)求解(dsolve)
►dsolve('
Dy=5'
)%求方程y'
=5的通解,默认自变量为t
◄ans=5*t+C1
Dy=x'
=x的通解,指定自变量为x
◄ans=1/2*x^2+C1
D2y=1+Dy'
y(0)=1'
Dy(0)=0'
'
=1+y'
满足y(0)=1,y'
(0)=0的特解
◄ans=-t+exp(t)即
►[x,y]=dsolve('
Dx=x+y,Dy=2*x'
)%求方程组
的通解,默认自变量为t
◄x=1/3*C1*exp(-t)+2/3*C1*exp(2*t)+1/3*C2*exp(2*t)-1/3*C2*exp(-t)
y=2/3*C1*exp(2*t)-2/3*C1*exp(-t)+2/3*C2*exp(-t)+1/3*C2*exp(2*t)
即
实验2MATLAB绘制二维、三维图形
例2-1在子图形窗口中画出
上正弦、余弦曲线。
►x=0:
0.1*pi:
2*pi;
%按步长赋值生成x向量
►y=sin(x);
z=cos(x);
%生成正弦、余弦函数值y、z向量
►subplot(2,1,1)%分图形窗口为2行1列,并在第一个子窗中绘图
►plot(x,y,x,z)%在第一个子窗中画出正弦、余弦曲线
►subplot(2,1,2)%在第二个子窗中绘图
k:
x,z,'
r-'
)%在第二个子窗中用不同颜色画两条曲线
►holdon%保持第二个子窗中绘图
bo'
k+'
)%用'
o'
和'
+'
标记曲线上分点
►holdoff%取消图形保持
例2-2画出
上正弦、余弦曲线并对线型加粗、点型加大,重新定置坐标系以及加注相关说明和注释。
►z=cos(x);
►plot(x,y,'
b-'
x,z,'
k.-'
linewidth'
3,'
markersize'
15)
►axis([-0.2*pi2.2*pi–1.21.2])%重新设置图形窗口坐标轴范围
►grid%加注坐标网格
►xlabel('
Variable\it{x}'
)%标记横坐标轴,\it{x}表示x为斜体
►ylabel('
Variable\it{y}'
)%标记纵坐标轴
►title('
SineandCosineCruves'
)%标记图名
►text(2.5,0.7,'
Sin(x)'
)%在(2.5,0.7)位置,标记曲线名称
►text(1.5,0.1,'
Cos(x)'
)%在(1.5,0.1)位置,标记曲线名称
►holdon%图形保持,在同一图形窗口中叠加图形
►plot([0,2*pi],[0,0],'
r-.'
)%叠加一条红色的点划直线:
(0,0)到(2pi,0)
►holdoff%图形保持取消,再画图时将另辟窗口
例2-3分别在两个图形窗口画出填充一正方形和极坐标方程
的图形。
►h1=figure;
%打开第一个图形窗口,返回其图标识号(句柄)h1
►x=[01100];
%闭合图形的顶点横坐标向量
►y=[00110];
%闭合图形的顶点纵坐标向量
►fill(x,y,'
)%填充闭合图形(用黄颜色)
►axis([-12-12])%重新设置坐标轴
►h2=figure;
%打开第二个图形窗口,返回其图标识号(句柄)h2
►theta=linspace(0,2*pi);
%对theta角的范围进行划分,生成分点向量
►rho=sin(2*theta).*cos(2*theta);
%生成相应极坐标方程的极径rho向量
►polar(theta,rho,'
r'
)%绘制相应的极坐标方程图形(用红颜色)
Polarplotofsin(2*theta)cos(2*theta)'
)%添加图形标题
►set(h2,'
3)%对第二个窗口中曲线加粗
例2-4在[-2.5,2.5]上画出函数
的直方图和阶梯图。
►x=linspace(-2.5,2.5,20);
%产生横坐标x向量
►y=exp(-x.*x);
%生成函数值向量
►h1=subplot(1,2,1);
%分图形窗口并在第一个子窗中绘图,返回其句柄h1
►bar(x,y)%画出直方图
BarChartofaBellCurve'
►h2=subplot(1,2,2);
%在第二个子窗中绘图,返回其句柄h2
►stairs(x,y)%画出阶梯图
StairsPlotofaBellCurve'
例2-5采用不同形式(直角坐标、参数、极坐标),画出单位圆
(1)直角坐标系
►x=-1:
1;
%对x的范围进行划分,生成分点向量
►y1=sqrt(1-x.^2);
%生成上半单位圆的函数值向量
►y2=-y1;
%生成下半单位圆的函数值向量
►plot(x,y1,x,y2);
%同时画出上半圆和下半圆
►axisequal%让坐标系中两个坐标轴取值相同
(2)参数方程
►t=0:
0.01*pi:
2*pi;
%对t的范围进行划分,生成分点向量
►x=cos(t);
y=sin(t);
%生成单位圆上的函数值向量
►plot(x,y);
%画出单位圆
►axisequal%让坐标系中两个坐标轴取值相同
(3)极坐标系
►r=1+0*t;
%生成单位圆的极径r向量
►polar(t,r)%绘制相应的极坐标方程图形
例2-6画出螺旋线:
x=sin(t),y=cos(t),z=t,
上一段曲线。
pi/50:
10*pi;
%生成参数t数组
►X=sin(t);
%生成螺旋线X数组
►Y=cos(t);
%生成螺旋线Y数组
►Z=t;
%生成螺旋线Z数组
►plot3(X,Y,Z,'
k-'
3)%画螺旋线
►grid
例2-7画出矩形域[-1,1]×
[-1,1]上旋转抛物面:
►x=linspace(-1,1,100);
%分割[-1,1]区间生成x
►y=x;
%y与x相同
►[X,Y]=meshgrid(x,y);
%生成矩形域[-1,1]×
[-1,1]网格节点坐标矩阵
►Z=X.^2+Y.^2;
%生成
函数值矩阵
►subplot(1,2,1)
►mesh(X,Y,Z);
%在第一个子图中画
网格曲面
►subplot(1,2,2)
►surf(X,Y,Z);
%在第二个子图中画
光滑曲面
►shadingflat;
%对曲面
平滑并除去网格
例2-8在圆形域
上绘制旋转抛物面:
►x=linspace(-1,1,300);
%生成y
%生成矩形域[-1,1]X[-1,1]网格节点坐标矩阵
►i=find(Z>
1);
%找出圆域
之外的函数值(z>
1)坐标点i
►Z(i)=NaN;
%对圆域
之外的坐标点i处函数值进行“赋空”
例2-9画出
在
上的图形。
►x=-7.5:
0.5:
7.5;
►u=sqrt(X.^2+Y.^2)+eps;
%加eps使得u不等于0,保证z有意义
►Z=sin(u)./u;
►surf(X,Y,Z)
例2-10有一组实验数据如下表所示,试绘图表示。
时间
123456789
数据1
12.5113.5415.6015.9220.6424.5330.2450.0036.34
数据2
9.8720.5432.2140.5048.3164.5172.3285.9889.77
数据3
10.118.1414.1710.1440.5039.4560.1170.1340.90
►t=1:
9;
►d1=[12.5113.5415.6015.9220.6424.5330.2450.0036.34];
►d2=[9.8720.5432.2140.5048.3164.5172.3285.9889.77];
►d3=[10.118.1414.1710.1440.5039.4560.1170.1340.90];
►plot(t,d1,'
r+-'
t,d2,'
kx:
t,d3,'
b*-'
2,'
markersize'