matlab课后知识题目解析第四章

合集下载

matlab第四章课后作业解答

matlab第四章课后作业解答

matlab第四章课后作业解答第四章习题解答1、求下列多项式的所有根,并进行验算。

(3)267235865x x x x-+-(4)4)32(3-+x 解:>> p=zeros(1,24); >> p(1)=5;p(17)=-6;p(18)=8;p(22)=-5; >> root=roots(p)root =0.97680.9388 + 0.2682i0.9388 - 0.2682i0.8554 + 0.5363i0.8554 - 0.5363i0.6615 + 0.8064i0.6615 - 0.8064i0.3516 + 0.9878i0.3516 - 0.9878i-0.0345 + 1.0150i-0.0345 - 1.0150i-0.4609 + 0.9458i-0.4609 - 0.9458i-0.1150 + 0.8340i-0.1150 - 0.8340i-0.7821 + 0.7376i-0.7821 - 0.7376i-0.9859 + 0.4106i-0.9859 - 0.4106i-1.0416-0.7927>> polyval(p,root)ans =1.0e-012 *-0.07120.0459 - 0.0081i0.0459 + 0.0081i-0.0419 + 0.0444i-0.0419 - 0.0444i0.0509 + 0.0929i0.0509 - 0.0929i-0.2059 + 0.0009i-0.2059 - 0.0009i-0.0340 + 0.0145i-0.0340 - 0.0145i0.1342 + 0.0910i0.1342 - 0.0910i0.0025 + 0.0027i0.0025 - 0.0027i-0.0077 + 0.4643i-0.0077 - 0.4643i-0.3548 - 0.1466i-0.3548 + 0.1466i-0.0251-0.0073(4) >> p1=[2 3];>> p=conv(conv(p1,p1),p1)-[0 0 0 4]; >> root=roots(p)root =-1.8969 + 0.6874i-1.8969 - 0.6874i-0.7063>> polyval(p,root)ans =1.0e-014 *-0.7105 - 0.6217i-0.7105 + 0.6217i6、求解下列方程组在区域1,0<<βα内的解-=+=.sin 2.0cos 7.0,cos 2.0sin 7.0βαββαα 解:以初值)5.0,5.0(),(00=βα进行求解>> fun=inline('[0.7*sin(x(1))+0.2*cos(x(2))-x(1),0.7*cos(x(1))-0.2*sin(x(2))-x(2)]');>> [x,f,h]=fsolve(fun,[0.5 0.5])Optimization terminated: first-order optimality is less than options.TolFun.x =0.5265 0.5079f =1.0e-007 *-0.1680 -0.2712h =1因而,该方程组的近似根为5079.0,5265.0==βα。

Matlab学习指导第四章 数值计算

Matlab学习指导第四章 数值计算

2x1-x2-x3=4
3x1+4x2-2x3=11 3x1-2x2+4x3=11
A=[ 2,-1,-1 ; 3,4,-2; 3,-2,4 ]; b=[4; 11; 11]; det(A), rank(A), rank([A,b]) x=A\b
方程组的解的三种情况:
对于方程Ax=b, A为Am×n矩阵,有三种情况: 当m=n时,此方程成为"恰定"方程,求解精确解 当m>n时,此方程成为“超定”方程,寻求最小二乘解 (直线拟
合)
1) 恰定方程组的解
当m<n时,此方程成为"欠定"方程,寻求基本解 matlab定义的除运算可以很方便地解上述三种方程 x = 方程组Ax=b (A非奇异),解为x=A\b 例4.2.1-2 求下列方程组的解 3.00 1.00 1.00
通俗地讲, 拟合就是由已知点得到一条曲线, 使该曲线 最能反映点所代表的规律.比如做欧姆定理的实验的时 候,由于实验中存在误差,最后拟合得到的曲线是一条 直线,而且肯定只有部分点落在拟合的直线上,但此时 该直线和测试点的方差最小.由拟合直线的斜率就可以 知道电阻的阻值.拟合是探测事物变化规律的办法. 插值就是根据函数上某些已知点(或实验数据),按一定 规律(插值方法)寻求未知的点,比如已知一个常用对数 y=log(x)表,是按照x=0.1:0.1:10制表的,如果按已知数 据求y=log(2.897)就可以用插值得到.表制得越密,插值 越准确.
16
对于方程组Ax=b, 采用x=A\b计算,如果方程组为yC=d, 要使用右除,即指令为y=d/C
Ax=bx'A'=b'yC=d x=A\bx'=b'/A'y=d/C 例4.2.1-1 解下列方程组 2x1+2x2+3x3=3

MATLAB程序设计与应用(第二版)第4章课后题答案

MATLAB程序设计与应用(第二版)第4章课后题答案

