您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 章绍辉习题1参考解答
1第一章习题参考答案1.请编写绘制以下图形的MATLAB命令,并展示绘得的图形.(1)221xy、224xy分别是椭圆2214xy的内切圆和外切圆.解答方法一(显函数和伸缩变换)221xy的显函数形式为21(11)yxx,并利用伸缩变换:224xy的横、纵坐标都是221xy的两倍,2214xy的横、纵坐标分别是221xy的两倍和一倍.编写程序时运用好MATLAB函数plot的语法格式2(x是向量,y是矩阵),以及格式4,使程序简洁.使用命令axisequal,才能绘得真正的圆.程序:x=-1:.05:1;%由40段折线连接成半圆周y=sqrt(1-x.^2);plot(x,[y;-y],'k',2.*x,[y;-y;2.*y;-2.*y],'k')axisequaltitle('方法一(显函数)')绘得的图形:2-2.5-2-1.5-1-0.500.511.522.5-2-1.5-1-0.500.511.52方法一(显函数)评价:方法一绘得的图形在外切圆和椭圆的左右两端看起来明显还是折线,而在其余地方看起来比较光滑,原因在外切圆和椭圆的左右两端,导数ddyx趋于无穷大,所以,虽然x的步长是固定的,但是在左右两端,y会比别处有更显著的变化.当然,如果令x的步长更小,例如x=-1:.01:1,绘得的图形将会看起来更光滑一些.方法二(参数方程和伸缩变换)221xy的参数方程为cos,sin(02)xtytt,关于伸缩变化和MATLAB函数plot的语法的讨论与方法一相同.特意选取参数t的步长,使得半圆周仍然由40段折线连接而成,如同方法一一样.程序:t=linspace(0,2*pi,81);%由40段折线连接成半圆周x=cos(t);y=sin(t);plot(x,y,'k',2.*x,[y;2.*y],'k')axisequaltitle('方法二(参数方程)')绘得的图形:3-2.5-2-1.5-1-0.500.511.522.5-2-1.5-1-0.500.511.52方法二(参数方程)评价:虽然半圆周由同样多的折线段连接而成,但是方法二绘得的图形看起来处处一样光滑,事实上,方法二通过等分圆心角来取得圆周上的采样点,并连结线段,所以绘得的“圆形”实际上是正多边形.(2)指数函数xye和对数函数lnyx的图像关于直线y=x对称.解答指数函数xye和对数函数lnyx互为反函数,在MATLAB函数plot的输入当中交换x和y的次序,就实现反函数,而且图像就是关于直线y=x对称.根据两点确定一条直线的原理,绘制直线段只需给出两端点的坐标.使用命令axisequal,才能绘得真正的对称图形,加上坐标网格,能增强对称效果.指数函数xye的自变量x的取值区间的左端不能太小,否则绘得的图像会在左边有一段与x轴重合.程序:x=-3:.1:3;y=exp(x);plot(x,y,'k',y,x,'k',[-3,20],[-3,20],'k')axisequal4axis([-3,20,-3,20])gridxlabel('x')ylabel('y')title('y=e^x和y=lnx的函数图像关于直线y=x对称')绘得的图形:05101520-202468101214161820xyy=ex和y=lnx的函数图像关于直线y=x对称(3)黎曼函数1,(0)(0,1)0,(0,1),0,1qxpqqxyxxx当为既约分数且当为无理数且或者的图像(要求分母q的最大值由键盘输入).解答输入的英文单词是input,通过在MATLAB帮助文档检索input这个关键词,查到实现键盘输入的MATLAB函数是input,语法格式为:(1)user_entry=input('prompt')输入项是一个字符数组,input将该字符数组显示在命令窗口,作为提示语,等待用户从键盘输入数值数组并按回车5键;input将用户从键盘输入的数值数组赋值给user_entry所代表的变量名.(2)user_entry=input('prompt','s')第二输入项是规定的字符“'s'”,表示等待用户从键盘输入的是字符数组.条件“xpq是既约分数,0x1,q0”,即p和q是正整数,pq,p和q的最大公约数等于1.例如:当q=2时,有黎曼函数的图像的一个坐标点(1/2,1/2);当q=3时,有黎曼函数的图像的两个坐标点(1/3,1/3)和(2/3,1/3);当q=4时,有黎曼函数的图像的两个坐标点(1/4,1/4)和(3/4,1/4),而x=2/4不是既约分数;……可见,在程序中应设置二重循环语句:第一重(外重)是分母q从2到由键盘输入的最大值的循环,步长为1;第二重(内重)是分子p从1到q-1的循环,步长为1,如果p和q的最大公约数等于1,就把p/q和1/q分别添加入横坐标数组x和纵坐标数组y.注意x和y需要在循环语句之前说明为空数组.当x为有理数(0x1)时,黎曼函数的图像是离散的点集;当x为无理数(0x1)或x=0和1时,黎曼函数的图像是x轴上的0到1之间的稠密点集,看起来就是x轴上从0到1之间的直线段.因此,图像应该由很多离散点以及x轴上从0到1之间的直线段共同组成.利用axis命令控制坐标图的坐标范围是[0,1][0,1],使得坐标图的下边界恰好是x轴上从0到1之间的直线段.程序:n=input('分母的最大值n=');x=[];y=[];forq=2:nforp=1:q-1ifgcd(p,q)==1x=[x,p./q];y=[y,1./q];endendendplot(x,y,'k.')axis([0,1,0,1])xlabel('x')ylabel('y')s=strcat('分母的最大值n=',num2str(n));6gtext(s);title('第一章习题1(3),黎曼函数的图像')当分母的最大值n=30时绘得的图形:00.10.20.30.40.50.60.70.80.9100.10.20.30.40.50.60.70.80.91xy分母的最大值n=30黎曼函数的图像当分母的最大值n=100时绘得的图形:700.10.20.30.40.50.60.70.80.9100.10.20.30.40.50.60.70.80.91xy分母的最大值n=100黎曼函数的图像3.两个人玩双骰子游戏,一个人掷骰子,另一个人打赌掷骰子者不能掷出所需点数,输赢的规则如下:如果第一次掷出3或11点,打赌者赢;如果第一次掷出2、7或12点,打赌者输;如果第一次掷出4,5,6,8,9或10点,记住这个点数,继续掷骰子,如果不能在掷出7点之前再次掷出该点数,则打赌者赢.请模拟双骰子游戏,要求写出算法和程序,估计打赌者赢的概率.你能从理论上计算出打赌者赢的精确概率吗?请问随着试验次数的增加,这些概率收敛吗?解答(一)算法输入模拟试验的次数n;输出打赌者赢的概率p.第1步初始化计数器k=0;第2步对i=1,2,…,n,循环进行第3~7步;第3步产生两个在1~6这6个整数中机会均等地取值的随机数,并把这两个随机数之和赋值给x;第4步如果x是3或11,那么k加1,进入下一步循环;否则,做第5步;第5步如果x不是2、7和12,那么做第6~8步;否则,直接进入下一步循环;第6步产生两个在1~6这6个整数中机会均等地取值的随机数,并把8这两个随机数之和赋值给y;第7步如果y不等于x,也不等于7,重复第6步所做的;第8步如果y等于7,那么k加1,进入下一步循环;否则,直接进入下一步循环;第9步计算概率p=k./n.(二)MATLAB程序n=10000;k=0;fori=1:nx=ceil(rand*6)+ceil(rand*6);ifx==3|x==11k=k+1;elseifx~=2&x~=7&x~=12y=ceil(rand*6)+ceil(rand*6);whiley~=x&y~=7y=ceil(rand*6)+ceil(rand*6);endify==7k=k+1;endendendp=k/n注&与&&,|与||分别是短运算符与长运算符,功能有区别,但在上面的程序中效果一样。(三)理论计算每个骰子的点数有6种结果:1,2,3,4,5,6.掷两个骰子,掷出的点数组合(,)xy共有6×6=36种结果.定义iP是点数之和xyi(2,3,,12)i的概率,则9212136PP,311236PP,410336PP,59436PP,68536PP,7636P.玩双骰子游戏,第1次掷出的点数之和为3或11,则打赌者赢,可算得此情形打赌者赢的的概率0为011322136369PP当第1次掷出的点数之和是4,5,6,8,9或10,继续掷骰子,直到掷出的点数之和是7或原来的值为止,如果先得到的点数之和是7,则打赌者赢,利用条件概率,可算得此情形打赌者赢的概率1为714,5,6,8,9,107196495jjjPPPP所以打赌者赢的理论概率P为0111962510.507079495495P(四)收敛性分析一次打赌相当于伯努利概型,记为随机变量X,取值为0(表示打赌者输)或1(表示打赌者赢),则X的期望为P,方差为(1)PP.n次打赌,即相互独立地重复试验n次,试验结果可记作随机变量序列12,,,nXXX,则打赌者赢的频率为平均值12()nXXXn.弱大数定律:0,都有12limPr()0nnXXXnP.强大数定律:12Prlim()1nnXXXnP.中心极限定理:当n时,随机变量12(1)nXXXnPnPP10的分布趋向于标准正态分布(也就是说,当n充分大的时候,随机变量12()nXXXn的分布近似于均值为P、方差为(1)PPn的正态分布).用循环语句实现以下计算:考虑试验次数n=100、400、1600和6400共四种情况(即222210,20,40,80),在每一种情况下,重复计算1000次,得到频率12()nXXXn的1000个值,用MATLAB函数std计算无偏标准差,用MATLAB函数hist绘制直方图,添加标示理论概率P的铅直线,用asix控制坐标范围.程序:n=[100,400,1600,6400];form=1:4;forj=1:1000k=0;fori=1:n(m)x=ceil(rand*6)+ceil(rand*6);ifx==3|x==11k=k+1;elseifx~=2&x~=7&x~=12y=ceil(rand*6)+ceil(rand*6);whiley~=x&y~=7y=ceil(rand*6)+ceil(rand*6);endify==7k=k+1;endendendp(j,m)=k/N(m);endendP=251/495%打赌者赢精确概率,极限分布的均值S=sqrt(P*(1-P)./n)%极限分布的均方差11sigma=std(p)%1000个频率的无偏标准差form=1:4subplot(2,2,m)hist(p(:,m),15)holdonplot([P,P],[0,250],'k')axis([min(p(:,1)),max(p(:,1)),0,250])%范围固定str=strcat('试验次数n=',num2str(n(m)));title(str)holdoffend命令窗口显示的计算结果为:P=0.50707S=0.0499950.0249980.0124990.0062494sigma=0.0517770.0254460.0121440.0063688绘得的图形(四幅直方图的横坐标范围是固定的):120.40.50.6050100150200250试验次数n=1000.40.50.6050100150200250试验次数n=4000
本文标题:章绍辉习题1参考解答
链接地址:https://www.777doc.com/doc-7052476 .html