11.建立符号变量和符号常量MATLAB提供了两个建立符号对象的函数:sym和syms,两个函数的用法不同。(1)sym函数sym函数用来建立单个符号量,一般调用格式为:符号量名=sym('符号字符串')该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。应用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。下面的命令用于比较符号常量与数值常量在代数运算时的差别。(2)syms函数函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量。syms函数的一般调用格式为:syms符号变量名1符号变量名2…符号变量名n用这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间用空格而不要用逗号分隔。矩阵187624323A,矩阵333222111B;分别求出AxB及A与B中对应元素之间的乘积的程序语句。答案:A=[323;426;781];B=[111;222;333];A*B,A.*Bans=161616262626262626ans=323841221243方阵的行列式:det(A)方阵的逆:inv(A)方阵的特征值与特征向量:[V,D]=eig[A]例绘制y=x3的函数图、对数坐标图、半对数坐标图x=[1:1:100];2subplot(2,3,1);plot(x,x.^3);gridon;title'plot-y=x^3';subplot(2,3,2);loglog(x,x.^3);gridon;title'loglog-logy=3logx';subplot(2,3,3);plotyy(x,x.^3,x,x);gridon;title'plotyy-y=x^3,logy=3logx';subplot(2,3,4);semilogx(x,x.^3);gridon;title'semilogx-y=3logx';subplot(2,3,5);semilogy(x,x.^3);gridon;title'semilogy-logy=x^3';在数据处理和分析应用的其他函数名称含义名称含义min最小值max最大值Mean平均值median中位数std标准差diff相邻元素的差sort排序length个数norm欧氏(Euclidean)长度sum总和3prod总乘积dot内积cumsum累计元素总和cumprod累计元素总乘积cross外积(叉积)下面是矩阵操作的一些例子:a=[1,4,6,8,10]%一维矩阵a(3)%a的第三个元素ans=6»x=[123456784567891011];%二维2x8矩阵»x(3)%x的第三个元素ans=2»x([125])%x的第一、二、五个元素ans=143x(2,3)%x的第二行第三列的元素ans=6x(1:5)%x的第前五个元素ans=14253»x(10:end)%x的第十个元素后的元素ans=869710811»x(10:-1:2)%x的第十个元素和第二个元素的倒排ans=857463524»x(find(x5))%x中大于5的元素ans=67869710811»x(4)=100%给x的第四个元素重新给值x=12345678410067891011»x(3)=[]%删除第三个元素(不是二维数组)4x=Columns1through1214100364758697Columns13through1510811»x(16)=1%加入第十六个元素x=Columns1through1214100364758697Columns13through16108111当元素很多的时候,则须采用以下的方式:»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('InputFahrenheittemperature:');c=5*(f-32)/9然后在MATLAB的命令窗口中输入f2c,将会执行该命令文件,执行情况为:InputFahrenheittemperature:73c=22.7778例3-2输入x,y的值,并将它们的值互换后输出。程序如下:x=input('Inputxplease.');y=input('Inputyplease.');z=x;x=y;y=z;disp(x);5disp(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(x(1)),',x2=',num2str(x(2))]);例3-4计算分段函数的值。程序如下:x=input('请输入x的值:');ifx=0y=(x+sqrt(pi))/exp(2);elsey=log(x+sqrt(1+x*x))/2;endy例3-6某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):price200没有折扣200≤price5003%折扣500≤price10005%折扣1000≤price25008%折扣2500≤price500010%折扣5000≤price14%折扣输入所售商品的价格,求其实际销售价格。price=input('请输入商品价格');switchfix(price/100)case{0,1}%价格小于200rate=0;case{2,3,4}%价格大于等于200但小于500rate=3/100;casenum2cell(5:9)%价格大于等于500但小于1000rate=5/100;casenum2cell(10:24)%价格大于等于1000但小于2500rate=8/100;6casenum2cell(25:49)%价格大于等于2500但小于5000rate=10/100;otherwise%价格大于等于5000rate=14/100;endprice=price*(1-rate)%输出商品实际销售价格3.try语句语句格式为:try语句组1catch语句组2endtry语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。例3-7矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。程序如下:A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr%显示出错原因例5-6在同一坐标内,分别用不同线型和颜色绘制曲线y1=0.2e-0.5xcos(4πx)和y2=2e-0.5xcos(πx),标记两曲线交叉点。程序如下:x=linspace(0,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)1e-2);%查找y1与y2相等点(近似相等)的下标x1=x(k);%取y1与y2相等点的x坐标y3=0.2*exp(-0.5*x1).*cos(4*pi*x1);%求y1与y2值相等点的y坐标plot(x,y1,x,y2,'k:',x1,y3,'bp');7MATLAB提供的统计分析绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图、复数的相量图等等。例5-14绘制图形:(1)某企业全年各季度的产值(单位:万元)分别为:2347,1827,2043,3025,试用饼图作统计分析。pie([2347,1827,2043,3025]);title('饼图');legend('一季度','二季度','三季度','四季度');M文件MATLAB的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为MATLAB定义新函数,为此必须编写函数文件.函数文件是文件名后缀为M的文件,这类文件的第一行必须是一特殊字符function开始,格式为:function因变量名=函数名(自变量名)函数值的获得必须通过具体的运算实现,并赋给因变量.M文件建立方法:1.在Matlab中,点:File-New-M-file2.在编辑窗口中输入程序内容3.点:File-Save,存盘,M文件名必须与函数名一致。例:定义函数f(x1,x2)=100(x2-x12)2+(1-x1)21.建立M文件:fun.mfunctionf=fun(x)f=100*(x(2)-x(1)^2)^2+(1-x(1))^22.可以直接使用函数fun.m例如:计算f(1,2),只需在Matlab命令窗口键入命令:x=[12]fun(x)例3-4计算分段函数的值。程序如下:x=input('请输入x的值:');ifx=0y=(x+sqrt(pi))/exp(2);elsey=log(x+sqrt(1+x*x))/2;endY【例】采用模型2222125xyaa画一组椭圆。t=[0:pi/50:2*pi]’;8a=[0.5:.5:4.5];X=cos(t)*a;Y=sin(t)*sqrt(25-a.^2);plot(X,Y),axis('equal'),xlabel('x'),ylabel('y')title('AsetofEllipses')例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;x3]';y=[y1;y2;y3]';plot(x,y,x1,y1-1)一、问题提出市场上有n种资产is(i=1,2……n)可以选择,现用数额为M的相当大的资金作一个时期的投资。这n种资产在这一时期内购买is的平均收益率为ir,风险损失率为iq,投资9越分散,总的风险越小,总体风险可用投资的is中最大的一个风险来度量。购买is时要付交易费,(费率ip),当购买额不超过给定值iu时,交易费按购买iu计算。另外,假定同期银行存款利率是0r,既无交易费又无风险。(0r=5%)已知n=4时相关数据如下:isir(%)iq(%)ip(%)iu(元)S1282.51103S2211.52198S3235.54.552S4252.66.540试给该公司设计一种投资组合方案,即用给定达到资金M,有选择地购买若干种资产或存银行生息,使净收益尽可能大,使总体风险尽可能小。基本假设:1.投资数额M相当大,为了便于计算,假设M=1;2.投资越分散,总的风险越小;3.总体风险用投资项目is中最大的一个风险来度量;4.n种资产Si之间是相互独立的;5.在投资的这一时期内,ri,pi,qi,r0为定值,不受意外因素影响;6.净收益和总体风险只受ri,pi,qi影响,不受其他因素干扰。符号规定:Si——第i种投资项目,如股票,债券ri,pi,qi----分别为Si的平均收益率,交易费率,风险损失率ui----Si的交易定额0r-------同期银行利率xi-------投资项目Si的资金a-----投资风险度Q----总体收益ΔQ---总体收益的增量2.购买Si所付交易费是一个分段函数,即pixixiui交易费=piuixi≤ui而题目所给定的定值ui(