当前位置:文档之家› MATLAB 语言程序设计基础(2)

MATLAB 语言程序设计基础(2)

MATLAB 语言程序设计基础(2)
MATLAB 语言程序设计基础(2)

%第六章微分方程问题的解法

% 微分方程的解析解方法

% 常微分方程问题的数值解法

% 微分方程问题算法概述

% 四阶定步长Runge-Kutta算法及MATLAB 实现

% 一阶微分方程组的数值解

% 微分方程转换

% 特殊微分方程的数值解

% 边值问题的计算机求解

% 偏微分方程的解

% 6.1 微分方程的解析解方法

% y=dsolve(f1, f2, …, fm ,'x')

% syms t; u=exp(-5*t)*cos(2*t+1)+5;

% uu=5*diff(u,t,2)+4*diff(u,t)+2*u

% syms t y;

% y=dsolve(['D4y+10*D3y+35*D2y+50*Dy+24*y='...

%

'87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10'],'y(0)=3','Dy(0)=2','D2y(0)=0','D3y(0)=0')

% [x,y]=dsolve('D2x+2*Dx=x+2*y-exp(-t)',...

% 'Dy=4*x+3*y+4*exp(-t)')

% syms t x;

% x=dsolve('Dx=x*(1-x^2)+1')

% Warning: Explicit solution could not be found; implicit solution returned.

% > In D:\MATLAB6p5\toolbox\symbolic\dsolve.m at line 292

% x =

% t-Int(1/(a-a^3+1),a=``..x)+C1=0

% 故只有部分非线性微分方程有解析解。

% 6.2 微分方程问题的数值解法

% 6.2.1 微方程问题算法概述

%Euler算法%

%function [outx,outy]=MyEuler(fun,x0,xt,y0,PointNum)

% fun 表示f(x,y); x0,xt:自变量的初值和终值;

% y0:函数在x0处的值,其可以为向量形式;

% PointNum表示自变量在[x0,xt]上取的点数

% if nargin<5 |PointNum<=0 %PointNum 默认值为100

% PointNum=100;

% end

% if nargin<4 % y0默认值为0

% end

% h=(xt-x0)/PointNum; %计算步长h

% x=x0+[0:PointNum]'*h; %自变量数组

% y(1,:) = y0(:)'; %将输入存为行向量,输入为列向量形式

% for k = 1:PointNum

% f=feval(fun,x(k),y(k,:)); f=f(:)'; %计算f(x,y)在每个迭代点的值% y(k + 1,:) =y(k,:) +h*f; %对于所取的点x迭代计算y值

% end

% outy=y; outx=x;

% plot(x,y) %画出方程解的函数图

% end

% [x1,y1]=MyEuler('myfun',0,2*pi,1,16);

% myfun=incline'Dy=sin(x)+y'

% function [Xout,Yout]=MyEulerPro(fun,x0,xt,y0,PointNumber)

% %MyEulerPro 用改进的欧拉法解微分方程% if nargin<5 | PointNumber<=0

% %PointNumer默认值为100

% PointNumer=100;

% end

% if nargin<4 %y0默认值为0

% y0=0;

% end

% h=(xt-x0)/PointNumber;

% %计算所取的两离

% 散点之间的距离

% x=x0+[0:PointNumber]'*h;

% %表示出离散的自变量x

% y(1,:)=y0(:)';

% for i=1:PointNumber %迭代计算过程

% f1=h*feval(fun,x(i),y(i,:)); f1=f1(:)';

% f2=h*feval(fun,x(i+1),y(i,:)+f1); f2=f2(:)';

% y(i+1,:)=y(i,:)+1/2*(f1+f2);

% end

% Xout=x;Yout=y;

%6.2.2 四阶定步长Runge-Kutta算法及MATLAB 实现

%6.2.3 一阶微分方程组的数值解

%6.2.3.1 四阶五级Runge-Kutta-Felhberg算法

%6.2.3.2 基于MATLAB 的微分方程

% 求解函数

% 格式1:直接求解

% [t,x]=ode45(Fun,[t0,tf],x0)

% 格式2:带有控制参数

% [t,x]=ode45(Fun,[t0,tf],x0,options)

% 格式3:带有附加参数

% *t,x+=ode45(Fun,*t0,tf+,x0,options,p1,p2,…)

% [t0,tf]求解区间,x0初值问题的初始状态变量。

% 描述需要求解的微分方程组:

% 不需附加变量的格式

% function xd=funname(t,x)

% 可以使用附加变量

% function xd=funname(t,x,flag,p1,p2,…)

% t是时间变量或自变量(必须给),x为状态向量,xd为返回状态向量的导数. % flag用来控制求解过程,指定初值,即使初值不用指定,也必须有该变量占位。% 修改变量:options唯一结构体变量,用odeset( )修改。

% options=odeset(‘RelTol’,1e-7);

% options= odeset; options. RelTol= 1e-7;

%6.2.3.3 MATLAB 下带有附加参数的微分方程求解

% 6.2.4 微分方程转换

% 6.2.4.1 单个高阶常微分方程处理方法

% 6.2.4.2 高阶常微分方程组的变换方法

%

% 6.3特殊微分方程的数值解

% 6.3.1 刚性微分方程的求解

% MATLAB采用求解函数ode15s(),该函数的调用格式和ode45()完全一致。

% *t,x+=ode15s(Fun,*t0,tf+,x0,options,p1,p2,…)

%

% 6.3.2 隐式微分方程求解

% 6.3.3 微分代数方程求解

% 6.3.4延迟微分方程求解

%

% 6.4边值问题的计算机求解

% 6.4.1 边值问题的打靶算法

% 6.4.2 线性微分方程的有限差分算法

%

% 6.5 偏微分方程求解入门

% 6.5.1 偏微分方程组求解

% pdepe()函数可求解

% 函数描述

% [c,f,s]=pdefun(x,t,u,ux)

% 边界条件函数描述

% [pa,qa,pb,qb]=pdebc(x,t,u,ux)

% 初值条件函数描述

% u0=pdeic(x)

% 求解偏微分方程

% sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t)

%

% 6.5.2 二阶偏微分方程的数学描述

% 椭圆型;抛物线型;双曲线型;特征值型偏微分方程

%

% 6.5.3 偏微分方程的求解界面应用简介

% 6.5.3.1 偏微分方程求解程序概述

% 启动偏微分方程求解界面

% 在MATLAB 下键入pdetool

% 该界面分为四个部分:菜单系统;工具栏;集合编辑;求解区域

% 6.5.3.2 偏微分方程求解区域绘制

% 1)用工具栏中的椭圆、矩形等绘制一些区域。

% 2)在集合编辑栏中修改其内容。如(R1+E1+E2)-E3

% 3)单击工具栏中按纽可得求解边界。

% 4)选择Boundary-Remove All Subdomain Borders菜单项,消除相邻区域中间的分隔线。% 5)单击按纽可将求解区域用三角形划分成网格。可用按纽加密。

%

% 6.5.3.3 偏微分方程边界条件描述

% 选择Boundary-Specify Boundary Conditions菜单

% 狄利克雷条件,诺伊曼条件。

% 6.5.3.4 偏微分方程求解举例

% 6.5.3.5 函数参数的偏微分方程求解

% 第七章代数方程与最优化问题的求解

% 代数方程的求解

% 无约束最优化问题的计算机求解

% 有约束最优化问题的计算机求解

% 整数规划问题的计算机求解

% 7.1代数方程的求解

% 7.1.1 代数方程的图解法

% 7.1.2 多项式型方程的准解析解法

% 由于方程阶次可能太高,不存在解析解。然而,

% 可利用MATLAB的符号工具箱得出原始问题的高精度数值解,故称之为准解析解。% 一般多项式方程的根可为实数,可为复数。MATLAB符号工具箱中的solve( )函数。% 最简调用格式:S=solve(eqn1,eqn2,…,eqnn)

% (返回一个结构题型变量S,如S.x表示方程的根。)

% 直接得出根:(变量返回到MATLAB工作空间)

% *x,…+=solve(eqn1,eqn2,…,eqnn)

% 同上,并指定变量

