matlab编程及其应用.docx
《matlab编程及其应用.docx》由会员分享,可在线阅读,更多相关《matlab编程及其应用.docx(14页珍藏版)》请在冰点文库上搜索。
matlab编程及其应用
实验报告8
课程数学实验与数学软件实验名称matlab编程及其应用第1页
一、实验目的
1.了解m文件的创建与编辑的基本方法。
2.了解格式输入与输出函数input\disp\fprintf的格式和用法。
3.了解if\switch的结构和用法。
4.了解for\while循环的的结构和用法。
5.了解编程的基本思想,并能够应用与求解实际问题。
二、实验内容
1、用编程的方法建立下面矩阵:
1)
2)P53,5.(6)
3)P53,5.(7)
4)00000000010
00000000109
00000001098
00000010987
00000109876
00001098765
00010987654
00109876543
01098765432
10987654321
2、求微分方程的通解或特解
P97,1—3
3、用编程方法求向量组的秩、一个极大线性无关组,并将其余的向量用极大无关组来线性表示:
a1=[1,-1,2,4]
a2=[0,3,1,2]
a3=[3,0,7,14]
a4=[2,1,5,6]
a5=[1,-1,2,0]
4.求线性方程组的一个特解和一个基础解系:
5、在[-22]x[-22]上绘制下列图形:
6.试说明下面两段程序的功能,最后两个x值为多少?
7.已知sin(x)的幂级数展开公式为
试利用这个公式和第5题中的技巧,计算sin(/2)和sin(31/2)的值,并与Matlab自带的sin函数比较,误差分别多大?
为什么?
三、实验环境
(1)硬件:
PC机
(2)软件:
Windows操作系统、matlab7.0
四、实验步骤:
1、
(1)clear
clc
formatrat
fork=1:
10
forl=1:
10
ifk==l
A(k,l)=1/k;
elseifk==l+1
A(k,l)=1;
elseifl==k+1
A(k,l)=1;
else
A(k,l)=0;
end
end
end
A
(2)、clear
clc
formatrat
fork=1:
10
forl=1:
10
A(k,l)=1/(k+l)
end
end
(3)、clear
clc
fork=1:
5
forl=1:
5
ifk==l
A(k,l)=2004;
elseifl==k+1
A(k,l)=10*l;
end
end
end
A
(4)、clear
clc
fork=1:
10
forl=1:
10
ifk+l==11
A(k,l)=10;
elseifk+l==12
A(k,l)=9;
elseifk+l==13
A(k,l)=8;
elseifk+l==14
A(k,l)=7;
elseifk+l==15
A(k,l)=6;
elseifk+l==16
A(k,l)=5;
elseifk+l==17
A(k,l)=4;
elseifk+l==18
A(k,l)=3;
elseifk+l==19
A(k,l)=2;
elseifk+l==20
A(k,l)=1;
else
A(k,l)=0
end
end
end
A
2、
(1)
symsxy
y=dsolve('(x*x-1)*Dy+2*x*y-sin(x)=0','x')
(2)
symsxy
y=dsolve('D2y-2*Dy+5*y=exp(x)*sin(x)','x')
(3)
clear
clc
symsxyt
[x,y]=dsolve('Dx+x+y=0,Dy+x-y=0','x(0)=1,y(0)=0','t')
ezplot(x,y)
3、
clc
clear
a1=input('请输入第1个向量a1=');
a2=input('请输入第2个向量a2=');
a3=input('请输入第3个向量a3=');
a4=input('请输入第4个向量a4=');
a5=input('请输入第5个向量a5=');
A=[a1',a2',a3',a4',a5']
[R,S]=rref(A);
[m,n]=size(A);
r=length(S);
ifn==r
fprintf('给定的向量组是线性无关的。
\n')
else
fprintf('\n')
fprintf('给定的向量组是线性相关的。
\n')
fprintf('\n')
fprintf('给定的向量组的秩为%d。
\n',r)
fprintf('\n')
fprintf('给定的向量组的一个极大线性无关组为:
\n')
fori=1:
r
fprintf('a%d',S(i))
A(:
S(i))'
fprintf('\n')
end
b=1:
n;
fori=1:
r
b(S(i))=0;
B=find(b);
end
forj=1:
(n-r)
fprintf('a%d=',B(j))
T=R(:
B(j));
fori=1:
r
fprintf('%d*a%d+',T(i),S(i))
end
fprintf('\b\b\n')
end
end
4、
clc
clear
A=[1,1,1,0,0;1,1,-1,-1,-2;2,2,0,-1,-2;5,5,-3,-4,-8];
b=[0;1;1;4]
r1=rank(A);
r2=rank([A,b]);
n=size(A,2);
ifr1==r2
fprintf('原方程无解\n')
else
ifr1==n
fprintf('原方程有唯一解:
\n')
formatrat
x0=A\b
format
else
fprintf('原方程有无穷多个解\n')
fprintf('其中原方程的一个特解为:
\n')
[R,S]=rref([A,b]);
X0=zeros(size(A,2),1);
T=R(:
end);
fork=1:
length(S)
X0(S(k))=T(k);
end
formatrat
X0
fprintf('原方程组对应的齐次线性方程组的基础解系为:
\n')
X=null(A,'r')
format
end
end
五、实验结果与讨论、
1、
(1):
实验结果为
A=
Columns1through6
110000
11/21000
011/3100
0011/410
00011/51
000011/6
000001
000000
000000
000000
Columns7through10
0000
0000
0000
0000
0000
1000
1/7100
11/810
011/91
(2):
实验结果为:
A=
Columns1through6
1/21/31/41/51/61/7
1/31/41/51/61/71/8
1/41/51/61/71/81/9
1/51/61/71/81/91/10
1/61/71/81/91/101/11
1/71/81/91/101/111/12
1/81/91/101/111/121/13
1/91/101/111/121/131/14
1/101/111/121/131/141/15
1/111/121/131/141/151/16
Columns7through10
1/81/91/101/11
1/91/101/111/12
1/101/111/121/13
1/111/121/131/14
1/121/131/141/15
1/131/141/151/16
1/141/151/161/17
1/151/161/171/18
1/161/171/181/19
1/171/181/191/20
(3)实验结果为:
A=
200420000
020043000
002004400
000200450
00002004
(4):
实验结果为:
A=
Columns1through6
000000
000000
000000
000000
0000010
0000109
0001098
0010987
0109876
1098765
Columns7through10
00010
00109
01098
10987
9876
8765
7654
6543
5432
4321
2、
(1):
实验结果为:
y=
(-cos(x)+C1)/(x^2-1)
(2)实验结果为:
y=
exp(x)*sin(2*x)*C2+exp(x)*cos(2*x)*C1+1/3*exp(x)*sin(x)
(3)实验结果为:
x=
(1/2-1/4*2^(1/2))*exp(2^(1/2)*t)+(1/2+1/4*2^(1/2))*exp(-2^(1/2)*t)
y=
-(1/2-1/4*2^(1/2))*2^(1/2)*exp(2^(1/2)*t)+(1/2+1/4*2^(1/2))*2^(1/2)*exp(-2^(1/2)*t)-(1/2-1/4*2^(1/2))*exp(2^(1/2)*t)-(1/2+1/4*2^(1/2))*exp(-2^(1/2)*t)
3、
A=
10321
-1301-1
21752
421460
给定的向量组是线性相关的。
给定的向量组的秩为3。
给定的向量组的一个极大线性无关组为:
a1
ans=
1-124
a2
ans=
0312
a4
ans=
2156
a3=3*a1+1*a2+0*a4
a5=-1*a1+-1*a2+1*a4
4、
b=
0
1
1
4
原方程无解
六、总结
(1):
在编程中常常会把end给漏掉;
(2):
对于高代中的知识点总是记得不是太清楚,导致判断最大线性无关和秩等都不太会做。