a=input('请输入一个4位数:');while (a<1000|a>9999)a=input('输入错误,请重新输入一个4位数:'); endb=fix(a/1000);c=rem(fix(a/100),10);d=rem(fix(a/10),10);e=rem(a,10);b=b+7;c=c+7;d=d+7;e=e+7;b=rem(b,10);c=rem(c,10);d=rem(d,10);e=rem(e,10);g=b;b=d;d=g;g=c;c=e;e=g;a=1000*b+100*c+10*d+e;disp(['加密后:',num2str(a)])逻辑表达式法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');x=0.5:1:5.5;x1=(x>=0.5&x<1.5);x2=(x>=1.5&x<3.5);x3=(x>=3.5&x<=5.5);y1=a.*(x.^2)+b.*x+c;y2=a*(sin(b)^c)+x;y3=log(abs(b+c./x));y=y1.*x1+y1.*x2+y3.*x3; disp(y)if语句法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');for x=0.5:1:5.5if x>=0.5 & x<1.5y=a.*(x.^2)+b.*x+c elseif x>=1.5 & x<3.5西安建筑科技大学陈y=a*(sin(b)^c)+xelseif x>=3.5 & x<5.5y=log(abs(b+c./x))endendswitch语句法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');for x=0.5:1:5.5switch floor(x/0.5)case {1,2}y=a.*(x.^2)+b.*x+c;case {3,4,5,6}y=a*(sin(b)^c)+x;case {7,8,9,10}y=log(abs(b+c./x));enddisp(y)end3.x=fix(rand(1,20)*89)+10;x1=mean(x);n=find(rem(x,2)==0 & x<x1);disp(['小于平均数的偶数是:',num2str(x(n))]);4.(1)A=input('请输入20个数的一个行向量:');a=A(1);b=A(1);for m=Aif a>=ma=m;elseif b<=mb=m;endenddisp(['最小数是:',num2str(a)])disp(['最大数是:',num2str(b)])(2)A=input('请输入20个数的一个行向量:');西安建筑科技大学陈maxval=max(A)minval=min(A)5.s=0;for a=0:63c=2^a;s=s+c;enddisp(['2的0次方到63次方的和是:',num2str(s)])k=0:63n=2.^ks=sum(n)6.(1)sum1=0;for n=1:100x=(-1)^(n+1)*(1/n);sum1=sum1+x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;for n=1:1000x=(-1)^(n+1)*(1/n);sum2=sum2+x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;for n=1:10000x=(-1)^(n+1)*(1/n);sum3=sum3+x;enddisp(['当n取10000时:sum=',num2str(sum3)])(2)sum1=0;n1=0;for n=1:2:100x=(-1)^n1*(1/n);sum1=sum1+x;西安建筑科技大学陈n1=n1+1;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;n2=0;for n=1:2:1000x=(-1)^n2*(1/n);sum2=sum2+x;n2=n2+1;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;n3=0;for n=1:2:10000x=(-1)^n3*(1/n);sum3=sum3+x;n3=n3+1;enddisp(['当n取10000时:sum=',num2str(sum3)])(3)sum1=0;for n=1:100x=1/(4^n);sum1=sum1+x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;for n=1:1000x=1/(4^n);sum2=sum2+x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;for n=1:10000x=1/(4^n);sum3=sum3+x;enddisp(['当n取10000时:sum=',num2str(sum3)])西安建筑科技大学陈(4)sum1=1;for n=1:100x=4*n*n/(2*n-1)/(2*n+1);sum1=sum1*x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=1;for n=1:1000x=4*n*n/(2*n-1)/(2*n+1);sum2=sum2*x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=1;for n=1:10000x=4*n*n/(2*n-1)/(2*n+1);sum3=sum3*x;enddisp(['当n取10000时:sum=',num2str(sum3)])7.函数文件function f=fibnacci(n)if n==1 | n==2f=1;elsef=fibnacci(n-1)+fibnacci(n-2); end命令文件:shulie=[];for k=1:nshulie=[shulie fibnacci(k)]; endshulie8.function [f1,f2]=juzhenji(x1,x2)f1=x1*x2;f2=x1.*x2;命令文件:西安建筑科技大学陈clear alla=input('请输入一个矩阵:');b=input('请再输入一个矩阵:(注意:两矩阵要可以相乘)'); [f1,f2]=juzhenji(a,b);disp(f1)disp(f2)9.function sum=qiuhe(n,m)if n<=1sum=0;elsesum=n^m+qiuhe(n-1,m);end命令文件:clear ally=qiuhe(100,1)+qiuhe(50,2)+qiuhe(10,-1);disp(y)10.s=0;a=[12,13,14;15,16,17;18,19,20;21,22,23];for k=afor j=1:4if rem(k(j),2)~=0 s=s+k(j);endendendss =108(2)global xx=1:2:5;y=2:2:6;sub(y);xyfunction fun=sub(z) global xz=3*x;x=x+z;西安建筑科技大学陈x =4 12 20y =2 4 6。

MATLAB数学实验 第四章 函数和方程

MATLAB数学实验 第四章 函数和方程
• 假设已知经验公式y=f(c,x)(c为参数, x为自变量), 要求根据 一批有误差的数据(xi,yi), i=0,1,…,n, 确定参数c.这样的问 题称为数据拟合。 • 最小二乘法就是求c使得均方误差最小化 Q(c)=
2 ( y f ( c , x )) i i i 0 n
• 当f关于c是线性函数,问题转化为一个线性方程组求解。 • 如果f关于c是非线性函数,问题转化为函数极值问题
3387/1943*x^2-7637646031980105/4503599627370496*x+4886217849135065/4503599627370496
• >> vpa(fun,5) ans = 1.7432*x^2-1.6959*x+1.0850
• >> xi=-0.2:0.01:0.3; • >> yi=polyval(p,xi); • >> plot(x,y,‘ro’,xi,yi)%拟合效果作图
c= lsqnonlin (Fun,c0) non-linear least squares problems.
使用迭代法搜索最优参数c. 其中Fun是以参数c(可 以是向量)为自变量的函数,表示误差向量yf(c,x)(x, y为数据),c0为参数c的近似初值(与c同 维向量),具体使请看帮助文件。
c=lsqcurvefit(Fun2,c0, x, y) 从外部输入数据, 这里Fun2为两变量c和x的函数 f(c, x)

的调用格式
x= -3 y= -2.7183
• (3) • >> fun3=inline('100*(v(2)-v(1)^2)^2+(1-v(1))^2','v') fun3 = Inline function: fun3(v) = 100*(v(2)-v(1)^2)^2+(1-v(1))^2 • >> [v,fv]=fminsearch(fun3,[1 1]) v= 1 1 fv = 0

matlab第四章课后答案

matlab第四章课后答案