% [x,…]=solve(eqn1,eqn2,…,eqnn,’x,…')

% 7.1.3 一般非线性方程数值解

% 非线性方程的标准形式为f(x)=0

% 函数fzero

% 格式x = fzero (fun,x0) %用fun定义表达式f(x),x0为初始解。

% x = fzero (fun,x0,options)

% *x,fval+=fzero(…) %fval=f(x)

% *x,fval,exitflag+=fzero(…)

% *x,fval,exitflag,output+=fzero(…)

% 说明该函数采用数值解求方程f(x)=0的根。

%

% 7.1.4 一般非线性方程组数值解

% 格式:最简求解语句

% x=fsolve(Fun, x0)

% 一般求解语句

% *x, f, flag, out+=fsolve(Fun, x0,opt, p1, p2,…)

% 若返回的flag 大于0,则表示求解成功,否则求解出现问题,

% opt 求解控制参数,结构体数据。

% 获得默认的常用变量opt=optimset;

% 用这两种方法修改参数(解误差控制量)

% opt.Tolx=1e-10;或set(opt.‘Tolx’, 1e-10)

% 可先用用图解法选取初值,再调用fsolve( )函数数值计算

% 7.2无约束最优化问题求解

% 7.2.1 解析解法和图解法

%

% 单变量函数求最小值

% 函数fminbnd (最值可能在端点,需要考虑)

% 格式x = fminbnd(fun,x1,x2)

% x = fminbnd(fun,x1,x2,options)

% [x,fval] = fminbnd(…) % fval为目标函数的最小值

% *x,fval,exitflag+ = fminbnd(…)

% exitflag为终止迭代的条件,若exitflag>0,收敛于x,exitflag=0,

% 表示超过函数估计值或迭代的最大数字,exitflag<0表示函数不收敛于x;

% *x,fval,exitflag,output+ = fminbnd(…)

% output为优化信息,若output=iterations表示迭代次数,

% output=funccount表示函数赋值次数,output=algorithm表示所使用的算法

%

% 7.2.2 基于MATLAB的数值解法

%求解无约束最优化的函数:fminsearch()

% x=fminunc(Fun,x0) %最简求解语句

% [x,f,flag,out]=fminunc(Fun,x0,opt,p1,p2,...)% 一般求解格式

% 比较可知fminunc()函数效率高于fminsearch()函数,但

% 当所选函数高度不连续时,使用fminsearch效果较好。故

% 若安装了最优化工具箱则应调用fminunc()函数。

%

% 7.2.3 全局最优解与局部最优解

%初值会影响结果

% >> f=inline('exp(-2*t).*cos(10*t)+exp(-3*(t+2))*sin(2*t)','t'); % 目标函数

% >> t0=1; [t1,f1]=fminsearch(f,t0); [t1 f1]

% ans =

% 0.9228 -0.1547

% >> t0=0.1; [t2,f2]=fminsearch(f,t0); [t2 f2]

% ans =

% 0.2945 -0.5436

%7.2.4 利用梯度求解最优化问题

%7.2.5非线性最小二乘

% 函数lsqnonlin

% 格式x = lsqnonlin(fun,x0)

% x = lsqnonlin(fun,x0,lb,ub)

% x = lsqnonlin(fun,x0,lb,ub,options)

% %x0为初始解向量;fun为,i=1,2,…,m,

% lb、ub定义x的下界和上界, options为指定优化参数,若x没有界,则lb=[ ],ub=[ ]。

%由于lsqnonlin中的fun为向量形式而不是平方和形式,因此,myfun函数应由f(x)建立

% function F = myfun10(x)

% k = 1:10;

% F = 2 + 2*k-exp(k*x(1))-exp(k*x(2));

% 然后调用优化程序:

% >> x0 = [0.3 0.4];

% >> [x,resnorm] = lsqnonlin(@myfun10,x0)

% Optimization terminated: norm of the current step is less

% than OPTIONS.TolX.

% x =

% 0.2578 0.2578

% resnorm =

% 124.3622

%

% 7.3有约束最优化问题的计算机求解

% 7.3.1 约束条件与可行解区域

% 对于一般的一元问题和二元问题,可用图解法直接得出问题的最优解。% 例:用图解方法求解:

% [x1,x2]=meshgrid(-3:.1:3); % 生成网格型矩阵

% z=-x1.^2-x2; % 计算出矩阵上各点的高度

% i=find(x1.^2+x2.^2>9); z(i)=NaN;

% % 找出x1^2+x2^2>9 的坐标,并置函数值为NaN

% i=find(x1+x2>1); z(i)=NaN; % 找出x1+x2>1的坐标,置为NaN

% surf(x1,x2,z); shading interp;

% max(z(:))

% 7.3.2 线性规划问题的计算机求解

%[x,fopt,flag,c]=linprog(f,A,B,Aeq,Beq,xm,Xm,x0,opt,p1,p2,...)

% 7.3.3 二次型规划的求解

%[x,fopt,flag,c]=quadprog(H,f,A,B,Aeq,Beq,xm,Xm,x0,opt,p1,p2,...)

% 7.3.4 一般非线性规划问题的求解

%[x,fopt,flag,c]=fmincon(F,x0,A,B,Aeq,Beq,xm,Xm,CF,opt,p1,p2,...)

% 7.3.5 约束线性最小二乘

% 函数lsqlin

% 格式x = lsqlin(C,d,A,b)

% x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options)

% %求在约束条件下,方程Cx = d的最小二乘解x。

% Aeq、beq满足等式约束,若没有不等式约束,则设A=[ ],b=[ ]。

% lb、ub满足,若没有等式约束,则Aeq=[ ],beq=[ ]。

% x0为初始解向量,若x没有界,则lb=[ ],ub=[ ]。

% options为指定优化参数

% *x,resnorm,residual,exitflag,output,lambda+ = lsqlin(…)

% % resnorm=norm(C*x-d)^2,即2-范数。

% residual=C*x-d,即残差。exitflag为终止迭代的条件

% output表示输出优化信. lambda为解x的Lagrange乘子

% 7.4整数规划问题的计算机求解

% 7.4.1 整数线性规划问题的求解

% [x,how]=ipslv_mex(A,B,f,intlist,xM,xm,ctype)

% A、B线性等式和不等式约束,,约束式子由ctype变量控制,

% intlist为整数约束标示,how=0表示结果最优,2为无可行解,其余失败。%

% 7.4.2一般非线性整数规划问题与求解

% [err,f,x]=bbnb2sita(fun,x0,intlist,xm,xM,A,B,Aeq,Beq,CFun)

% err字符串为空,则返回最优解。

% 该函数尚有不完全之处,解往往不是精确整数,

% 可用下面语句将其化成整数。

