第一章

例1.1

分别绘制函数的曲线。

x=-2*pi:pi/180:2*pi;

plot(x,2.^(-abs(x)),':',x,sin(x));

例1.2

求方程 2x5-3x3 +71x2-9x+13=0的全部根。

p=[2,0,-3,71,-9,13];

x=roots(p)

例1.3

求解线性方程组。

a=[2,3,-1;8,2,3;45,3,9];

b=[2;4;23];

x=inv(a)*b

例1.4 求积分

quad('x.*log(1+x)',0,1)

第二章

例2.1 计算表达式

的值,并将结果赋给变量x,然后显示出结果。

x=(5+cos(47*pi/180))/(1+sqrt(7)-2*i)

%计算表达式的值

例2.2 利用M文件建立MYMAT矩阵。

(1)启动有关编辑程序或MATLAB文本编辑器(见第4章),并输入待建矩阵:

MYMAT=[101,102,103,104,105,106,107,108,109;

201,202,203,204,205,206,207,208,209;

301,302,303,304,305,306,307,308,309];

(2)把输入的内容存盘(设文件名为mymatrix.m)。

(3)在MATLAB命令窗口中输入mymatrix,即运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。

例2.3 建立5阶方阵A,判断A的元素是否能被3整除。

A =[24,35,13,22,63;23,39,47,80,80; ...

90,41,80,29,10;45,57,85,62,21;37,19,31,88,76]

P=rem(A,3)==0

%判断A的元素是否可以被3整除

例2.4 在[0,3π]区间,求y=sin(x)的值。要求:

(1)消去负半波,即(π,2π)区间内的函数值置0。

(2) (,)和(,)区间内取值均为sin

方法1:

x=0:pi/100:3*pi;

y=sin(x);

y1=(x2*pi).*y;

%消去负半波

q=(x>pi/3&x<2*pi/3)|(x>7*pi/3&x<8*pi/3);

qn=~q;

y2=q*sin(pi/3)+qn.*y1;

%按要求处理第(2)步

方法2:

x=0:pi/100:3*pi;

y=sin(x);

y1=(y>=0).*y;

%消去负半波

p=sin(pi/3);

y2=(y>=p)*p+(y

%按要求处理第(2)步

例2.5 建立矩阵A,然后找出在[10,20]区间的元素的位置。

(1) 建立矩阵A。

A=[4,15,-45,10,6;56,0,17,-45,0]

A =

4

15

-45

10

6

56

0

17

-45

0

(2) 找出大于4的元素的位置。

find(A>=10 &

A<=20)

ans =

3

6

7

例2.6 建立一个字符串向量,然后对该向量做如下处理:

(1)取第1~5个字符组成的子字符串。

(2)将字符串倒过来重新排列。

(3)将字符串中的小写字母变成相应的大写字母,其余字符不变。

(4)统计字符串中小写字母的个数。

命令如下:

ch='ABc123d4e56Fg9';

subch=ch(1:5)

%取子字符串

subch =

ABc12

revch=ch(end:-1:1)

%将字符串倒排

revch =

9gF65e4d321cBA

k=find(ch>='a'&ch<='z');

%找小写字母的位置

ch(k)=ch(k)-('a'-'A');

%将小写字母变成相应的大写字母

char(ch)

ans =

ABC123D4E56FG9

length(k)

%统计小写字母的个数

ans =

4

第三章

例3.1

分别建立3×3、3×2和与矩阵A同样大小的零矩阵。

(1) 建立一个3×3零矩阵。

zeros(3)

ans =

0

0

0

0

0

0

0

0

0

(2)

建立一个3×2零矩阵。

zeros(3,2)

ans =

0

0

0

0

0

0

(3) 设A为2×3矩阵,则可以用zeros(size(A))建立一个与矩阵A同样大小零矩阵。

A=[1 2 3;4 5 6];

%产生一个2×3阶矩阵A

zeros(size(A))

%产生一个与矩阵A同样大小的零矩阵

ans =

0

0

0

0

0

0

例3.2

建立随机矩阵:

(1) 在区间[20,50]内均匀分布的5阶随机矩阵。

(2) 均值为0.6、方差为0.1的5阶正态分布随机矩阵。

x=20+(50-20)*rand(5)

y=0.6+sqrt(0.1)*randn(5)

例3.3

将101~125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。

M=100+magic(5)

例3.4

求4阶希尔伯特矩阵及其逆矩阵。

命令如下:

format rat

%以有理形式输出

H=hilb(4)

H=invhilb(4)

format short

%恢复默认输出格式

例3.5

求(x+y)5的展开式。

pascal(6)

例3.6

先建立5×5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。

A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;...

11,18,25,2,19];

D=diag(1:5);

D*A

%用D左乘A,对A的每行乘以一个指定常数