%Exer‎c ise ‎1(1)‎r oots‎([1 1‎1])‎%Exe‎r cise‎1(2)‎root‎s([3 ‎0 -4 ‎0 2 -‎1])‎%Exer‎c ise ‎1(3)‎p=zer‎o s(1,‎24);‎p([1 ‎17 18‎22])‎=[5 -‎6 8 -‎5];r‎o ots(‎p)%‎E xerc‎i se 1‎(4)p‎1=[2 ‎3];p‎2=con‎v(p1,‎p1);‎p3=c‎o nv(p‎1, p2‎);p3‎(end)‎=p3(e‎n d)-4‎; %原p‎3最后一个‎分量-4‎r oots‎(p3)‎%Exe‎r cise‎2fu‎n=inl‎i ne('‎x*log‎(sqrt‎(x^2-‎1)+x)‎-sqrt‎(x^2-‎1)-0.‎5*x')‎;fze‎r o(fu‎n,2)‎%Exe‎r cise‎3fu‎n=inl‎i ne('‎x^4-2‎^x');‎fplo‎t(fun‎,[-2 ‎2]);g‎r id o‎n;fz‎e ro(f‎u n,-1‎),fze‎r o(fu‎n,1),‎f minb‎n d(fu‎n,0.5‎,1.5)‎%Ex‎e rcis‎e 4f‎u n=in‎l ine(‎'x*si‎n(1/x‎)','x‎');f‎p lot(‎f un, ‎[-0.1‎0.1]‎);x=‎z eros‎(1,10‎);for‎i=1:‎10, x‎(i)=f‎z ero(‎f un,(‎i-0.5‎)*0.0‎1);en‎d;x=‎[x,-x‎]%E‎x erci‎s e 5‎f un=i‎n line‎('[9*‎x(1)^‎2+36*‎x(2)^‎2+4*x‎(3)^2‎-36;x‎(1)^2‎-2*x(‎2)^2-‎20*x(‎3);16‎*x(1)‎-x(1)‎^3-2*‎x(2)^‎2-16*‎x(3)^‎2]','‎x');‎[a,b,‎c]=fs‎o lve(‎f un,[‎0 0 0‎])%‎E xerc‎i se 6‎fun=‎@(x)[‎x(1)-‎0.7*s‎i n(x(‎1))-0‎.2*co‎s(x(2‎)),x(‎2)-0.‎7*cos‎(x(1)‎)+0.2‎*sin(‎x(2))‎]; [a‎,b,c]‎=fsol‎v e(fu‎n,[0.‎5 0.5‎])%‎E xerc‎i se 7‎clea‎r; cl‎o se; ‎t=0:‎p i/10‎0:2*p‎i;x1‎=2+sq‎r t(5)‎*cos(‎t); y‎1=3-2‎*x1+s‎q rt(5‎)*sin‎(t);‎x2=3+‎s qrt(‎2)*co‎s(t);‎y2=6‎*sin(‎t);p‎l ot(x‎1,y1,‎x2,y2‎); gr‎i d on‎; %作图‎发现4个解‎的大致位置‎,然后分别‎求解y1‎=fsol‎v e('[‎(x(1)‎-2)^2‎+(x(2‎)-3+2‎*x(1)‎)^2-5‎,2*(x‎(1)-3‎)^2+(‎x(2)/‎3)^2-‎4]',[‎1.5,2‎])y2‎=fsol‎v e('[‎(x(1)‎-2)^2‎+(x(2‎)-3+2‎*x(1)‎)^2-5‎,2*(x‎(1)-3‎)^2+(‎x(2)/‎3)^2-‎4]',[‎1.8,-‎2])y‎3=fso‎l ve('‎[(x(1‎)-2)^‎2+(x(‎2)-3+‎2*x(1‎))^2-‎5,2*(‎x(1)-‎3)^2+‎(x(2)‎/3)^2‎-4]',‎[3.5,‎-5])‎y4=fs‎o lve(‎'[(x(‎1)-2)‎^2+(x‎(2)-3‎+2*x(‎1))^2‎-5,2*‎(x(1)‎-3)^2‎+(x(2‎)/3)^‎2-4]'‎,[4,-‎4])‎%Exer‎c ise ‎8(1)‎c lear‎;fun‎=inli‎n e('x‎.^2.*‎(x.^2‎-x-2)‎');f‎p lot(‎f un,[‎-2 2]‎);gri‎d on;‎%作图观‎察x(1‎)=-2;‎x(2)‎=fmin‎b nd(f‎u n,-1‎,-0.5‎);x(‎4)=fm‎i nbnd‎(fun,‎1,2);‎fun2‎=inli‎n e('-‎x.^2.‎*(x.^‎2-x-2‎)');‎x(3)=‎f minb‎n d(fu‎n2,-0‎.5,0.‎5);x‎(5)=2‎feva‎l(fun‎,x)%‎答案: 以‎上x(2)‎(4)是局‎部极小,x‎(1)(3‎)(5)是‎局部极大,‎从最后一句‎知道x(1‎)全局最大‎, x(4‎)最小。

《MATLAB程序设计》第4章数组及应用

《MATLAB程序设计》第4章数组及应用
数组在内 存中的地 址
0x0012FF68 a[0] 0x0012FF6C a[1] 0x0012FF70 a[2] 0x0012FF74 a[3]
数组元素
0x0012FF78 a[4]
0x0012FF7C a[5]
8
一维数组在内存中的存储形式
说明:
(1)数组名a表示内存首地址,是地址常量。
(2)数组a中每个数组元素占的内存空间根据 数组类型确定,整个数组占的内存为:数组元 素个数乘以每个元素所占内存空间如: int a[10]; 4×10=40 float b[20]; 4×20=80 double c[5]; 8×5=40 char d[8]; 1×8=8
第4章 数组
教学内容
数组的定义及应用
字符串处理函数
几个常用算法:排序算法(选择排序、
冒泡排序)
1
第4章 数组
重点、难点
数组的定义及应用
常用算法的设计(选择排序、
冒泡排序)
2
第4章 数组
教学目标
熟练掌握数组的定义及应用
掌握字符数组的定义及应用
掌握常用的字符串处理函数
熟练掌握几个常用算法:排序
算法(选择排序、冒泡排序)
分析:所谓转置就是将矩阵的行列互换,即将 a矩阵 的a[i][j]元素变成b矩阵的b[j][i]。
24
#include <iostream> using namespace std; int main() { int a[3][4] ={{1,2,3,4},{3,4,5,6},{5,6,7,8}}; int b[4][3],i,j; for(i=0;i<3;i++) //输出二维数组a[3][4] { for(j=0;j<4;j++) cout<<a[i][j]<<" "; cout<<endl; } for(i=0;i<4;i++) //将矩阵a转置给矩阵b for(j=0;j<3;j++) b[i][j]=a[j][i]; for(i=0;i<4;i++) //输出二维数组b[4][3] { for(j=0;j<3;j++) cout<<b[i][j]<<" "; cout<<endl; } return 0;}