% if (length(err)==0

% x(intlist==1)=round(x(intlist==1))

% end

% 7.4.3 0-1规划问题求解

% x=binprog(f,A,B,Aeq,Beq)

%

% 7.5极小化极大(Minmax)问题

% 函数fminimax

% 格式x = fminimax(fun,x0)

% x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

% *x,fval,maxfval,exitflag,output,lambda+ = fminimax(…)

% 参数说明:nonlcon的作用是通过接受的向量x来计算非线性不等约束;

% 先建立非线性约束函数,并保存为mycon.m:

% function [C,Ceq] = mycon(x)

% C = …% 计算x处的非线性不等约束的函数值。

% Ceq = …% 计算x处的非线性等式约束的函数值。

% fval为最优点处的目标函数值;

% maxfval为目标函数在x处的最大值;

% exitflag为终止迭代的条件;

% lambda是Lagrange乘子,它体现哪一个约束有效。

% output输出优化信息。

% 第8章概率论与数理统计问题的求解

% 概率分布与伪随机数生成

% 统计量分析

% 数理统计分析方法及计算机实现

% 统计假设检验

% 方差分析及计算机求解

%

% 8.1 概率分布与伪随机数生成

% 8.1.1 概率密度函数与分布函数概述

%

% 通用函数计算概率密度函数值

% 函数pdf

% 格式P=pdf('name',K,A)

% P=pdf('name',K,A,B)

% P=pdf('name',K,A,B,C)

% 说明返回在X=K处、参数为A、B、C的概率密度值,对于不同的分布,参数个数是不

同;name为分布函数名。

% 例如二项分布:设一次试验,事件Y发生的概率为p,

% 那么,在n次独立重复试验中,事件Y恰好发生K次的概率P_K为:

% P_K=P{X=K}=pdf('bino',K,n,p)

% pdf('norm',0.6578,0,1) %正态分布N(0,1)的随机变量X在点0.6578的密度函数值。

% pdf('chi2',2.18,8) %自由度为8的卡方分布,在点2.18处的密度函数值。

%

% 随机变量的累积概率值(分布函数值)

% 通用函数cdf用来计算随机变量的概率之和(累积概率值)

% 函数cdf

% 格式cdf('name',K,A)

% cdf('name',K,A,B)

% cdf('name',K,A,B,C)

%

% 说明返回以name为分布、随机变量X≤K的概率之和的累积概率值,name为分布函数名.

%

% cdf('norm',0.4,0,1) %标准正态分布随机变量X落在区间(-∞,0.4)内的概率。

% cdf('chi2',6.91,16) %求自由度为16的卡方分布随机变量落在[0,6.91]内的概率。

%

% 随机变量的逆累积分布函数

% MATLAB中的逆累积分布函数是已知,求x。

% 命令icdf 计算逆累积分布函数

% 格式icdf('name',F,A)

% icdf('name',F,A,B)

% icdf('name',F,A,B,C)

% 说明返回分布为name,参数为a1,a2,a3,累积概率值为F的临界值,这里name与前面相同。

%

% 如果F= cdf('name',X,A,B,C),

% 则X = icdf('name',F,A,B,C)

% 在标准正态分布表中,若已知F=0.6554,求X

% 解:icdf('norm',0.6554,0,1)

% 例:公共汽车门的高度是按成年男子与车门顶碰头的机会

% 不超过1%设计的。设男子身高X(单位:cm)服从正态分布N(175,6)

% ,求车门的最低高度。

% 解:设h为车门高度,X为身高。

% 求满足条件F{X>h}<=0.99,即F{X=0.01故

% >> h=icdf('norm',0.99, 175, 6)

% 8.1.2 常见分布的概率密度函数与分布函数

% 8.1.2.1 Poisson分布

%y=poisspdf(x,lamda)

%F=poissCdf(x,lamda)

%y=poissinv(F,lamda)

% 例:绘制laml=1,2,5,10 时Poisson分布的概率密度函数与概率分布函数曲线。% x=[0:15]'; y1=[]; y2=[]; lam1=[1,2,5,10];

% for i=1:length(lam1)

% y1=[y1,poisspdf(x,lam1(i))];

% y2=[y2,poisscdf(x,lam1(i))];

% end

% plot(x,y1), figure; plot(x,y2)

%8.1.2.2 正态分布

%y=normpdf(x,,u,sigma)

%F=normCdf(x,sigma)

%y=norminv(F,sigma)

% x=[-5:.02:5]'; y1=[]; y2=[];

% mu1=[-1,0,0,0,1]; sig1=[1,0.1,1,10,1]; sig1=sqrt(sig1);

% for i=1:length(mu1)

% y1=[y1,normpdf(x,mu1(i),sig1(i))];

% y2=[y2,normcdf(x,mu1(i),sig1(i))];

% end

% plot(x,y1), figure; plot(x,y2)

% 8.1.2.3 T分布

%y=gampdf(x,a,lamda)

%绘制(alfa,laml)为(1,1),(1,0.5),(2,1),(1,2),(3,1)时

% x=[-0.5:.02:5]';%x=[-eps:-0.02:-0.5,0:0.02:5]; x=sort(x’);替代

% y1=[]; y2=[];

% a1=[1,1,2,1,3]; lam1=[1,0.5,1,2,1];

% for i=1:length(a1)

% y1=[y1,gampdf(x,a1(i),lam1(i))];

% y2=[y2,gamcdf(x,a1(i),lam1(i))];

% end

% 8.1.2.4 卡方分布

% y=chi2pdf(x,k)

% F=chi2cdf(x,k)

% x=chi2inv(F,k)

% >> x=[-eps:-0.02:-0.5,0:0.02:2]; x=sort(x');

% >> k1=[1,2,3,4,5]; y1=[]; y2=[];

% >> for i=1:length(k1)

% y1=[y1,chi2pdf(x,k1(i))];

% y2=[y2,chi2cdf(x,k1(i))];

% end

% >> plot(x,y1), figure; plot(x,y2)

% 8.1.2.5 t分布

% y=tpdf(x,k)

% F=tcdf(x,k)

% x=tinv(F,k)

% >> x=[-5:0.02:5]'; k1=[1,2,5,10]; y1=[]; y2=[]; % >> for i=1:length(k1)

% y1=[y1,tpdf(x,k1(i))];

% y2=[y2,tcdf(x,k1(i))];

% end

% >> plot(x,y1), figure; plot(x,y2)

% 8.1.2.6 Rayleigh分布

% y=ray2pdf(x,b)

% F=ray2cdf(x,b)

% x=ray2inv(F,b)

% >> x=[-eps:-0.02:-0.5,0:0.02:1]; x=sort(x');

% >> p1=[1 2 3 3 4]; q1=[1 1 1 2 1]; y1=[]; y2=[]; % >> for i=1:length(p1)

% y1=[y1,fpdf(x,p1(i),q1(i))];

% y2=[y2,fcdf(x,p1(i),q1(i))];

% end

% >> plot(x,y1), figure; plot(x,y2)

% 8.1.2.7 F 分布

% y=f2pdf(x,a,b)

% F=f2cdf(x,a,b)

% x=f2inv(F,a,b)

% >> x=[-eps:-0.02:-0.5,0:0.02:1]; x=sort(x');

% >> p1=[1 2 3 3 4]; q1=[1 1 1 2 1]; y1=[]; y2=[]; % >> for i=1:length(p1)

% y1=[y1,fpdf(x,p1(i),q1(i))];

% y2=[y2,fcdf(x,p1(i),q1(i))];

% end

% >> plot(x,y1), figure; plot(x,y2)

% 8.1.3 概率问题的求解

%

%

% 8.1.4 随机数与伪随机数

% A=gamrnd(a,lamda,n,m) %生成n*m的T分布伪随机数矩阵

% B=chi2rnd(k,n,m) %生成x^2分布伪随机数

% C=trnd(k,n,m) %生成T分布伪随机数

% D=frnd(p,q,n,m) %生成F分布伪随机数

% E=raylrnd(b,n,m) %生成Rayleigh分布伪随机数

%

% 8.2 统计量分析

% 8.2.1 随机变量的均值与方差

%定义

% 求该向量各个元素的

%均值m=mean、方差s2=var(x)和标准差s=std(x)、中位数m=median(x)

% 在分布类型标识后加后缀stat:

% [u,sigma^2]=gamstat(a,lamda)

% 返回变量为相关分布的均值和方差

%8.2.2 随机变量的矩

%求给定随机向量x的r阶原点矩与中心距:

%A=sum(x.^r)/length(x),B=moment(x,r)

%8.2.3 多变量随机数的协方差分析

%协方差矩阵

%C=cov(x)

%8.2.4 多变量正态分布的联合概率密度即分布函数

%p=mvnpdf(X,u,协方差矩阵)

% 8.3数理统计分析方法及计算机实现

% 8.3.1 参数估计与区间估计

% normfit(x,Pci)

% 由极大拟然法估计出该分布的均值、方差及其置信区间。置信度越大,% 得出的置信区间越小,即得出的结果越接近于真值。

% 还有gamfit(), raylfit(), poissfit() ,unifit()(均匀分布)等参数估计函数

%8.3.2 多元线性回归与区间估计

%[a,aci]=regress(y,X,aerfa)

% %errorbar()用图形绘制参数估计的置信区间。

%8.3.3 非线性函数的最小二乘参数估计与区间估计

%[a,r,J]=nlinfit(x,y,Fun,a0) %最小二乘拟合

%r为参数下的残差构成的向量。J为各个Jacobi行向量构成的矩阵。

% 8.4 统计假设检验

% 8.4.1 正态分布的均值假设检验

% [H,s,uci]=ztest(X,u,sigma,aerfa)

% H为假设检验的结论,当H=0时表示不拒绝H0假设,否则表示拒绝该假设。

% s为接受假设的概率值,为其均值的置信区间。

% [H,s,uci]=ttest(X,u,aerfa)

% 若未知正态分布的标准差时,可用此函数。

% 8.4.2 正态分布假设检验

% 由随机样本判定分布是否为正态分布,可用下面两个假设算法的函数。

% [H,s]=jbtest(X,aerfa) %Jarque-Bera检验

% s为接受假设的概率值,s越接近于0,则可以拒绝是正态分布的原假设.

%[H,s]=lillietest(X,aerfa) %Lilliefors 检验

%8.4.3 其它分布的Kolmogorov-Smirnov 检验

% 此函数(Kolmogorov-Smirnov 算法)可对任意已知分布函数进行有效的假设检验。

% [H,s]=kstest(X,cdffun,aerfa)

% 其中cdffun为两列的值,第一列为自变量,第二列为对应的分布函数的值。

%

% 8.5方差分析及计算机求解

% 8.5.1 单因子方差分析

% [p,tab,stats]=anova1(X)

% X为需要分析的数据,每一列对应于随机分配的一个组的测试数据,

% 返回概率p,tab为方差分析表。stats为统计结果量,为结构变量,包括每组均值等。

% 8.5.2 双因子方差分析

% [p,tab,stats]=anova2(X)

%

% 8.5.3 多因子方差分析

% 采用manoval()函数进行多因子方差分析

%

% 8.6 统计作图

% 8.6.1 正整数的频率表

% 命令正整数的频率表

% 函数tabulate

% 格式table = tabulate(X)

% %X为正整数构成的向量,返回3列:

% 第1列中包含X的值,

% 第2列为这些值的个数,

% 第3列为这些值的频率。

% 8.6.2 经验累积分布函数图形

% 函数cdfplot

% 格式cdfplot(X)

% %作样本X(向量)的累积分布函数图形

% h=cdfplot(X) %h表示曲线的环柄图

% [h,stats]=cdfplot(X) %stats表示样本的一些特征

%

% 8.6.3 最小二乘拟合直线

% 函数lsline

% 格式lsline %最小二乘拟合直线

% h = lsline %h为直线的句柄

%

% 8.6.4 绘制正态分布概率图形

% 函数normplot

% 格式normplot(X)

% %若X为向量,则显示正态分布概率图形,若X为矩阵,则显示每一列的正态分布概率图形。

% h = normplot(X)

% %返回绘图直线的句柄

% 说明样本数据在图中用“+”显示;如果数据来自正态分布,则图形显示为直线,而其它分布可能在图中产生弯曲。

%

% 8.6.5 绘制威布尔(Weibull)概率图形

% 函数weibplot

% 格式weibplot(X)

% %若X为向量,则显示威布尔(Weibull)概率图形,

% %若X为矩阵,则显示每一列的威布尔概率图形。

% h = weibplot(X) %返回绘图直线的柄

% 说明绘制威布尔(Weibull)概率图形的目的是用图解法估计来自

% 威布尔分布的数据X,如果X是威布尔分布数据,其图形是直线的,否则图形中可能产生弯曲

%

% 8.6.6 样本数据的盒图

% 函数boxplot

% 格式boxplot(X)

% %产生矩阵X的每一列的盒图和“须”图,“须”是从盒的尾部延伸出来,并表示盒外数据长度的线,如果“须”的外面没有数据,则在“须”的底部有一个点。

% boxplot(X,notch)

% %当notch=1时,产生一凹盒图,notch=0时产生一矩箱图。

% boxplot(X,notch,'sym')

% %sym表示图形符号,默认值为“+”。

% boxplot(X,notch,'sym',vert)

% %当vert=0时,生成水平盒图,vert=1时,生成竖直盒图(默认值vert=1)。

% boxplot(X,notch,'sym',vert,whis)

% %whis定义“须”图的长度,默认值为1.5,若whis=0则boxplot函数通过绘制sym符号图来显示盒外的所有数据值。

%

% 8.6.7 给当前图形加一条参考线

% 函数refline

% 格式refline(slope,intercept)

% % slope表示直线斜率,intercept表示截距

%

% 8.6.8 在当前图形中加入一条多项式曲线

% 函数refcurve

% 格式h = refcurve(p)

% %在图中加入一条多项式曲线,h为曲线的环柄,p为多项式系数向量,

% %p=[p1,p2, p3,…,pn],其中p1为最高幂项系数。

%

% 8.6.9 样本的概率图形

% 函数capaplot

% 格式p = capaplot(data,specs)

% %data为所给样本数据,specs指定范围,p表示在指定范围内的概率。

% 说明该函数返回来自于估计分布的随机变量落在指定范围内的概率

%

% 8.6.10 附加有正态密度曲线的直方图

% 函数histfit

% 格式histfit(data) %data为向量,返回直方图和正态曲线。

% histfit(data,nbins) % nbins指定bar的个数,

% 缺省时为data中数据个数的平方根。

%

% 8.6.11 在指定的界线之间画正态密度曲线

% 函数normspec

% 格式p = normspec(specs,mu,sigma)

% %specs指定界线,mu,sigma为正态分布的参数p 为样本落在上、下界之间的概率。%%%%例子

%%%%画直方图

% x=normrnd(0.5,1.4,30000,1);

% m=mean(x);s=std(x);

% xx=-5:0.3:5;

% yy=hist(x,xx);bar(xx,yy/length(x)/0.3); hold on

% x0=-5:0.1:5; y0=normpdf(x0,0.5,1.4); plot(x0,y0);

%%%由normfit() 函数可以直接求出置信区间

% x=[10.4,10.2,12,11.3,10.7,10.6,10.9,10.8,10.2,12.1];

% [m1,s1,ma,sa]=normfit(x,0.05); m1, ma

% %%%采用T 检验函数即可判定是否接受均值为mean(x) 的检验

% x=[10.4,10.2,12,11.3,10.7,10.6,10.9,10.8,10.2,12.1];

% mean(x)

% [H,p,ci]=ttest(x,mean(x),0.05)

% x=[9.78,9.17,10.06,10.14,9.43,10.6,10.59,9.98,10.16,10.09,9.91,10.36];

% [H,p,c,d]=jbtest(x,0.05);

% H

% %经确认满足正态分布,所以用normfit() 函数即可以求出方差及方差的置信区间

% [m1,s1,ma,sa]=normfit(x,0.05); s1,sa

%最小二乘拟合问题

% x=[1.027,1.319,1.204,0.684,0.984,0.864,0.795,0.753,1.058,0.914,1.011,0.926];

% y=[-8.8797,-5.9644,-7.1057,-8.6905,-9.2509,-9.9224,-9.8899,-9.6364,-8.5883, -9.7277,-9.023,-9.6605];

% f=inline('a(1)*exp(-a(2)*x).*cos(a(3)*x+pi/3)+a(4)*exp(-a(5)*x).* cos(a(6)*x+pi/4)','a','x');

% [c,ci]=nlinfit(x,y,f,[1;2;3;4;5;6])

% [x1,ii]=sort(x); y1=y(ii);

% y2=f(c,x1);

% plot(x1,y1,x1,y2)

MATLAB基础教程 薛山第二版 课后习题答案

《MATLAB及应用》实验指导书《MATLAB及应用》实验指导书 班级:T1243-7 姓名:柏元强 学号:20120430724 总评成绩: 汽车工程学院 电测与汽车数字应用中心

目录 实验04051001 MATLAB语言基础 (1) 实验04051002 MATLAB科学计算及绘图 (18) 实验04051003 MATLAB综合实例编程 (31)

实验04051001 MATLAB语言基础 1实验目的 1)熟悉MATLAB的运行环境 2)掌握MATLAB的矩阵和数组的运算 3)掌握MATLAB符号表达式的创建 4)熟悉符号方程的求解 2实验内容 第二章 1.创建double的变量,并进行计算。 (1)a=87,b=190,计算 a+b、a-b、a*b。 clear,clc a=double(87); b=double(190); a+b,a-b,a*b (2)创建 uint8 类型的变量,数值与(1)中相同,进行相同的计算。 clear,clc a=uint8(87); b=uint8(190); a+b,a-b,a*b 2.计算:

(1) () sin 60 (2) e3 (3) 3cos 4??π ??? clear,clc a=sind(60) b=exp(3) c=cos(3*pi/4) 3.设2u =,3v =,计算: (1) 4 log uv v (2) () 2 2 e u v v u +- (3) clear,clc u=2;v=3; a=(4*u*v)/log(v) b=((exp(u)+v)^2)/(v^2-u) c=(sqrt(u-3*v))/(u*v) 4.计算如下表达式: (1) ()() 3542i i -+ (2) () sin 28i - clear,clc (3-5*i)*(4+2*i) sin(2-8*i)

薛山matlab基础教程第三版习题解答2

第2章习题参考答案 1.创建double的变量,并进行计算。 (1)a=87,b=190,计算a+b、a-b、a*b。 (2) 创建uint8 类型的变量,数值与(1)中相同,进行相同的计算。参考答案: (1) >> a=87 a = 87 >> b=190 b = 190 >> a+b ans = 277 >> a-b ans = -103 >> a*b ans = 16530 (2) >> c=uint8(87) c = 87 >> d=uint8(190) d = 190 >> c+d ans = 255 >> c-d ans = >> c*d ans = 255 2.计算: (1) () sin60o (2) e3

(3) 3cos 4??π ??? 参考答案: (1) >> sind(60) ans = 0.8660 (2) >> exp(3) ans = 20.0855 (3) >> cos(3*pi/4) ans = -0.7071 3.设2u =,3v =,计算: (1) 4log uv v (2) ()22e u v v u +- (3) 参考答案: (1) >> u=2; >> v=3; >> 4*u*v/log(v) ans = 21.8457 (2) >> (exp(u)+v)^2/(v^2-u) ans = 15.4189 (3) >> sqrt(u-3*v)/(u*v) ans = 0 + 0.4410i

4.计算如下表达式: (1) ()() i i -+ 3542 (2) () - sin28i 参考答案: (1) >> (3-5*i)*(4+2*i) ans = 22.0000 -14.0000i (2) >> sin(2-8*i) ans = 1.3553e+03 + 6.2026e+02i 5.判断下面语句的运算结果。 (1)4 < 20 (2)4 <= 20 (3)4 == 20 (4)4 ~= 20 (5)'b'<'B' 参考答案: (1) >> 4<20 ans = 1 (2) >> 4<=20 ans = 1 (3) >> 4==20 ans = (4) >> 4~=20 ans = 1 (5) >> 'b'<'B'

MATLAB 语言程序设计基础(2)

%第六章微分方程问题的解法 % 微分方程的解析解方法 % 常微分方程问题的数值解法 % 微分方程问题算法概述 % 四阶定步长Runge-Kutta算法及MATLAB 实现 % 一阶微分方程组的数值解 % 微分方程转换 % 特殊微分方程的数值解 % 边值问题的计算机求解 % 偏微分方程的解 % 6.1 微分方程的解析解方法 % y=dsolve(f1, f2, …, fm ,'x') % syms t; u=exp(-5*t)*cos(2*t+1)+5; % uu=5*diff(u,t,2)+4*diff(u,t)+2*u % syms t y; % y=dsolve(['D4y+10*D3y+35*D2y+50*Dy+24*y='... % '87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10'],'y(0)=3','Dy(0)=2','D2y(0)=0','D3y(0)=0') % [x,y]=dsolve('D2x+2*Dx=x+2*y-exp(-t)',... % 'Dy=4*x+3*y+4*exp(-t)') % syms t x; % x=dsolve('Dx=x*(1-x^2)+1') % Warning: Explicit solution could not be found; implicit solution returned. % > In D:\MATLAB6p5\toolbox\symbolic\dsolve.m at line 292 % x = % t-Int(1/(a-a^3+1),a=``..x)+C1=0 % 故只有部分非线性微分方程有解析解。 % 6.2 微分方程问题的数值解法 % 6.2.1 微方程问题算法概述 %Euler算法% %function [outx,outy]=MyEuler(fun,x0,xt,y0,PointNum) % fun 表示f(x,y); x0,xt:自变量的初值和终值; % y0:函数在x0处的值,其可以为向量形式; % PointNum表示自变量在[x0,xt]上取的点数 % if nargin<5 |PointNum<=0 %PointNum 默认值为100 % PointNum=100; % end % if nargin<4 % y0默认值为0

汇编语言程序设计

汇编语言基础《汇编语言程序设计》第01章在线测试 A B C D 、微机中每个存储单元具有一个地址,其中存放一个____量。 A B C D 、设段地址为5788H,该字节的物理地址_____。 A B C D 、汇编语言源程序中,每个语句由项组成,不影响语句功能的是_____。 A B C D 、下列标号不合法的是_____。 A B C D

B、生成的代码序列短小 C、运行速度快 D、编程容易 E、便于移植 2、8086段寄存器有_______。 A、IP B、DS C、CS D、ES E、SS 3、使用MASM 6.x版本的“ML /Fl eg101.asm”命令,如果源程序eg101.asm没有语法错误,则将生成_________文件。 A、目标代码文件 B、可执行文件 C、列表文件 D、调试文件 E、库文件 4、汇编语言中,______可以作为有效的名字,如标号、变量名等。 A、0fffh B、var00 C、loop1 D、test E、add 5、汇编语言中,程序员不能将______作为用户标识符。 A、DS

正确错误、有效地址是指存储器操作数的物理地址。 正确错误、采用汇编语言书写的一个源程序文件,需要使用汇编程序,例如MASM 正确错误 按逻辑段组织程序,需要执行的指令应该在代码段中。 正确错误、使用简化段定义源程序格式,必须具有语句,且位于所有简化段定义语句之前。 正确错误 《汇编语言程序设计》第02章在线测试 A B C D

2、伪指令DW定义的是______量的变量。 A、字节 B、字 C、双字 D、4字 3、将变量var定义如下,“var db 26h, 4ah”,欲以字属性存取该变量值,应采用______var。 A、offset B、byte ptr C、word ptr D、seg 4、语句“xyz db ˊABˊ, ˊCDˊ, ˊEˊ,ˊFˊ”汇编后占用的存储空间是______个字节。 A、4 B、5 C、6 D、8 5、在伪指令语句“number dw 1234h”中的number 项称为______。 A、标号 B、操作符 C、名字 D、操作数 第二题、多项选择题(每题2分,5道题共10分) 1、如下________寻址方式的操作数来自主存储器。 A、立即数寻址 B、寄存器寻址 C、直接寻址 D、寄存器相对寻址 E、寄存器间接寻址 2、“mov [bx+10h],al”指令的两个操作数采用的寻址方式有_______。 A、寄存器间接 B、寄存器 C、寄存器相对 D、基址变址 E、立即数

Matlab语言程序设计

MATLAB 语言程序设计 1、应用题(20 分) 某工厂生产A和B两种产品,它们需要经过三种设备的加工,工时如表1所列。设备一、二、三每天可使用的时间分别不超过12、10和8小时。产品A和B的利润随市场的需求有所波动,如果预测未来某个时期内A和B的利润分别为4000元/吨和3000元/吨,问每天应安排产品A、B各多少吨,才能使工厂获利最大? 表 1 生产产品工时表 产品设备一设备二设备三 A/(小时/吨) 3 3 4 B/(小时/吨) 4 3 2 设备每天最多可工作时数/小时12 10 8 请写出具体解决方案,并编写该解决方案的具体MATLAB程序代码。 假设每天应安排生产产品A和B分别为和吨,依题意可建数学模型如下: max z=4000x 1+ 3000x2 3x1+ 4x2≤12 3x1+ 3x2≤10 4x1+ 2x2≤8 x1≥0, x2≥0 首先将目标函数转换为标准形式:min z=-4000-3000 M文件如下: f = [-4000;-3000]; A = [3 4;3 3;4 2]; b = [12;10;8]; lb = zeros(2,1); [x,fval] = linprog(f,A,b,[],[],lb) 结果如下图1所示: 图1

2、结合MATLAB 图像的读写知识,请你写出具体MATLAB 图像读写方法,结合实例,给出图像读写步骤。(20分) 读写方法: imfinfo(FileNAme) %从FileNAme中获取或显示图像文件的特征数据 [X,cmap]=imread(FileNAme) %读取变址图像的数据矩阵与伴随色图,并分别送给X 和cmap X=imread(FileNAme) %从FileNAme中读取强度图像或真彩图像的数据矩阵并送给X imwrite(X,cmap,FileName,Parameter,Value) %将变址图像写入文件 imwrite(X ,FileName,Parameter,Value)%将强度图像或真彩图像写入文件 [例2-1] M文件如下: I=imread('m2.png'); imwrite(I,'m2.tif'); [X,cmap]=imread('m2.tif'); image(X); colormap(cmap); axis image off; 结果如下图2所示: 图2 3、结合课本第四章所提供的18种绘图方法,请实现其中8种绘图,提供程序代码及所绘制的图形。(30分)

【汇编语言程序设计】试题及答案合集

《汇编语言程序设计试题及答案》合集 汇编语言程序设计试题及答案 1.对于有符号的数来说,下列哪个值最大(D) A:0F8H B:11010011B C:82 D:123Q 2.下列有关汇编语言中标号的命名规则中,错误的是(D) A:通常由字母打头的字符、数字串组成 B:标号长度不能超过31个字符 C:?和$不能单独作为标号 D:.号不可位于标号首 3.8088/8086存储器分段,每个段不超过(D ) A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式(B)A:寄存器寻址B:相对基址变址寻址 C:变址寻址D:基址变址寻址 5.若AX= - 15要得到AX=15应执行的指令是(A ) A.NEG AX B.NOT AX C.INC AX D.DEC AX 6.8086/8088系统执行传送指令MOV时( A) A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 7.若要求一个操作数中的若干位维持不变,若干位置?1?,可以使用(B)A:NOT B:OR C:AND D:XOR 8.下列指令中段默认为堆栈段的是( C) A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB [BX],[BP][DI] D. MOV DX,[1000H] 9.关于8086/8088微机系列,下列说法哪个是正确的(D) A:一个存储单元由16个二进制位组成,简称字。

B:当存储一个字数据时,低字节放高地址位,高字节放低地址位。 C:在内存空间中,可以无限分配段,且段的大小不受限制。 D:段与段之间可以邻接,也可以重叠。 10.下列关于堆栈的说法,错误的是(D) A:以?先入后出?为原则。 B:栈区最高地址单元的前一个单元为栈底。 C:运行中SP寄存器动态跟踪栈顶位置。 D:压栈和弹出都是以字节为单位。 11.表示过程定义结束的伪指令是( A) A.ENDP B.ENDS C.END D.ENDM 12.BUF1 DB 3 DUP(0,2 DUP (1,2),3) COUNT EQU $-BUF1 符号COUNT等价的值是( B) A.6 B.18 C.16 D.9 13.下列标志位中,可以用来判断计算结果正负的是(B) A:PF B:SF C:DF D:OF 14.下列指令正确的是( CD) A. MOV [100H], [BX] B.MOV DS, ES C. ADD V[BX], CX D.MOV AX, 34H 15.下列哪个寄存器是属于指针寄存器(C) A:SI B:DX C:SP D:ES 二、填空题 (每小题4 分,共 20 分) 1.下列程序段求数组FLD的平均值,结果在AL中。请将程序填写完整(不考虑溢出) FLD DW 10, -20, 30, -60, -71, 80, 79, 56 _LEA SI,FLD______ MOV CX, 8 XOR AX, AX

汇编语言程序设计

汇编语言程序设计 一、选择题 (共72题) 1、 用于指针及变址寄存器的有()。 A、 AX,BX,CX,DX B、 SP,BP,IP C、 CS,DS,SS D、 PSW 考生答案:B 2、 完成把汇编语言源程序模块转换为目标模块的程序是()。 A、 编辑程序 B、 汇编程序 C、 连接程序 D、 调试程序 考生答案:B 3、 指令JMP FAR PTR DONE中的寻址方式属于()。 A、 段内转移直接寻址 B、 段内转移间接寻址 C、 段间转移直接寻址 D、 段间转移间接寻址 考生答案:C 4、 对于下列程序段: AGAIN:MOV AL,[SI]

MOV ES:[DI],AL INC SI INC DI LOOP AGAIN 也可用()指令完成同样的功能。 A、 REP MOVSB B、 REP LODSB C、 REP STOSB D、 REPE SCASB 考生答案:A 5、 在程序执行过程中,IP寄存器中始终保存的是()。 A、 上一条指令的首地址 B、 下一条指令的首地址 C、 正在执行指令的首地址 D、 需计算有效地址后才能确定地址 考生答案:B 6、 在汇编语言程序的开发过程中使用宏功能的顺序是()。 A、 宏定义,宏调用 B、 宏定义,宏展开 C、 宏定义,宏调用,宏展开 D、 宏定义,宏展开,宏调用 考生答案:C 7、 CPU要访问的某一存储单元的实际地址称()。 A、 段地址

偏移地址 C、 物理地址 D、 逻辑地址 考生答案:C 8、 AND、OR、XOR、NOT为四条逻辑运算指令,下面解释正确的是()。 A、 指令XOR AX,AX执行后,AX内容不变,但设置了标志位 B、 指令OR DX,1000H执行后,将DX最高位置1,其余各位置0 C、 指令AND AX,OFH执行后,分离出AL低四位 D、 NOT AX,执行后,将AX清0 考生答案:C 9、 完成对CL寄存器的内容乘以2的正确操作是()。 A、 ROL CL,1 B、 MUL 2 C、 SHL CL,1 D、 SHR CL,1 考生答案:C 10、 检查两个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMP A L,BL”指令后应跟的分支指令是()。 A、 JE LOP1 B、 JAE LOP1 C、 JC LOP1 D、 JGE LOP1 考生答案:B 11、 已知变量VAR为字型,则TYPEVAR=()。

Matlab基础教程

1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。 小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。 小提示: MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。 若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例: y = sin(10)*exp(-0.3*4^2);

若要显示变数y的值,直接键入y即可: >>y y =-0.0045 在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数。 下表即为MATLAB常用的基本数学函数及三角函数: 小整理:MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开

05级通信工程、电子信息工程《MATLAB语言程序设计》考试卷

安徽农业大学2006―2007学年第二学期 《MATLAB 语言程序设计》试卷(A 卷) 考试形式: 闭卷笔试,2小时 适用专业: 05级通信工程、电子信息工程 一、填空题(本题满分30分,每空3分) 1. 设有程序 A=[1,2,3,4;4,3,2,1;1, -2 ,1, -2];B=[3,1,-1;0,4,2];A1=A(:,[1 3]); M=size(A1)+ length(B(:,2)) 将下列命令的运行结果填在横线上 M= ;A1+B' = . 2. A=[1,2,3,4;2,3,4,5;3,4,5,6]; A1=sum(A<4,2);A([2,3],:)=[],A2=A A1= ; A2= ; 3.P=[1,2,3,4;3,0,1,2];max(P)= ;mean(P,2)= 院: 专业班级: 姓名: 学号: 装 订 线

二、(本题满分12分)试编写计算程序 V; 与特征向量 U 的特征值 B 2 A 求 (4). E; 5 B A 2B BX 解矩阵 . (3) ); A B) (B(A R R 的秩 A (2). |; B) 2 B)(A (A | D (1). , 6 2 1 5 7 2 , 2 1 5 1 2 3 3 2 1 1 1 + + = + = + - = ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? = - - T T T B A 方程 设

三、(本题满分8分) 的程序组写出求解超定线性方程?????? ?=++-=++=--=++1 21212:321 321321 321x x x x x x x x x x x x 四、(本题满分16分)运用符号运算功能写出下列各题Matlab 程序 解求方程03.12=-x e x Adx dx A d x wx x x xe A x ??? ????=-1 022,,cos )sin(sin .2并计算 生成符号矩阵

Matlab语言基础

一、Matlab的变量与常量 Matlab中变量和常量存储都是相应的数据。 数据类型:基本类型、构造类型、符号对象 基本类型:数字型、字符串型 数字型:整型、浮点型 整形:无符号、有符号(int8、int16、int32、int64 1位、2位、4位、8位) 浮点型:单精度(32位)、双精度(64位) 基本类型:数组类型(常见)、细胞类型、结构类型、类类型 符号对象(比较少见) 变量:在运算过程中其数值可以改变的量; 常量:在运算过程中其数值不改变的量。 变量命名规则: 变数名称是由一个字母开头,其后可以有任意数量的字母、数字或下划线。在变量命名时尽量使用小写字母,名字要有实在的意义,不要和系统保留的关键字(常量)和函数名相同的名字,容易出错。 MATLAB是区分大小写的,变量名可以是任意长度。 Matlab语言是一种弱类型语言,C语言是强类型语言,变量在复制之前要对它的类型进行严格的申明,不同就会出错,而matlab不需要事先申明。 变量初始化: 1、采用赋值语句初始化变量; 2、用input函数从键盘输入初始化变量,如下:

3、matlab已经定义好了的一些常量: I、j虚数;Inf无穷大;NaN不定式;pi圆周率;ans特殊的变量。 二、matlab的基本数据结构 标量、向量、数组、矩阵的概念:标量、向量、数组本质上是特殊的矩阵形式;matlab 常用的是二维矩阵;标量1*1的矩阵;向量可以看成是1行或者1列的矩阵;向量是数学中的说法,数组是matlab语言中的说法,但向量和数组在这里指的是同一种数据结构,可以互用。 手动生成矩阵: 行矩阵:a = [1 2 3] 列矩阵:b = [1 2 3]’或 b = [1;2;3] 2*2矩阵:c = [1 2;3 4] 使用内置函数生成矩阵:常用的有o nes,eye,zeros,size,length.

汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计第四版 【课后习题答案】--囮裑為檤 第3章汇编语言程序格式 〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用? 〔解答〕 伪指令语句与硬指令语句的本质区别是能不能产生CPU动作; 伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。 〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成? 〔解答〕 为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符; 汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。 〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。 〔解答 保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。汇编语言对大小写不敏感。如定义字节数和字符串的DB就是伪指令助记符。 〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成? 〔解答〕 汇编语句有执行性语句和说明性语句; 执行性语句由标号、硬指令助记符、操作数和注释四部分组成; 说明性语句由名字、伪指令助记符、参数和注释四部分组成 〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。 〔解答〕 ⒈编辑文本编辑程序汇编语言源程序.asm ⒉汇编汇编程序目标模块文件.obj ⒊连接连接程序可执行文件.exe或.com

⒋调试调试程序应用程序 〔习题3.6〕区分下列概念: (1)变量和标号 (2)数值表达式和地址表达式 (3)符号常量和字符串常量 〔解答〕 (1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。 (2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及利用各种的操作符形成的表达式。 (3)在程序中,为了使常量更便于使用和阅读,经常将一些常量用常量定义语句定义为符号常量,被一对双引号括起来的若干个字符组成的字符序列被称为字符串常量。 〔习题3.7〕假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的错误原因。 (1)mov byte ptr [bx],1000 (2)mov bx,offset myword[si] (3)cmp mybyte1,mybyte2 (4)mov al,mybyte1+mybyte2 (5)sub al,myword (6)jnz myword 〔解答〕 (1)1000超出了一个字节范围 (2)寄存器的值只有程序执行时才能确定,而offset是汇编过程计算的偏移地址,故无法确定,改为lea bx,myword[si] (3)两个都是存储单元,指令不允许 (4)变量值只有执行时才确定,汇编过程不能计算 (5)字节量AL与字量myword,类型不匹配 (6)Jcc指令只有相对寻址方式,不支持间接寻址方式 〔习题3.8〕OPR1是一个常量,问下列语句中两个AND操作有什么区别? AND AL,OPR1 AND 0feh 〔解答〕

汇编语言程序设计

汇编语言程序设计 实验报告 实验名称上机过程及顺序结构与分支结构程序设计实验班级 学号 姓名 日期2017年10月26号 成绩 评阅人 软件学院

一、实验目的与意义 理解并熟练掌握汇编语言程序设计过程中的编辑、汇编、链接和调试等各个步骤,提高对汇编课程内容的理解和汇编语言的掌握,通过上机练习加深对课程内容的理解和掌握。通过汇编语言编制的程序上机调试、运行检验程序设计是否正确。熟悉和掌握编辑、汇编、连接和调试四个实用程序的使用方法,掌握调试程序中的几个常用命令的使用方法。熟悉其基本的指令操作,debug调试操作命令以及分支结构、顺序结构和循环结构的程序设计。 二、实验环境 操作系统:Microsoft Windows8 集成环境:Masm for Windows 上机地点:信息楼B405教室 三、实验的预习内容 预习的主要内容: 1. 使用DEBUG命令的方法; 2. 熟悉掌握从理论上定义数据的类型(即DB,DW,DD,); 3. 分支结构和顺序结构的步骤以及相关的指令; 4. 常用的标志位状态及相应的作用; 实验思路: 在对题目进行分析后,分析出解题方法,并做出与实验思路相对应的程序框图。依照程序框图的内容输入相对应的代码,最终在调试代码后,发现并解决一系列的汇编语言错误。进一步优化算法。实验之前必须了解十进制、十六进制和ASCII码之间的转换。预习查表法相关命令,掌握顺序程序的结构,从键盘输入数据的命令及显示到屏幕上的命令。 实验一: 题目1:将程序编辑、汇编、连接并通过集成环境中的debug调试,观察运行结果;用E命令修改指定地址的数据,再用G命令执行程序查看变化,用A 命令将加法指令修改成减法指令,再将其编译运行,查看寄存器值变化的异同。 题目2:分别用DB、DW和DD数据段9H,0FAH,41H,27H,编译链接之后生成exe文件,再用debug的r命令找到数据段地址,用d命令指定数据段地址,观察汇编后在机器内部对应的存储情况。 实验二: 先设置数据段地址和堆栈段地址;设置堆栈段指针;读取一个字符然后存储在AL中;用BX来存储AL中字符对应的数值;将BX中的值作为偏移地址;并在数据段中查找对应字符串;最终输出结果结束程序。 实验三: 先初始化数据段地址与堆栈段地址;设置堆栈段指针;然后将数据段中的data1放入AL中;读取数据段中的data2并判断data2是否大于0;然后读取数

matlab程序设计实例

MATLAB 程序设计方法及若干程序实例 樊双喜 (河南大学数学与 信息科学学院开封475004) 摘要本文通过对 MATLAB 程序设计中的若干典型问题做简要的分析和总结,并在此基础上着重讨论了有关算法设计、程序的调试与测试、算法与程序的优化以及循环控制等方面的问题.还通过对一些程序实例做具体解析,来方便读者进行编程训练并掌握一些有关MATLAB 程序设计方面的基本概念、基本方法以及某些问题的处理技巧等.此外,在文章的最后还给出了几个常用数学方法的算法程序, 供读者参考使用.希望能对初学者进行 MATLAB 编程训练提供一些可供参考的材料,并起到一定的指导和激励作用,进而为MATLAB 编程入门打下好的基础. 关键字算法设计;程序调试与测试;程序优化;循环控制 1 算法与程序 1.1 算法与程序的关系算法被称为程序的灵魂,因此在介绍程序之前应先了 解什么是算法.所谓算 法就是对特定问题求解步骤的一种描述.对于一个较复杂的计算或是数据处理的问题,通常是先设计出在理论上可行的算法,即程序的操作步骤,然后再按照算法逐步翻译成相应的程序语言,即计算机可识别的语言. 所谓程序设计,就是使用在计算机上可执行的程序代码来有效的描述用于解决特定问题算法的过程.简单来说,程序就是指令的集合.结构化程序设计由于采用了模块分化与功能分解,自顶向下,即分而治之的方法,因而可将一个较复杂的问题分解为若干子问题,逐步求精.算法是操作的过程,而程序结构和程序流程则是算法的具体体现. 1.2MATLAB 语言的特点 MATLAB 语言简洁紧凑,使用方便灵活,库函数极其丰富,其语法规则与科技人员的思维和书写习惯相近,便于操作.MATLAB 程序书写形式自由,利用其丰富

新版汇编语言程序设计习题答案(钱晓捷主编)

新版汇编语言程序设计习题答案(钱晓捷主编) 第一章汇编语言基础知识 1.1、简述计算机系统的硬件组成及各部分作用 1.2、明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 1.3、什么是汇编语言源程序、汇编程序、目标程序? 1.4、汇编语言与高级语言相比有什么优缺点? 1.5、将下列十六进制数转换为二进制和十进制表示 (1)FFH (2)0H (3)5EH (4)EFH (5)2EH (6)10H (7)1FH (8)ABH 1.6、将下列十进制数转换为BCD码表示 (1)12 (2)24 (3)68 (4)127 (5)128 (6)255 (7)1234 (8)2458 1.7、将下列BCD码转换为十进制数 (1)10010001 (2)10001001 (3)00110110 (4)10010000 (5)00001000 (6)10010111 (7)10000001 (8)00000010 1.8、将下列十进制数分别用8位二进制数的原码、反码和补码表示 (1)0 (2)-127 (3)127 (4)-57 (5)126 (6)-126 (7)-128 (8)68 1.9、完成下列二进制数的运算 (1)1011+1001 (2)1011-1001 (3)1011×1001 (4)10111000÷1001 (5)1011 ∧~1011 (8)1011 ⊕1001 1001(6)1011 ∨1001(7) 1.10 数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符? 1.11、计算机中有一个“01100001”编码,如果把它认为是无符号数,它是10进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符? 1.12、简述Intel 80x86系列微处理器在指令集方面的发展。 1.13、什么是DOS和ROM-BIOS? 1.14、简述PC机最低1MB主存空间的使用情况。 1.15、罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用。 1.16、什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义。

《MATLAB语言程序设计》练习题1(08通信)

《MATLAB语言程序设计》练习题1(2010.5) 一、填空题 1.设有程序 A=[1,2,3,4;6,-5,6,3];B=[2,4,5,7];A1=A(:,[1 3 4]);A2=A(1,[2,3]). 将下列命令的运行结果填在横线上 size(A)= ;A(1,: ).*B= ;length(B)= ; A1= ; A2= ;A+3= ;B.^2= 2. A=[1,2,3,4;6,-5,6,3];B=[-2,4,-6,7,9];A1=(A<3);A2=all(A(:,1)<5);A3=any(A(2,:)<10); A4=find(abs(B)<3| abs(B)>7); A5=find(abs(B)<7& abs(B)>3) A1= ; A2= ; A3= ; A4= ;A5= .

; ).4(; 2(3).);BA R(A R 2).A (|;)(|).1(,21 4154 101 ,32 1214 1531 1 1 V U A E B A B AX AB D B A :、T T 与特征向量 的特征值 求解矩阵方程 的秩设题试编写程序计算下列各二+=+==???? ? ? ?--=????? ? ?-=--- ??? ?? ?? ??=+-=++-=++=-+=++???????=-++-=-++=-++=+++?? ?=-++=+++3 512332232.31 23322352:.2221 432:.13213213213213214321 43214321432143214321x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 、超定方程组 恰定方程组 欠定方程组 程组的程序 写出求解下列各线性方三 .)(,cos 3)sin()sin(cos 2sin )(.3;)(,,1 sin )ln(.2;02.1: ,4 321 2 2 2 2 3 变换的计算并计算生成符号矩阵 的根求方程下列各题运用符号运算功能计算四Laplace t A wt e wt t t te t t t te t t A dx x A dx A d x x e s x x A x x 、ut t t x ? ??? ? ??? ? ?=??? ? ??? ?+==+---? 的解 函数求解微分方程用1)0(')0(,sin '2".4===++x x t x x x dsolve (1) 若.2 c bt at y t y ++=的经验公式为 与试编写程序计算出上式中的a 、b 、c;

新版汇编语言程序设计钱晓捷第1章习题答案

第1章汇编语言基础知识(全) 2010-10-18 19:32:40| 分类:答案集锦| 标签:|字号大中小订阅 第1章汇编语言基础知识 〔习题1.1〕简述计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为 处理单元提供所需要的数据。 存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。 外部设备:实现人机交换和机间的通信。 〔习题1.2〕明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 〔解答〕 主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速 度慢。 RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电 后能保存信息。 存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常 称做I/O端口。 KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。 〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序? 〔解答〕 用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编 译通过的程序就是目标程序。

MATLAB 语言程序设计基础(1)

%第二章MATLAB 语言程序设计基础% % MATLAB 基本命令简介 % MATLAB 程序设计语言基础 % 基本数学运算 % MATLAB语言流程控制 % MATLAB 函数的编写 % 二维图形绘制 % 三维图形绘制 % 二维图形 % 基本平面 % plot % fplot%f(x) %fplot('tanh',[-2 2]) % loglog%双对数图形 % semilogx%x轴对数图形 % semilogy %zoom %meshgrid

% 特殊平面 %polar %bar %barh %compass %comet %errorbar %feather %hist 二维直方图%histc 直方图记数%rose 角度直方图%stairs %stem 柄形图 %stem3 %pie 饼形图 % 注释命令 % grid % gtext % text % legend % title

% xlabel,ylabel % 三维图形 % % 三维曲线,面填色命令 % comet3 三维彗星 % fill3 % 三维图形等高线 %clabel 二维等高线图中添加高度标签 % [x,y] = meshgrid(-2:.2:2); % z = x.*y.*exp(-x.^2-y.^2); % [C,h] = contour(x,y,z); % clabel(C,h); %contour %contourc 低级等高线图形计算命令。计算等高线矩阵c %contour3 三维空间等高线图 %contourf 填充二维等高线图 %contour,contour3和contourf %pie3

大学毕业设计-MATLAB语言程序设计

MATLAB语言程序设计 系别:电子电气工程系 班级:08级自动化班 姓名:XXX 学号:

1.编写一个求圆的面积的函数文件。 >> f(1) s = 3.1416 >> f(2) s = 12.5664 通过此题掌握了独立文件与函数文件的区别。 2.三次抛物线的方程为:y=a*x^3+b*x^2+c*x 试探讨参数a,b和c对其图形的影响。 >> clear all; >> subplot(1,3,1) >> fplot('(-2:2)*x.^3+x.^2+x',[-2 2]) %绘制变量a=-2,-1,0,1,2时的图形 >> grid,axis('equal'),axis([-2 2 -4 4]) %显示网格,纵横坐标轴保持一致图 >> %显示区间 >> subplot(1,3,2) >> fplot('x.^3+(-2:2)x.^2+x',[-2 2]) %绘制变量b=-2,-1,0,1,2时的图形 >> fplot('x.^3+(-2:2)*x.^2+x',[-2 2]) %绘制变量b=-2,-1,0,1,2时的图形 >> grid,axis('equal'),axis([-2 2 -4 4]) >> subplot(1,3,3) >> fplot('x.^3+x.^2+(-2:2)*x',[-2 2]) %绘制变量c=-2,-1,0,1,2时的图形 >> grid,axis('equal'),axis([-2 2 -4 4]) >> gtext('a=2'),gtext('a=-2'),gtext('a=0') %用gtext命令在其他两个子图上标注字符程序运行结果如下:

MATLAB软件语言及程序设计报告(含源程序版

MATLAB软件语言及程序设计 姓名: 学号: 班级: 院系: 指导老师:张登峰 时间:2010-5-10

一、问答题(15分) 1. 在安装MATLAB软件时,哪些组件(模块)是必须选择的?否则,不能建立MATLAB工作环境。 Toolboxes、MATLAB、Complier 2. 写出MA TLAB中的6个预定义变量名,并说明各自的含义。 ans:计算结果的缺省变量名 pi:圆周率 i,j:虚数单位 inf:无穷大 eps:计算机的最小数 NaN:不定量,如0/0,00/00 nargin:函数的输入变量个数 nargout:函数的输出变量个数 realmin:最小正实数 realmax:最大正实数 lasterr:存放最新的错误信息 lastwarn:存放最新的警告信息 3. 在MA TLAB指令窗中运行指令(-243)^(1/5)后,会得到-3吗? 的全部方根有几 个,请写出计算全部方根的M文件程序代码,要求对每条语句加注释说明。 不会,会得到2.4271 + 1.7634i,用nthroot(-243,5)可以得到一个根-3。 可以用solve解决,程序如下 solve('t^5+243') 得到结果为: ans = -3 -3/4*5^(1/2)+3/4-3/4*i*2^(1/2)*(5+5^(1/2))^(1/2) 3/4*5^(1/2)+3/4-3/4*i*2^(1/2)*(5-5^(1/2))^(1/2) 3/4*5^(1/2)+3/4+3/4*i*2^(1/2)*(5-5^(1/2))^(1/2) -3/4*5^(1/2)+3/4+3/4*i*2^(1/2)*(5+5^(1/2))^(1/2) 4. 指令clear,clf,clc各有什么用处,它们运行结果的区别是什么? Clear :清除内存中所有的或指定的变量和函数 Clf:擦除MATLAB当前工作窗口中的图形 Clc:擦除MATLAB工作窗口中所有显示的内容 5. 在MATLAB指令表达式中,标点符号“空格”和“逗号”各有什么作用?请举例说明,在哪些情况下,两者的作用相同?在哪些情况下,二者的作用不同? 空格和逗号都能起到分隔符的作用,逗号可作为函数分割符,也用于区分行,显示运算结果,当然不加标点也显示运算结果,而在大多数情况下,MA TLAB对空格不予处理。

相关主题
文本预览
相关文档 最新文档