matlab第三章习题解答
matlab课后习题及答案

第一章 5题已知a=4.96,b=8.11,计算)ln(b a eba +-的值。
解:clear clc a=4.96; b=8.11;exp(a-b)/log(a+b) ans =0.0167 6题已知三角形的三边a=9.6,b=13.7, c=19.4,求三角形的面积。
提示:利用海伦公式area =))()((c s b s a s s ---计算,其中S=(A+B+C)/2. 解:clear clc a=9.6; b=13.7; c=19.4; s=(a+b+c)/2area=sqrt(s*(s-a)*(s-b)*(s-c)) s =21.3500 第二章 8题已知S=1+2+2^2+2^3+……+2^63,求S 的值 解:clear clc S=0;for i=0:1:63 S=S+2^i; end S S =1.8447e+019 9题分别用for 和while 循环结构编写程序,计算∑=-1001n 1n 2)(的值。
解:clear clc s=0;for n=1:100 s=s+(2*n-1); end s s =10000 clear clc n=1; s=0;while n<=100 s=s+(2*n-1); n=n+1; end s s =10000 第三章 2题在同一坐标下绘制函数x ,,2x-,2x xsin(x)在()∏∈,0x 的曲线。
解:clear clcx=0:0.2:pi; y1=x; y2=x.^2; y3=-(x.^2); y4=x.*sin(x);plot(x,y1,'-' ,x,y2,'-' ,x,y3,'-' ,x,y4,'-')0.511.522.53-10-8-6-4-202468109题用不同的线型和颜色在同一坐标内绘制曲线y1=2ex5.0 、y2=sin(2∏x )的图形。
MATLAB基础及其应用教程-周开利-邓春晖课后答案,第三章

第三章习题答案1.代码:a=[1 -1 -1]; roots(a)结果:ans =-0.61801.61802.代码:x=0:10;y=sin(x);xi=0:0.15:10; %选取了67个插值点,要增加n,只需减小步长即可y0=sin(xi); %算精确值y1=interp1(x,y,xi); %分段线性插值y2=interp1(x,y,xi,'spline'); %三次样条插值plot(xi,y0,'o',xi,y1,xi,y2,'-.')legend('精确值','分段线性插值','三次样条插值')结果:3.理论公式为:p=1.0332*exp(-(x+500)/7756),所以拟合模型可写为:p=a*exp(-k*x+b) 式中,a, k, b为常数,两边同时取自然对数,得:log(p)=-k*x+b+log(a)问题转化为线性模型。
注意:自然对数是log(x), 以10为底的对数是log10(x)代码:clear;x=[0 300 600 1000 1500 2000];p=[0.9689 0.9322 0.8969 0.8519 0.7989 0.7491];lnp=log(p); %转化为 p 的自然对数值,模型转化为线性模型pk=polyfit(x,lnp,1); % 线性拟合,得到模型的斜率pk(1)和常数pk(2) 模型为: p=exp(pk(1)*x)*exp(pk(2))xi=0:50:2000;p0=1.0332*exp(-(xi+500)/7756); %理论值p1=exp(pk(1)*xi+pk(2)); %拟合模型值p2=interp1(x,p,xi,'spline'); %三次样条插值plot(x,p,'p',xi,p0,xi,p1,'--',xi,p2,'-.');legend('测量值','理论值','拟合值','三次样条值');format long % 数据显示格式为15位有效数字x2=0:200:2000 % 取10个点,比较差异pp1=1.0332*exp(-(x2+500)/7756) %理论值pp2=exp(pk(1)*x2+pk(2)) % 拟合值pp3=interp1(x,p,x2,'spline') % 样条插值err1=sum(abs(pp2-pp1).^2) % 拟合值的误差绝对值总和err2=sum(abs(pp3-pp1).^2) % 样条值的误差绝对值总和结果:0200400600800100012001400160018002000从图像上,都符合得很好,但很难看出差异。
matlab课后习题答案第三章

第3章数值数组及其运算习题3及解答1 要求在闭区间]2,0[ 上产生具有10个等距采样点的一维数组。
试用两种不同的指令实现。
〖目的〗●数值计算中产生自变量采样点的两个常用指令的异同。
〖解答〗%方法一t1=linspace(0,2*pi,10)%方法二t2=0:2*pi/9:2*pi %要注意采样间距的选择,如这里的2*pi/9.t1 =Columns 1 through 70 0.6981 1.3963 2.0944 2.7925 3.4907 4.1888 Columns 8 through 104.88695.58516.2832t2 =Columns 1 through 70 0.6981 1.3963 2.0944 2.7925 3.4907 4.1888 Columns 8 through 104.88695.58516.28322 由指令rng('default'),A=rand(3,5)生成二维数组A,试求该数组中所有大于0.5的元素的位置,分别求出它们的“全下标”和“单下标”。
〖目的〗●数组下标的不同描述:全下标和单下标。
●sub2ind, int2str, disp的使用。
●随机发生器的状态控制:保证随机数的可复现性。
〖解答〗rng('default')A=rand(3,5)[ri,cj]=find(A>0.5);id=sub2ind(size(A),ri,cj);ri=ri';cj=cj';disp(' ')disp('大于0.5的元素的全下标')disp(['行号 ',int2str(ri)])disp(['列号 ',int2str(cj)])disp(' ')disp('大于0.5的元素的单下标')disp(id')A =0.8147 0.9134 0.2785 0.9649 0.95720.9058 0.6324 0.5469 0.1576 0.48540.1270 0.0975 0.9575 0.9706 0.8003大于0.5的元素的全下标行号 1 2 1 2 2 3 1 3 1 3列号 1 1 2 2 3 3 4 4 5 5大于0.5的元素的单下标1 2 4 5 8 9 10 12 13 153 采用默认全局随机流,写出产生长度为1000的“等概率双位(即取-1,+1)取值的随机码”程序指令,并给出 -1码的数目。
(完整版)第3章MATLAB矩阵处理_习题答案

3
B.y=cond(A) D.y=norm(A)
1.建立 3 阶幺矩阵的命令是
。ones(3)
2.设 A 为 2×3 矩阵,则用 zeros(size(A))建立的矩阵是
行
列的
矩阵。2,3,零
3.将 3 阶魔方矩阵主对角线元素加 10,命令是
。10*eye(3)+magic(3)
4.
可以用来描述矩阵的性能,它越接近于
D.B=diag(tril(A))
7.在 MATLAB 中定义 A=randn(5,4,3,2),则下列关于 A 的操作中正确的是(
)。D
A.y=eig(A)
B.y=reshape(A,[4 3 6 7])
C.y=cond(A)
D.y=sin(A)
8.在命令行窗口中分别输入下列命令,对应输出结果正确的是(
7 8 9
10 11 12
,
B
10
7
4
1
11 8 5 2
12
3
9
,
C
6
6
9
3
12
2 5 8 11
1
4
7
10
第 1 题: (1)
a=1:12;
A=reshape(a,3,4)
(2)
B=rot90(A)
(3)
C=rot90(A,-1) 3.用矩阵求逆法求线性方程组的解。
4
x1
3x1
2x2 x3 x2 2x3
)。 C
A.命令 x=[-2:2]',结果 x=[-2 -1 0 1 2]
B.命令 x=zeros(1,2);x>0,结果 ans=1
C.命令 y=diag(eye(3),1),2),结果 ans=[-5.0501 1.2311]
matlab第三章课后部分答案

matlab第三章课后部分答案习题三3-2 从键盘输入一个三位整数,将它反向输出。
如输入639,输出为936程序如下:m=input('请输入一个三位整数:');m1=fix(m/100);%求m的百位整数m2=rem(fix(m/10),10);%求m的十位数字m3=rem(m,10);%求m的个位数字m=m3*100+m2*10+m1%反向输出m3-3 输入一个百分制成绩,要求输出成绩等级A,B,C,D,E。
其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
要求:(1)分别用if语句和switch语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
程序如下:(1)if语句c=input('请输入成绩:');if c>=90&c<=100disp('A 成绩合理');elseif c>=80&c<=89disp('B 成绩合理');elseif c>=70&c<=79disp('C 成绩合理');elseif c>=60&c<=69disp('D 成绩合理');elseif c<60disp('E 成绩合理');elsedisp('成绩错误');end(2)switch语句c=input('请输入成绩:');switch fix(c)case num2cell(90:100)disp('A 成绩合理');case num2cell(80:89)disp('B 成绩合理');case num2cell(70:79)disp('C 成绩合理');case num2cell(60:69)disp('D 成绩合理');case num2cell(0:59)disp('E 成绩合理');otherwisedisp('成绩错误');end3-4 建立5*6矩阵,要求输出矩阵第N行元素。
matlab第二版课后习题答案

matlab第二版课后习题答案
《MATLAB第二版课后习题答案》
MATLAB是一种强大的数学软件,被广泛应用于工程、科学和金融等领域。
《MATLAB第二版》是一本经典的教材,为了帮助学生更好地掌握MATLAB的使用,书中提供了大量的课后习题。
下面我们将为大家总结一些MATLAB第二版课后习题的答案,希望能对大家的学习有所帮助。
1. 第一章课后习题答案
第一章主要介绍了MATLAB的基本操作,包括变量的定义、矩阵的运算、函数的使用等。
在课后习题中,有一道题目是要求计算一个矩阵的逆矩阵。
答案是使用MATLAB中的inv函数,将原矩阵作为参数传入即可得到逆矩阵。
2. 第二章课后习题答案
第二章介绍了MATLAB中的绘图功能,包括二维和三维图形的绘制。
有一道课后习题是要求绘制一个正弦曲线和余弦曲线,并在同一张图上显示。
答案是使用MATLAB中的plot函数,分别绘制正弦曲线和余弦曲线,并使用legend函数添加图例。
3. 第三章课后习题答案
第三章介绍了MATLAB中的控制流程,包括if语句、for循环和while循环等。
有一道课后习题是要求编写一个程序,计算1到100之间所有偶数的和。
答案是使用for循环遍历1到100之间的所有数,判断是否为偶数并累加。
通过以上几个例子,我们可以看到MATLAB第二版课后习题的答案涵盖了各种基本和高级的操作,对于学习MATLAB是非常有帮助的。
希望大家在学习MATLAB的过程中能够多加练习,掌握更多的技巧和方法。
matlab第三章课后题

(1).> a={1,2,3,4}a =[1] [2] [3] [4]结论这个是一种单元结构(2).卷积简单定义:卷积是分析数学中一种重要的运算。
设:f(x),g(x)是R1上的两个可积函数,作积分:可以证明,关于几乎所有的实数x,上述积分是存在的。
这样,随着x的不同取值,这个积分就定义了一个新函数h(x),称为函数f与g的卷积,记为h(x)=(f*g)(x)。
容易验证,(f * g)(x) = (g * f)(x),并且(f * g)(x)仍为可积函数。
这就是说,把卷积代替乘法,L1(R1)空间是一个代数,甚至是巴拿赫代数。
卷积与傅里叶变换有着密切的关系。
利用一点性质,即两函数的傅里叶变换的乘积等于它们卷积后的傅里叶变换,能使傅里叶分析中许多问题的处理得到简化。
由卷积得到的函数f*g一般要比f和g都光滑。
特别当g为具有紧致集的光滑函数,f 为局部可积时,它们的卷积f * g也是光滑函数。
利用这一性质,对于任意的可积函数f,都可以简单地构造出一列逼近于f的光滑函数列fs,这种方法称为函数的光滑化或正则化。
卷积的概念还可以推广到数列、测度以及广义函数上去。
(3).% polynomial operationp1=[1 2 1]; %¶¨Òå¶àÏîʽp2=[1 1];length_of_p1=length(p1);length_of_p2=length(p2);if (length_of_p1==length_of_p2 ) % ÅжÏÁ½¸ö¶àÏîʽÊÇ·ñ³¤¶ÈÏàµÈp1_plus_p2=p1+p2; % ¶àÏîʽÏà¼Óp1_minus_p2=p1-p2; % ¶àÏîʽÏà¼õelseif length_of_p1<length_of_p2temp_p1=[zeros(length_of_p2-length_of_p1)p1];p1_plus_p2=temp_p1+p2;p1_minus_p2=temp_p1-p2;elsetemp_p2=[zeros(length_of_p1-length_of_p2)p2];p1_plus_p2=p1+temp_p2;p1_minus_p2=p1-temp_p2;endp1_multiply_p2=conv(p1,p2);p1_divide_p2=deconv(p1,p2);p1=poly2sym(p1)p2=poly2sym(p2)p1_plus_p2=poly2sym(p1_plus_p2)p1_minus_p2=poly2sym(p1_minus_p2)p1_multiply_p2=poly2sym(p1_multiply_p2)p1_divide_p2=poly2sym(p1_divide_p2)>>duoxiangship1 =x^2 + 2*x + 1p2 =x + 1p1_plus_p2 =x^2 + 3*x + 2p1_minus_p2 =x^2 + xp1_multiply_p2 =x^3 + 3*x^2 + 3*x + 1p1_divide_p2 =x + 1总结总是出错,也不知道错那啦,他说不符合matlab的语法我在书上照着模样敲得也错,没办法!解决了这个毛病原来一点点空格还会影响!真心对她弗拉!。
matlab程序设计第三章课后习题答案资料

m a t l a b程序设计第三章课后习题答案1. p138 第6题在同一坐标轴中绘制下列两条曲线并标注两曲线交叉点。
>> t=0:0.01:pi;>> x1=t;>> y1=2*x1-0.5;>> x2=sin(3*t).*cos(t);>> y2=sin(3*t).*sin(t);>> plot(x1,y1,'r-',x2,y2,'g-')>> axis([-1,2,-1.5,1])>> hold on>> s=solve('y=2*x-0.5','x=sin(3*t)*cos(t)','y=sin(3*t)*sin(t)');>> plot(double(s.x),double(s.y),'*');截图:p366 第4题绘制极坐标曲线,并分析对曲线形状的影响。
function [ output_args ] = Untitled2( input_args )%UNTITLED2 Summary of this function goes here% Detailed explanation goes heretheta=0:0.01:2*pi;a=input('请输入a的值:');b=input('请输入b的值:');n=input('请输入n的值:');rho=a*sin(b+n*theta);polar(theta,rho,'k');end下面以a=1,b=1,n=1的极坐标图形为基础来分析a、b、n的影响。
对a的值进行改变:对比发现a只影响半径值的整倍变化对b的值进行改变:对比发现b的值使这个圆转换了一定的角度对n的值进行改变:对比发现当n>=2时有如下规律1、当n为整数时,图形变为2n个花瓣状的图形2、当n为奇数时,图形变为n个花瓣状的图形分别让n为2、3、4、5同时改变b和n的值,对比发现图形变为2n个花瓣状,并且还旋转了一定角度1 绘制sin(x)曲线,通过句柄修改曲线的颜色,要求:a)生成曲线的同时,获取句柄,再修改颜色;>> x=0:pi/50:2*pi;>> y=sin(x);>> h=plot(x,y)h =174.0101>> set(h,'color','r');截图如下:b)先生成曲线,然后再获取句柄,再完成颜色修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3-1>> N=[1 2 3 4 5]N =1 2 3 4 5(1)>> N1=2*NN1 =2 4 6 8 10(2)>> N2=N/2N2 =0.5000 1.0000 1.5000 2.0000 2.5000 (3)>> N3=1./NN3 =1.0000 0.5000 0.3333 0.2500 0.2000 (4)>> N4=1./(N.*N)N4 =1.0000 0.2500 0.1111 0.0625 0.0400 3-2m=input('请输入一个三位整数');i=fix(m/100);j=mod(fix(m/10),10);k=mod(m,10);n=100*k+10*j+i;disp('反向输出的数为');disp(n);3-3用if来实现score=input('请输入成绩');if score>100|score<0disp('成绩必须>=0且<=100');elseif score>=90&score<=100disp('A');elseif score>=80&score<=89disp('B');elseif score>=70&score<=79disp('C');elseif score>=60&score<=69disp('D');elsedisp('E');end用switch来实现score=input('请输入成绩');switch scorecase num2cell(90:100)disp('A');case num2cell(80:89)disp('B');case num2cell(70:79)disp('C');case num2cell(60:69)disp('D');case num2cell(0:59)%case{0,1,2,3,4,5}也可以 disp('E');otherwisedisp('成绩必须>=0且<=100');end注意:以下程序是错的score=input('请输入成绩');switch fix(score/10)case {9,10}disp('A');case {8}disp('B');case {7}disp('C');case {6}disp('D');case num2cell(0:5)%case{0,1,2,3,4,5}也可以disp('E');otherwisedisp('成绩必须>=0且<=100');end因为在这个程序中101到109都将对应被当作A3-4clear;A=input('请输入一个5行六列的矩阵');n=input('请输入矩阵的行数n');if n>5B=A(5,:);disp('行数大于5了');disp(B);elseB=A(n,:);disp(B);end3-5方法1:x=90*rand(1,20)+10y=fix(x)average_num=mean(y)index1=find(rem(y,2)==0&y>average_num)result=y(index1)方法2:sum=0;for i=1:20p(i)=fix(90*rand+10);%用rand函数产生20个随机数endpfor i=1:20sum=sum+p(i);%累加数组p的所有的元素endaverage_num=sum/20%数组p的所有的元素的平均数for i=1:20if(p(i)<average_num&rem(p(i),2)==0)disp(p(i))endend方法3:sum=0;for i=1:20p(i)=fix(90*rand+10);%用rand函数产生20个随机数endpfor i=1:20sum=sum+p(i);%累加数组p的所有的元素endaverage_num=sum/20%数组p的所有的元素的平均数b=find(p<average_num&rem(p,2)==0)%依次访问p中的每一个元素,如果它满足条件小于average_num %且是偶数,那么记录下它的位置p(b)3-6用循环来实现x=input('请输入20个数');n=20;maxnum=x(1);minnum=x(1);for i=1:20if x(i)>maxnummaxnum=x(i);endif x(i)<minnumminnum=x(i);enddisp('最大的数为');disp(maxnum);disp('最小的数为');disp(minnum);合法的输入输出的例子>> hw3_6a请输入20个数[ 1 2 3 4 5 6 7 8 9 10 20 19 18 17 16 15 14 13 12 11]最大的数为20最小的数为1用max和min来实现x=input('请输入20个数');n=20;maxnum=max(x);minnum=min(x);disp('最大的数为');disp(maxnum);disp('最小的数为');disp(minnum);3-7解:用顺序结构a=-3.0:0.1:3.0;y=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)+log((0.3+a)/2)用循环结构a=-3.0:0.1:3.0;m=size(a);n=m(2);%矩阵a的列数for i=1:ny(i)=(exp(0.3*a(i))-exp(-0.3*a(i)))/2*sin(a(i)+0.3)+log((0.3+a(i))/2); enddisp(y(i));end3-8(1)用循环语句实现sum1=0;n=10000;%n=100,n=1000只需修改代码中n的值得for i=1:nsum1=sum1+1/(i*i);enddisp(sum1);用向量运算n=10000;%n=100,n=1000只需修改代码中n的值得a=1:n;b=a.*a;c=1./b;sum1=sum(c);disp(sum1);直接写如下的代码也对n=10000;%n=100,n=1000只需修改代码中n的值得a=1:n;sum1=sum(1./(a.*a));disp(sum1);(2) 用循环语句实现sum1=0;n=10000;for i=1:nsum1=sum1+(-1)^(i+1)/(2*i-1);enddisp(sum1);用向量运算sum1=0;a=1:n;b=(-1).^(a+1);c=2*a-1;d=b.*(1./c);sum1=sum(d);disp(sum1);(3) 用循环语句实现sum1=0;n=10000;for i=1:nsum1=sum1+1/(4^i);enddisp(sum1);用向量运算sum1=0;n=10000;a=1:n;b=4.^(a);c=1./b;sum1=sum(c);disp(sum1);(4)用循环语句实现sum1=1;n=10000;for i=1:nsum1=sum1*((2*i)*(2*i)/((2*i-1)*(2*i+1)));enddisp(sum1);用向量运算(注意:因为这里是连乘,不是用sum而是用prod,其用法见教材133页)n=10000;a=1:n;c=2*a-1;d=2*a+1;e=b.*b./(c.*d);prod1=prod(e);disp(prod1);3-9clear;counter=0;sum=0;for i=2:49u=i*(i+1)-1;if (is_prime(u)==1)counter=counter+1;sum=sum+u;endendcountersum其中is_prime函数对应的m文件的内容为function f=is_prime(m)f=1;u=fix(sqrt(m));for(i=2:u)if(rem(m,i)==0)f=0;break;endendend3-10y=0;i=1;while y<3y=y+1/(2*i-1);endn=i-2;y=y-1/(2*(i-1)-1);disp(n);disp(y);3-11(1)function result=f3_11a(n)result=n+10*log(n.*n+5);y=f3_11a(40)/(f3_11a(30)+f3_11a(20))(2)function result=f3_11b(n)result=0;for i=1:nresult=result+i*(i+1);endy=f3_11b(40)/(f3_11b (30)+f3_11b (20))3-12function [chengji,diancheng]=matrixprod(A,B) chengji=A*B;diancheng=A.*B;例如:a=[1 2;3 4];b=[1 0 ;0 1]调用函数>> [c,d]=matrixprod(a,b)c =1 23 4d =0 4。