刘卫国 Matlab 例题 1-3章

标签:
宋体黑体线性方程组表达式文本编辑器教育 |
第一章
例1.1
x=-2*pi:pi/180:2*pi;
plot(x,2.^(-abs(x)),':',x,sin(x));
例1.2
p=[2,0,-3,71,-9,13];
x=roots(p)
例1.3
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtmlclip1/01/clip_image006.gifMatlab
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)
第二章
x=(5+cos(47*pi/180))/(1+sqrt(7)-2*i)
(1)启动有关编辑程序或MATLAB文本编辑器(见第4章),并输入待建矩阵:
MYMAT=[101,102,103,104,105,106,107,108,109;
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
例2.4
(1)消去负半波,即(π,2π)区间内的函数值置0。
(2) (file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtmlclip1/01/clip_image004.gifMatlab
方法1:
x=0:pi/100:3*pi;
y=sin(x);
y1=(x<pi|x>2*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:
x=0:pi/100:3*pi;
y=sin(x);
y1=(y>=0).*y;
p=sin(pi/3);
y2=(y>=p)*p+(y<p).*y1;
例2.5
(1) 建立矩阵A。
A=[4,15,-45,10,6;56,0,17,-45,0]
A =
(2) 找出大于4的元素的位置。
find(A>=10 & A<=20)
ans =
例2.6
(2)将字符串倒过来重新排列。
(3)将字符串中的小写字母变成相应的大写字母,其余字符不变。
(4)统计字符串中小写字母的个数。
命令如下:
ch='ABc123d4e56Fg9';
subch=ch(1:5)
subch =
revch=ch(end:-1:1)
revch =
k=find(ch>='a'&ch<='z');
ch(k)=ch(k)-('a'-'A');
char(ch)
ans =
length(k)
ans =
例3.1
(1) 建立一个3×3零矩阵。
zeros(3)
ans =
(2) 建立一个3×2零矩阵。
zeros(3,2)
ans =
(3) 设A为2×3矩阵,则可以用zeros(size(A))建立一个与矩阵A同样大小零矩阵。
A=[1 2 3;4 5 6];
zeros(size(A))
ans =
例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
M=100+magic(5)
例3.4
命令如下:
format rat
H=hilb(4)
H=invhilb(4)
format short
例3.5
pascal(6)
例3.6
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
例3.7
A=[1,-1,1;5,-4,3;2,1,1];
B=inv(A);
A*B
B*A
例3.8
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtmlclip1/01/clip_image002.gifMatlab
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);
x1=eig(A)
x2=roots(p)
例4.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,将会执行该命令文件。
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)
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
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtmlclip1/01/clip_image002.gifMatlab
x=input('请输入x的值:');
if x==10
else
end
y
也可以用单分支if语句来实现:
x=input('请输入x的值:');
y=cos(x+1)+sqrt(x*x+1);
if x~=10
end
y
或用以下程序:
x=input('请输入x的值:');
if x==10
end
if x~=10
end
y
c=input('请输入一个字符','s');
if c>='A' & c<='Z'
elseif c>='a'& c<='z'
elseif c>='0'& c<='9'
else
end
例4.5
5000≤price
输入所售商品的价格,求其实际销售价格。
price=input('请输入商品价格');
switch fix(price/100)
end
price=price*(1-rate)
例4.6
A=[1,2,3;4,5,6];
B=[7,8,9;10,11,12];
try
catch
end
C
lasterr
例4.7
for m=100:999
m1=fix(m/100);
m2=rem(fix(m/10),10);
m3=rem(m,10);
if m==m1*m1*m1+m2*m2*m2+m3*m3*m3
disp(m)
end
end
y=0;n=100;
for i=1:n
y=y+1/i/i;
end
y
n=100;
i=1:n;
f=1./i.^2;
y=sum(f)
例4.9
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
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
end
s=sum(s)
s=0;
a=[12,13,14;15,16,17;18,19,20;21,22,23];
for k=a
end
disp(s');
sum=0;
n=0;
x=input('Enter a number (end in 0):');
while (x~=0)
end
if (n>0)
end
例4.12
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtmlclip1/01/clip_image010.gifMatlab
X=input('Enter X:');
E=zeros(size(X));
F=eye(size(X));
n=1;
while norm(F,1)>0
end
E
expm(X)
for n=100:200
if rem(n,21)~=0
end
break
end
n
例4.14
例4.15
p=1:m; p(1)=0;
for i=2:sqrt(m)
end
n=find(p~=0);
p(n)
m=input('m=');
p=2:m;
for i=2:sqrt(m)
end
p
function [s,p]=fcircle(r)
%CIRCLE
%r
%s
%p
06年2月30日编
s=pi*r*r;
p=2*pi*r;
[s,p]=fcircle(10)
function [rho,theta]=tran(x,y)
rho=sqrt(x*x+y*y);
theta=atan(y/x);
x=input('Please input x=:');
y=input('Please input y=:');
[rho,the]=tran(x,y);
rho
the
function f=factor(n)
if n<=1
else
end
s=0;
for i=1:5
end
s
例4.19
function Y=rndprm1(X)
%RNDPRM1
%RNDPRM1(X)产生行向量X的任意排列
[m,n]=size(X);
if m>1
end
Y=[];
l=n;
for i=1:n
k=1+fix(l*rand);
x=X(k);
end
第二个程序用函数的递归调用:
function Y=rndprm2(X)
%RNDPRM2
%RNDPRM2(X)产生一个X的任意排列
[m,n]=size(X);
l=n;
if m>1
end
if n<=1
else
k=1+fix(l*rand);
x=X(k);
X(k)=[];
end
function fout=charray(a,b,c)
if nargin==1
elseif nargin==2
elseif nargin==3
end
x=[1:3];
y=[1;2;3];
examp(x)
examp(x,y')
examp(x,y,3)
function f=wadd(x,y)
global ALPHA BETA
f=ALPHA*x+BETA*y;
global ALPHA BETA
ALPHA=1;
BETA=2;
s=wadd(1,2)