MATLAB原理及应用实验报告第四章答案

MATLAB原理及应用实验报告第四章答案

《MATLAB 原理及应用》实验报告三.课后练习题答案1.为 ⎪⎩⎪⎨⎧<-=>+=01001x x x xx x y 编写赋值程序。

程序如下:①建立如下的M 文件:x=input('x=');%让用户通过键盘输入数值、字符串或表达式if x>0y=x+1;elseif x==0y=x;else x<0y=x-1;e nd程序执行结果如下>> kh1 %在当前工作目录下,文件名为“kh.1.m ” x=1>> yy =22.使用for ... end循环的array向量编程求出1+3+5...+100 的值程序如下:sum=0;>> for k=1:2:100sum=sum+k;end>> sumsum =25003.计算1+3+5...+100 的值,当和大于1000时终止计算。

程序如下:sum=0;for m=1:2:100; %建立1 3 5….100的向量if sum<=1000 %如果sum小于1000则可以继续加sum=sum+m; %累加elsebreak; %若sum的结果不符合条件就跳出整个循环endend结果为:sum =1024k =653.1计算从1开始多少个自然数之和超过100。

程序如下:>> sum=0;n=0;>> while sum<=100n=n+1;sum=sum+n;end结果为:n =14sum =1054.求1!+2!+3!+……+8!的值程序如下:n=1;sum=1;for m=2:8; %循环7次使得得到各次阶乘n=n*m;sum=sum+n; %累加end结果为:sum =462335.写程序,判断一年是否为闰年,符合下面两条件之一:(1990~2014)A、能被4整除,不能被100整除B、能被400整除程序如下count=0;for y=1990:2014;if((rem(y,4)==0&rem(y,100)~=0)|(rem(y,4)==0&rem(y,400)~=0));count=count+1;endend结果为:count =5。

MATLAB(第四章和第八章)

MATLAB(第四章和第八章)

第四章 线性代数问题的计算机求解一、实验内容:题目1.Jordan 矩阵是矩阵分析中一类很实用的矩阵,其一般形式为J= ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--ααα 000010001-,例如J1= ⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡-----5000015000015000015000015 试利用diag()函数给出构造J1的语句。

【分析】该题为对角矩阵的问题。

对J 要利用diag()能够构造对角矩阵和次对角矩阵的性质。

J1只需对角矩阵和次对角矩阵相加即可。

这里需要对diag()函数的调用。

如A=diag(V)---已知向量生成对角矩阵,A=diag(V,k)—生成主对角线上第k 条对角线为V 的矩阵(其中k 可为正负)【解答】:输入如下语句:>>J1=diag([-5 -5 -5 -5 -5])+diag([1 1 1 1],1) 按ENTER 键,显示如下: J1=-5 1 0 0 0 0 -5 1 0 0 0 0 -5 1 0 0 0 0 -5 1 0 0 0 0 -5题目5.试求出Vandermonde 矩阵A=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡11111234234234234234ee e e d d d d c c c c b b b ba a a a ,的行列式,并以最简的形式显示结果。

【求解】该问题有两个知识点。

一个构造是Vandermonde 矩阵,另一个是求矩阵的行列式。

前者可以利用书中编写的面向符号矩阵的vander()函数构造出Vandermonde 矩阵。

需要用到V=vander(C)来调用。

后者可以用MATLAB 的det()函数来求解,他会自动采用解析解法求出其行列式的值。

需要注意运用det()的前提是符号矩阵,本题中A 已是符号矩阵,所以不用转换。

最后,用simple()函数简化一下即可。

【解答】:(1)构造矩阵:输入如下语句:>>syms a b c d e; A=vander([a b c d e])按ENTER 键,显示如下: A=[ a^4, a^3, a^2, a, 1] [ b^4, b^3, b^2, b, 1] [ c^4, c^3, c^2, c, 1] [ d^4, d^3, d^2, d, 1] [ e^4, e^3, e^2, e, 1](2)以最简单的形式输出行列式: 输入如下语句:>>det(A),simple(ans) 按ENTER 键,显示如下: ans=(c-d)*(b-d)*(b-c)*(a-d)*(a-c)*(a-b)*(-d+e)*(e-c)*(e-b)*(e-a)15. 试求出线性代数方程组X ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡6246551223177967=⎥⎦⎤⎢⎣⎡21301012,并验证解的正确性 【分析】:该题为线性方程的计算机求解问题。

Matlab第四章详细讲解

Matlab第四章详细讲解
v21 v2 = v22
v11 v21 V = v12 v22
λ 1 v11 A .v1 = λ 1 v1 = λ 1 v12
λ 2 v 21 A.v 2 = λ 2 v 2 = λ 2 v 22
A .v1
A .v 2
a11 a12 v11 v21 a11v11 + a12v12 a11v21 + a12v22 A*V = v v = a v + a v a v + a v a21 a22 12 22 21 11 22 12 21 21 22 22
2 − at
f ( t ) = (sin
t )e
−b=fzero(fun ,x0 ,option,p1,p2)
%(1)使用字符串表示被处理函数 P1=0.1;P2=0.5;
%按泛函指令要求,这里参数必须用P1,P2表示
y_C='sin(x).^2.*exp(-P1*x)-P2*abs(x)';
1、求函数的零点 (1)字符串表达式 q=quad(fun,a,b) 2、数值积分 (2)内联函数 3、解微分方程 q=quadl(fun,a,b) (3)“M函数文件”的函数句柄
[t,y]=ode45(fun ,tspan,y0)
4.3.1 求函数的零点
例:求以下函数的零点。
零点初始 猜测值
向函数fun传 递的参数
4.4 多项式和卷积
4、多项式的根
功能:计算多 项式P的根。
R=roots(P)
p1 x + p2 x
n
n −1
+ ... + pn x + p
-27 ];