例3.7 求方阵A的逆矩阵,且验证A与A-1是互逆的。

A=[1,-1,1;5,-4,3;2,1,1];

B=inv(A);

A*B

B*A

例3.8 用求逆矩阵的方法解线性方程组。

A=[1,2,3;1,4,9;1,8,27];

b=[5,-2,6]';

x=inv(A)*b

也可以运用左除运算符“\”求解线性代数方程组。例如,本例也可以用下面的命令求解:

A=[1,2,3;1,4,9;1,8,27];

b=[5,-2,6]';

x=A\b

例3.9

用求特征值的方法解方程。

3x5-7x4+5x2+2x-18=0

p=[3,-7,0,5,2,-18];

A=compan(p);

%A的伴随矩阵

x1=eig(A)

%求A的特征值

x2=roots(p)

%直接求多项式p的零点

第四章

例4.1

建立一个命令文件将变量a,b的值互换,然后运行该命令文件。

程序1:

首先建立命令文件并以文件名exch.m存盘:

clear;

a=1:10;

b=[11,12,13,14;15,16,17,18];

c=a;a=b;b=c;

a

b

然后在MATLAB的命令窗口中输入exch,将会执行该命令文件。

程序2:

首先建立函数文件fexch.m:

function [a,b]=exch(a,b)

c=a;a=b;b=c;

然后在MATLAB的命令窗口调用该函数文件:

clear;

x=1:10;

y=[11,12,13,14;15,16,17,18];

[x,y]=fexch(x,y)

例4.2 求一元二次方程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))]);

例4.3 计算分段函数:

x=input('请输入x的值:');

if x==10

y=cos(x+1)+sqrt(x*x+1);

else

y=x*sqrt(x+sqrt(x));

end

y

也可以用单分支if语句来实现:

x=input('请输入x的值:');

y=cos(x+1)+sqrt(x*x+1);

if x~=10

y=x*sqrt(x+sqrt(x));

end

y

或用以下程序:

x=input('请输入x的值:');

if x==10

y=cos(x+1)+sqrt(x*x+1);

end

if x~=10

y=x*sqrt(x+sqrt(x));

end

y

例4.4输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。

c=input('请输入一个字符','s');

if c>='A' &

c<='Z'

disp(setstr(abs(c)+abs('a')-abs('A')));

elseif c>='a'&

c<='z'

disp(setstr(abs(c)-

abs('a')+abs('A')));

elseif c>='0'&

c<='9'

disp(abs(c)-abs('0'));

else

disp(c);

end

例4.5 某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):

price<200

没有折扣

200≤price<500

3%折扣

500≤price<1000

5%折扣

1000≤price<2500

8%折扣

2500≤price<5000

10%折扣

5000≤price

14%折扣

输入所售商品的价格,求其实际销售价格。

price=input('请输入商品价格');

switch fix(price/100)

case

{0,1}

%价格小于200

rate=0;

case

{2,3,4}

%价格大于等于200但小于500

rate=3/100;

case

num2cell(5:9)

%价格大于等于500但小于1000

rate=5/100;

case

num2cell(10:24)

%价格大于等于1000但小于2500

rate=8/100;

case

num2cell(25:49)

%价格大于等于2500但小于5000

rate=10/100;

otherwise

%价格大于等于5000

rate=14/100;

end

price=price*(1-rate)

%输出商品实际销售价格

例4.6 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。

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

%显示出错原因

例4.7 一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。

for m=100:999

m1=fix(m/100);

%求m的百位数字

m2=rem(fix(m/10),10);

%求m的十位数字

m3=rem(m,10);

%求m的个位数字

if m==m1*m1*m1+m2*m2*m2+m3*m3*m3

disp(m)

end

end

例4.8 已知

,当n=100时,求y的值。

y=0;n=100;

for i=1:n

y=y+1/i/i;

end

y

在实际MATLAB编程中,为提高程序的执行速度,常用向量运算来代替循环操作,所以上述程序通常由下面的程序来代替:

n=100;

i=1:n;

f=1./i.^2;

y=sum(f)

例4.9 设,求s=

a=0;b=3*pi;

n=1000; h=(b-a)/n;

x=a; s=0;

f0=exp(-0.5*x)*sin(x+pi/6);

for i=1:n

x=x+h;

f1=exp(-0.5*x)*sin(x+pi/6);

s=s+(f0+f1)*h/2;

f0=f1;

end

s

上述程序来源于传统的编程思想。也可以利用向量运算,从而使得程序更加简洁,更赋有MATLAB的特点。程序如下:

a=0;b=3*pi;

n=1000; h=(b-a)/n;

x=a:h:b;

f=exp(-0.5*x).*sin(x+pi/6);

for i=1:n

s(i)= (f(i)+f(i+1))*h/2;

end

s=sum(s)

例4.10 写出下列程序的执行结果。

s=0;

