1、plot(x,x.3);grid on;title plot-y=x3subplot(2,3,2);loglog(x,x.3);loglog-logy=3logxsubplot(2,3,3);plotyy(x,x.3,x,x);plotyy-y=x3,logy=3logxsubplot(2,3,4);semilogx(x,x.3);semilogx-y=3logxsubplot(2,3,5);semilogy(x,x.3);semilogy-logy=x3在数据处理和分析应用的其他函数名称含义min最小值max最大值Mean平均值median中位数std标准差diff相邻元素的差sort排序l
2、ength个数norm欧氏(Euclidean)长度sum总和prod总乘积dot内积cumsum累计元素总和cumprod累计元素总乘积cross外积(叉积)下面是矩阵操作的一些例子:a=1,4,6,8,10 %一维矩阵a(3) % a的第三个元素 6x =1 2 3 4 5 6 7 84 5 6 7 8 9 10 11; %二维2x8 矩阵 x(3) % x的第三个元素 2 x(1 2 5) % x的第一、二、五个元素 1 4 3 x(2,3) % x的第二行第三列的元素ans = x(1:5) % x的第前五个元素 1 4 2 5 3 x(10:end) % x的第十个元素后的元素 8
3、6 9 7 10 8 11-1:2) % x的第十个元素和第二个元素的倒排 8 5 7 4 6 3 5 2 4 x(find(x5) % x中大于5的元素 6 7 8 6 9 7 10 8 11 x(4)=100 %给x的第四个元素重新给值x = 1 2 3 4 5 6 7 8 4 100 6 7 8 9 10 11 x(3)= % 删除第三个元素(不是二维数组) Columns 1 through 12 1 4 100 3 6 4 7 5 8 6 9 7 Columns 13 through 15 10 8 11 x(16)=1 % 加入第十六个元素 Columns 1 through 12
4、 Columns 13 through 16 10 8 11 1当元素很多的时候,则须采用以下的方式: x=(1:2.5:120); % 以:起始值=1,增量值=2,终止值=120的矩阵例 建立矩阵A,然后找出大于4的元素的位置。(1) 建立矩阵A。A=4,-65,-54,0,6;56,0,67,-45,0 (2) 找出大于4的元素的位置。find(A4)例3-1 分别建立命令文件和函数文件,将华氏温度f转换为摄氏温度c。程序1:首先建立命令文件并以文件名f2c.m存盘。clear; %清除工作空间中的变量f=input(Input Fahrenheit temperature:);c=5*(
5、f-32)/9然后在MATLAB的命令窗口中输入f2c,将会执行该命令文件,执行情况为:73c = 22.7778例3-2 输入x,y的值,并将它们的值互换后输出。 程序如下: x=input(Input x please. y=input(Input y please. z=x; x=y; y=z; disp(x); disp(y);例3-3 求一元二次方程ax2 +bx+c=0的根。程序如下:a=input(a=?b=input(b=?c=input(c=?d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(
6、x(1),x2=,num2str(x(2);例3-4 计算分段函数的值。x=input(请输入x的值:if x=0 y= (x+sqrt(pi)/exp(2);else y=log(x+sqrt(1+x*x)/2;endy例3-6 某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示): price200 没有折扣 200price500 3%折扣 500price1000 5%折扣 1000price2500 8%折扣 2500price5000 10%折扣5000price 14%折扣输入所售商品的价格,求其实际销售价格。price=input(请输入商品价格swit
7、ch fix(price/100) case 0,1 %价格小于200 rate=0; case 2,3,4 %价格大于等于200但小于500 rate=3/100; case num2cell(5:9) %价格大于等于500但小于1000 rate=5/100; case num2cell(10:24) %价格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %价格大于等于2500但小于5000 rate=10/100; otherwise %价格大于等于5000 rate=14/100;price=price*(1-rate) %输出商品实际
8、销售价格3try语句语句格式为:try 语句组1catch 语句组2try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。例3-7 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。A=1,2,3;4,5,6; B=7,8,9;10,11,12; C=A*B; C=A.*B;Clasterr %显示出错原因例5-6 在同一坐标内,分别用不同线型和颜色绘制曲线y1=0.2e-0.5xcos(4x) 和y2=2e-0.5xcos(x),标记两曲线交叉点。x=linspace(0
9、,2*pi,1000);y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);k=find(abs(y1-y2)New-M-file 2. 在编辑窗口中输入程序内容 3. 点:Save,存盘,M文件名必须 与函数名一致。例:定义函数 f(x1,x2)=100(x2-x12)2+(1-x1)21.建立M文件:fun.mfunction f=fun(x)f=100*(x(2)-x(1)2)2+(1-x(1)22. 可以直接使用函数fun.m例如:计算 f(1,2), 只需在Matlab命令窗口键入命令:x=1 2fun(x)Y【例】
10、采用模型画一组椭圆。t = 0:pi/50:2*pi;a = 0.5:.5:4.5;X = cos(t)*a;Y = sin(t)*sqrt(25-a.2);plot(X,Y),axis(equal),xlabel(x), ylabel(yA set of Ellipses例5-3 分析下列程序绘制的曲线。x1=linspace(0,2*pi,100);x2=linspace(0,3*pi,100);x3=linspace(0,4*pi,100);y1=sin(x1);y2=1+sin(x2);y3=2+sin(x3);x=x1;x2;x3y=y1;y2;y3plot(x,y,x1,y1-1)
11、一、问题提出 市场上有n种资产(i=1,2n)可以选择,现用数额为M的相当大的资金作一个时期的投资。这n种资产在这一时期内购买的平均收益率为,风险损失率为,投资越分散,总的风险越小,总体风险可用投资的中最大的一个风险来度量。 购买时要付交易费,(费率),当购买额不超过给定值时,交易费按购买计算。另外,假定同期银行存款利率是,既无交易费又无风险。(=5%)已知n=4时相关数据如下:(%)(元)S1282.51103S2211.52198S3235.54.552S4252.66.540试给该公司设计一种投资组合方案,即用给定达到资金M,有选择地购买若干种资产或存银行生息,使净收益尽可能大,使总体风
12、险尽可能小。基本假设:1. 投资数额M相当大,为了便于计算,假设M=1;2投资越分散,总的风险越小;3总体风险用投资项目中最大的一个风险来度量;4n种资产S之间是相互独立的;5在投资的这一时期内, ri,pi,qi,r0为定值,不受意外因素影响;6净收益和总体风险只受 ri,pi,qi影响,不受其他因素干扰。符号规定:Si 第i种投资项目,如股票,债券ri,pi,qi -分别为Si的平均收益率, 交易费率,风险损失率 ui -Si的交易定额 -同期银行利率xi -投资项目Si的资金 a -投资风险度Q -总体收益 Q -总体收益的增量2购买Si所付交易费是一个分段函数,即 pixi xiui
13、交易费 = piui xiui而题目所给定的定值ui(单位:元)相对总投资M很小, piui更小,可以忽略不计,这样购买Si的净收益为(ri-pi)xi 3要使净收益尽可能大,总体风险尽可能小,这是一个多目标规划模型: 目标函数 MAX MINmax qixi 约束条件 =M xi0 i=0,1,na 在实际投资中,投资者承受风险的程度不一样,若给定风险一个界限a,使最大的一个风险qixi/Ma,可找到相应的投资方案。这样把多目标规划变成一个目标的线性规划。模型1 固定风险水平,优化收益 目标函数: Q=MAX 约束条件:a , xi 0 i=0,1,n b若投资者希望总盈利至少达到水平k以上
14、,在风险最小的情况下寻找相应的投资组合。模型2 固定盈利水平,极小化风险 R= minmax qixik, , xi 0 i=0,1,n c投资者在权衡资产风险和预期收益两方面时,希望选择一个令自己满意的投资组合。因此对风险、收益赋予权重s(0s1),s称为投资偏好系数.模型3 目标函数:min smaxqixi -(1-s)=M, xi0 i=0,1,2,n模型1为: minf = (-0.05, -0.27, -0.19, -0.185, -0.185) (x0 x1 x2 x3 x 4 ) T x0 + 1.01x1 + 1.02x2 +1.045x3 +1.065x4 =1s.t. 0
15、.025x1 a 0.015x2 a 0.055x3 a 0.026x4a xi 0 (i = 0,1,.4) 由于a是任意给定的风险度,到底怎样给定没有一个准则,不同的投资者有不同的风险度。我们从a=0开始,以步长a=0.001进行循环搜索,编制程序如下:a=0;while(1.1-a) c=-0.05 -0.27 -0.19 -0.185 -0.185; Aeq=1 1.01 1.02 1.045 1.065; beq=1; A=0 0.025 0 0 0;0 0 0.015 0 0;0 0 0 0.055 0;0 0 0 0 0.026; b=a;a;a; vlb=0,0,0,0,0;v
16、ub=; x,val=linprog(c,A,b,Aeq,beq,vlb,vub); a x=x Q=-val plot(a,Q,.),axis(0 0.1 0 0.5),hold on a=a+0.001;end xlabel(a),ylabel(Q例1-4 求解线性方程组。a=2,-3,1;8,3,2;45,1,-9;b=4;2;17;x=inv(a)*b矩阵的逆对于一个方阵A,如果存在一个与其同阶的方阵B,使得:AB=BA=I (I为单位矩阵)则称B为A的逆矩阵,当然,A也是B的逆矩阵。求一个矩阵的逆是一件非常烦琐的工作,容易出错,但在MATLAB中,求一个矩阵的逆非常容易。求方阵A的逆
17、矩阵可调用函数inv(A)。例2-11 用求逆矩阵的方法解线性方程组。Ax=b其解为:x=A-1b方阵的行列式把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。在MATLAB中,求方阵A所对应的行列式的值的函数是det(A)。1求标准方差在MATLAB中,提供了计算数据序列的标准方差的函数std。对于向量X,std(X)返回一个标准方差。对于矩阵A,std(A)返回一个行向量,它的各个元素便是矩阵A各列或各行的标准方差。std函数的一般调用格式为:Y=std(A,flag,dim)其中dim取1或2。当dim=1时,求各列元素的标准方差;当dim=2时,则求各行元素的标准方差。flag取0或1,当flag=0时,按1所列公式计算标准方差,当flag=1时,按2所列公式计算标准方差。缺省flag=0,dim=1。2, 一般的曲线拟合:p=lsqcurvefit(Fun,p0,xdata,ydata)其中Fun表示函数Fun(p,data)的M函数文件,p0表示函数的初值lsqcurvefit()命令的求解问题形式是若要求解点x处的函数值可用程序f=Fun(p,x)计算 例如,已知函数形式,并且已知数据点要确定四个未知参数a,b,c,d使用curvefit命令,数据输入;初值输并且建立函数的M文件(Funm)若定义,则输出
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1