第一次练习
教学要求:熟练掌握Matlab软件的基本命令和操作,会作二维、三维几何图形,能够用Matlab软件解决微积分、线性代数与解析几何中的计算问题。
补充命令
vpa(x,n) 显示x的n位有效数字,教材102页
fplot(‘f(x)’,[a,b]) 函数作图命令,画出f(x)在区间[a,b]上的图形
在下面的题目中为你的学号的后3位(1-9班)或4位(10班以上)
1.1 计算与
程序:
syms x
limit((627*x-sin(627*x))/x^3,x,0)
结果:
1003003001/6
程序:
syms x
limit((627*x-sin(627*x))/x^3,x,inf)
结果:
0
1.2 ,求
程序:
syms x
diff(exp(x)*cos(627*x/1000),2)
结果:
-2001/1000000*exp(x)*cos(1001/1000*x)-1001/500*exp(x)*sin(1001/1000*x)
1.3 计算
程序:
dblquad(@(x,y) exp(x.^2+y.^2),0,1,0,1)
结果:
2.13935019514228
1.4 计算
程序:
syms x
int(x^4/(627^2+4*x^2))
结果:
1/12*x^3-1002001/16*x+1003003001/32*atan(2/627*x)
1.5
程序:
syms x
diff(exp(x)*cos(627*x),10)
结果:
- 9389137388146839380380277888*cos(627*x)*exp(x) -149759579095532896918284384*sin(627*x)*exp(x)
1.6 给出在的泰勒展式(最高次幂为4).
程序:
syms x
taylor(sqrt(627/1000+x),4)
结果:
(62500*627^(1/2)*1000^(1/2)*x^3)/246491883- (125*627^(1/2)*1000^(1/2)*x^2)/393129 + (627^(1/2)*1000^(1/2)*x)/1254 +(627^(1/2)*1000^(1/2))/1000
1.7 Fibonacci数列的定义是,
用循环语句编程给出该数列的前20项(要求将结果用向量的形式给出)。
程序:
x=[1,1];
for n=3:20
x(n)=x(n-1)+x(n-2);
end
x
结果:
Columns 1 through 10
1 1 2 3 5 8 13 21 34 55
Columns 11 through 20
89 144 233 377 610 987 1597 2584 4181 6765
1.8 对矩阵,求该矩阵的逆矩阵,特征值,特征向量,行列式,计算,并求矩阵(是对角矩阵),使得。
程序与结果:
a=[-2,1,1;0,2,0;-4,1,627 /1000];
inv(a)
0.2283 0.0679 -0.3642
0 0.5000 0
1.4567 -0.3642 -0.7283
eig(a)
-0.6865 + 1.5082i
-0.6865 - 1.5082i
2.0000
[p,d]=eig(a)
p =
0.2937 - 0.3372i 0.2937 +0.3372i 0.2425
0 0 0.9701
0.8944 0.8944 0.0000
注:p的列向量为特征向量
d =
-0.6865 + 1.5082i 0 0
0 -0.6865 -1.5082i 0
0 0 2.0000
a^6
11.9680 13.0080 -4.9910
0 64.0000 0
19.9640 -4.9910 -3.0100
1.9 作出如下函数的图形(注:先用M文件定义函数,再用fplot进行函数作图):
函数文件f.m:
function y=f(x)
if 0<=x&x<=1/2
y=2.0*x;
else 1/2<x&x<=1
y=2.0*(1-x);
end
程序:fplot(@f,[0,1])
1.10 在同一坐标系下作出下面两条空间曲线(要求两条曲线用不同的颜色表示)
(1) (2)
程序:
t=-10:0.01:10;
x1=cos(t);
y1=sin(t);
z1=t;
plot3(x1,y1,z1,'k');hold on
x2=cos(;
y2=sin(2*t);
z2=t;
plot3(x2,y2,z2,'r');hold off
1.11 已知,在MATLAB命令窗口中建立A、B矩阵并对其进行以下操作:
(1) 计算矩阵A的行列式的值
(2) 分别计算下列各式:
解:(1)程序:
a=[4,-2,2;-3,0,5;1,5*627,3];b=[1,3,4;-2,0,3;2,-1,1];det(a)
-81538
(2) 2*a-b
7 -7 0
-4 0 7
0 6271 5
a*b 12 10 12
7 -14 -7
-6263 0 9412
a.*b 4 -6 8
6 0 15
2 -3135 3
a*inv(b) -0.0000 0 2.0000
0.0286 1.6000 0.0857
716.8286 -626.6000 -984.5143
inv(a)*b 0.3464 0.5766 0.5382
0.0007 -0.0008 -0.0007
-0.1921 0.3460 0.9229
a^2 24 6262 4
-7 15681 9
-9398 9403 15686
A' 4 -3 1
-2 0 5005
2 5 3
1.12 已知分别在下列条件下画出的图形:
(1),分别为(在同一坐标系上作图);
(2),分别为(在同一坐标系上作图).
(1)程序:
x=-5:0.1:5;
h=inline('1/sqrt(2*pi)/s*exp(-(x-mu).^2/(2*s^2))');
y1=h(0,1001/600,x);y2=h(-1,1001/600,x);y3=h(1,1001/600,x);
plot(x,y1,'r+',x,y2,'k-',x,y3,'b*')
(2)程序:
z1=h(0,1,x);z2=h(0,2,x);z3=h(0,4,x); z4=h(0,1001/100,x);
plot(x,z1,'r+',x,z2,'k-',x,z3,'b*',x,z4, 'y:')
1.13 作出的函数图形。
程序:x=-5:0.1:5;y=-10:0.1:10;
[X Y]=meshgrid(x,y);Z=627*X.^2+Y.^4;
mesh(X,Y,Z);
1.14对于方程,先画出左边的函数在合适的区间上的图形,借助于软件中的方程求根的命令求出所有的实根,找出函数的单调区间,结合高等数学的知识说明函数为什么在这些区间上是单调的,以及该方程确实只有你求出的这些实根。最后写出你做此题的体会。
解:作图程序:(注:x范围的选择是经过试探而得到的)
x=-1.7:0.02:1.7;y=x.^5-627/200*x-0.1;
plot(x,y);grid on;
由图形观察,在x=-1.5,x=0,x=1.5附近各有一个实根
求根程序:solve('x^5-627/200*x-0.1')
结果:
-1.4906852047544424910680160298802
-0.019980020616193485540810824654811
1.500676329192316320110463906588700421518815060273901630060819255
1.495764171739511484743570420265584278874768154469167692755643546*i+ 0.004994448089159828249181473973153383352756761740138087409772356778
0.004994448089159828249181473973153383352756761740138087409772356778 -1.4957641717395114847435704202656*i
三个实根的近似值分别为:
-1.490685,-0.019980,1.500676
由图形可以看出,函数在区间单调上升,在区间单调下降,在区间单调上升。
diff('x^5-1001/200*x-0.1',x)
结果为5*x^4-1001/200
solve('5*x^4-1001/200.')得到两个实根:-1.0002499与1.0002499
可以验证导函数在内为正,函数单调上升
导函数在内为负,函数单调下降
导函数在内为正,函数单调上升
根据函数的单调性,最多有3个实根。
1.15 求的所有根。(先画图后求解)(要求贴图)
作图命令:(注:x范围的选择是经过试探而得到的)
x=-5:0.001:15;y=exp(x)-3*627*x.^2;
plot(x,y);grid on;
可以看出,在(-5,5)内可能有根,在(10,15)内有1个根
将(-5,5)内图形加细,最终发现在(-0.03,0.03)内有两个根。
用solve('exp(x)-3*627.0*x^2',x)可以求出3个根为:
.18417113274368129311145677478702e-1
13.162041092091149185726742857195
-.18084038990284796648194134222365e-1
即:-0.018417,0.018084,13.16204
第二次练习
教学要求:要求学生掌握迭代、混沌的判断方法,以及利用迭代思想解决实际问题。
2.1 设,数列是否收敛?若收敛,其值为多少?精确到8位有效数字。
解:程序代码如下(m=627):
>> f=inline('(x+627/x)/2');
x0=3;
for i=1:20;
x0=f(x0);
fprintf('%g,%g\n',i,x0);
end
运行结果:
1,3
2,3
3,3
4,3
5,3
6,3
7,3
8,3
9,3
10,3
11,3
12,3
13,3
14,3
15,3
16,3
17,3
18,3
19,3
20,3
由运行结果可以看出,,数列收敛,其值为3
2.2 求出分式线性函数的不动点,再编程判断它们的迭代序列是否收敛。
解:取m=627.
(1)程序如下:
f=inline('(x-1)/(x+627)');
x0=2;
for i=1:20;
x0=f(x0);
fprintf('%g,%g\n',i,x0);
end
运行结果:
1,0.00158983
2,-0.00159236
3,-0.00159744
4,-0.00159745
5,-0.00159745
6,-0.00159745
7,-0.00159745
8,-0.00159745
9,-0.00159745
10,-0.00159745
11,-0.00159745
12,-0.00159745
13,-0.00159745
14,-0.00159745
15,-0.00159745
16,-0.00159745
17,-0.00159745
18,-0.00159745
19,-0.00159745
20,-0.00159745
由运行结果可以看出,,分式线性函数收敛,其值为-0.00159745。易见函数的不动点为--0.00159745(吸引点)。
(2)程序如下:
f=inline('(x+393129)/(x+627)');
x0=2;
for i=1:20;
x0=f(x0);
fprintf('%g,%g\n',i,x0);
end
运行结果:
1,998.006 11,618.332
2,500.999 12,618.302
3,666.557 13,618.314
4,600.439 14,618.309
5,625.204 15,618.311
6,615.692 16,618.31
7,619.311 17,618.311
8,617.929 18,618.31
9,618.456 19,618.31
10,618.255 20,618.31
由运行结果可以看出,,分式线性函数收敛,其值为618.31。易见函数的不动点为618.31(吸引点)。
2.3 下面函数的迭代是否会产生混沌?(56页练习7(1))
解:程序如下:
f=inline('1-2*abs(x-1/2)');
x=[];
y=[];
x(1)=rand();
y(1)=0;x(2)=x(1);y(2)=f(x(1));
for i=1:100;
x(1+2*i)=y(2*i);
x(2+2*i)=x(1+2*i);
y(2+2*i)=f(x(2+2*i));
end
plot(x,y,'r');
hold on;
syms x;
ezplot(x,[0,1/2]);
ezplot(f(x),[0,1]);
axis([0,1/2,0,1]);
>> hold off
运行结果:
2.4 函数称为Logistic映射,试从“蜘蛛网”图观察它取初值为产生的迭代序列的收敛性,将观察记录填人下表,若出现循环,请指出它的周期.(56页练习8)
3.3 | 3.5 | 3.56 | 3.568 | 3.6 | 3.84 | |
序列收敛情况 | T=2 | T=4 | T=8 | T=9 | 混沌 | 混沌 |
解:当=3.3时,程序代码如下:
f=inline('3.3*x*(1-x)');
x=[];
y=[];
x(1)=0.5;
y(1)=0;x(2)=x(1);y(2)=f(x(1));
for i=1:1000;
x(1+2*i)=y(2*i);
x(2+2*i)=x(1+2*i);
y(1+2*i)=x(1+2*i);
y(2+2*i)=f(x(2+2*i));
end
plot (x,y,'r');
hold on;
syms x;
ezplot(x,[0,1]);
ezplot(f(x),[0,1]);
axis([0,1,0,1]);
hold off运行结果:
当=3.5时,上述程序稍加修改,得:
当=3.56时,得:
当=3.568时,得:
当=3.6时,得:
当=3.84时,得:
2.5 对于Martin迭代,取参数为其它的值会得到什么图形?参考下表(取自63页练习13)
m | m | m |
-m | -m | m |
-m | m/1000 | -m |
m/1000 | m/1000 | 0.5 |
m/1000 | m | -m |
m/100 | m/10 | -10 |
-m/10 | 17 | 4 |
解:取m=627;迭代次数N=20000;
在M-文件里面输入代码:
function Martin(a,b,c,N)
f=@(x,y)(y-sign(x)*sqrt(abs(b*x-c)));
g=@(x)(a-x);
m=[0;0];
for n=1:N
m(:,n+1)=[f(m(1,n),m(2,n)),g(m(1,n))];
end
plot(m(1,:),m(2,:),'kx');
axis equal
在命令窗口中执行Martin(10000,10000,10000,20000),得:
执行Martin(-10000,-10000,10000,20000),得:
执行Martin(-10000,10,-10000,20000),得:
执行Martin(10,10,0.5,20000),得:
执行Martin(10,10000,-10000,20000),得:
执行Martin(100,1000,-10,20000),得:
执行Martin(-1000,17,4,20000),得:
2.6 能否找到分式函数(其中是整数),使它产生的迭代序列(迭代的初始值也是整数)收敛到(对于为整数的学号,请改为求)。如果迭代收敛,那么迭代的初值与收敛的速度有什么关系.写出你做此题的体会.
提示:教材54页练习4的一些分析。
若分式线性函数的迭代收敛到指定的数,则为的不动点,因此
化简得:。
若为整数,易见。
取满足这种条件的不同的以及迭代初值进行编。
解:取m=10000;根据上述提示,取:
a=e=1,b=10000,c=1,d=0.
程序如下(初值为1200):
f=inline('(x+9)/(x^2+1)');
x0=1;
for i=1:100;
x0=f(x0);
fprintf('%g,%g\n',i,x0);
end
运行结果如下:
1,5
2,0.538462
3,7.3945
4,0.294449
5,8.55291
6,0.236714
7,8.74661
8,0.228979
9,8.7692
10,0.228106
11,8.77169
12,0.22801
13,8.77197
14,0.227999
15,8.772
16,0.227998
17,8.772
18,0.227998
19,8.772
20,0.227998
21,8.772
22,0.227998
23,8.772
24,0.227998
25,8.772
26,0.227998
27,8.772
28,0.227998
29,8.772
30,0.227998
31,8.772
32,0.227998
33,8.772
34,0.227998
35,8.772
36,0.227998
37,8.772
38,0.227998
39,8.772
40,0.227998
41,8.772
42,0.227998
43,8.772
44,0.227998
45,8.772
46,0.227998
47,8.772
48,0.227998
49,8.772
50,0.227998
51,8.772
52,0.227998
53,8.772
54,0.227998
55,8.772
56,0.227998
57,8.772
58,0.227998
59,8.772
60,0.227998
61,8.772
62,0.227998
63,8.772
64,0.227998
65,8.772
66,0.227998
67,8.772
68,0.227998
69,8.772
70,0.227998
71,8.772
72,0.227998
73,8.772
74,0.227998
75,8.772
76,0.227998
77,8.772
78,0.227998
79,8.772
80,0.227998
81,8.772
82,0.227998
83,8.772
84,0.227998
85,8.772
86,0.227998
87,8.772
88,0.227998
89,8.772
90,0.227998
91,8.772
92,0.227998
93,8.772
94,0.227998
95,8.772
96,0.227998
97,8.772
98,0.227998
99,8.772
100,0.227998
若初值取为1000,运行结果:
1,0.011
2,9998.8
3,0.000200036
4,10000
5,0.0002
6,10000
7,0.0002
8,10000
9,0.0002
10,10000
11,0.0002
12,10000
13,0.0002
14,10000
15,0.0002
16,10000
17,0.0002
18,10000
19,0.0002
20,10000
21,0.0002
22,10000
23,0.0002
24,10000
25,0.0002
26,10000
27,0.0002
28,10000
29,0.0002
30,10000
31,0.0002
32,10000
33,0.0002
34,10000
35,0.0002
36,10000
37,0.0002
38,10000
39,0.0002
40,10000
41,0.0002
42,10000
43,0.0002
44,10000
45,0.0002
46,10000
47,0.0002
48,10000
49,0.0002
50,10000
51,0.0002
52,10000
53,0.0002
54,10000
55,0.0002
56,10000
57,0.0002
58,10000
59,0.0002
60,10000
61,0.0002
62,10000
63,0.0002
64,10000
65,0.0002
66,10000
67,0.0002
68,10000
69,0.0002
70,10000
71,0.0002
72,10000
73,0.0002
74,10000
75,0.0002
76,10000
77,0.0002
78,10000
79,0.0002
80,10000
81,0.0002
82,10000
83,0.0002
84,10000
85,0.0002
86,10000
87,0.0002
88,10000
89,0.0002
90,10000
91,0.0002
92,10000
93,0.0002
94,10000
95,0.0002
96,10000
97,0.0002
98,10000
99,0.0002
100,10000
若初值取为-1,运行结果:
1,4999.5
2,0.0006001
3,10000
4,0.0002
5,10000
6,0.0002
7,10000
8,0.0002
9,10000
10,0.0002
11,10000
12,0.0002
13,10000
14,0.0002
15,10000
16,0.0002
17,10000
18,0.0002
19,10000
20,0.0002
21,10000
22,0.0002
23,10000
24,0.0002
25,10000
26,0.0002
27,10000
28,0.0002
29,10000
30,0.0002
31,10000
32,0.0002
33,10000
34,0.0002
35,10000
36,0.0002
37,10000
38,0.0002
39,10000
40,0.0002
41,10000
42,0.0002
43,10000
44,0.0002
45,10000
46,0.0002
47,10000
48,0.0002
49,10000
50,0.0002
51,10000
52,0.0002
53,10000
54,0.0002
55,10000
56,0.0002
57,10000
58,0.0002
59,10000
60,0.0002
61,10000
62,0.0002
63,10000
64,0.0002
65,10000
66,0.0002
67,10000
68,0.0002
69,10000
70,0.0002
71,10000
72,0.0002
73,10000
74,0.0002
75,10000
76,0.0002
77,10000
78,0.0002
79,10000
80,0.0002
81,10000
82,0.0002
83,10000
84,0.0002
85,10000
86,0.0002
87,10000
88,0.0002
89,10000
90,0.0002
91,10000
92,0.0002
93,10000
94,0.0002
95,10000
96,0.0002
97,10000
98,0.0002
99,10000
100,0.0002
第三次练习
教学要求:理解线性映射的思想,会用线性映射和特征值的思想方法解决诸如天气等实际问题。
3.1 对,,求出的通项.
程序:
A=sym('[4,2;1,3]');
[P,D]=eig(A)
Q=inv(P)
syms n;
xn=P*(D.^n)*Q*[1;2]
结果:
P =
[ 2,-1]
[ 1, 1]
D =
[ 5, 0]
[ 0, 2]
Q =
[ 1/3, 1/3]
[-1/3, 2/3]
xn =
2*5^n-2^n
5^n+2^n
3.2 对于练习1中的,,求出的通项.
程序:
A=sym('[2/5,1/5;1/10,3/10]'); %没有sym下面的矩阵就会显示为小数
[P,D]=eig(A)
Q=inv(P)
xn=P*(D.^n)*Q*[1;2]
结果:
P =
[ 2, -1]
[ 1, 1]
D =
[ 1/2, 0]
[ 0, 1/5]
Q =
[ 1/3, 1/3]
[ -1/3, 2/3]
xn =
2*(1/2)^n-(1/5)^n
(1/2)^n+(1/5)^n
3.3 对随机给出的,观察数列.该数列有极限吗?
>> A=[4,2;1,3];
a=[];
x=2*rand(2,1)-1;
for i=1:20
a(i,1:2)=x;
x=A*x;
end
for i=1:20
if a(i,1)==0
else t=a(i,2)/a(i,1);
fprintf('%g,%g\n',i,t);
end
end
结论:在迭代18次后,发现数列存在极限为0.5
1,-0.597298
2,-0.282275
3,0.0445866
4,0.277259
5,0.402189
6,0.459283
7,0.483443
8,0.493333
9,0.497326
10,0.498929
11,0.499572
12,0.499829
13,0.499931
14,0.499973
15,0.499989
16,0.499996
17,0.499998
18,0.499999
19,0.5
20,0.5
3.4 对120页中的例子,继续计算.观察及的极限是否存在. (120页练习9)
>>A=[2.1,3.4,-1.2,2.3;0.8,-0.3,4.1,2.8;2.3,7.9,-1.5,1.4;3.5,7.2,1.7,-9.0];
x0=[1;2;3;4];
x=A*x0;
fori=1:1:100
a=max(x);
b=min(x);
m=a*(abs(a)>abs(b))+b*(abs(a)<=abs(b));
y=x/m;
x=A*y;
end
x %也可以用f0,不能把x1,y一起输出
y
m
程序输出:
x1 =
0.9819
3.2889
-1.2890
-11.2213
y =
-0.0875
-0.2931
0.1149
1.0000
m =
-11.2213
结论:及的极限都存在.
3.5 求出的所有特征值与特征向量,并与上一题的结论作对比. (121页练习10)
>> A=[2.1,3.4,-1.2,2.3;0.8,-0.3,4.1,2.8;2.3,7.9,-1.5,1.4;3.5,7.2,1.7,-9.0];
[P,D]=eig(A)
P =
-0.3779 -0.8848 -0.0832 -0.3908
-0.5367 0.3575 -0.2786 0.4777
-0.6473 0.2988 0.1092 -0.7442
-0.3874 -0.0015 0.9505 0.2555
D =
7.2300 0 0 0
0 1.1352 0 0
0 0 -11.2213 0
0 0 0 -5.8439
结论:A的绝对值最大特征值等于上面的的极限相等,为什么呢?
还有,P的第三列也就是-11.2213对应的特征向量和上题求解到的y也有系数关系,两者都是-11.2213的特征向量。
3.6 设,对问题2求出若干天之后的天气状态,并找出其特点(取4位有效数字). (122页练习12)
>> A2=[3/4,1/2,1/4;1/8,1/4,1/2;1/8,1/4,1/4];
P=[0.5;0.25;0.25];
for i=1:1:20
P(:,i+1)=A2*P(:,i);
end
P
P =
Columns 1 through 14
0.5000 0.5625 0.5938 0.6035 0.6069 0.6081 0.6085 0.6086 0.6087 0.6087 0.6087 0.6087 0.6087 0.6087
0.2500 0.2500 0.2266 0.2207 0.2185 0.2178 0.2175 0.2174 0.2174 0.2174 0.2174 0.2174 0.2174 0.2174
0.2500 0.1875 0.1797 0.1758 0.1746 0.1741 0.1740 0.1739 0.1739 0.1739 0.1739 0.1739 0.1739 0.1739
Columns 15 through 21
0.6087 0.6087 0.6087 0.6087 0.6087 0.6087 0.6087
0.2174 0.2174 0.2174 0.2174 0.2174 0.2174 0.2174
0.1739 0.1739 0.1739 0.1739 0.1739 0.1739 0.1739
结论:9天后,天气状态趋于稳定P*=(0.6087,0.2174,0.1739)T
3.7 对于问题2,求出矩阵的特征值与特征向量,并将特征向量与上一题中的结论作对比. (122页练习14)
>> [P,D]=eig(A2)
P =
-0.9094 -0.8069 0.3437
-0.3248 0.5116 -0.8133
-0.2598 0.2953 0.4695
D =
1.0000 0 0
0 0.3415 0
0 0 -0.0915
分析:事实上,q=k(-0.9094, -0.3248, -0.2598)T均为特征向量,而上题中P*的3个分量之和为1,可令k(-0.9094, -0.3248, -0.2598)T=1,得k=-0.6696.有q=(0.6087, 0.2174, 0.1739),与P*一致。
3.8 对问题1,设为的两个线性无关的特征向量,若
,具体求出上述的,将表示成的线性组合,求的具体表达式,并求时的极限,与已知结论作比较. (123页练习16)
>> A=[3/4,7/18;1/4,11/18];
[P,D]=eig(A);
syms k pk;
a=solve(‘u*P(1,1)+v*P(1,2)-1/2’,’u*P(2,1)+v*P(2,2)-1/2’,’u’,’v’);
pk=a.u*D(1,1).^k*P(:,1)+a.v*D(2,2).^k*P(:,2)
pk =
-5/46*(13/36)^k+14/23
5/46*(13/36)^k+9/23
或者:
p0=[1/2;1/2];
[P,D]=eig(sym(A));
B=inv(sym(P))*p0
B =
5/46
9/23
syms k
pk=B(1,1)*D(1,1).^k*P(:,1)+B(2,1)*D(2,2).^k*P(:,2)
pk =
-5/46*(13/36)^k+14/23
5/46*(13/36)^k+9/23
>>vpa(limit(pk,k,100),10)
ans
=
.6086956522
.3913043478
结论:和用练习12中用迭代的方法求得的结果是一样的。
第四次练习
教学要求:会利用软件求勾股数,并且能够分析勾股数之间的关系。会解简单的近似计算问题。
4.1 求满足,的所有勾股数,能否类似于(11.8),把它们用一个公式表示出来?
程序:for b=1:998
a=sqrt((b+2)^2-b^2);
if(a==floor(a))
fprintf('a=%i,b=%i,c=%i\n',a,b,b+2)
end
end
运行结果:
a=4,b=3,c=5
a=6,b=8,c=10
a=8,b=15,c=17
a=10,b=24,c=26
a=12,b=35,c=37
a=14,b=48,c=50
a=16,b=63,c=65
a=18,b=80,c=82
a=20,b=99,c=101
a=22,b=120,c=122
a=24,b=143,c=145
a=26,b=168,c=170
a=28,b=195,c=197
a=30,b=224,c=226
a=32,b=255,c=257
a=34,b=288,c=290
a=36,b=323,c=325
a=38,b=360,c=362
a=40,b=399,c=401
a=42,b=440,c=442
a=44,b=483,c=485
a=46,b=528,c=530
a=48,b=575,c=577
a=50,b=624,c=626
a=52,b=675,c=677
a=54,b=728,c=730
a=56,b=783,c=785
a=58,b=840,c=842
a=60,b=899,c=901
a=62,b=960,c=962
勾股数,的解是:
以下是推导过程:
由,有
显然,,从而是2的倍数.设,代入上式得到:
因为,从而.
4.2 将上一题中改为,,,,分别找出所有的勾股数.将它们与时的结果进行比较,然后用公式表达其结果。
(1)时通项:
a=8,b=6,c=10
a=12,b=16,c=20
a=16,b=30,c=34
a=20,b=48,c=52
a=24,b=70,c=74
a=28,b=96,c=100
a=32,b=126,c=130
a=36,b=160,c=164
a=40,b=198,c=202
a=44,b=240,c=244
a=48,b=286,c=290
a=52,b=336,c=340
a=56,b=390,c=394
a=60,b=448,c=452
a=64,b=510,c=514
a=68,b=576,c=580
a=72,b=646,c=650
a=76,b=720,c=724
a=80,b=798,c=802
a=84,b=880,c=884
a=88,b=966,c=970
(2)5时通项:
a=15,b=20,c=25
a=25,b=60,c=65
a=35,b=120,c=125
a=45,b=200,c=205
a=55,b=300,c=305
a=65,b=420,c=425
a=75,b=560,c=565
a=85,b=720,c=725
a=95,b=900,c=905
(3)6时通项
a=12,b=9,c=15
a=18,b=24,c=30
a=24,b=45,c=51
a=30,b=72,c=78
a=36,b=105,c=111
a=42,b=144,c=150
a=48,b=189,c=195
a=54,b=240,c=246
a=60,b=297,c=303
a=66,b=360,c=366
a=72,b=429,c=435
a=78,b=504,c=510
a=84,b=585,c=591
a=90,b=672,c=678
a=96,b=765,c=771
a=102,b=864,c=870
a=108,b=969,c=975
(4)7时通项
a=21,b=28,c=35
a=35,b=84,c=91
a=49,b=168,c=175
a=63,b=280,c=287
a=77,b=420,c=427
a=91,b=588,c=595
a=105,b=784,c=791
综上:当c-b=k为奇数时,通项
当c-b=k为偶数时,通项
4.3 对,(),对哪些存在本原勾股数?(140页练习12)
程序:for k=1:200
for b=1:999
a=sqrt((b+k)^2-b^2);
if((a==floor(a))&gcd(gcd(a,b),(b+k))==1)
fprintf('%i,',k);
break;
end
end
end
运行结果:1,2,8,9,18,25,32,49,50,72,81,98,121,128,162,169,200,
4.4 设方程(11.15)的解构成数列,观察数列,,
,,.你能得到哪些等式?试根据这些等式推导出关于的递推关系式. (142页练习20)
解:1000以内解构成的数列,, , , 如下:
n 1 2 3 4 5 6
2 7 26 97 362 1351
1 4 15 56 209 780
3 11 41 153 571 2131
4 15 56 209 780 2911
1 3 11 41 153 571
我们发现这些解的关系似乎是:
=
=
因为=,所以。
有以下结论:
(4.1)
可以看成一个线性映射,令
,
(4.1)可写成:
4.5 选取对随机的,根据的概率求出的近似值。(取自130页练习7)
提示:(1)最大公约数的命令:gcd(a,b)
(2)randint(1,1,[u,v])产生一个在[u,v]区间上的随机整数
程序:
m=10000;s=0;
for i=1:m
a=randint(1,2,[1,10^9]);
if gcd(a(1),a(2))==1;
s=s+1;
end
end
pi=sqrt(6*m/s)
运行结果:
pi =
3.1510
4.6 用求定积分的MonteCarlo法近似计算。(102页练习16)
提示:Monte Carlo法近似计算的一个例子。
对于第一象限的正方形,内画出四分之一个圆
向该正方形区域内随即投点,则点落在扇形区域内的概率为.
投次点,落在扇形内的次数为,则,因此.
程序如下
n=100000;nc=0;
for i=1:n
x=rand;y=rand;
if(x^2+y^2<=1)
nc=nc+1;
end
end
pi=4*nc/n
解:程序:
a=0;b=1;m=1000;
H=1;s=0;
for i=1:m
xi=rand();
yi=H*rand();
if yi<sqrt(1-xi^2);
s=s+1;
end
end
pi=4*H*(b-a)*s/m
运行结果:
pi =
3.1480
综合题
一、方程求根探究
设方程
1.用matlab命令求该方程的所有根;
2.用迭代法求它的所有根,设迭代函数为
1)验证取该迭代函数的正确性;
2)分别取初值为-1.1,-1,-0.9,….,0.9,1,1.1,观察迭代结果,是否得到了原方程的根;
3)总结出使得迭代序列收敛到每个根时,初值的范围,比如要使迭代序列收敛到0(方程的一个根)初值应该在什么集合中选取,找出每个根的这样的初值集合。寻找的方法,可以是理论分析方法或数值实验方法。
解答:
1. 用solve命令即可求出所有解;
2. 1)提示:验证原方程与同解,以及验证迭代函数在不动点附近的导数绝对值是否小于1
2)代码省略,结果:初值取-1.1,-1,-0.9,-0.8,0.7时收敛到-1,初值取-0.7,0.8,0.9,1,1.1时收敛到1,初值取-0.6,-0.5,。。。,0.5,0.6时收敛到0;
3)在中分别取初值,最后分别收敛到-1,1,0;在内有无穷多个收敛到-1的初值小开区间,也有无穷多个收敛到0的小开区间,它们相互交替着;这种状态反射到内,即:在内有无穷多个收敛到1的初值小开区间,也有无穷多个收敛到0的小开区间,它们也是相互交替着,这些小区间与内小开区间对应。
二、1.三次曲线
(a)对k=0及其邻近的k的正值和负值,把的图形画在一个公共屏幕上。k的值是怎样影响到图形的形状的?
(b)求,它是一个二次函数。求该二次函数的判别式,对什么样的k值,该判别式为正?为零?为负?对什么k值有两个零点?一个或没有零点?现在请说明k的值对f 图形的形状有什么影响。
(c)对其他的k值做实验。当会发生什么情形?当呢?
解答:
(a)先用m文件定义函数f(x,k)=x^3+k*x
由fplot('[f(x,-0.6),f(x,-0.3),f(x,0),f(x,0.3),f(x,3)]',[-3,3])
得下图
可见k值不影响凹凸性,但单调性、单调区间以及极值随k值发生改变;k在0附近,小于0时,函数在某[-a,a]区间上单调递减,该区间长度随着k值增大而减小,k大于等于0时,函数单调增加。
(b) ;判别式,k为负、零、正时判别式分别为正、零、负;故k<0时,有两个零点,k=0时有一个零点,k>0时没有零点。以上说明原函数f(x)的驻点个数随着k值符号而变化,当k由负变正时,驻点由两个变成一个再到没有驻点,相应的单调区间由三个变成一个,单增单减单增,变为单增。
(c) k值越小单减区间长度越大,当时,f(x)单减区间变为无穷大对称区间,图形近乎垂直直线;当时,单增区间变为无穷大对称区间,图形近乎垂直直线。
2.四次曲线
(a)对k=-4及其邻近的k值,把的图形画在一个公共屏幕上。k的值是怎样影响到图形的形状的?
(b)求,它是一个二次函数。求该二次函数的判别式,对什么样的k值,该判别式为正?为零?为负?对什么k值有两个零点?一个或没有零点?现在请说明k的值对f 图形的形状有什么影响。
解答:
(a)先用m文件定义函数f(x,k)=x^4+k*x^3+6*x^2
fplot('[f(x,-4.2),f(x,-5),f(x,-4.5),f(x,-4),f(x,-3.5),f(x,-2.5)]',[-1,4])
得图
由图可以看出,在x<1时,图形受k值影响不大,x>1时k值对图形的影响比较显著,通过改变k值画图发现:在-4附近,k小于-4时,曲线在某[a,b](a>0)区间内是上凸的,在其他区间内上凹;k大于-4时,上面的凸区间不存在,也就是曲线总是上凹的。
(b) ,判别式,当时,判别式为0,时判别式大于0,时判别式小于0;也就是时有两个零点,时有一个零点时没有零点。由二阶导数与凹凸性的关系可知,在k=-4附近,(a)中关于曲线凹凸的判断基本上是正确的
三、对于级数,通过下面的步骤探索它的行为
1. 对于其部分和数列,当你试图求时,发生了什么?
解答:用命令sk=symsum(1/n^3/(sin(n))^2,1,k)及limit(sk,k,inf)得不到结果,命令symsum(1/n^3/(sin(n))^2,1,inf)也得不到结果。这表明极限可能并不存在。
2. 画出部分和数列的前100个点,它们是否显示出收敛?你估计极限是多少?
解答:前100个点图形如下
上图似乎显示着sk的极限存在,并且极限值约为4.8左右
3. 接着画出部分和数列的前200个点,用你自己的话论述部分和数列的行为。
此图可以更加确定,部分和数列sk的极限是存在的,结论跟2中的一样
4. 画出前400个点,当=355时发生了什么?计算数355/113,通过你的计算解释当=355时发生了什么。你猜测对的什么值同一现象可能还会出现,并通过实验加以验证。
解答:
此图否定了2与3的推断,因为部分和数列在=355时发生了跳跃;355/113=3.141592920353983近似等于圆周率(约为3.141592653589793),也就是355,而sin113=0,因此sin335的值很小,对应于部分和sk,在=355时由于分母很小因而得到一个很大的加项,于是图形上的点发生了跳跃。我们可以通过观察或计算的倍数来获得sk的比较大的加项,由于710=355*2,因此sk在=710时也会发生跳跃;我们也可直接由命令(1:500)*pi观察1500以内的数哪些接近的倍数(此略)。
另外,由的各种分数表示(近似)可知,以上的部分和sk在k=22时也会发生跳跃,因为。同上,当k=44,66,88,110,132等等时,sk也会发生跳跃,但由于误差扩大,跳跃幅度相对应该比较小。
四、通过本课程学习,谈谈你开设对这门课的认识,对教学以及上机实验提出自己的和建议
略