matlab1-4章作业及复习思考(1)

matlab1-4章作业及复习思考(1)

matlab1-4章作业及复习思考(1)第⼀章1.Matlab的⽂件有那些类型,各类型⽂件的作⽤是什么?答:M⽂件——在MATLAB命令窗⼝中键⼊⽂件名,可以执⾏M⽂件中的规定的计算任务或某种功能;MAT⽂件——是MATLAB的⼆进制数据⽂件,⽤于保存所使⽤的数据,是MATLAB 特有的数据存储格式;MEX⽂件——是经过MATLAB编译系统编译的⼆进制⽂件,可以被直接调⼊MATLAB系统中运⾏;图形⽂件——⽤来存储由MATLAB得到的图形⽂件。

2.说明两种M⽂件的异同答:共同点:在MATLAB命令窗⼝中键⼊⽂件名,可以执⾏M⽂件中的规定的计算任务或某种功能。

区别⼀:程序M⽂件中创建的变量都是MATLAB⼯作空间中的变量,⼯作空间的其他程序或函数可以共享;⽽函数M⽂件中创建的所有变量除了全程变量外,均为局限于函数运⾏空间内的局部变量;——类似于主程序区别⼆:函数M⽂件可以使⽤传递参数,所以函数M⽂件的调⽤式中可以有输⼊参数和输出参数,⽽程序M⽂件则没有这种功能。

——类似于函数3.如何查看Matlab的帮助答:(1) 单击MATLAB主窗⼝⼯具栏中的Help按钮。

(2) 在命令窗⼝中输⼊helpwin、helpdesk或doc。

(3) 选择Help菜单中的“MATLABHelp”选项。

MATLAB帮助命令包括help、lookfor以及模糊查询获得帮助:1、help 显⽰所有的帮助⽬录2、help ⽬录名(3) help命令名或函数名或符号第⼆章1矩阵元素的输⼊有那些⽅法?在MATLAB语⾔中,矩阵可以⽤⼏种不同的⽅式输⼊:(1) 以直接列出元素的形式输⼊;(2) 通过语句和函数产⽣;(3) 建⽴在M⽂件中;(4) 从外部的数据⽂件中装⼊;2掌握格式化输⼊数据的⽅法3总结MATLAB中⽤到的各种符号的含义及其⽤法。

矩阵转置: ⽤符号' 来表⽰,对复数矩阵,符号' 完成共扼转置。

要完成⾮共扼转置,则应使⽤“.'”或conj(z')矩阵加减:符号+和-是加减运算符。

matlab课后习题及答案详解

matlab课后习题及答案详解

第1章 MATLAB概论1.1与其他计算机语言相比较,MATLAB语言突出的特点是什么?MATLAB具有功能强大、使用方便、输入简捷、库函数丰富、开放性强等特点。

1.2 MATLAB系统由那些部分组成?MATLAB系统主要由开发环境、MATLAB数学函数库、MATLAB语言、图形功能和应用程序接口五个部分组成。

1.3 安装MATLAB时,在选择组件窗口中哪些部分必须勾选,没有勾选的部分以后如何补安装?在安装MATLAB时,安装内容由选择组件窗口中个复选框是否被勾选来决定,可以根据自己的需要选择安装内容,但基本平台(即MATLAB选项)必须安装。

第一次安装没有选择的内容在补安装时只需按照安装的过程进行,只是在选择组件时只勾选要补装的组件或工具箱即可。

1.4 MATLAB操作桌面有几个窗口?如何使某个窗口脱离桌面成为独立窗口?又如何将脱离出去的窗口重新放置到桌面上?在MATLAB操作桌面上有五个窗口,在每个窗口的右上角有两个小按钮,一个是关闭窗口的Close按钮,一个是可以使窗口成为独立窗口的Undock按钮,点击Undock按钮就可以使该窗口脱离桌面成为独立窗口,在独立窗口的view菜单中选择Dock ……菜单项就可以将独立的窗口重新防止的桌面上。

1.5 如何启动M文件编辑/调试器?在操作桌面上选择“建立新文件”或“打开文件”操作时,M文件编辑/调试器将被启动。

在命令窗口中键入edit命令时也可以启动M文件编辑/调试器。

1.6 存储在工作空间中的数组能编辑吗?如何操作?存储在工作空间的数组可以通过数组编辑器进行编辑:在工作空间浏览器中双击要编辑的数组名打开数组编辑器,再选中要修改的数据单元,输入修改内容即可。

1.7 命令历史窗口除了可以观察前面键入的命令外,还有什么用途?命令历史窗口除了用于查询以前键入的命令外,还可以直接执行命令历史窗口中选定的内容、将选定的内容拷贝到剪贴板中、将选定内容直接拷贝到M文件中。

(完整版)第4章MATLAB程序流程控制_习题答案

(完整版)第4章MATLAB程序流程控制_习题答案

第4章 MATLAB程序流程控制习题4一、选择题1.下列关于脚本文件和函数文件的描述中不正确的是()。

AA.函数文件可以在命令行窗口直接运行B.去掉函数文件第一行的定义行可转变成脚本文件C.脚本文件可以调用函数文件D.函数文件中的第一行必须以function开始2.下列程序的输出结果是()。

Dy=10;if y==10y=20;elseif y>0y=30enddisp(y)A.1 B.30 C.10 D.203.有以下语句:a=eye(5);for n=a(2:end,:)for循环的循环次数是()。

CA.3 B.4 C.5 D.104.设有程序段k=10;while kk=k-1end则下面描述中正确的是()。

AA.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次5.有以下程序段:x=reshape(1:12,3,4);m=0;n=0;for k=1:4if x(:,k)<=6m=m+1;elsen=n+1;endend则m和n的值分别是()。

CA.6 6 B.2 1 C.2 2 D.1 26.调用函数时,如果函数文件名与函数名不一致,则使用()。

