第一次練習
教學要求:熟練掌握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也會發生跳躍,但由於誤差擴大,跳躍幅度相對應該比較小。
四、通過本課程學習,談談你開設對這門課的認識,對教學以及上機實驗提出自己的和建議
略