收藏 分销(赏)

matlab习题.doc

上传人:人****来 文档编号:4779455 上传时间:2024-10-12 格式:DOC 页数:5 大小:30.60KB
下载 相关 举报
matlab习题.doc_第1页
第1页 / 共5页
matlab习题.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述
MATLAB习题 1.利用diag函数构建对角矩阵。 diag([1,2,3,5],0)+diag([2,2,2],1)+diag([3,3],2)+diag(1,3) 2.求解非线性方程组。 s=solve('x^3+y=31','x+y=7','x','y') 3.求解线性方程组。 a=[1,1,1;2,1,0;0,1,1]; b=[4;4;3]; linsolve(a,b) corr2cov函数把相关系数矩阵转换为协方差矩阵 a=corr2cov(b,c) a协方差矩阵,b标准差向量,c相关系数矩阵 4.计算1+2+3+4+5。 t=1; sum=0; while t<=5 sum=sum+t; t=t+1; end sum 5.已知资产组合中有3个品种,各资产预期回报、标准差及相关系数如表,计算资产协方差阵。 项目 资产A 资产B 资产C 预期回报 0.1 0.15 0.12 标准差 0.2 0.25 0.16 相关矩阵系数 资产A 1 0.8 0.4 资产B 0.8 1 0.3 资产C 0.4 0.3 1 Returns=[0.1,0.15,0.12]; STDs=[0.2,0.25,0.16]; Correlations=[1,0.8,0.4;0.8,1,0.3;0.4,0.3,1]; Covariance=corr2cov(STDs,Correlations) 6.某资产组合中有3种资产,各资产收益率分别为0.2,0.1,0.15。要求资产1与资产3的权重之和小于资产2权重,且没有卖空。求解使得上述收益率最大的投资组合。(0.4,0.5,0.1?) f=[-0.2,-0.1,-0.15]; a=[1,-1,1]; b=0; aeq=[1,1,1]; beq=1; lb=[0,0,0.1]; ub=[1,1,1]; x=linprog(f,a,b,aeq,beq,lb,ub) 7.已知,约束条件,初始值,求。 fun='-x(1)*x(2)*x(3)'; a=[-1,-2,-2;1,2,2]; b=[0;72]; x0=[10,10,10]; [x,fval]=fmincon(fun,x0,a,b) 8.资产组合中有3种资产,各资产收益率和协方差矩阵如下表所示投资者的目标函数是,其中H是协方差阵,q是超额收益向量,x是各资产权重。要求利用fmincon极小化该目标函数,且每个资产权重大于等于0,不允许卖空,且资产组合的夏普比率大于1,资产组合的收益率为0.145。 项目 资产1 资产2 资产3 协方差 资产1 0.02 0.05 0.01 资产2 0.05 0.03 0.015 资产3 0.01 0.015 0.01 预期超额收益 0.15 0.15 0.14 function [ g,ceq ] = nonlcon( x ) r=0.15*x(1)+0.15*x(2)+0.14*x(3); v=0.02*x(1)^2+0.03*x(2)^2+0.01*x(3)^2+2*0.05*x(1)*x(2)+2*0.01*x(1)*x(3)+2*0.015*x(2)*x(3); g=1-r/sqrt(v); ceq=[]; end clear; fun='0.5*(0.02*x(1)^2+0.03*x(2)^2+0.01*x(3)^2+2*0.05*x(1)*x(2)+2*0.01*x(1)*x(3)+2*0.015*x(2)*x(3))-0.15*x(1)-0.15*x(2)-0.14*x(3)'; x0=[0,0,0]; Aeq=[0.15,0.15,0.14;1,1,1]; beq=[0.145,1]; lb=[0,0,0]; ub=[1,1,1]; [x,fval]=fmincon(fun,x0,[],[],Aeq,beq,lb,ub,@nonlcon) 9.X,Y服从二元正态分布,条件如下,结果. mu=[1,-1]; sigma=[0.9,0.4;0.4,0.3]; x=[2,1]; f=mvncdf(x,mu,sigma) 10.矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。 a=[1,2,3;4,5,6]; b=[7,8,9;10,11,12]; try c=a*b; catch c=a.*b; end c lasterr %显示出错原因 11.一个三位整数各数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。 for m=100:999 m1=fix(m/100); m2=rem(fix(m/10),10); m3=rem(m,10); if m==m1^3+m2^3+m3^3 disp(m); end end 12.从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。 sum=0; cnt=0; val=input('enter a number(end in 0):'); while(val~=0) sum=sum+val; cnt=cnt+1; val=input('enter a number(end in 0):'); end if(cnt>0) sum mean=sum/cnt end 13.求[100,200]间第一个能被21整除的整数。 for n=100:200 if rem(n,21)~=0 continue end break end n 14.猜数游戏。首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数,根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则产生“Low”,等于则显示“You won”,同时退出游戏。用户最多可以猜7次。 a=round(unifrnd(1,100)); i=0; test=1; for i=1:7 b=input('your number:'); if b<a disp('low'); elseif b>a disp('high'); else disp('you won'); test=0; break; end end if test==1 disp('you lost'); end 5.素数是大于1,且除了1和它本身以外,不能被其他任何整数所整除的整数。用筛选法求素数的基本思想是:要找出2—m中划去2的倍数(不包括2),然后划去3的倍数(不包括3)……直到再划去不超过的数的倍数,剩下的数都是素数。求0~100的素数,及其和. clear; sum=5; ss=0; prime=[2,3]; for i=4:100 for j=2:fix(sqrt(i)) if rem(i,j)==0 ss=0; break; else ss=1; end end if ss==1 prime=[prime,i]; sum=sum+i; end end prime sum 16. 编写程序模拟掷骰子游戏。已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1、2、3、4、5、6个点,投两枚骰子之后,计算点数之和。如果第一次投的点数和为7或11,则游戏者获胜;如果第一次投的点数和为2、3或12,则游戏者输;如果第一次投的点数和为4、5、6、8、9或10,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到赚到该点数时算是游戏者获胜。如果投掷7次仍未赚到该点数,则游戏者输。 disp(['开始请输入yes,不开始请输入NO']); kaishi=input('开始吗?','s'); if kaishi=='yes' a1=1+(6-1)*round(rand(1)); a2=1+(6-1)*round(rand(1)); a3=a1+a2; if a3==3||a3==11 disp(['打赌者赢了']); disp(['因为第一个骰子值=',num2str(a1),';第二个的=',num2str(a2),';两个之和=',num2str(a3)]); elseif a3==2||a3==7||a3==12 disp(['打赌者输了']); disp(['因为第一个骰子值=',num2str(a1),';第二个的=',num2str(a2),';两个之和=',num2str(a3)]); elseif a3==4||a3==5||a3==6||a3==8||a3==9||a3==10 k=a3; k1=1; while k>0 k1=k1+1; disp(['第',num2str(k1-1),'次丢的结果:','第一个骰子值=',num2str(a1),';第二个的=',num2str(a2),';两个之和=',num2str(a3)]); disp(['未分出输赢,继续丢,【已丢了',num2str(k1-1),'次】']); a1=1+(6-1)*round(rand(1)); a2=1+(6-1)*round(rand(1)); a3=a1+a2; if a3==k disp(['哈哈,打赌者赢了']); disp(['因为第',num2str(k1),'次丢的结果是:','第一个骰子值=',num2str(a1),';第二个的=',num2str(a2),';两个之和=',num2str(a3)]); break; elseif a3==7 disp(['唉,打赌者输了']); disp(['因为第',num2str(k1),'次丢的结果是:','第一个骰子值=',num2str(a1),';第二个的=',num2str(a2),';两个之和=',num2str(a3)]); break; end end end end
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服