A A.函数文件名B.函数名C.函数文件名或函数名均可D.@函数名7.如果有函数声明行为“function [x,y,z]=f1(a,b,c)”,则下述函数调用格式中错误的是()。

BA.x=f1(a,b,c) B.[x,y,z,w]=f1(a,b,c)C.[x,b,z]=f1(a,y,c) D.[a,b]=f1(x,y,z)8.执行语句“fn=@(x) 10*x;”,则fn是()。

AA.匿名函数B.函数句柄C.字符串D.普通函数9.执行下列语句后,变量A的值是()。

D>> f=@(x,y) log(exp(x+y));>> A=f(22,3);A.22,3B.22 C.3 D.2510.程序调试时用于设置断点的函数是()。

MATALB第四章部分课后答案

MATALB第四章部分课后答案

习题4.1绘制图形)y t--=8t)(tsin(21e≤t并在横轴标注Time纵0≤轴标注“amplitude”,图形的标题为Decaying-oscillating Exponential t=0:0.1:8;y=1-2*exp(-t).*sin(t);plot(t,y,'k')grid ontitle('Decaying-oscillating Exponential')xlabel('Time');ylabel('amplitude')4.2绘制如下函数图形并加上适当的修饰3008.0)309.0cos(5)(22.0≤≤+︒-=--t e t e t y ttt=0:0.1:30;y=5*exp(-0.2*t).*cos(0.9*t-pi/6); plot(t,y,'r:')4.3在同一张图中绘制下列函数曲线100625.0)24083.2cos(23.1)(625.0)(≤≤+︒+==t t t z t yt=0:0.1:10;y=0.625;z=1.23*cos(2.83*t+4*pi/3)+0.625;plot(t,y,'r:')hold onplot(t,z,'b:')text(0,(0.625-1.23*0.5),'这是z(t=0)的位置')text(10,4*pi/3,'这是z(t=10)的位置')4.4对应于250≤≤t 区间内,在同一图中绘制下列函数曲线tt t te t e t y e t y et y ----+︒-===25.1)128554.0cos(02.2)(02.2)(25.1)(3.033.021t=0:0.1:25;y1=1.25*exp(-t);y2=2.02*exp(-0.3*t);y3=2.02*exp(-0.3*t).*cos(0.554*t-128)+1.25*exp(-t);plot(t,y1,'k')hold onplot(t,y2,'b')hold on plot(t,y3,'r')4.5已知椭圆的长、短轴分别为a=4,b=2,用“小红点线”画椭圆 {)cos()sin(t a x t b y ==t=0:pi/100:2*pi;a=4;b=2;x=a.*cos(t);y=b.*sin(t);plot(x,y,'r.')4.6在同一图形框中绘制两个子图,分别显示下列曲线x=0:0.01:10;y1=sin(2*x).*sin(3*x);y2=0.4*x;subplot(1,2,1),plot(x,y1,'r'),title('y1')subplot(1,2,2),plot(x,y2,'b'),title('y2')4.7试将图形分割成3个子图,并分别绘制lgx在100≤区间内对数坐0≤t标、x半对数坐标和y半对数坐标的函数曲线,并加上适当的图形修饰。

matlab(第四章 函数和方程)

matlab(第四章 函数和方程)

4.1 预备知识:零点
非线性方程(组)f (x) = 0, x=(x1, x2, …, xn), f=(f1, f2, …, fm) • 数值方法主要是综合运用线性方程组和非线性方程求 解方法,常用的方法是Newton法、拟Newton法、最 小二乘法等。
4.1 预备知识:极值
设x为标量或向量,y=f(x)是xD上的标量值函数。
如果对于包含x=a的某个邻域 ,有 f(a)f(x) (f(a)f(x))对任意x成立, 则称a为f(x)的一个局 部极小(大)值点。 如果对任意xD,有f(a)f(x)(f(a)f(x))成立, 则称a为f(x)在区域D上的一个全局极小(大)值点。
4.1 预备知识:极值
4.1 预备知识:最次代数方程 (n次多项式方程) 1. 代数学基本定理可知,n次方程在复数 域上有n个根; 2. n<=4,有求根公式; n>=5无求根公式,只能借助数值解法;
代数方程的解法
• 远在公元前1700年的古巴比伦人就已有关于一、 二次方程的解法。《九章算术》(公元前50~100年) 其中“方程术”有联立一次方程组的一般解法。 • 1535年意大利数学家坦特格里亚(TorTaglia)发现 了三次方程的解法,卡当(H· Cardano)从他那里改 进了这种解法,于1545年在其名著《大术》中公 布了三次方程的公式解,称为卡当算法。
4.2 多项式MATLAB指令
• 多项式
y=polyval(p,x) 求得多项式p在x处的值y,x可以是一个 或多个点 p3=conv(p1,p2) 返回多项式p1和p2的乘积 [p3,r]=deconv(p1,p2) p3返回多项式p1除以p2的商,r返 回余项 x=roots(p) 求得多项式p的所有复根. p=polyfit(x,y,k)用k次多项式拟合向量数据(x, y),返回多 项式的降幂系数

matlab课后知识题目解析第四章

matlab课后知识题目解析第四章

第4章数值运算习题4及解答1 根据题给的模拟实际测量数据的一组t和y(t)试用数值差分diff或数值梯度gradient指令计算y (t),然后把y(t)和y (t)曲线绘制在同一张图上,观察数值求导的后果。

(模拟数据从prob_data401.mat 获得) 〖目的〗强调:要非常慎用数值导数计算。

练习mat数据文件中数据的获取。

实验数据求导的后果把两条曲线绘制在同一图上的一种方法。

〖解答〗(1)从数据文件获得数据的指令假如prob_data401.mat 文件在当前目录或搜索路径上clearload prob_data401.mat(2 )用diff求导的指令dt=t (2)-t(1);yc=diff(y)/dt; %注意yc的长度将比y短1plot(t,y,'b',t(2:e nd),yc,'r')grid on(3 )用grade nt求导的指令(图形与上相似)dt=t (2)-t(1);yc=gradie nt(y)/dt;plot(t,y,'b',t,yc,'r')grid on1说明〗不到万不得已,不要进行数值求导。

假若一定要计算数值导数,自变量增量以dt要取得比原有数据相对误差高1、2个量级上。

求导会使数据中原有的噪声放大。

2 采用数值计算方法,画出y(x):千dt在[0,10]区间曲线,并计算y(4.5)。

〖提示〗指定区间内的积分函数可用cumtrapz 指令给出。

y(4.5)在计算要求不太高的地方可用find指令算得。

泪的〗指定区间内的积分函数的数值计算法和cumtrapz 指令。

find指令的应用。

〖解答〗dt=1e-4;t=0:dt:10; t=t+(t==O)*eps;f=si n( t)./t; s=cumtrapz(f)*dt;plot(t,s,'Li neWidth',3)ii=fi nd(t==4.5);s45=s(ii)s45 =1.6541s=trapz(exp(si n(x)43))*dxs =求函数f (x)e sin x的数值积分 f (x)dx,并请米用符号计算尝试复算1提示〗数值积分均可尝试。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4章数值运算习题 4 及解答1 根据题给的模拟实际测量数据的一组t和)(t y试用数值差分diff或数值梯度gradient指令计算)(t y',然后把)(t y和)(t y'曲线绘制在同一张图上,观察数值求导的后果。

(模拟数据从prob_data401.mat获得)〖目的〗●强调:要非常慎用数值导数计算。

●练习mat数据文件中数据的获取。

●实验数据求导的后果●把两条曲线绘制在同一图上的一种方法。

〖解答〗(1)从数据文件获得数据的指令假如prob_data401.mat文件在当前目录或搜索路径上clearload prob_data401.mat(2)用diff求导的指令dt=t(2)-t(1);yc=diff(y)/dt; %注意yc的长度将比y短1plot(t,y,'b',t(2:end),yc,'r')grid on(3)用gradent 求导的指令(图形与上相似)dt=t(2)-t(1); yc=gradient(y)/dt; plot(t,y,'b',t,yc,'r') grid on〖说明〗● 不到万不得已,不要进行数值求导。

● 假若一定要计算数值导数,自变量增量dt 要取得比原有数据相对误差高1、2个量级以上。

● 求导会使数据中原有的噪声放大。

2 采用数值计算方法,画出dt ttx y x⎰=0sin )(在]10 ,0[区间曲线,并计算)5.4(y 。

〖提示〗● 指定区间内的积分函数可用cumtrapz 指令给出。

● )5.4(y 在计算要求不太高的地方可用find 指令算得。

〖目的〗● 指定区间内的积分函数的数值计算法和cumtrapz 指令。

● find 指令的应用。

〖解答〗dt=1e-4;t=0:dt:10;t=t+(t==0)*eps;f=sin(t)./t;s=cumtrapz(f)*dt; plot(t,s,'LineWidth',3) ii=find(t==4.5);s45=s(ii)s45 =3 求函数xexf3sin)(=的数值积分⎰=π) (dx xfs,并请采用符号计算尝试复算。

〖提示〗●数值积分均可尝试。

●符号积分的局限性。

〖目的〗●符号积分的局限性。

〖解答〗dx=pi/2000;x=0:dx:pi;s=trapz(exp(sin(x).^3))*dx s = 5.1370符号复算的尝试syms xf=exp(sin(x)^3); ss=int(f,x,0,pi)Warning: Explicit integral could not be found. > In sym.int at 58 ss =int(exp(sin(x)^3),x = 0 .. pi)4 用quad 求取dx x exsin 7.15⎰--ππ的数值积分,并保证积分的绝对精度为910-。

〖目的〗● quadl ,精度可控,计算较快。

● 近似积分指令trapz 获得高精度积分的内存和时间代价较高。

〖解答〗%精度可控的数值积分fx=@(x)exp(-abs(x)).*abs(sin(x)); format longsq=quadl(fx,-10*pi,1.7*pi,1e-7) sq =1.08784993815498%近似积分算法x=linspace(-10*pi,1.7*pi,1e7); dx=x(2)-x(1);st=trapz(exp(-abs(x)).*abs(sin(x)))*dx st =1.08784949973430%符号积分算法y='exp(-abs(x))*abs(sin(x))' si=vpa(int(y,-10*pi,1.7*pi),16) y =exp(-abs(x))*abs(sin(x)) si =1.0878494994129115 求函数5.08.12cos 5.1)5(sin )(206.02++-=t t t e t t f t 在区间]5,5[-中的最小值点。

〖目的〗● 理解极值概念的邻域性。

● 如何求最小值。

● 学习运用作图法求极值或最小值。

● 感受符号法的局限性。

〖解答〗(1)采用fminbnd 找极小值点在指令窗中多次运行以下指令,观察在不同数目子区间分割下,进行的极小值搜索。

然后从一系列极小值点中,确定最小值点。

clearft=@(t)sin(5*t).^2.*exp(0.06*t.*t)+1.8*abs(t+0.5)-1.5*t.*cos(2*t); disp('计算中,把[ -5,5] 分成若干搜索子区间。

')N=input(' 请输入子区间数 N ,注意使N>=1 ?');%该指令只能在指令窗中运行 t t=linspace(-5,5,N+1); f or k=1:N[tmin(k),fobj(k)]=fminbnd(ft,tt(k),tt(k+1));e nd[fobj,ii]=sort(fobj); %将目标值由小到大排列 t min=tmin(ii);%使极小值点做与目标值相应的重新排列fobj,tmin(2)最后确定的最小值点在10,,2,1 =N 的不同分割下,经观察,最后确定出最小值点是 -1.28498111480531 相应目标值是-0.18604801006545(3)采用作图法近似确定最小值点(另一方法)(A )在指令窗中运行以下指令: clearft=@(t)sin(5*t).^2.*exp(0.06*t.*t)+1.8*abs(t+0.5)-1.5*t.*cos(2*t);t=-5:0.001:5;ff=ft(t);plot(t,ff)grid on,shg(B)经观察后,把最小值附近邻域放到足够大,然后运行以下指令,那放大图形被推向前台,与此同时光标变为“十字线”,利用它点击极值点可得到最小值数据[tmin2,fobj2]=ginput(1)tmin2 =-1.28500000993975fobj2 =-0.18604799369136出现具有相同数值的刻度区域表明已达最小可分辨状态(4)符号法求最小值的尝试syms tfts=sin(5*t)^2*exp(0.06*t*t)-1.5*t*cos(2*t)+1.8*abs(t+0.5);dfdt=diff(fts,t); %求导函数tmin=solve(dfdt,t) %求导函数的零点fobj3=subs(fts,t,tmin) %得到一个具体的极值点 tmin =-.60100931947716486053884417850955e-2 fobj3 =.89909908144684551670208797723124〖说明〗● 最小值是对整个区间而言的,极小值是对邻域而言的。

● 在一个区间中寻找最小值点,对不同子区间分割进行多次搜索是必要的。

这样可以避免把极小值点误作为最小值点。

最小值点是从一系列极小值点和边界点的比较中确定的。

● 作图法求最小值点,很直观。

假若绘图时,自变量步长取得足够小,那么所求得的最小值点有相当好的精度。

● 符号法在本例中,只求出一个极值点。

其余很多极值点无法秋初,更不可能得到最小值。

6 设0)0(,1)0(,1)(2)(3)(22===+-dtdy y t y dt t dy dt t y d ,用数值法和符号法求5.0)(=t t y 。

〖目的〗● 学习如何把高阶微分方程写成一阶微分方程组。

● ode45解算器的导数函数如何采用匿名函数形式构成。

● 如何从ode45一组数值解点,求指定自变量对应的函数值。

〖解答〗(1)改写高阶微分方程为一阶微分方程组令dtt dy t y t y t y )()(),()(21==,于是据高阶微分方程可写出 ⎪⎩⎪⎨⎧++-==1)(3)(2)()()(21221t y t y dtt dy t y dt t dy(2)运行以下指令求y(t)的数值解format long ts=[0,1]; y0=[1;0];dydt=@(t,y)[y(2);-2*y(1)+3*y(2)+1];%<4>%匿名函数写成的ode45所需得导数函数[tt,yy]=ode45(dydt,ts,y0);y_05=interp1(tt,yy(:,1),0.5,'spline'), %用一维插值求y(0.5)y_05 =0.78958020790127(3)符号法求解syms t;ys=dsolve('D2y-3*Dy+2*y=1','y(0)=1,Dy(0)=0','t')ys_05=subs(ys,t,sym('0.5'))ys =1/2-1/2*exp(2*t)+exp(t)ys_05 =.78958035647060552916850705213780〖说明〗●第<4>条指令中的导数函数也可采用M函数文件表达,具体如下。

function S=prob_DyDt(t,y)S=[y(2);-2*y(1)+3*y(2)+1];7 已知矩阵A=magic(8),(1)求该矩阵的“值空间基阵”B ;(2)写出“A的任何列可用基向量线性表出”的验证程序(提示:利用rref检验)。

〖目的〗●体验矩阵值空间的基向量组的不唯一性,但它们可以互为线性表出。

●利用rref检验两个矩阵能否互为表出。

〖解答〗(1)A的值空间的三组不同“基”A=magic(8); %采用8阶魔方阵作为实验矩阵[R,ci]=rref(A);B1=A(:,ci) %直接从A中取基向量B2=orth(A) %求A值空间的正交基[V,D]=eig(A);rv=sum(sum(abs(D))>1000*eps); %非零特征值数就是矩阵的秩B3=V(:,1:rv) %取A的非零特征值对应的特征向量作基B1 =64 2 39 55 5417 47 4640 26 2732 34 3541 23 2249 15 148 58 59B2 =-0.3536 0.5401 0.3536-0.3536 -0.3858 -0.3536-0.3536 -0.2315 -0.3536-0.3536 0.0772 0.3536-0.3536 -0.0772 0.3536-0.3536 0.2315 -0.3536-0.3536 0.3858 -0.3536-0.3536 -0.5401 0.3536B3 =0.3536 0.6270 0.39130.3536 -0.4815 -0.24580.3536 -0.3361 -0.10040.3536 0.1906 -0.04510.3536 0.0451 -0.19060.3536 0.1004 0.33610.3536 0.2458 0.48150.3536 -0.3913 -0.6270(2)验证A的任何列可用B1线性表出B1_A=rref([B1,A]) %若B1_A矩阵的下5行全为0,%就表明A可以被B1的3根基向量线性表出B1_A =1 0 0 1 0 0 1 1 0 0 10 1 0 0 1 0 3 4 -3 -4 70 0 1 0 0 1 -3 -4 4 5 -70 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0B2_A=rref([B2,A])B2_A =Columns 1 through 71.0000 0 0 -91.9239 -91.9239 -91.9239 -91.9239 0 1.0000 0 51.8459 -51.8459 -51.8459 51.8459 0 0 1.0000 9.8995 -7.0711 -4.2426 1.4142 0 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 0Columns 8 through 11-91.9239 -91.9239 -91.9239 -91.923951.8459 -51.8459 -51.8459 51.8459-1.4142 4.2426 7.0711 -9.89950 0 0 00 0 0 00 0 0 00 0 0 00 0 0 0B3_A=rref([B3,A])B3_A =Columns 1 through 71.0000 0 0 91.9239 91.9239 91.9239 91.9239 0 1.0000 0 42.3447 -38.1021 -33.8594 29.6168 0 0 1.0000 12.6462 -16.8889 -21.1315 25.3741 0 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 0Columns 8 through 1191.9239 91.9239 91.9239 91.923925.3741 -21.1315 -16.8889 12.646229.6168 -33.8594 -38.1021 42.34470 0 0 00 0 0 00 0 0 00 0 0 00 0 0 0〖说明〗●magic(n)产生魔方阵。

相关文档
最新文档