a=[12,13,14;15,16,17;18,19,20;21,22,23];

for k=a

s=s+k;

end

disp(s');

例4.11 从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。

sum=0;

n=0;

x=input('Enter a number (end in 0):');

while (x~=0)

sum=sum+x;

n=n+1;

x=input('Enter a number (end in 0):');

end

if (n>0)

sum

mean=sum/n

end

例4.12 根据矩阵指数的幂级数展开式求矩阵指数。

X=input('Enter X:');

E=zeros(size(X));

F=eye(size(X));

n=1;

while norm(F,1)>0

E=E+F;

F=F*X/n;

n=n+1;

end

E

expm(X)

%调用MATLAB矩阵指数函数求矩阵指数

例4.13 求[100,200]之间第一个能被21整除的整数。

for n=100:200

if rem(n,21)~=0

continue

end

break

end

n

例4.14 若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,500]之间的全部完数。

例4.15 用筛选法求某自然数范围内的全部素数。

m=input('m=');

p=1:m; p(1)=0;

for i=2:sqrt(m)

for

j=2*i:i:m

p(j)=0;

end

end

n=find(p~=0);

p(n)

关于在p中划去i的倍数(不包括i),可利用矩阵运算一步完成,从而得到更为简洁的程序:

m=input('m=');

p=2:m;

for i=2:sqrt(m)

n=find(rem(p,i)==0&p~=i);

p(n)=[];

end

p

例4.16 编写函数文件求半径为r的圆的面积和周长。

函数文件如下:

function [s,p]=fcircle(r)

%CIRCLE

calculate the area and perimeter of a circle of radii r

%r

圆半径

%s

圆面积

%p

圆周长

06年2月30日编

s=pi*r*r;

p=2*pi*r;

将以上函数文件以文件名fcircle.m存盘,然后在MATLAB命令窗口调用该函数:

[s,p]=fcircle(10)

例4.17 利用函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。

函数文件tran.m:

function [rho,theta]=tran(x,y)

rho=sqrt(x*x+y*y);

theta=atan(y/x);

调用tran.m的命令文件main1.m:

x=input('Please input

x=:');

y=input('Please input y=:');

[rho,the]=tran(x,y);

rho

the

例4.18 利用函数的递归调用,求n!。

function f=factor(n)

if n<=1

f=1;

else

f=factor(n-1)*n;

%递归调用求(n-1)!

end

在命令文件main2.m中调用函数文件factor.m求s=1!+2!+3!+4!+5!。

s=0;

for i=1:5

s=s+factor(i);

end

s

例4.19 任意排列问题。MATLAB提供的函数randperm(n),可以产生一个从整数1到整数n的任意排列。编写一个函数来实现randperm(n)函数的功能,即给出一个由任意数组成的行向量,然后产生这个行向量元素的任意排列。

function Y=rndprm1(X)

%RNDPRM1

用for循环产生一个行向量的任意排列

%RNDPRM1(X)产生行向量X的任意排列

[m,n]=size(X);

if m>1

error('RNDPRM1 accepts as inputs only

vectors');

end

Y=[];

%从一个空矩阵开始

l=n;

%X的元素个数

for i=1:n

k=1+fix(l*rand);

%随机选择Y的下一个元素的位置

x=X(k);

%被选择的元素

Y=[Y,x];

%将X添加到Y中

X(k)=[];

%从X中删除x元素

l=l-1 ;

%更新X的元素个数

end

第二个程序用函数的递归调用:

function Y=rndprm2(X)

%RNDPRM2

用递归调用产生一个行向量的任意排列

%RNDPRM2(X)产生一个X的任意排列

[m,n]=size(X);

l=n;

if m>1

error('RNDPRM2 accepts as inputs only

vectors')

end

if n<=1

Y=X;

else

k=1+fix(l*rand);

%随机选择Y的下一个元素的位置

x=X(k);

%被选择的元素

X(k)=[];

%从X中删除x元素

Z=rndprm2(X);

%将剩下的元素随机排列

Y=[Z,x];

%构造输出向量

l=l-1;

end

例4.20 nargin用法示例。

函数文件examp.m:

function fout=charray(a,b,c)

if nargin==1

fout=a;

elseif nargin==2

fout=a+b;

elseif nargin==3

fout=(a*b*c)/2;

end

命令文件mydemo.m:

x=[1:3];

y=[1;2;3];

examp(x)

examp(x,y')

examp(x,y,3)

例4.21 全局变量应用示例。

先建立函数文件wadd.m,该函数将输入的参数加权相加。

function f=wadd(x,y)

global ALPHA BETA

f=ALPHA*x+BETA*y;

在命令窗口中输入:

global ALPHA BETA

ALPHA=1;

BETA=2;

s=wadd(1,2)

matlab计算表达式 k,刘卫国 Matlab 例题 1-3章相关推荐

  1. MATLAB程序设计与应用刘卫国(第三版)课后实验答案——8

    MATLAB程序设计与应用刘卫国(第三版)课后实验答案--8 一 二 三 四 五 一 x=rand(1,30000); mu=mean(x)%平均值 sig=std(x)%标准差 M=max(x)%最 ...

  2. MATLAB程序设计与应用刘卫国(第三版)课后实验答案——13

    MATLAB程序设计与应用刘卫国(第三版)课后实验答案--13 一 二 三 四 五 六 一 h=figure('MenuBar','figure','color','r','WindowButtonD ...

  3. MATLAB程序设计与应用刘卫国(第三版)课后实验答案——6

    MATLAB程序设计与应用刘卫国(第三版)课后实验答案--6 一 二 三 四 五 一 function[e,l,s,c]=fushu(z) %fushu 复数的指数.对数.正弦.余弦的计算 e=exp ...

  4. MATLAB程序设计与应用刘卫国(第三版)课后实验答案——7

    MATLAB程序设计与应用刘卫国(第三版)课后实验答案--7 一 二 三 四 五 一 x=linspace(0,2*pi,101); y=(0.5+3.*sin(x)./(1+x.^2)).*cos( ...

  5. MATLAB程序设计与应用刘卫国(第三版)课后实验答案——12

    MATLAB程序设计与应用刘卫国(第三版)课后实验答案--12 一 二 三 四 五 一 syms n x; s1=symsum(1/(2*n-1),n,1,10) s2=symsum(n*2+x^(n ...

  6. MATLAB程序设计与应用刘卫国(第三版)课后实验答案——2

    MATLAB程序设计与应用刘卫国(第三版)课后实验答案--2 一 二 三 四 五 一 E=eye(3); R=rand(3,2); O=zeros(2,3); S=diag([1,2]); A=[E ...

  7. MATLAB程序设计与应用刘卫国(第三版)课后实验答案——3

    MATLAB程序设计与应用刘卫国(第三版)课后实验答案--3 一 二 三 四 五 六 一 A=input('请输入一个四位整数'); A=str2num(num2str(A)')'; A=A+7; A ...

  8. MATLAB程序设计与应用刘卫国(第三版)课后实验答案——4

    MATLAB程序设计与应用刘卫国(第三版)课后实验答案--4 一 二 三 四 五 本节开始使用函数与脚本文件,命名规则为testx_x_x,自定义命名后命令行窗口执行时也须对应 一 function ...

  9. matlab统计水文参数,科学网—[转载]利用MATLAB计算水文极值 - 刘朋的博文

    利用MATLAB计算水文极值(年最大值,年连续5日最大,连续干/湿日,连续极端径流低值日数) [filename,filepath]=uigetfile('*.*','请选择文件'); %计算水文极端 ...

最新文章

  1. mysql数据库搜索字符_在MySQL数据库中快速搜索字符串?
  2. “有效私域”加速,私域SaaS服务商提前蜕变
  3. Mac 访达之下方显示
  4. Tableau中的行级数据安全性——第2部分
  5. OSI七层参考模型、TCP/IP参考模型、数据封装与解封装、TCP三次握手四次挥手及面试题
  6. java字典序列化_在Python中解析序列化Java对象
  7. 密码学09(SM3算法)
  8. Java 验证码识别(1)使用 Tess4J 进行 OCR 识别
  9. php 数组处理方法,关于PHP数组问题的处理方法
  10. 揭秘微信红包:架构、抢红包算法、高并发和降级方案
  11. 漫谈格兰杰因果关系(Granger Causality)——第一章 野火烧不尽,春风吹又生
  12. Python基础速成笔记(1)(适合有C/C++的基础)
  13. mysql存储字典,详解MySQL-8.0数据字典
  14. gc日志一般关注什么_理解GC日志
  15. nginx的DR模式
  16. excel表格中单元格里面有个斜杠怎么写字?
  17. 计算机上机考试可以粘贴复制吗?
  18. ghost系统后只有一个盘了别的分区的数据怎样恢复
  19. 微信api接入验证的坑!!!
  20. anemometer mysql5.6_Anemometer 慢查询日志监控平台

热门文章

  1. NYU Depth Dataset V2
  2. ChatGPT文案应用:生成产品卖点
  3. 使用EasySpritesAnimation一键生成动画预制
  4. 最快速的寻路算法 Jump Point Search
  5. 支持向量机python代码_Python机器学习SVM支持向量机算法理论 | kTWO-个人博客
  6. Python爬取百度壁纸图片
  7. Elasticsearch 学习路线
  8. 苹果Iphone14搭载北斗导航系统,北斗VS GPS有哪些优势?
  9. 无套路免费修改简历,并推荐一个实用的简历模板
  10. PLC--中科博微NCS4000