You are on page 1of 689

MATLAB

MATLAB

MATLAB

MATLAB


MATLAB MATLAB

MATLAB

MATLAB
MATLAB

MATLAB 2008 The Math Works


R2008b R2008b


netCDF JPEG2000

notebook
NLME

MATLAB MATLAB6.57.020072008

12 4
MATLAB
MATLAB

MATLAB
MATLAB
MATLAB

MATLAB
MATLAB

MATLAB
MATLAB

MATLAB

Euler

MATLAB HTML

UltraEdit
UltraEdit MATLAB
MATLAB

MATLAB

MATLAB

song.yz@163.com


2008 10

MATLAB

MATLAB ..........................................................................1
1.1 MATLAB ................................................................................................................1
1.2 MATLAB ........................................................................................................9
1.3 MATLAB 3D .......................................................................................17
1.4 MATLAB ..............................................................................................33
1.5 MATLAB ..............................................................................44

MATLAB ................................................. 50
2.1 .........................................................................................................50
2.2 .................................................................................54
2.3 ................................................................................................................59
2.4 .....................................................................................62
2.5 .........................................................................................................65
2.6 .........................................................................................69
2.7 .....................................................................................................73
2.8 ..........................................................................................76
2.9 .....................................................................................................80
2.10 ....................................................................................................83
2.11 Jacobi Hesse ......................................................................86
2.12 ..........................................................................................................92
2.13 ...................................................................................................94
2.14 ...................................................................................................97
2.15 .................................................................................................101
2.16 .................................................................................................105
2.17 .............................................................................108
2.18 ............................................................................. 111
2.19 ..................................................................... 116

.......................................................... 123

3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8

...........................................................................................123
...................................................................................................126
...........................................................................................132
.......................................................................136
Fourier ........................................................................................................138
Fourier ....................................................................................................144
Laplace .......................................................................................................149
Laplace ...................................................................................................153

............................................................ 159
4.1 Jacobi ............................................................................................................159
4.2 Gauss-Seidel .................................................................................................163

MATLAB

4. 3 SOR..............................................................................166
4.4 Gauss ..........................................................................170
4.5 ...........................................................................173
4.6 LU .................................................................................176
4.7 Cholesky ........................................................................178
4.8 ...........................................................................180
4.9 ......................................................................................................183
4.10 LSQR ...................................................................................186
4.11 ................................................................................190
4.12 ........................................................................193
4.13 ........................................................................196
..............................................................................................................................200

.................................................................... 203
5.1 .................................................................................................204
5.2 .....................................................................................................208
5.3 Aitken ................................................................................................. 211
5.4 Steffensen ...............................................................................................214
5.5 Newton-Rahpson ................................................................................217
5.6 ...........................................................................................220
5.7 ..................................................................................................................223
5.8 kepler ..............................................................................................226
..............................................................................................................................229

................................................ 231
6.1 .......................................................................................................231
6.2 ...............................................................................................235
6.3 ...............................................................................239
6.4 ...............................................................................................243
6.5 Broyden ................................................................................248
6.6 Broyden .................................................................................................254
6.7 DFP ............................................................................................................259
6.8 BFS ............................................................................................................265
6.9 ..........................................................................................................271
6.10 .................................................................................276
6.11 Fletcher-Reeves ..............................................................280
6.12 Polak-Ribiere ...........................................................................................285
6.13 MATLAB fsovle .....................................................................289

........................................................ 295
7.1 ...................................................................295
7.2 2 ...............................................................................302
7.3 Rayleigh ................................................................................................308
7.4 Rayleigh ..................................................................................314

MATLAB

7.5
7.6
7.7
7.8
7.9

..................................................................................................................321
QR ..............................................................................................................327
QR .......................................................................................333
MATLAB eig ....................................................................................338
.........................................................................................348

.................................................................... 353
8.1 ...............................................................................................353
8.2 ..........................................................................................................358
8.3 ...............................................................................................363
8.4 Hermite ......................................................................................................366
8.5 .......................................................................................................373
8.6 ...............................................................................................376
8.7 MATLAB interp1 ..................................................................................379
8.8 .......................................................................................................384
8.9 Chebyshev ..................................................................................387
8.10 Chebyshev Chebyshev ............................................392
8.11 LegendreLaguerre Hermite ............................................................398
8.12 Legendre ......................................................................................406
8.13 Chebyshev ................................................................................409
8.14 .............................................................................................413

........................................................ 431
9.1
9.2
9.3
9.4
9.5
9.6
9.7

...................................................................................431
SVD .............................................................434
Gauss-Markov ............................................................................................438
Kalman .......................................................................................................444
MATLAB ...............................................................................450
MATLAB lsqcurvefit ........................................................................453
...............................................................................457

............................................................................... 463
10.1 .................................................................................................463
10.2 Simpson ...........................................................................................468
10.3 .....................................................................................473
10.4 Simpson .............................................................................477
10.5 Romberg ...........................................................................................481
10.6 Gauss-Legendre ..........................................................................................484
10.7 Gauss-Laguerre ...................................................................488
10.8 Gauss-Hermite ..................................................................491
10.9 Gauss-Chebyshev ....................................................................494
10.10 .................................................................................................498
10.11 MATLAB ..........................................................................502
10.12 ...............................................................................506

MATLAB

.................................................... 511
11.1 Euler ........................................................................................................ 511
11.2 Euler .............................................................................................515
11.3 Runge-Kutta ...............................................................................................520
11.4 RK ..........................................................................................525
11.5 Adams .....................................................................................................529
11.6 ........................................................................................................532
11.7 ................................................................535
11.8 ....................................................................................................539
11.9 .............................................................................548

() ................................................. 559
12.1
12.2
12.3
12.4
12.5

...................................................................559
Jacobi ................................................................................570
.................................................................................576
.....................................................................................580
.................................................................................................595

............................................ 600
13.1 ..............................................................................................600
13.2 .............................................................................604
13.3 .........................................................................613
13.4 .............................................................................620
13.5 .........................................................................627
.................................................................................643
1 ...............................................................................................643
2 Banach .................................................................................645
3 Hilbert .......................................................................................648
........................................................................................................662
.............................................................................675

MATLAB

MATLAB
MATLAB The Math Works

MATLAB

MATLAB MATLAB
MATLAB
MATLAB

1.1 MATLAB
MATLAB MATLAB

MATAB

1.1.1 MATLAB
MATLAB
||MATLAB |MATLAB R2008a

MATLAB MATLAB
MATLAB R2008a
|
MATLAB MATLAB

MATLAB 1.1

MATLAB

1.1 MATLAB
MATLAB 1.1
MATLAB
File | New
M Fifgure
open M Figure 1.2

1.2

MALTAB File

Edit
Debug
Desktop

MATLAB

Windows
Help MATLAB

1.1.2
MATLAB

1 2
5 6
A=
B=

3 4
7 8 AB
1
MATLAB
>> A=[1 2;3 4];
>> B=[5 6;7 8];
>> C=A*B

C=
19

22

43

50

MATLAB 1.3

1.3 1 MATLAB

MATLAB

MATLAB MATLAB

f ( x ) = 1/(1 x ) 0

>> syms x;
>> f=1/(1-x);
>> f1=taylor(f,x,8)

f1 =
1+x+x^2+x^3+x^4+x^5+x^6+x^7
2
3
4
5
6
7
8
f 1 = 1 + x + x + x + x + x + x + x + x

MATLAB 1.4

1.4
MATLAB
[] f=1/(1+x)
[]
>> f=1/(1-x);
f=1/(1+x); []
>> f1=taylor(f,x,8)

f1 =
1-x+x^2-x^3+x^4-x^5+x^6-x^7
MATLAB
1.1

MATLAB

exit

MALTAB

help

clear

clc

demo

demo

edit

type

which

figure

md

clf

cd

dir

quit

MATALAB

who

whos

1.1 MATLAB

2 5

1.1.3
MATLAB
MALTAB 1.5

1.5
M
M 1.6

MATLAB

1.6 M
MATLAB
MATLAB/work

1 D:\matproject cd

>> cd D:\matproject
MATLAB
(2) 1.7

1.7
MATLAB MATLAB
MATLAB addpath
D code
>>addpath(D:\code)
MATLAB
MATLAB addpath
MATLAB savepath

>>savepath

MATLAB

MATLAB
>>path

MATLABPATH
D:\MATLAB7\toolbox\matlab\general
D:\MATLAB7\toolbox\matlab\ops
D:\MATLAB7\toolbox\matlab\lang
D:\MATLAB7\toolbox\matlab\elmat
D:\MATLAB7\toolbox\matlab\elfun
D:\MATLAB7\toolbox\matlab\specfun
D:\MATLAB7\toolbox\matlab\matfun
D:\MATLAB7\toolbox\matlab\datafun
D:\MATLAB7\toolbox\matlab\polyfun
D:\MATLAB7\toolbox\matlab\funfun
D:\MATLAB7\toolbox\matlab\sparfun
D:\MATLAB7\toolbox\matlab\scribe

M
D:\MATLAB7\toolbox\rtw\targets\xpc\target\build\xpcblocks
D:\MATLAB7\toolbox\rtw\targets\xpc\xpcdemos
D:\MATLAB7\toolbox\rtw\targets\xpc\xpc\xpcmngr
D:\MATLAB7\toolbox\rtw\targets\xpc\target\kernel\embedded
MATLAB

File|setpath
1.8
>>pathtool
1.8
Add Folder
MATLAB set path save
savepath
set path Default

MATLAB

1.8

1.1.4
MATLAB

>> x=0:pi/50:4*pi;
>> y=sin(x);
x 0 4 /50y x
1.9

1.9
y 1.10 y

MATLAB

1.10 y
y ploty
1.9 y
1.11 piey

1.11

1.2

MATLAB
MATLAB

c/c++,pascal,fortran
MATLAB

MATLAB

10

1.2.1
1

82

-28 9.7

1.5e3

1.7e-3

MATLAB 1 0

>> 3>7

ans =
% 0

0
>> 4<8
ans =
1

% 1

2
MATLAB Workspace
Java MATLAB

MALTAB

MATLAB 1.2

ans

NaN/nan

pi

eps

Inf/inf

realmin

bitmax

realmax

i/j

1.2 MATLAB

4
>> i

ans =
0 + 1.00000000000000i
>> bitmax

ans =
9.007199254740991e+015
>> realmin

ans =
2.225073858507201e-308
>> realmax

MATLAB

11

ans =
1.797693134862316e+308
MATLAB narginnargoutvaragin varagout

MATLAB

5 c1 = 7 + 4i, c 2 = 3e5i c = c1gc 2

>> c1=7+4*i;
>> c2=3*exp(5*i)
>> c=c1*c2
c=
17.46399719068541 -16.73346354236719i
3
+

1.3

<

~=

>

&

<=

>=

==

xor

1.3

1.2.2
1 .
MATLAB
MATLAB
M

1 2 3
4 5 6
B =


4 5 6
7 8 9

6 A =

MATLAB

12

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


A=
1

>> B=[4 5 6
7 8 9]
B=

Aij A i j Ai

A i A
j A j
7 B 2 C
>> C=B(2,:)

C=
7

MATLAB
8 B A
>> D=[A B]
D=
1

>> D=[A;B]
D=

9
>> eye(4)
ans =
1

>> ones(3,4)

MATLAB

13

ans =
1

>> A=[2 5 3 6 7];


>> B=diag(A)
B=
2

2.
MATLAB

1 2 3
4 5 6
B =

A+2 A 3 A+B
4 5 6
7 8 9

10 A =

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


>> A+2
ans =
3

>> A*3
ans =
3
12

15

18

>> B=[4 5 6;7 8 9];


>> A+B
ans =
5
11

13

15

.*

./

.\

5 6 7
8 9 6

11 A = 4 8 3 B = 5 3 6 A.BA.*BA./BA.\B

7 6 8
9 5 4

MATLAB

14

>> A=[5 6 7
483
7 6 8]
>> B=[8 9 6
536
9 5 4];
>> C=A.*B
C=
40

54

42

20

24

18

63

30

32

>> D=A./B
D=
0.6250

0.6667

1.1667

0.8000

2.6667

0.5000

0.7778

1.2000

2.0000

>> E=A.\B
E=
1.6000

1.5000

0.8571

1.2500

0.3750

2.0000

1.2857

0.8333

0.5000

5 6 7

12 A = 4 8 3 3

7 6 8
>> A=[5 6 7
483
7 6 8];
>> A.^3
ans =
125
216
343
64
512
27
343
216
512

1.2.3

MATLAB

15

A45 A 4
5 A{45}
13 2 3

>> clear
>> a11=0:1:10;

>> a12=ones(3);
>> a13=rand(2);

>> a21='welcome to MATLAB';

>> a22=eye(4)
>> a23=sym('sin(2*x)+cos(x)')

%
>> A{1,1}=a11;
>> A{1,2}=a12;
>> A{1,3}=a13;
>> A{2,1}=a21;
>> A{2,2}=a22;
>> A{2,3}=a23;
>> A(1,1)

ans =
[1x11 double]
>> A{1,1}
ans =
0

10

>> A(1,3)
ans =
[2x2 double]
>> A{1,3}

ans =
0.89129896614890

0.45646766516834

0.76209683302739

0.01850364324822

A=

%
[1x11 double]
'welcome to MATLAB'

[3x3 double]
[4x4 double]

[2x2 double]
[1x1 sym

MATLAB

16

1.2.4
MATLAB
Waterloo Maple
Maple

1
MATLAB sym syms

14 ab a 2 + b 2

>> syms a b
>> s=a^2+b^2

s=
a^2+b^2
s ab 1.12

1.12
2
MATLAB
1
+

-
*
\,/

= =~ =
3

MATLAB

17

sin,cos
exp,expm

eigsvd
solve

15 s1 = 2 x, s2 = 3x 2 + 4 x s = s1 + s2

>> syms x
>> s1=2*x;
>> s2=3*x^2+4*x;
>> s=s1+s2

s=
6*x+3*x^2
vpa
16
>> vpa(pi,20)

ans =
3.1415926535897932385
20
findsyms subs

1.3 MATLAB 3D
MATLAB

MATLAB
MATLAB

1.3.1
MATLAB plot

MATLAB

18

1 plot(x,y,s)
17 [05] y = 2 cos( x 2 )

x=0:0.05:5;
y=2*cos(x.^2);
plot(x,y);
1.13

1.13 plot
plot plot

1xy
2
s
s 1.4

>

<

--

MATLAB

19

-.

1.4 s

18 y = 8 x sin( x 2 ) [05]

>> x=0:0.01:5;
>> y=8*x.*sin(x.^2);
>> plot(x,y,'p')
1.14

1.14 17
y

2plot
plot

19 y1 = 2 x sin( x 2 ) y 2 = 2( x + 1) cos( x 2 ) [05]

>> clear
>> x=0:0.01:5;
>> y1=2*x.*sin(x.^2);
>> y2=2*(x+1).*cos(x.^2);

MATLAB

20

>> plot(x,y1,'d',x,y2,'*')
1.15.

1.15
plotxy m n n x,y
x ploty
y
y y

20

>> x=(0:0.01:6)';
>> k=0.2:0.1:2;
>> y=sin(x)*k;
>> plot(x,y)
1.16

MATLAB

21

1.16

3
plot
Firgure
hold
hold on
hold off
hold
21 y1 = 2 x sin( x ) y 2 = 2( x + 1) cos( x )
2

>> x=0:0.01:5;
>> y1=2*x.*sin(x.^2);
>> y2=2*(x+1).*cos(x.^2);
>> plot(x,y1,'s')
>> hold on
>> plot(x,y2,'x')
>> hold off
1.17

MATLAB

22

1.17
4
firgure
1
2
22 y1 = cos(5 x ) + 0.1x y1 = sin(3 x) + 0.1x

>> x=0:0.01:5;
>> y1=cos(5*x)+0.1*x.^2;
>> plot(x,y1)
>> y2=sin(3*x)+0.1*x;
>> figure(2)
>> plot(x,y2)
1.18

MATLAB

23

1.18
subplotmnk
m n k k
1subplot
subplot clf

23

y1 = sin(5 x) y 2 = cos(3 x) , y 3 = sin(5 x ) cos(3 x) y 4 = sin(5 x) + cos(3 x)

>> x=0:0.01:5;
>> y1=sin(5*x);
>> y2=cos(3*x);
>> y3=y1.*y2;
>> y4=y1+y2;
>> subplot(2,2,1),plot(x,y1)
>> subplot(2,2,2),plot(x,y2)
>> subplot(2,2,3),plot(x,y3)
>> subplot(2,2,4),plot(x,y4)
1.19

1.19

MATLAB

24

5
MATLAB
Firgure
Firgure 1.5

tilte

xlable

legend

ylable

text

colorbar

grid

grid off

1.5
Firgure
MATLAB

24 sin(x),sin(5x),sin(x)+sin(5x)
>> x=0:0.04:20;
>> y1=sin(x);
>> y2=sin(5*x);
>> y3=y1+y2;
>> plot(x,y1,'*',x,y2,x,y3,':')

%y1 *y2 y3

>> legend('sin(x)','sin(5x)','sin(x)+sin(5x)')
>> xlabel('x')

%x

>> ylabel('y')

%y

>> title('the functon of sine')


>> grid

1.20

MATLAB

25

1.20
6

plot
1.6

plot

quiver

rose

ferther

stairs

compass

polar

stem

Hist

pie

1.6
25

>> t=0:.01:2*pi;
>> polar(t,sin(t).*cos(9*t)+sin(15*t));
1.21

MATLAB

26

1.21
x
26 bar y = x 2 + e + 20

>> x = -5:0.4:5;
>> y=x.^2+exp(x)+20;
>> bar(x,y)
1.22

1.22 bar
1.6

1.3.3

MATLAB

27

1 plot3
plot3 plot3x,y,z,s
xyz
xyz xyz
s plot3
x1,y1,z1,s1,x2,y2,z2,s2,

27

x = t

y = sin t
z = cos 2t

>> x=0:0.01:40;
>> y=sin(x);
>> z=cos(2*x);
>> plot3(x,y,z)
>> grid on
1.23

1.23
2

[x,y]=meshgrid(x,y) z
surfx,y,z,c meshx,y,z,c

28

MATLAB

28

>> clear
>> x=-10:0.5:10;
>> y=-10:0.5:10;
>> [x,y]=meshgrid(x,y);
>> r=sqrt(x.^2+y.^2);
>> z=sin(r)+cos(r);
>> subplot(1,2,1),mesh(x,y,z)
>> subplot(1,2,2),surf(x,y,z)
1.24

1.24
MATLAB contourx,y,z,n
n
xy
29
>> clear
>> clf
>> [x,y,z]=peaks(30);
>> subplot(2,2,1),mesh(z); %
>> subplot(2,2,2),contour(z,8);

>> subplot(2,2,3),contour3(x,y,z,8); %
>> subplot(2,2,4),contourf(z,8); %
1.25

MATLAB

29

1.25

1.3.4
MATLAB
ez M
ezplotezplot3ezsufr ezmesh

ezplot
ezplot(f)
ezplot(f,[min,max])
ezplot(f,[xmin,xmax,ymin,ymax])
ezplot(x,y)
ezplot(x,y,[tmin,tmax])
ezplot(f)ezplot(f,[min,max])
ezplot(f,[xmin,xmax,ymin,ymax]) x,y ezplot(x,y)
ezplot(x,y,[tmin,tmax])
2
30 y = x + x 2

>> syms x
>> y=x^2+x-2;
>> ezplot(y),grid
1.26

MATLAB

30

1.26 ezplot
MATLAB

ezplot3
ezplot3(x,y,z)
ezplot3(x,y,z,[tmin,tmax]

31

x = t

y = sin t t [0, 20]


z = 2cos t

>> clear
>> syms t
>> x=t;
>> y=sin(t);
>> z=2*cos(t);
>> ezplot3(x,y,z,[0,20])
>> grid
1.27

MATLAB

31

1.27
ezmesh ezsurf
ezmesh
ezmesh(f)
ezmesh(f,domain)
ezmesh(x,y,z)
ezmesh(x,y,z,[smin,smax,tmin,tmax]) or ezmesh(x,y,z,[min,max])
ezmesh(f) f(x,y) ezmesh(x,y,z)
[smin,smax,tmin,tmax]Ezsurf

32 mesh

x = sin t1 cos t2

y = 16sin t1 sin t2
z = 2cos t

>>syms a t1 t2
>>x=sin(t1)*cos(t2);
>>y=16*sin(t1)*sin(t2);
>>z=2*cos(t1);
>>ezmesh (x,y,z,[0,pi,0,2*pi])
>>hidden off % hiddenoff ezsurf
1.28

MATLAB

32

1.28 ezmesh
33 ezsurf

x = cos t ( 3 + cos u )

y = sin t ( 3 + cos u ) , t [0, 2 ] , u [0, 2 ]


z = sin u

>>clear
>>clc
>>syms t u
>>x=cos(t)*(3+cos(u));
>>y=sin(t)*(3+cos(u));
>>z=sin(u);
>>ezsurf(x,y,z,[0,2*pi,0,2*pi])
>>axis off

1.29

MATLAB

33

1.29 ezsurf

1.4

MATLAB
MATLAB

MATLAB

1.4.1 M /
delphi pas c++ cpp java
java fortran f90 MATLAB
m M M

M /

1)
2)
3)

MATLAB
MATLAB FileNewM-file 1.2
edit

MATLAB

34

Editor 1.30

1.30 Editor
Editor

File 1.2 Fileopen

save as

1.4.2 M
M
MATLAB

34 M

y = sin x + sin 4 x + sin 6 x

z = cos x + sin 3 x + cos 5 x

1.4.1 Editor
x=0:0.02:8;
y=sin(x)+sin(4*x)+sin(6*x);
z=cos(x)+sin(3*x)+cos(5*x);
plot(x,y,'*',x,z)
1.31

MATLAB

35

1.31

Editor

MATLAB 1.1
ex31.m m

Editor DebugRun
Save and run
1.32

1.32
ex1

1.4.3 M
M

function

MATLAB

36

1)

function /

2)

H1 H1
lookfor help

35

dy1
dt = y2 y3
y1 (0) = 0

dy2

y2 (0) = 1
= y1 y3

y (0) = 1
dt
3
dy3
=

0.51
y
y
1 2
dt

edit Editor
function dy = rigid(t,y)
%
% y

dy = zeros(3,1);
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);

dy(3) = -0.51 * y(1) * y(2);


ex1_35.m

>> options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]); %


>> [t,Y] = ode45(@ex1_35,[0 12],[0 1 1],options)
1.7

% ode45

y1

y2

y3

1.0000

1.000

0.0317

0.0317

0.9995

0.9997

0.0634

0.0633

0.9980

0.9990

0.0951

0.0949

0.9955

0.9977

8.5794

0.8598

0.5109

0.7894

8.7183

0.9097

0.4156

0.7604

8.8573

0.9479

0.3190

0.7362

MATLAB

37

8.9962

0.9752

0.2218

0.7178

11.6946

-0.4865

-0.8739

0.9379

11.7710

-0.5472

-0.8373

0.9207

11.8473

-0.6041

-0.7972

0.9024

11.9237

-0.6570

-0.7542

0.8833

12.0000

-0.7058

-0.7087

0.8639

1.7

>> plot(t,Y(:,1),'-',t,Y(:,2),'-.',t,Y(:,3),'.')
1.33

1.33

1
ode45ode45

1.4.4

MATLAB

1966 Bohra Jacopini

1)

MATLAB

38

2)

3)

4)

MATLAB M

MATLAB for while


1for for
for =

end
1
50

36

x
x =1

>> s=0;
>> for x=1:50
s=s+x;
end
>> s
s=
1275
s=1275()

x=50
Editor
function s=adds(x)
%
s=0;
for i=1:x
s=s+i;
end
ex1_36.m
50

75

200

x =1

x =1

x, x, x

x =1

MATLAB

39

>> s50=ex1_36(50)

s50 =
1275
>> s75=ex1_36(75)

s75 =
2850
>> s200=ex1_36(200)

s200 =
20100
x=50
37 for Hilbert Hilbert

a (i , j ) =

i + j 1

Hilbert M

6 Hilbert
>> clear
>> for i=1:6
for j=1:6
a(i,j)=1/(i+j-1);
end
end
>> a

a=
1.0000

0.5000

0.3333

0.2500

0.2000

0.1667

0.5000

0.3333

0.2500

0.2000

0.1667

0.1429

0.3333

0.2500

0.2000

0.1667

0.1429

0.1250

0.2500

0.2000

0.1667

0.1429

0.1250

0.1111

0.2000

0.1667

0.1429

0.1250

0.1111

0.1000

0.1667

0.1429

0.1250

0.1111

0.1000

0.0909

M Hilbert
Editor
function a=hbM(n)
for i=1:n
for j=1:n
a(i,j)=1/(i+j-1);

MATLAB

40

end
end
ex1_37.m 4 7 Hilbert

>> a4=ex1_37(4)

a4 =
1.0000

0.5000

0.3333

0.2500

0.5000

0.3333

0.2500

0.2000

0.3333

0.2500

0.2000

0.1667

0.2500

0.2000

0.1667

0.1429

>> a7=ex1_37(7)

a7 =
1.0000
0.5000
0.5000
0.3333
0.3333
0.2500
0.2500
0.2000
0.2000
0.1667
0.1667
0.1429
0.1429
0.1250

0.3333
0.2500
0.2000
0.1667
0.1429
0.1250
0.1111

0.2500
0.2000
0.1667
0.1429
0.1250
0.1111
0.1000

0.2000
0.1667
0.1429
0.1250
0.1111
0.1000
0.0909

0.1667
0.1429
0.1250
0.1111
0.1000
0.0909
0.0833

0.1429
0.1250
0.1111
0.1000
0.0909
0.0833
0.0769

2.while while
while

end
75

38 while

x
1

>> s=0;
>> x=1;
>> while x<=75
s=s+x;
x=x+1;
end
>> s

s=
2850

MATLAB

41

1
MATLAB
1 if

end

2 if
1
else
2
end
1 2
3 if 1
1
elseif 2
2
else
3
end
1 1 2 2
3

39

e x

y = x2 + 2
x 2

Editor
function y=ex1_39(x)
if x>2
y=exp(x);
elseif x<-2
y=-x^2;
else
y=x^2+2;
end
ex1_39.m

,
>> ex1_39(1)

ans =
3

x>2
2 > x > -2
x < -2

MATLAB

42

>> ex1_39(3)

ans =
20.0855
>> ex1_39(-3)

ans =

-9
3 switch-case
forgran90c/c++ pascal MATLAB

switch
case 1
1
case 2
2

case n
n
otherwise
case

40 r

r ' y-zz-x x-z xy z

v
v
r ' = Rx ( )r
v
v
r ' = Ry ( )r
v
v
r ' = Rz ( )r

0
1

Rx ( ) = 0 cos
0 -sin

cos 0

Ry ( ) = 0
1
sin 0

cos sin
Rx ( ) = sin cos
0
0

0
sin
cos
-sin

cos
0
0
1

MATLAB

43

R 1 ( ) = RT ( ) = R ( ) switch

Editor
function m=ex1_40(a,x)
%by song ye zhi
%08/04/10
%
x=x*pi/180; %
m=zeros(3,3);
switch a
case 1
% x
m(1,1)=1;
m(2,2)=cos(x);
m(2,3)=sin(x);
m(3,2)=-sin(x);
m(3,3)=cos(x);
case 2
% y
m(1,1)=cos(x);
m(1,3)=-sin(x);
m(2,2)=1;
m(3,1)=sin(x);
m(3,3)=cos(x);
case 3
% z
m(1,1)=cos(x);
m(1,2)=sin(x);
m(2,1)=-sin(x);
m(2,2)=cos(x);
m(3,3)=1;
end
ex1_40.m

>> m1=ex1_40(1,30)
% x 30

m1 =
1.0000
0
0
0
0.8660
0.5000
0 -0.5000
0.8660
>> m2=ex1_40(2,45)

% y 45
m2 =

MATLAB

44

0.7071
0
-0.7071
0
1.0000
0
0.7071
0
0.7071
>> m3=ex1_40(3,75) % z 75
m3 =
0.2588
0.9659
0
-0.9659
0.2588
0
0
0
1.0000

MATLAB

1.5

MATLAB

MATLAB

1.5.1 MATLAB
MATLAB
MATLAB

MATLAB

MATLAB
(1)

MATLAB MATLAB

a.

b.
c.

d.
e.

f.

g. Z-
Maple
2

MATLAB

45

a.

b.
M
M-

GUI

MATLAB

a.

b.
c.

d.
e.

f.

g.
M- M

1.5.2

MATLAB
1
2/
3DEMO
4

1.5.2.1

41 ] sin
>> help sin

MATLAB

46

SIN

Sine.

SIN(X) is the sine of the elements of X.


See also asin, sind.
Overloaded functions or methods (ones with the same name in other directories)
help sym/sin.m
Reference page in Help browser
doc sin
sin asin sind
42 ]
>> help robust control

Robust Control Toolbox


Version 2.0.10 (R14) 05-May-2004
New Features.
Readme

- Important release information about the Robust Toolbox


(Type "whatsnew directoryname",
i.e. "whatsnew robust" to display this file).

Optional System Data Structure.


branch

- extract branches from a tree.

graft

- add a branch to a tree.

issystem - identify a system variable.

1.5.2.2 /
/
helpbrowser helpdesk
F1
Help 1.34

MATLAB

47

1.34
1.5.2.3

DEMO

DEMO MATLAB
DEMO
1[Help][Demos]
2
>> demo
DEMO 1.35

1.35 DEMO

MATLAB

48

MATLAB7.0 3 DEMO

DEMO
2D [MATLAB][Graphics][2-D
Plots ] 1.36

1.36

2D DEMOS

1.5.2.4

http://www.mathworks.com

MATLAB

49

MATLAB

MATLAB MATLAB

MATLAB

50

MATLAB
MATLAB
MATLAB
MATLAB

2.1

MATLAB MATLAB

limit(F,x,a)
imit(F,a)
limit(F)
limit(F,x,a,'right')
limit(F,x,a,'left')

limit(F,x,a) x a F
limit(F,a) limit(F,x,a) findsym(F)
limit(F) limit(F,a) a=0
limit(F,x,a,'left') limit(F,x,a,'right')
inf a-inf.

MATLAB

51

MATLAB

MATLAB
1

0
1 1 x2
x 0 e x cos x

lim
2

1 e1/ x
x +0 x + e1/ x
lim

31

a x + b x 3x
lim(
)
x0
2
4 g0

3x 2 + 5
2
sin
x 5 x + 3
x

lim
5

lim(
x0

1
1

)
2
x
x tan x

\\chapter2.rar\2-1.exe
\\chapter2\jixian.m

MATLAB

52

Editor
%(1)0/0
syms x;
y1=(1-sqrt(1-x^2))/(exp(x)-cos(x));
disp(' 1 ')
lim_y1=limit(y1,x,0)
subplot(2,2,1),ezplot(y1,[-4,4]),grid on,title('(1)')
%(2)/
syms x;

y2=(1-exp(1/x))/(x+exp(1/x));
disp(' 2 ')
lim_y2=limit(y2,x,0,'right')
subplot(2,2,2),ezplot(y2,[-4,4]),grid on,title('(2)')
%(3)1
syms x a b;
y3=(a^x/2+b^x/2)^(3/x);
disp(' 3 ')
lim_y3=limit(y3,x,0)
%(4) 0
syms x
y4=(3*x^2+5)/(5*x+3)*sin(2/x);
disp(' 4 ')
lim_y4=limit(y4,x,inf)
%(5) -
y5=1/x^2-1/x/tan(x);
disp(' 5 ')
lim_y5=limit(y5,x,0)
subplot(2,2,3:4),ezplot(y5,[0,2]),grid on,title('(5)')
jixian.m

>> clear
>> jixian

1
lim_y1 =
0
2
lim_y2 =

MATLAB

53

-1
3
lim_y3 =
a^(3/2)*b^(3/2)
4
lim_y4 =
6/5
5
lim_y5 =
1/3

MATLAB

5 2.1
34
x

2.1
MATLAB

MATLAB

54

2.2

MATLAB

MALTAB
diff(S,'v')
diff(S,n)
diff(S,'v',n)

diff(S) MALTAB findsym


diff(S,'v') diff(S,sym('v')) S v
diff(S,n) diff(S) n
diff(S,'v',n) diff(S,n,'v') MATLAB

diff(S,x) S x
diff(S,x,n) S x n

12 MATLAB
3

MATLAB

MATLAB

y=

1 + sin( x)
1 + cos( x)

MATLAB

55

arcsin x
y=
arctan x

arctan x
arc cot x

y = x 2 cos( x)
8

\\chapter2.rar\2-2.exe
\\chapter2\daoshu.m

Editor
%1
syms x;
f1=1+sin(x)/(1-cos(x));
%
df1=diff(f1,x)
%
subplot(1,2,1),ezplot(f1),grid on
subplot(1,2,2),ezplot(df1),grid on
%2
syms x;
y1=asin(x);
y2=acos(x);
y3=atan(x);
y4=acot(x);
%
y=[y1 y2;y3 y4];
%
dy=diff(y)
%
figure(2)
%

MATLAB

56

subplot(2,2,1),ezplot(y1),grid
subplot(2,2,2),ezplot(y2),grid
subplot(2,2,3),ezplot(y3),grid
subplot(2,2,4),ezplot(y4),grid
%
figure(3)
subplot(2,2,1),ezplot(dy(1)),grid
subplot(2,2,2),ezplot(dy(3)),grid
subplot(2,2,3),ezplot(dy(2)),grid
subplot(2,2,4),ezplot(dy(4)),grid
%3
syms x;
z=x^2*cos(x);
dz8=diff(z,x,8)
%
figure(4)
subplot(1,2,1),ezplot(z),grid
%
subplot(1,2,2),ezplot(dz8),grid
daoshu.m

>> clear
>> daoshu

df1 =
cos(x)/(1-cos(x))-sin(x)^2/(1-cos(x))^2
dy =
[

1/(1-x^2)^(1/2), -1/(1-x^2)^(1/2)]

1/(1+x^2),

-1/(1+x^2)]

dz8 =
-56*cos(x)+16*x*sin(x)+x^2*cos(x)

MATLAB MALTAB

2.2

MATLAB

57

y=

1 + sin( x)
1 + cos( x)

dy
cos x
sin 2 x
=

dx 1 cos x (1 cos x ) 2

2.2 1
2.3

arcsin x
y=
arctan x

arctan x
arc cot x

2.3 2
2.4

MATLAB

58

1
dy 1 x 2
=
dt 1
1 + x 2

1
1 x
1
1 + x2

subplot(2,2,2) subplot(2,2,3)

2.4 2
2.5 3

y = x 2 cos( x)
8 8

d8y
= 56 cos x + 16 x sin x + x 2 cos x
8
dx

MATLAB

59

2.5 3
[] diff MATLAB diff

MATLAB

2.3

x0 c0 , c1 ,L cn ,L f ( x )

f ( n) ( x0 ) = cn []

MATLAB
MATLAB MATLAB maple
2.10
r = taylor(f)
r = taylor(f,n,v)
r = taylor(f,n,v,a)

taylor(f,n,v) f f n
n-1 v
r = taylor(f,n,v,a) f a
a

MATLAB

60

n n 6
a

Taylor

Taylor

1 y1 = e x cos( x) 8
2

(2) y 2 =

1
8
x 3x + 2
2

(3) y 3 = e x=2 5
x

\\chapter2.rar\2-3.exe
\\chapter2\ taile.m

Editor
%1
syms x;
y1=exp(x^2)*cos(x)
tay_y1=taylor(y1,8)
%
subplot(1,2,1),ezplot(y1,[-5,5]),grid
%
subplot(1,2,2),ezplot(tay_y1,[-5,5]),grid
%2

MATLAB

61

syms x;
y2=1/(x^2-3*x+2);
tay_y2=taylor(y2,8)
%3
syms x;
y3=exp(x)
tay_y3=taylor(y3,8,x,2)
taile.m

>> clear
>> taile

>> taile
tay_y1 =
1+1/2*x^2+1/24*x^4-31/720*x^6
tay_y2 =
1/2+3/4*x+7/8*x^2+15/16*x^3+31/32*x^4+63/64*x^5+127/128*x^6+255/256*x^7
tay_y3=
exp(2)+exp(2)*(x-2)+1/2*exp(2)*(x-2)^2+1/6*exp(2)*(x-2)^3+1/24*exp(2)*(x-2)^4

MATLAB LATEX

1
2.6

2.6 1

MATLAB

62

[] MATLAB n
n-1

>> syms x
>> y=sin(x);
>> taylor(y,6,x)

ans =
x-1/6*x^3+1/120*x^5
3 6 5

2.4

MATLAB symsum symsum


MATLAB

r = symsum(s)
r = symsum(s,v)
r = symsum(s,a,b)
r = symsum(s,v,a,b)
r = symsum(s,v,a,b) s v
v=a v=b MALTAB

symsum

MATLAB

63

x2
xn
11 + x +
+L+ +L
2!
n!

2 2 x

x2 m

m =0 2m + 1

31

1 1
1
+ L + (1) n +1 + L
2 3
n

n(n + 1) n 1
x
2
n =1

\\chapter2.rar\2-4.exe
\\chapter2\sym_sum.m

Editor
% e
syms x k
s=x^k/sym('k!');
sum_1=symsum(s, k, 0,inf)
subplot(2,2,1),ezplot(sum_1),grid on
% 2
%[]
P390
%
syms x n
s=2*x^(2*n-1)/(2*n-1);
sum_2=symsum(s,n,1,inf)
%%%%%%
%% 2 4

MATLAB

64

subplot(2,2,[2 4]),ezplot(sum_2),grid on
% 3
%<>
syms

s=(-1)^(k+1)/k;
sum_3=symsum(s,k,1,inf)
% 4
%
P81
syms x n
s=n*(n+1)/2*x^(n-1);
sum_4=symsum(s,n,0,inf)
subplot(2,2,3),ezplot(sum_4),grid on
sym_sum.m

>> clear
>> sym_sum

sum_1 =
exp(x)
sum_2 =
log((1+x)/(-x+1))
sum_3 =
log(2)
sum_4 =
-1/(x-1)^3

MATLAB

65

2.7

2.73

2.5

MATLAB int int

MALTAB
R = int(S)
R = int(S,v)
S v v
MATLAB

MATLAB

66

>> syms a x
>> int(a*x)
ans =
1/2*a*x^2
a,x x
>> clear
>> syms a b
>> int(a*b)
ans =
1/2*a*b^2
ab b

>> syms a x
>> int(x*a)
ans =
1/2*a*x^2
MATLAB

MALTAB

MATLAB

ln x 1
dx
x2

2 e (tan x + 1) dx

2x

3 e
4

x2

dx

sin x
dx
x

MATLAB

67

\\chapter2.rar\2-5.exe
\\chapter2\bd_jifen.m

Editor
syms x
%1
y1=(log(x)-1)/x^2;
int_y1=int(y1)
%
subplot(1,2,1),ezplot(y1),grid on
% 0
subplot(1,2,2),ezplot(int_y1),grid on
%2
y2=exp(2*x)*(tan(x)+1)^2;
int_y2=int(y2)
%
figure(2)
%
subplot(1,2,1),ezplot(y2),grid on
%
subplot(1,2,2),ezplot(int_y2),grid on
%3

y3=exp(x^(-2));
int_y3=int(y3)
%4
y4=sin(x)/x;
int_y4=int(y4)
bd_jifen.m

>> clear
>> bd_jifen

int_y1 =

MATLAB

68

-1/x*log(x)
int_y2 =
exp(2*x)*tan(x)
int_y3 =
exp(1/x^2)*x+i*pi^(1/2)*erf(i/x)
int_y4 =
sinint(x)

ln x 1
ln x
dx =
+C
2
x
x

C MATLAB C
2.8

2.8 1
2

2x

(tan x + 1)2 dx = e 2 x tan x + C

C MATLAB C2
2.9

MATLAB

69

2.9 2
343

x2

dx,

dx sin x
dx, 1 k 2 sin 2 xdx (0 < k 2 < 1)
,
ln x x

Lioville

MATLAB MapleMathmatica

MATLAB 3

4
3 erf4 sinint(x)
MATLAB

erf ( x ) =

sin int( x) =

e t dt
2

sin t
dt
t

2.6

MATLAB

70

MATLAB

R = int(S,a,b)
R = int(S,v,a,b)
S

a,b inf,
-inf

/4

x
dx
1 + cos 2 x
3

x(1 x 4 ) 2 dx

dx
dx
( x + 7) x 2

dx
1 x2

dx [0,1) [0, u ] [0,1) x=1

MATLAB

71

\\chapter2.rar\2-6.exe
\\chapter2\d_jifen.m

Editor
syms x;
% 1
y1=x/(1+cos(2*x));
int_y1=int(y1,x,0,pi/4)
% figure
subplot(1,2,1),ezplot(y1),grid on
% 2
y2=x*(1-x^4)^(3/2);
int_y2=int(y2,x,0,1)
% fitgure
subplot(1,2,2),ezplot(y2),grid on
% 3
%
y3=1/(x+7)/sqrt(x-2);
int_y3=int(y3,x,2,inf)
% figure
figure(2);
% figure
subplot(1,2,1),ezplot(y3),grid on
% 4
%
y4=1/sqrt(1-x^2);
int_y4=int(y4,x,0,1)
% figure
subplot(1,2,2),ezplot(y4),grid on
d_jifen.m

>> clear
>> d_jifen

int_y1 =
1/8*pi-1/4*log(2)
int_y2 =
3/32*pi

MATLAB

72

int_y3 =
1/3*pi
int_y4 =
1/2*pi

vpa
MATLAB

2.10 1

2
2.10
x
y x=ax=b

2.11 3

4
2.11 x

MATLAB

73

x
2.10 x=1 x=1

2.7

f D R P0 A
2

P U o ( P0 ; ) D f ( P ) A <

f D P P0 A

f ( x, y ) ( x0 , y0 )

lim

( x , y ) ( x0 , y0 )

f ( x, y )

lim lim f ( x, y )

x x0 y y0

MATLAB

MATLAB

74

lim

( x , y ) (0,0)

x2 + y2
x2 + y 2 1

lim ( x + y ) sin

( x , y ) (0,0)

1
x + y2
2

x2 + y 2
3
lim
( x , y ) ( + ,+ ) x 4 + y 4
4

lim

( x , y ) ( + ,+ )

(1 +

1 x sin y
)
xy

\\chapter2.rar\2-7.exe
\\chapter2\dby_jixian.m

Editor
syms x y;
% 1
y1=(x^2+y^2)/(sqrt(1+x*x+y*y)-1);
%
lim_y1=limit(limit(y1,x,0),y,0)
%
subplot(1,2,1),ezsurf(y1)
% 2
y2=(x+y)*sin(1/(x*x+y*y));
%
lim_y2=limit(limit(y2,x,0),y,0)
% figure
subplot(1,2,2),ezsurf(y2)
% 3
y3=(x*x+y*y)/(x^4+y^4);
%
lim_y3=limit(limit(y3,x,inf),y,inf)
% figure
figure(2);

MATLAB

75

subplot(1,2,1),ezsurf(y3)
% 4
y4=(1+1/x/y)^(x*sin(y));
%
lim_y3=limit(limit(y4,x,inf),y,inf)
% figure
subplot(1,2,2),ezsurf(y4)
dby_jixian.m

>> clear
>> dby_jixian
lim_y1 =
2
lim_y2 =
0
lim_y3 =
0
lim_y3 =
1

4 2001
2.12 12 1

2
3
4 3

MATLAB

76

2.12

2.13

2.8

z = f ( x, y ), ( x, y ) D ( x0 , y0 ) D f ( x, y0 ) x0

MATLAB

77

xf ( x0 , y0 )
f ( x0 + x, y0 ) f ( x0 , y0 )
= lim
x 0
x 0
x
x
lim

f ( x0 , y0 ) x
f

MATLAB

1 z = esin xy

z z 2 z
, ,

x y xy

7 f
2 f = xy gcos( x + y ) 4 3
x y

\\chapter2.rar\2-8.exe
\\chapter2\dy_daoshu.m

Editor
syms x y;
%
z=exp(sin(x*y));
% x
dzx=diff(z,x)

MATLAB

78

% y
dzy=diff(z,y)
% x y
dzxy=diff(dzx,y)
% firgure
subplot(2,2,1),ezsurf(z)
% x
subplot(2,2,2),ezsurf(dzx)
% y
subplot(2,2,3),ezsurf(dzy)
% x y
subplot(2,2,4),ezsurf(dzxy)
%
f=(x*y)*cos(x+y);
dfx4=diff(f,x,4);
dfx4y3=diff(dfx4,y,3)
figure(2)
%
subplot(1,2,1),ezmesh(f)
%
subplot(1,2,2),ezmesh(dfx4y3)
dy_daoshu.m

>>clear
>> dy_daoshu

dzx =
cos(x*y)*y*exp(sin(x*y))
dzy =
cos(x*y)*x*exp(sin(x*y))
dzxy =
-sin(x*y)*x*y*exp(sin(x*y))+cos(x*y)*exp(sin(x*y))+cos(x*y)^2*y*x*exp(sin(x*y))
dfx4y3 =
-12*sin(x+y)-4*y*cos(x+y)-3*x*cos(x+y)+x*y*sin(x+y)

MATLAB

79

2.14 1
x y xy

2.114 1
2.15 f = xy gcos( x + y )
surf mesh

12.5 1

MATLAB

80

2.9

1 F ( x, y ) = 0 y = y ( x )

F'
dy
= x , ( F ' y 0)
dx
F 'y
2 F ( x, y , z ) = 0 z = z ( x, y )

F'
z
= x , ( F 'z 0)
x
F 'z
u = u ( x, y )
F ( x, y, u , v) = 0
( F , G )
J =

0
(u , v )
v = v ( x , y )
G ( x, y, u , v) = 0

u
1 ( F , G ) v
1 ( F , G)
=
, =
J ( x, v ) x
J (u , x )
x
u
1 ( F , G ) v
1 (F , G)
=
, =
y
J ( y , v) y
J (u , y )

MATLAB

MATLAB

MATLAB

81

1
xyz 3 + x 2 + y 3 z = 0 z = f ( x, y )

z z

x y
2

xu yv = 0
u u v v
, , ,

x y x y
yu + xv = 1

\\chapter2.rar\2-9.exe
\\chapter2\yhs_pds.m

Editor
%
%
P150
syms x y z
F=x*y*z^3+x^2+y^3-z;
pz_x=-diff(F,x)/diff(F,z)
pz_y=-diff(F,y)/diff(F,z)
%
%
P35
syms x y u v
F=x*u-y*v;
H=y*u+x*v-1;
G=[F,H];
% Jacobian
jaco=jacobian(G,[u,v]);
jaco=det(jaco);

MATLAB

82

%
pu_x=-det(jacobian(G,[x,v]))/jaco
pu_y=-det(jacobian(G,[y,v]))/jaco
pv_x=-det(jacobian(G,[u,x]))/jaco
pv_y=-det(jacobian(G,[u,y]))/jaco
yhs_pds.m

>> clear
>> yhs_pds

pz_x =
(-y*z^3-2*x)/(3*x*y*z^2-1)
pz_y =
(-x*z^3-3*y^2)/(3*x*y*z^2-1)
pu_x =
(-x*u-y*v)/(x^2+y^2)
pu_y =
(x*v-y*u)/(x^2+y^2)
pv_x =
(-x*v+y*u)/(x^2+y^2)
pv_y =
(-x*u-y*v)/(x^2+y^2)

1 zxy x y

z yx3 + 2 x z xz 3 + 3 y 2
=
, =
x 1 3 xyz 3 y 1 3 xyz 2

MATLAB

83

2.10

MATLAB
MATLAB maple
maple Maple MATLAB

>> mhelp index

Index of help descriptions


Calling Sequence
?index[category]

or

help(index, category)

Description
- The following categories of topics are available in the help subsystem:
expression operators for forming expressions
function

list of Maple functions

misc

miscellaneous facilities

module

topics related to modules

packages

descriptions of library packages

procedure

topics related to procedures and programming

statement

list of Maple statements

To access these help pages, you must prefix the category with index, thus ?
index[category].
mhelp function_name

>> mhelp mtaylor


maple
maple
mtaylor(f, v)
mtaylor(f, v, n)
mtaylor(f, v, n, w)

MATLAB

84

MATLAB Maple

R=maple(mtaylor,f,[x,y],k)
R=maple(mtaylor,f,[x=a,y=b],k)
x y x=1y=4
R=maple('mtaylor(x^y,[x=1,y=4],4)')

Taylor

MATLAB maple

1 f ( x, y ) = x y 14 (1.08)3.69
2 f ( x, y ) = ln(1 + x + y ) 4

\\chapter2.rar\2-10.exe
\\chapter2\dby_taile.m

Editor
%
P135
syms x y;
f1=x^y;
% maple
tay_1=maple('mtaylor',f1,'[x=1,y=4]',4)
disp(' 1.08 3.69 ')
subs(tay_1,[x y],[1.08 3.69])

MATLAB

85

disp('1.08 3.69 ')


subs(f1,[x y],[1.08 3.69])
%
subplot(1,2,1),ezsurf(f1)
%
subplot(1,2,2),ezsurf(tay_1)
%
P64
clear
syms x y
f2=log(1+x+y)
% maple
tay_2=maple('mtaylor',f2,'[x,y]',4)
figure(2)
%
subplot(1,2,1),ezsurf(f2)
%
subplot(1,2,2),ezsurf(tay_2)
dby_taile.m

>> clear
>> dby_taile

tay_1 =
-3+4*x+6*(x-1)^2+(x-1)*(y-4)+4*(x-1)^3+7/2*(y-4)*(x-1)^2
1.08 3.69
ans =
1.328704
1.08 3.69
ans =
1.32841465402236
f2 =
log(1+x+y)
tay_2 =
x+y-1/2*x^2-x*y-1/2*y^2+1/3*x^3+y*x^2+y^2*x+1/3*y^3

MATLAB

86

2.16

2.16 1
1

(1.08)3.69

2.17

2.17 1

2.11 Jacobi Hesse

MATLAB

87

Jacobi Hesse f

y y
y
,
,L ,

x n
x 1 x 2

[ x1 , x2 ,L, xn ]

f = [ f1 , f 2 ,L , f m ] ' [ x1 , x2 ,L , xn ] Jacobi

f1
x
1
M

f m
x
1

f1
xn

O M

f m
L
xn
K

Hesse

2 f

2
x1
M
2
f
x x
1 n

2 f

x1xn
O
M

2 f
L
xn 2
K

Jacobi Hesse

MATLAB

maple MATLAB

1 r =

x 2 + y 2 + z 2 maple

2 ( x, y , z ) ( r , , )

x = r sin cos

y = r sin sin
z = r cos

MATLAB

88

Jacobi

( x, y, z )
(r , , )
3

f = xy sin( x + 5 y )
MATLAB Hesse maple
4 maple

f = ( x + y )ge z
Hesse

\\chapter2.rar\2-11.exe
\\chapter2\gr_ja_he.m

Editor
%08 6 24
%
syms x y z;
r=sqrt(x^2+y^2+z^2);
%
grad_r=[diff(r,x),diff(r,y),diff(r,z)]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% maple
syms x y z
disp(' maple ')
grad_maple=maple('grad(sqrt(x^2+y^2+z^2), vector([x,y,z]));')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%jacobi
syms r

fa the

x=r*sin(fa)*cos(the);
y=r*sin(fa)*sin(the);
z=r*cos(fa);
% jacobi

MATLAB

89

ja=jacobian([x,y,z],[r fa the])
%Hesse
syms x y
f=(x*y)*sin(x+5*y);
% n
% Hesse
df11=diff(diff(f,x),x);
df12=diff(diff(f,y),x);
df21=diff(diff(f,x),y);
df22=diff(diff(f,y),y);
Hesse=[df11 df12;df21 df22];
Hesse=simple(Hesse)
%
ezsurf(f)
figure(2)
% Hesse
subplot(2,2,1),ezsurf(df11)
subplot(2,2,2),ezsurf(df12)
subplot(2,2,3),ezsurf(df21)
subplot(2,2,4),ezsurf(df22)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% maple Hesse
disp(' maple Hesse ')
hesse_maple=maple('hessian((x*y)*sin(x+5*y),[x,y]);')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
% 4 Hesse
clear
syms x y z
hesse3D_maple=maple('hessian((x+y)*exp(z),[x,y,z]);')
gr_ja_he.m

>> clear
>> gr_ja_he

grad_r =
[ 1/(x^2+y^2+z^2)^(1/2)*x, 1/(x^2+y^2+z^2)^(1/2)*y, 1/(x^2+y^2+z^2)^(1/2)*z]

MATLAB

90

maple
grad_maple =
vector([1/(x^2+y^2+z^2)^(1/2)*x, 1/(x^2+y^2+z^2)^(1/2)*y, 1/(x^2+y^2+z^2)^(1/2)*z])
ja =
[

sin(fa)*cos(the),

r*cos(fa)*cos(the), -r*sin(fa)*sin(the)]

sin(fa)*sin(the),

r*cos(fa)*sin(the), r*sin(fa)*cos(the)]

cos(fa),

-r*sin(fa),

0]

Hesse =
[2*y*cos(x+5*y)-x*y*sin(x+5*y
sin(x+5*y)+x*cos(x+5*y)+5*y*cos(x+5*y)-5*x*y*sin(x+5*y) ]
[sin(x+5*y)+x*cos(x+5*y)+5*y*cos(x+5*y)-5*x*y*sin(x+5*y),
10*x*cos(x+5*y)-25*x*y*sin(x+5*y)]
maple Hesse
hesse_maple =
matrix([[2*y*cos(x+5*y)-x*y*sin(x+5*y),
sin(x+5*y)+x*cos(x+5*y)+5*y*cos(x+5*y)-5*x*y*sin(x+5*y)],
[sin(x+5*y)+x*cos(x+5*y)+5*y*cos(x+5*y)-5*x*y*sin(x+5*y),
10*x*cos(x+5*y)-25*x*y*sin(x+5*y)]])
hesse3D_maple =
matrix([[0, 0, exp(z)], [0, 0, exp(z)], [exp(z), exp(z), (x+y)*exp(z)]])

MATLAB Jacobi
Hesse
maple

1 MATLAB maple

2 Jacobi MATLAB

MATLAB

91

2.18 3
3 2.18 2.19
Hesse 4 MATLAB
maple

2.19 3Hesse
Hesse
Hesse
maple4

MATLAB

92

2.12

n Di Di
D R f : D R D
n
2

Si ( xi , yi )

f ( x , y ) S
i =1

0
f D

MATLAB

1 I =

x2

dxdy D y = x y = x3

2.x

2.20 1
2

xdxdydz D
D

MATLAB

93

x y z
x = 0, y = 0, z = 0, + + = 1, (a, b, c ) > 0
a b c

\\chapter2.rar\2-12.exe
\\chapter2\chong_jifen.m

Editor
% 1
%P204
syms x y
z=exp(x^2);
%
int1=int(z,y,x^3,x);
int_z=int(int1,x,0,1)
% 2
%
P286
syms x y z a b c
f=x;
%
int1=int(f,z,0,c*(1-x/a-y/b));
int2=int(int1,y,0,b*(1-x/a));
int_f=int(int2,x,0,a)
chong_jifen.m

>> clear
>> chong_jifen

int_z =
1/2*exp(1)-1
int_f =
1/24*b*c*a^2

MATLAB

94

2.13

:
1

L : y = y ( x), x [a, b]

f ( x, y )ds = f ( x, y ( x )) 1 + y '2 ( x)dx


a

x = x (t )
L:
, t [t1 , t2 ]
y = y (t )

t2

f ( x, y, z )ds = f ( x (t ), y (t )) x '2 (t ) + y '2 (t )dt


t1

x = x (t )

L : y = y (t ) , t [t1 , t2 ]
z = z (t )

t2

f ( x, y, z )ds = f ( x(t ), y (t ), z (t )) x '2 (t ) + y '2 (t ) + z '2 (t )dt


t1

MATLAB

95

MATLAB

1 L

x = a cos t
L:
t [0, ]
y = a sin t

(x
L

+ y 2 )ds

x 2 + y 2 dl x 2 + y 2 = ay, (a > 0)

\\chapter2.rar\2-13.exe
\\chapter2\first_curve.m

1
2

x = ( ) cos = a sin cos

2
y = ( ) sin = a sin

Editor
% 1
%
P200
syms a positive

[0, ]

MATLAB

96

syms t
x=a*cos(t);
y=a*sin(t);
dx=diff(x,t);
dy=diff(y,t);
%
weiyuan=sqrt(dx^2+dy^2);
int_1=int(a^2*weiyuan,t,0,pi)
% 2
%
P5
syms a theta

xy;

x=a*cos(theta)*sin(theta);
y=a*sin(theta)*sin(theta);
dx=diff(x,theta);
dy=diff(y,theta);
z=sqrt(x^2+y^2);
%
weiyuan=sqrt(dx^2+dy^2);
int_2=int(z*weiyuan,theta,0,pi);
%
int_2=simple(int_2)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% a
a=5;
x=a*cos(theta)*sin(theta);
y=a*sin(theta)*sin(theta);
%
V=[-4,4,-1,6];
ezplot(x,y,[0,pi]),axis(V),grid on
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
first_curve.m

>> clear
>> first_curve

int_1 =
pi*a^3
int_2 =

MATLAB

97

2*a^2

1 a 3 1
2

2a 2.21 2

2.21 2

2.14

F = {P( x, y, z ), Q ( x, y, z ), R( x, y , z )}

Fgds =
L

Pdx + Qdy + Rdz

MATLAB

98

1 L : y = y ( x ) x a ba Ab ba
b

Fgds = [ P( x, y( x))dx + Q( x, y( x)) y '( x)]dx


L

x = x (t )

L : y = y (t ) , t [t1 , t2 ]
z = z (t )

Fgds = [ P( x(t ), y(t ), z (t )) x '(t ) +


L

Q ( x (t ), y (t ), z (t )) y '(t ) + R( x(t ), y (t ), z (t )) z '(t )]dx

MATLAB

(1)

I = xydx + ( x y )dy + x 2 dz
L

L x = a cos t , y = a sin t , z = bt t = 0 t =
2 F ( y, x, x + y + z ) A L B L

x = a cos t

y = a sin t
z = bt

t [0, 2 ]

MATLAB

99

\\chapter2.rar\2-14.exe
\\chapter2\sec_curve.m

Editor
%
%
P207
syms

a t x y z;

syms b positive
%
x=a*cos(t);
y=a*sin(t);
z=b*t;
%
F=[x*y,x-y,x^2];
%
ds=[diff(x),diff(y),diff(z)]';
int_curve1=int(F*ds,t,0,pi)
%
%
P207
syms

t x y z;

syms b positive
%
x=a*cos(t);
y=a*sin(t);
z=b*t;
%
F=[y,-x,x+y+z];
%
ds=[diff(x),diff(y),diff(z)]';
int_curve2=int(F*ds,t,0,2*pi)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% ab
a=3;b=3;
x=a*cos(t);
y=a*sin(t);
z=b*t;
ezplot3(x,y,z,[0,2*pi])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

MATLAB

100

sec_curve.m

>> clear
>> sec_curve

int_curve1 =
1/2*a^2*pi+1/2*a^2*b*pi
int_curve2 =
-2*a^2*pi+2*b^2*pi^2

1 2
a (1 + b) 2
2

2 ( b a ) 2
2

2.22

2.22

MATLAB

101

2.15

f ( x, y , z ) S
S T S Si Si Si

T = max { Si } Si (i ,i , i )
1 i n

lim f (i ,i , i )Si
T 0

i =1

x = x (u , v)

S : y = y ( y , v)
z = z ( y , v)

(u , v ) D

f ( x, y, z )dS = f ( x(u, v), y (u, v), z(uv))


S

EG F 2 dudv

x y z
E = + +
u u u
x x y y z z
F = + +
u v u v u v
2

x y z
G = + +
v v v
2

S : z = z ( x, y ), ( x, y ) D

MATLAB

102

MATLAB

xyzdS D x=0,y=0,z=0 x+y+z=1


D

( xy + yz + zx)dS D z =

x 2 + y 2 x 2 + y 2 = y

\\chapter2.rar\2-15.exe
\\chapter2\first_surf.m

a1
D x=0,y0,z=0 x+y+z=1 D1 , D2 , D3 , D4

xyzdS = xyzdS + xyzdS + xyzdS + xyzdS


D

D1

D2

D3

D4

D1 , D2 , D3 f ( x, y , z ) = xyz

xyzdS = xyzdS = xyzdS = 0


D1

D2

D3

xyzdS = xyzdS
D

D4

D4 xy

MATLAB

103

x=0y-0 x+y=1
b2
D

r = ( cos , sin , ), ( , ) D
D = {( , ) | [0,sin ], [0, ]}

Editor
%
5 P157
syms x y z
%
z=1-x-y;
ds=sqrt(1+diff(z,x)^2+diff(z,y)^2);
%
f=x*y*z;
int1=int(f*ds,y,0,1-x);
int_1=int(int1,x,0,1)
%
P14
clear
syms rou theta;
%
x=rou*cos(theta);
y=rou*sin(theta);
z=rou;
% EGF
E=diff(x,rou)^2+diff(y,rou)^2+diff(z,rou)^2;
F=diff(x,rou)*diff(x,theta)+diff(y,rou)*diff(y,theta)+diff(z,rou)*diff(z,theta);
G=diff(x,theta)^2+diff(y,theta)^2+diff(z,theta)^2;
% EFG
E=simple(E);
F=simple(F);
G=simple(G);
%
ds=sqrt(E*G-F*F);
ds=simple(ds);
%
f=x*y+y*z+z*x;
int1=int(f*ds,rou,0,sin(theta));
int_2=int(int1,theta,0,pi)
%

MATLAB

104

syms x y
z=sqrt(x^2+y^2);
ezsurf(z,'circ')
first_surf.m

>>clear
>> first_surf

int_1 =
1/120*3^(1/2)
int_2 =
4/15*2^(1/2)

0
0 01 z x,y

2.23 2

MATLAB

105

4
2
15

2.23
xy + yz + zx

4
2
15

2.16

1 v = Pi + Qj + Rk S

Pdydz + Qdzdx + Rdxdy


S

S R
3

P, Q, R : S R S z = z ( x, y ), ( x, y ) Dxy z : Dxy R

R( x, y, z ( x, y ))dxdy (cos 0)
Dxy
S Rdxdy = R( x, y, z ( x, y ))dxdy (cos < 0)

Dxy
2
S

x = x (u , v)

S : y = y ( y , v)
z = z ( y , v)

(u , v ) D

( y, z ) ( z , x) ( x, y )
,
,
(u , v) (u, v ) (u , v)

( y, z )

Pdydz = P( x(u, v), y(u, v), z (u, v) (u, v) dudv


S

MATLAB

106

( z , x)

Qdydz = Q( x(u, v), y(u, v), z (u, v) (u, v) dudv


S

( x, y )

Rdydz = R( x(u, v), y(u, v), z (u, v) (u, v) dudv


S

S
uv S
1

MATLAB

zdxdy D x

+ y 2 + z 2 = a 2

xdydz + ydzdx + zdxdy D x

+ y 2 = a 2 z = h z = h

\\chapter2.rar\2-16.exe
\\chapter2\sec_sufr.m

Editor
% 1
P21-22
syms theta fa ;
syms h a

positive;

MATLAB

107

x=a*sin(fa)*cos(theta);
y=a*sin(fa)*sin(theta);
z=a*cos(fa);
% C
C=diff(x,fa)*diff(y,theta)-diff(x,theta)*diff(y,fa);
C=simple(C);
%z
Fz=z;
int1=int(Fz*C,fa,0,pi);
int2=int(int1,theta,0,pi*2)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%, a
a=5;
x=a*sin(fa)*cos(theta);
y=a*sin(fa)*sin(theta);
z=a*cos(fa);
ezmesh (x,y,z,[0,pi,0,2*pi])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2
P20
syms a theta z
x=a*cos(theta);
y=a*sin(theta);
% A B C
A=a*cos(theta);
B=a*sin(theta);
C=0;
%
Fx=x;
Fy=y;
Fz=z;
%
int_x=int(int(Fx*A,theta,0,2*pi),z,-h,h);
int_y=int(int(Fy*B,theta,0,2*pi),z,-h,h);
int_z=int(int(Fz*C,theta,0,2*pi),z,-h,h);
%
int_2=int_x+int_y+int_z
sec_sufr.m

>> clear

MATLAB

108

>> sec_surf

int2 =
4/3*a^3*pi
int_2 =
4*pi*a^2*h

4
3

1 a 3 2
4 a 2 h

2.24 1
2.24 1

2.17

MATLAB

109

f A = ( P, Q, R )

gradf =

f
f
f
i+
j+ k
x
y
z

divA =

P Q R
+
+
x y z
i

rotA =

x
P

y
Q

z
R

1 u = ln( x + y + z ) M (1, 2, 2)
2

2 A A = ( x 2 yz , xy 2 z , xyz 2 )

MATLAB

110

\\chapter2.rar\2-17.exe
\\chapter2\changlun.m

Editor
% P266
syms x y z
f=log(x^2+y^2+z^2);
%
grad_1=[diff(f,x),diff(f,y),diff(f,z)];
disp('u ')
grad_1=simple(grad_1)
%
disp('u 12-2')
grad_2=subs(grad_1,{x,y,z},{sym('1'),sym('2'),sym('-2')})
%
P304
syms x y z
P=x^2*y*z;
Q=x*y^2*z;
R=x*y*z^2;
%
div_1=diff(P,x)+diff(Q,y)+diff(R,z);
rot_1=[diff(R,y)-diff(Q,z),diff(P,z)-diff(R,x),diff(Q,x)-diff(P,y)];
%
disp(' A ')
div_2=simple(div_1)
disp(' A ')
rot_2=simple(rot_1)
changlun.m

>> clear
>> changlun

u
grad_1 =
[ 2*x/(x^2+y^2+z^2), 2*y/(x^2+y^2+z^2), 2*z/(x^2+y^2+z^2)]
u 12-2
grad_2 =

MATLAB

2/9,

111

4/9, -4/9]

A
div_2 =
6*x*y*z
A
rot_2 =
[ x*z^2-x*y^2, x^2*y-y*z^2, y^2*z-x^2*z]

2x
2y
2z
, 2
, 2
gradu = 2
2
2
2
2
2
2
x + y + z x + y + z x + y + z
2.10 MATLAB
maple

A 6xyz

{x( z 2 y 2 ), y ( x 2 z 2 ), z ( y 2 x 2 )}

2.18

f = f ( x (u , v, w), y (u , v, w), z (u, v, w))


A = A1 (u, v, w)e1 + A2 (u, v, w)e 2 + A3 (u, v, w)e3

gradf =

1 f
1 f
1 f
e1 +
e2 +
e3
h1 u
h2 v
h3 w

MATLAB

112

divA =

[ (h2 h3 A1 ) + (h3 h1 A2 ) +
(h1h2 A3 )]
h1h2 h3 u
v
w
1
e1
h2 h3
rotA =

1
e2
h3 h1

u
h1A1

v
h2 A2

1
e3
h1h2

w
h3 A3

h1h2 h3

MATLAB

f = r cos( + z )

A = [r cos(2 ), + z , cos( )]
2

f =
A = [ sin(2 ), + ,sin( )]

MATLAB

113

\\chapter2.rar\2-18.exe
\\chapter2\zhu.m

Editor
%
%08 60 25
syms rou fa z positive
u=rou;
v=theta;
w=z;
%
x=rou*cos(theta);
y=rou*sin(theta);
z=z;
%
h1=sqrt(diff(x,u)^2+diff(y,u)^2+diff(z,u)^2);
h2=sqrt(diff(x,v)^2+diff(y,v)^2+diff(z,v)^2);
h3=sqrt(diff(x,w)^2+diff(y,w)^2+diff(z,w)^2);
%
h1=simple(h1);
h2=simple(h2);
h3=simple(h3);
%
syms f A1 A2 A3
f=u*cos(w+v);
A1=u*cos(2*v);
A2=v+w;
A3=cos(v);
%
grad_f=[diff(f,u)/h1,diff(f,v)/h2,diff(f,w)/h3];
div_A=(diff(h2*h3*A1,u)+diff(h3*h1*A2,v)+diff(h1*h2*A3,w))/h1/h2/h3;
rot1=diff(h3*A3,v)-diff(h2*A2,w);
rot2=diff(h1*A1,w)-diff(h3*A3,u);
rot3=diff(h2*A2,u)-diff(h1*A1,v);
rot_A=[rot1,rot2,rot3];
%

MATLAB

114

grad_f=simple(grad_f)
div_A=simple(div_A)
rot_A=simple(rot_A)
zhu.m

>> clear
>> zhu

grad_f =
[

cos(z+theta),

-sin(z+theta), -rou*sin(z+theta)]

div_A =
4*cos(theta)^2-2+1/rou
rot_A =
[ -sin(theta)-rou,
0, z+theta+2*rou*sin(2*theta)]

Editor
%
%2008 60 25
syms rou fa theta positive
u=rou;
v=fa;
w=theta;
%
x=u*sin(v)*cos(w);
y=u*sin(v)*sin(w);
z=u*cos(v);
%
h1=sqrt(diff(x,u)^2+diff(y,u)^2+diff(z,u)^2);
h2=sqrt(diff(x,v)^2+diff(y,v)^2+diff(z,v)^2);
h3=sqrt(diff(x,w)^2+diff(y,w)^2+diff(z,w)^2);
%
h1=simple(h1);
h2=simple(h2);
h3=simple(h3);
%
syms f A1 A2 A3
f=u*v*w;
A1=u*sin(v);
A2=v+w;
A3=sin(v);

MATLAB

115

%
grad_f=[diff(f,u)/h1,diff(f,v)/h2,diff(f,w)/h3];
div_A=(diff(h2*h3*A1,u)+diff(h3*h1*A2,v)+diff(h1*h2*A3,w))/h1/h2/h3;
rot1=diff(h3*A3,v)-diff(h2*A2,w);
rot2=diff(h1*A1,w)-diff(h3*A3,u);
rot3=diff(h2*A2,u)-diff(h1*A1,v);
rot_A=[rot1,rot2,rot3];
%
grad_f=simple(grad_f)
div_A=simple(div_A)
rot_A=simple(rot_A)
qiu.m

>> clear
>> qiu

grad_f =
[ fa*theta,

theta,

fa/(sin(fa)^2)^(1/2)]

div_A =
3*sin(fa)+1/rou/(1-cos(fa)^2)*cos(fa)*sin(fa)*fa+1/rou/(1-cos(fa)^2)*cos(fa)*sin(fa)*theta+
1/rou
rot_A =
[-rou*(-2*cos(fa)+2*cos(fa)^3+(1-cos(fa)^2)^(1/2))/(1-cos(fa)^2)^(1/2),
-(1-cos(fa)^2)^(1/2)*sin(fa),
fa+theta-rou*cos(fa)]

2 u 2u 2u
+
+
=0
x 2 y 2 z 2

MATLAB

116

2.19

MATLAB

Hamilton

MATLAB

Fx = x + 2 y + z + 5

Fy = 2 x + y + z

Fz = x + y + z 6

x = cos

L1 : y = sin
z = 7

= 0 = 2

MATLAB

117

Fx = 2 x 3 y + 4 z 5

Fy = z x + 8

Fz = x + y + z + 12
L1

x = cos8

L2 : y = 20sin
z = 7

\\chapter2.rar\2-19.exe
\\chapter2\pd_gong.m

Editor
%
syms x y z
F=[x+2*y+z+5,2*x+y+z,x+y+z-6];
Fx=F(1);
Fy=F(2);
Fz=F(3);
l1=diff(Fz,y)-diff(Fy,z);
%l1 1 0
l1=(l1==0);
l2=diff(Fx,z)-diff(Fz,x);
l2=(l2==0);
l3=diff(Fx,y)-diff(Fy,x);
l3=(l3==0);
if(l1&l2&l3)
disp('')
else
disp('')
end
%%%%%%%%55
%

MATLAB

118

syms x y z
F=[2*x-3*y+4*z-5,z-x+8,x+y+z+12];
Fx=F(1);
Fy=F(2);
Fz=F(3);
l1=diff(Fz,y)-diff(Fy,z);
%l1 1 0
l1=(l1==0);
l2=diff(Fx,z)-diff(Fz,x);
l2=(l2==0);
l3=diff(Fx,y)-diff(Fy,x);
l3=(l3==0);
if(l1&l2&l3)
disp('')
else
disp('')
end
pd_gong.m

>> clear
>> pd_gong

Editor
%

P51
%
%
syms x y z theta
x=cos(theta);

MATLAB

119

y=sin(theta);
z=7*theta;
%
F=[x+2*y+z+5,2*x+y+z,x+y+z-6];
%
ds=[diff(x),diff(y),diff(z)]';
int_1=int(F*ds,theta,0,2*pi)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
x=cos(8*theta);
y=20*sin(theta);
z=7*theta;
%
ds=[diff(x),diff(y),diff(z)]';
int_2=int(F*ds,theta,0,2*pi)
disp('')
%%%%%%%%%%%%%%%%%
%
syms x y z theta
x=cos(theta);
y=sin(theta);
z=7*theta;
%
F=[2*x-3*y+4*z-5,z-x+8,x+y+z+12];
%
ds=[diff(x),diff(y),diff(z)]';
int_3=int(F*ds,theta,0,2*pi)
ezplot3(x,y,z,[0,pi*2])
%%%%%%
%
x=cos(8*theta);
y=20*sin(theta);
z=7*theta;
%
ds=[diff(x),diff(y),diff(z)]';
int_4=int(F*ds,theta,0,2*pi)
disp('')
%%%
figure(2)
ezplot3(x,y,z,[0,pi*2])
gong.m

MATLAB

120

>> clear
>> gong

int_1 =
98*pi^2-70*pi
int_2 =
98*pi^2-30*pi

int_3 =
226*pi+98*pi^2
int_4 =
98*pi^2+204*pi

2.25 2.26

2.25
2.25 1 2

98 2 70 98 2 + 226 2.26
1 2 98 2 70
98 2 + 204

MATLAB

121

2.26

MATLAB

MATLAB maple
maple maple
MATLAB

1 MATLAB

MATLAB

122

1
ln 1 +
x
lim
x arccot x
1
2
2 f ( x ) =

1 f ( x ) = x sin x

ex
e x sin x

1 sin x + x cos x
2
+

cos x cos 2 x
3 f(x) x=0 6

1 x
1+ x
2
3
4
5
1 2 x + 2 x 2 x + 2 x 2 x
f ( x) =

t sin tdt

z = sin ( xy )

3 z
xy 2

x 2 y cos ( xy ) 2 x sin ( xy )
6

xdxdy D x
D

4
3

a 3

+ y 2 + z 2 = a 2

ex
cos x

MATLAB

123

MATLAB
Fourier Laplace

3.1

( a, b )

( a1 , b1 ) + ( a2 , b2 ) = ( a1 + a2 , b1 + b2 )

( a, b )( c, d ) = ( ac bd , ad + bc )
( a, b ) z z = a + bi
MATLAB i j MATLAB
C/C++Pascal

1 z=a+biab z
2 z z = ( cos + i sin )
z
3 Euler

z = ( cos + i sin )

z = ei

MATLAB

MATLAB

124

MATLAB

1 MATLAB 7+8i
2 5e 6i
3

2 + 2i 4 - 4i 5 + 6i
3 - 5i 2 - 2i 4 -8i

4 4 4 N (0,12 )
[ 0,1]

\\chapter3.rar\3-1.exe
\\chapter3\shengcheng.m

Editor
%1
a1=7+8*i
%(2)
a2=5*exp(6*i)
%3
a3=[2+2*i 4-4*i 5+6*i
3-5*i 2-2*i 4-8*i]
%(3)
b1=randn(4,4);
b2=rand(4,4);
format short
a4=b1+b2*i

MATLAB

125

shengcheng.m

>>clear
>>clc
>> shengcheng

a1 =
7.0000 + 8.0000i

a2 =
4.8009 - 1.3971i

a3 =
2.0000 + 2.0000i

4.0000 - 4.0000i

5.0000 + 6.0000i

3.0000 - 5.0000i

2.0000 - 2.0000i

4.0000 - 8.0000i

a4 =
0.2888 + 0.6085i -0.4650 + 0.5869i -1.3573 + 0.7176i -1.3813 + 0.4418i
-0.4293 + 0.0158i
0.0558 + 0.0164i
-0.3679 + 0.1901i

0.3710 + 0.0576i -1.0226 + 0.6927i


0.7283 + 0.3676i

1.0378 + 0.0841i

2.1122 + 0.6315i -0.3898 + 0.4544i

0.3155 + 0.3533i
1.5532 + 0.1536i
0.7079 + 0.6756i

4 randn randn

MATLAB

126

3.2

MATLAB

realimag abs angle


conj

1 4 4 A N (0,12 ) Hilerbt

2 A
3 A B
4 A+B
5 b = 3 + 4i b A
6 A b
7 A
8 A 3
9 A
10 A

MATLAB

127

\\chapter3.rar\3-2.exe
\\chapter3\yunsuan.m

Editor
%%%%(1)
disp('')
a1=randn(4,4)
disp(' hilbert ')
a2=hilb(4)
% A
disp(' A ')
A=a1+a2*i
%A
disp('')
re=real(A)
%A
disp('')
im=imag(A)
%%%%%%%
%(2)
disp('A ')
rou=abs(A)
disp('A ')
theta=angle(A)
%(3)
%
disp('A ')
B=conj(A)

%%(4)
%%
disp('A ')
C=A+B
%%5

MATLAB

128

%
b=3+4*i;
disp('A b ')
D=b.*A
%6
disp('A b')
E=A/b
%(7)
disp('A sine ')
s=sin(A)
%8
disp('A 3 ')
F=A.^3
%(9)
disp('A ')
H=log(A)
%(10)
disp('A ')
G=exp(A)
yunsuan.m

>> clear
>> yunsuan

a1 =
-2.4490

-0.6547

-0.3304

-0.9573

0.4733

-1.0807

-0.4999

1.2925

0.1169

-0.0477

-0.0360

0.4409

-0.5911

0.3793

-0.1748

1.2809

MATLAB

129

hilbert
a2 =
1.0000

0.5000

0.3333

0.2500

0.5000

0.3333

0.2500

0.2000

0.3333

0.2500

0.2000

0.1667

0.2500

0.2000

0.1667

0.1429

A
A=
-2.4490 + 1.0000i -0.6547 + 0.5000i -0.3304 + 0.3333i -0.9573 + 0.2500i
0.4733 + 0.5000i -1.0807 + 0.3333i -0.4999 + 0.2500i

1.2925 + 0.2000i

0.1169 + 0.3333i -0.0477 + 0.2500i -0.0360 + 0.2000i

0.4409 + 0.1667i

-0.5911 + 0.2500i

0.3793 + 0.2000i -0.1748 + 0.1667i

re =
-2.4490

-0.6547

-0.3304

-0.9573

0.4733

-1.0807

-0.4999

1.2925

0.1169

-0.0477

-0.0360

0.4409

-0.5911

0.3793

-0.1748

1.2809

im =
1.0000

0.5000

0.3333

0.2500

0.5000

0.3333

0.2500

0.2000

0.3333

0.2500

0.2000

0.1667

0.2500

0.2000

0.1667

0.1429

A
rou =
2.6453

0.8238

0.4693

0.9894

0.6885

1.1309

0.5589

1.3079

1.2809 + 0.1429i

MATLAB

130

0.3533

0.2545

0.2032

0.4714

0.6418

0.4288

0.2415

1.2889

A
theta =
2.7539

2.4894

2.3517

2.8861

0.8128

2.8424

2.6779

0.1535

1.2334

1.7594

1.7488

0.3614

2.7415

0.4852

2.3799

0.1111

A
B=
-2.4490 - 1.0000i -0.6547 - 0.5000i -0.3304 - 0.3333i -0.9573 - 0.2500i
0.4733 - 0.5000i -1.0807 - 0.3333i -0.4999 - 0.2500i

1.2925 - 0.2000i

0.1169 - 0.3333i -0.0477 - 0.2500i -0.0360 - 0.2000i

0.4409 - 0.1667i

-0.5911 - 0.2500i

0.3793 - 0.2000i -0.1748 - 0.1667i

1.2809 - 0.1429i

A
C=
-4.8980

-1.3094

-0.6607

-1.9145

0.9466

-2.1613

-0.9998

2.5851

0.2339

-0.0955

-0.0720

0.8818

-1.1822

0.7587

-0.3495

2.5619

A b
D=
-11.3471 - 6.7961i -3.9641 - 1.1188i -2.3244 - 0.3214i -3.8718 - 3.0791i
-0.5801 + 3.3931i -4.5753 - 3.3226i -2.4997 - 1.2496i
-0.9825 + 1.4678i -1.1432 + 0.5591i -0.9079 + 0.4561i
-2.7733 - 1.6144i
A b
E=

0.3380 + 2.1174i -1.1909 - 0.1990i

3.0776 + 5.7702i
0.6561 + 2.2636i
3.2714 + 5.5523i

MATLAB

131

-0.1339 + 0.5118i

0.0014 + 0.1648i

0.0137 + 0.0929i -0.0749 + 0.1832i

0.1368 - 0.0157i -0.0763 + 0.2129i -0.0200 + 0.1100i


0.0674 + 0.0213i
-0.0309 + 0.1246i

0.0343 + 0.0376i
0.0775 - 0.0367i

0.0277 + 0.0298i
0.0057 + 0.0480i

0.1871 - 0.1828i
0.0796 - 0.0505i
0.1766 - 0.1878i

A sine
s=
-0.9853 - 0.9044i -0.6866 + 0.4133i -0.3426 + 0.3212i -0.8433 + 0.1454i
0.5140 + 0.4638i -0.9317 + 0.1598i -0.4944 + 0.2217i

0.9808 + 0.0553i

0.1232 + 0.3372i -0.0492 + 0.2523i -0.0367 + 0.2012i

0.4327 + 0.1514i

-0.5748 + 0.2098i

0.3777 + 0.1870i -0.1763 + 0.1649i

0.9681 + 0.0410i

A 3
F=
-7.3414 +16.9931i

0.2104 + 0.5180i

0.0741 + 0.0721i -0.6977 + 0.6716i

-0.2489 + 0.2110i -0.9018 + 1.1308i -0.0312 + 0.1718i


-0.0374 - 0.0234i

0.0088 - 0.0139i

-0.0957 + 0.2464i

0.0091 + 0.0783i

0.0043 - 0.0072i
0.0092 + 0.0106i

2.0043 + 0.9944i
0.0490 + 0.0926i
2.0234 + 0.7003i

A
H=
0.9728 + 2.7539i -0.1938 + 2.4894i -0.7565 + 2.3517i -0.0107 + 2.8861i
-0.3733 + 0.8128i

0.1230 + 2.8424i -0.5817 + 2.6779i

0.2684 + 0.1535i

-1.0406 + 1.2334i -1.3684 + 1.7594i -1.5935 + 1.7488i -0.7521 + 0.3614i


-0.4435 + 2.7415i -0.8467 + 0.4852i -1.4209 + 2.3799i

0.2538 + 0.1111i

A
G=
0.0467 + 0.0727i

0.4560 + 0.2491i

0.6791 + 0.2351i

0.3720 + 0.0950i

1.4087 + 0.7696i

0.3207 + 0.1110i

0.5877 + 0.1501i

3.5695 + 0.7236i

1.0622 + 0.3678i

0.9238 + 0.2359i

0.9454 + 0.1916i

1.5326 + 0.2578i

0.5365 + 0.1370i

1.4322 + 0.2903i

0.8280 + 0.1393i

3.5634 + 0.5125i

MATLAB

132

Maple
Mathmatics Fortran

3.3

z = a f ( z ) f ( z )

( z z0 )1 f ( z ) Resf ( z0 )

Res [ f ( z ), z = a ] = lim( z a) f ( z )
za

z = a m

d m 1
1
f ( z )( z a )m
z a ( m 1)! dz m 1

Res [ f ( z ), z = a ] = lim

MATLAB
1
c=limit(F*(Z-a),z,a)
m
c=limit(diff(F*(z-a)^m,z,m-1)/prod(1:m-1),z,a)

MATLAB residure Residure

[r,p,k] = residue(b,a)
[b,a] = residue(r,p,k)

MATLAB

133

residure

1 residue s

s=

5 z 3 + 3z 2 2 z + 7
4 z 3 + 8 z + 3

2 f

eiaz eibz
f =
z2
3 g z0 = 1

g=

( z 1)

exp ( z 2 )

\\chapter3.rar\3-3.exe
\\chapter3\liushu.m

Editor

MATLAB

134

%
%08 7 23
%1 residure
s2=[ 5 3 -2 7];
s1=[-4 0 8 3];
[r,p,k]=residue(s2,s1)
%(2)
syms z a b
f=(exp(i*a*z)-exp(i*b*z))/z^2
disp('f 0 ')
c_f=limit(f*z,z,0)
%(3)

g=1/(z-1)^2*exp(z^2)
disp('f 2 ')
c_g=limit(diff(g*(z-1)^2,z,1)/prod(1:1),z,1)
liushu.m

>> clear
>> liushu

r=
-1.41671015413220
-0.66525057020591
1.33196072433811
p=
1.57371511684888
-1.16443609098554
-0.40927902586334
k=
-1.25000000000000

MATLAB

135

f=
(exp(i*a*z)-exp(i*b*z))/z^2
f 0
c_f =
i*a-i*b
g=
1/(z-1)^2*exp(z^2)
f 2
c_g =
2*exp(1)

-1.41671015413220
r = -0.66525057020591
1.33196072433811

1.57371511684888
p = -1.16443609098554
-0.40927902586334

Res s ( z ) , 1.57371511684888 = -1.41671015413220


Res s ( z ) , -1.16443609098554 = -0.66525057020591
Res s ( z ) , -0.40927902586334 = 1.33196072433811

k -1.25
resdue

MATLAB

136

f ia ib g
2e

3.4

f ( z )dz

2 i

f ( z )dz = 2 i Res[ f ( pi )]
i =1

z =3

1
z
sin
dz
z 1
4
2

MATLAB

137

exp ( z )
dz
z =1
z3

\\chapter3.rar\3-4.exe
\\chapter3\liushu_yy.m

Editor
%(1)
syms z
f=1/(z^2-1)*sin(pi*z/4)
c1=limit(f*(z-1),z,1);
c2=limit(f*(z+1),z,-1);
disp(' s1 ')
s1=2*pi*i*(c1+c2)
%(2)
g=exp(z)/z^3;
c3=limit(diff((g*z^3),z,2)/prod(1:2),z,0);
disp(' s2 ')
s2=2*pi*i*c3
liushu_yy.m

>> liushu_yy

f=
1/(z^2-1)*sin(1/4*pi*z)

s1

MATLAB

138

s1 =
i*pi*2^(1/2)
g=
exp(z)/z^3
s2
s2 =
i*pi

3.5

Fourier

Fourier

F ( ) =

f ( x)e i x dx

MATLAB Fourier
F = fourier(f)
F = fourier(f,v)
F = fourier(f,u,v)
Fourier F = fourier(f,v)
v F = fourier(f,u,v) v u

MATLAB

139

Fourier

1
2

1 F1 ( ) =
2 F2 ( ) =
3 F3 ( ) =

f ( x )e i x dx

f ( x)e i x dx
f ( x)e i 2 x dx

MATLAB

Fourier

Fourier

MATLAB Fourier

Fourier

Fourier
1

f = exp ( 2 x )

g=

h = cos 2 2 x

4sin 3x
x

\\chapter3.rar\3-5.exe
\\chapter3\fuliye.m

Editor
%Fourier

MATLAB

syms x
disp(' f')
f=exp(-2*abs(x))
disp(' F')
F=fourier(f)
%
subplot(1,2,1)
ezplot(f)
grid
subplot(1,2,2)
ezplot(F)
grid
%%
figure(2)
disp(' g')
g=4*sin(3*x)/x
disp(' G')
G=fourier(g)
%
subplot(1,2,1)
ezplot(g)
grid
subplot(1,2,2)
ezplot(G)
grid
%
figure(3)
disp(' h')
h=(cos(2*x))^2
disp(' H')
H=fourier(h)
%
subplot(1,2,1)
ezplot(h)
grid
subplot(1,2,2)
ezplot(H)

140

MATLAB

grid
fuliye.m

>>clear
>>clc
>>fuliye

f
f
f=
exp(-2*abs(x))

F
F=
4/(4+w^2)
g
g=
4*sin(3*x)/x
G
G=
4*pi*(heaviside(w+3)-heaviside(w-3))
h
h=
cos(2*x)^2

141

MATLAB

142

H
H=
1/2*pi*(2*dirac(w)+dirac(w+4)+dirac(w-4))

1 Fourier

4
3.1
4 + 2

3.1 f F
2 Fourier MATLAB
4*pi*(heaviside(w+3)-heaviside(w-3))
h H 3.2

MATLAB

143

3.2 h H
3
1/2*pi*(2*dirac(w)+dirac(w+4)+dirac(w-4))
dirac

H=

2 ( ) + ( + 4 ) + ( 4 )
2

3.3 3 Fourier

3.3 h H

MATLAB

144

3.6

Fourier

Fourier

f ( x) =

1
2

F ( )ei x d

Fourier
f = ifourier(F)
f = ifourier(F,u)
f = ifourier(F,v,u)
Fourier Fourier

f1 ( x ) =
1

f 2 ( x) =

1
2
1
2

F1 ( )ei x d

F2 ( )ei x d

f3 ( x) = F3 ( )ei 2 x d

3
Fourier

Fourier

MATLAB Fourier

Fourier

Fourier
1

F=

( 2) + ( + 2)

2

MATLAB

145

H=

1 sin(2 )

G=

1 4sin( 3) 4sin( + 3)
+
2 3
+ 3

\\chapter3.rar\3-6.exe
\\chapter3\fuliye_fan.m

Editor
%Fourier
%8 23
% 1
syms w
disp(' F')
F=(dirac(w-2)+dirac(w+2))/2
disp('F ')
f=ifourier(F)
%
subplot(1,2,1)
ezplot(F)
grid
subplot(1,2,2)
ezplot(f)
grid
% 2
figure(2)
disp(' H')
H=sin(w*2)/w/pi
disp('H ')
h=ifourier(H)
%
subplot(1,2,1)
ezplot(H)

MATLAB

146

grid
subplot(1,2,2)
ezplot(h)
axis([-6,6,-1,5])
grid

% 3
figure(3)
disp(' G')
G=(sin(3-w)*4/(3-w)+sin(3+w)*4/(3+w))/2/pi
%
disp('G ')
g=ifourier(G)
%
subplot(1,2,1)
ezplot(G)
grid
subplot(1,2,2)
ezplot(g)
grid
fuliye_fan.m

>>clear
>>clc
>> fuliye_fan

F
F=
1/2*dirac(w-2)+1/2*dirac(w+2)
F
f=

MATLAB

147

1/2*cos(2*x)/pi
H
H=
sin(2*w)/w/pi
H
h=
1/2*(heaviside(x+2)-heaviside(x-2))/pi
G
G=
(-2*sin(w-3)/(-w+3)+2*sin(w+3)/(w+3))/pi
G
g=
2*cos(3*x)*(-heaviside(x-1)+heaviside(x+1))/pi

Fourier

f =

1
cos ( 2 )
2

3.1

MATLAB

148

3.4 F f
2 MATLAB
1/2*(heaviside(x+2)-heaviside(x-2))/pi
heviside heviside(x) x>0 1x<0 x NaN 0
3.5

3.5 H h
3 MATLAB
2*cos(3*x)*(-heaviside(x-1)+heaviside(x+1))/pi
heaviside 3.6 G g

MATLAB

149

3.6 G g

3.7 Laplace

Laplace

L( s ) = f (t )e st dt
0

MATLAB
laplace(F)
laplace(F,t)
laplace(F,w,z)
t L = laplace(F,t)
L t s L = laplace(F,w,z) w sz
t s

Laplace

Laplace

MATLAB

150

MATLB Laplace

Laplace
1

f = sin 2t + sh3t

g = exp ( 4t ) sin 3t +

( exp ( 2t ) + 2t 1)
4

\\chapter3.rar\3-7.exe
\\chapter3\laplace_main.m

Editor
%Laplace
syms t
disp(' f')
f=sin(2*t)+sinh(3*t)
disp('f Lf')
Lf=laplace(f)
pretty(Lf)
%
subplot(1,2,1)
ezplot(f)
grid
subplot(1,2,2)
ezplot(Lf)
grid
%%%%%
figure(2)
syms t

(2)

MATLAB

151

disp(' g')
g=exp(-4*t)*sin(3*t)+(exp(-2*t)+2*t-1)/4;
disp('g Lg')
Lg=laplace(g)
pretty(Lg)
%
subplot(1,2,1)
ezplot(g)
grid
subplot(1,2,2)
ezplot(Lg)
grid
laplace_main.m

>>clear
>>clc
>> laplace_main

f
f=
sin(2*t)+sinh(3*t)

f Lf
Lf =
2/(s^2+4)+3/(s^2-9)

2
------ + ------

MATLAB

152

2
s +4

2
s -9

g
g Lg
Lg =
1/3/(1/9*(s+4)^2+1)+1/4/(s+2)+1/2/s^2-1/4/s

1/3 ---------------- + 1/4 ----- + 1/2 ---- - 1/4 1/s


2
1/9 (s + 4)

s+2

+1

2
s

pretty 1

L[ f ] =

2
3
+ 2
s + 4 s 9
2

3.7

3.7

Laplace

2
1/3/(1/9*(s+4)^2+1)+1/4/(s+2)+1/2/s^2-1/4/s
pretty Latex MATLAB
Latex latex

MATLAB

153

1/3\, \left( 1/9\, \left( s+4 \right) ^{2}+1 \right) ^{-1}+1/4\, \left( s+2 \right)
^{-1}+1/2\,{s}^{-2}-1/4\,{s}^{-1}
Latex
3.8 g Laplace

7.8

g Lapalce

3.8 Laplace

Laplace

F (t ) =

c + i

c i

L( s )e st ds

F = ilaplace(L)
F = ilaplace(L,y)
F = ilaplace(L,y,x)
F = ilaplace(L,y) F t
y

F ( y) =

c +i

c i

L(s )e sy ds

F = ilaplace(L,y,x) F t xL s y

F ( x) =

c + i

c i

L( s )e xy dy

MATLAB

154

Laplace

MATLAB

MATLAB

Laplace
1

L[ f ] =

L[ f ] =

( s + 2 )( s + 3)
s+2

( s + 2)

+4

\\chapter3.rar\3-8.exe

\\chapter3\laplace_fan_main.m

Editor
%Laplace
syms s
disp(' Lf')
Lf=1/(s+2)/(s+3)
disp('Lf f')
f=ilaplace(Lf)
pretty(f)
%

MATLAB

155

subplot(2,2,1)
ezplot(Lf)
grid
subplot(2,2,2)
ezplot(f)
grid
%%%%%

(2)

syms s
disp(' Lg')
Lg=(s+2)/((s+2)^2+4)
disp('Lg g')
g=ilaplace(Lg)
pretty(g)
%
subplot(2,2,3)
ezplot(Lg)
grid
subplot(2,2,4)
ezplot(g)
grid
laplace_fan_main.m

>>clear
>>clc
>> laplace_fan_main

Lf
Lf =
1/(s+2)/(s+3)

Lf f

MATLAB

156

f=
2*exp(-5/2*t)*sinh(1/2*t)

2 exp(- 5/2 t) sinh(1/2 t)


Lg
Lg =
(s+2)/((s+2)^2+4)

Lg g
g=
exp(-2*t)*cos(2*t)
exp(-2 t) cos(2 t)

MATLAB pretty
3.9

MATLAB

157

3.9
Laplace
MATLAB Laplace

1 Laplace

2
3

MATLAB
MATLAB c/c++javaDelphi
Fortran

MATLAB

1 MATLAB 55

2 residue

b ( s ) 5s 2 + 3s 2 2 s + 7
=
a (s)
4 s 3 + 8 s + 3

MATLAB

158

b (s)
r
r
r
= 1 + 2 +L + n + k (s)
a ( s ) s p1 s p2
s pn

-1.4167
1.5737

r = -0.6653 , p = -1.1644 , k = -1.2500

1.3320
-0.4093

3 Fourier

1
,p>0
t + p2

f (t ) =
F ( ) =

exp ( p )
p

4 Fourier

F ( ) =

2
a + 2

f ( x ) = sgn x exp a x
5 Laplace

f (t ) =
F ( s ) =

1
( at sin at )
a3

s ( s + a2 )
2

6 Laplace

F (s) =
f ( t ) =

s ( s + a2 )

1
(1 cos at )
a2

MATLAB

159

MATLAB

4.1 Jacobi

AX = b
aii 0

bij = aij / aii i j

i=1,2,L ,n
gi = bi / aii

x1 = b12 x2 + b13 x3 + L + b1n xn + g1


x = b x + b x + L + b x + g
2
21 x
23 3
2n n
2

x1 = bn1 x1 + bn 2 x2 + L + bn ,n 1 xn 1 + g n
D = diag ( a11 , a22 ,L , ann ) g = ( g1 , g 2 ,L g n )T , B = D-1 (D - A) = E - D-1 A

X = BX + g

MATLAB

160

X ( k ) = BX ( k +1) + g Jacobi

Jacobi

Jacobi

Jacobi

4 x1 x2 + x3 = 7

4 x1 8 x2 + x3 = 21
2 x + x + 5 x = 15
1
2
3

10

\\chapter4.rar\4-1.exe
\\chapter4\Fjacobi.m, jacobi.m

Jacobi
Editor
function [x,k]=Fjacobi(A,b,x0,tol)
% jacobi
% tol x0
max1= 300;
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
B=D\(L+U);
f=D\b;

% 300 300

MATLAB

161

x=B*x0+f;
k=1;

while norm(x-x0)>=tol
x0=x;
x=B*x0+f;
k=k+1;
if(k>=max1)
disp(' 300 ');
return;
end
%[k x'] %
end
Fjacobi.m
Editor
%jacobi
%08 4 14
a=[4 -1 1;4 -8 1;-2 1 5];
b=[7 -21 15]';
x0=[0 0 0]' ; %
[x,k]=Fjacobi(a,b,x0,1e-7)
jacobi.m

>> jacobi

x=
1.99999997450829
3.99999999073029
3.00000001297760
k=
17
MATLAB

4.1
1E-7 17

MATLAB

162

x1( k )

x2 ( k )

x3( k )

0.00000000000000

0.00000000000000

0.00000000000000

1.65625000000000

3.87500000000000

3.17500000000000

1.92500000000000

3.85000000000000

2.88750000000000

1.99062500000000

3.94843750000000

3.00000000000000

1.98710937500000

3.99531250000000

3.00656250000000

1.99718750000000

3.99437500000000

2.99578125000000

1.99964843750000

3.99806640625000

3.00000000000000

1.99951660156250

3.99982421875000

3.00024609375000

1.99989453125000

3.99978906250000

2.99984179687500

10

1.99998681640625

3.99992749023437

3.00000000000000

11

1.99998187255859

3.99999340820313

3.00000922851563

12

1.99999604492188

3.99999208984375

2.99999406738281

13

1.99999950561523

3.99999728088379

3.00000000000000

14

1.99999932022095

3.99999975280762

3.00000034606934

15

1.99999985168457

3.99999970336914

2.99999977752686

16

1.99999998146057

3.99999989803314

3.00000000000000

17

1.99999997450829

3.99999999073029

3.00000001297760

4.1 Jacobi
4.1 4.1
5
Jacobi

MATLAB

163

4.1 Jacobi

4.2 Gauss-Seidel

Jacobi X

(k )

( k +1)

Gauss-Seidel

x1( k +1) = b12 x2 ( k ) + b13 x3 ( k ) + L + b1n xn ( k ) + g1


( k +1)
= b12 x2( k +1) + b13 x3( k ) + L + b1n xn ( k ) + g1
x2

M
x ( k +1) = b x ( k +1) + b x ( k +1) + L + b x ( k +1) + g
n , n 1 n 1
12 2
13 3
1
n

Gauss-Seidel

Gauss-Seidel

MATLAB

164

Gauss-Seidel 4.1 107

\\chapter4.rar\4-2exe
\\chapter4\Fgseid.m, gseid.m

-
Editor
function [x,k]=Fgseid(A,b,x0,tol)
%-
% tol
max1= 300; % 300
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
G=(D-L)\U;
f=(D-L)\b;
x=G*x0+f;
k=1;
while norm(x-x0)>=tol
x0=x;
x=G*x0+f;
k=k+1;
if(k>=max1)
disp('');
return;
end
% [k,x'] %
end
Fgseid.m

Editor
%gauss-seidel
%08 4 14

MATLAB

165

a=[4 -1 1;4 -8 1;-2 1 5];


b=[7 -21 15]';
x0=[0 0 0]' ; %
[x,k]=Fgseid(a,b,x0,1e-7)
gseid.m

>>gseid

x=
1.99999999461628
3.99999999627471
2.99999999859157
k=
10

Gauss-Seidel 10 Jacobi

4.2

x1( k )

x2( k )

x3( k )

0.00000000000000

0.00000000000000

0.00000000000000

1.87500000000000

3.93750000000000

2.96250000000000

1.99375000000000

3.99218750000000

2.99906250000000

1.99828125000000

3.99902343750000

2.99950781250000

1.99987890625000

3.99987792968750

2.99997597656250

1.99997548828125

3.99998474121094

2.99999324707031

1.99999787353516

3.99999809265137

2.99999953088379

1.99999964044189

3.99999976158142

2.99999990386047

1.99999996443024

3.99999997019768

2.99999999173256

10

1.99999999461628

3.99999999627471

2.99999999859157

4.2 Gauss-Seidel
Gauss-Seidel Jacobi

MATLAB

166

4.2 4.2
Gauss-Seidel

4.2 -

4. 3 SOR

Jacobi Jacobi
Gauss-Seidel Gauss-Seidel

Gauss-Seidel

X ( k +1) = LX ( k +1) + UX( k ) + g

X ( k +1) = X ( k ) + X

X = LX( k +1) + UX( k ) + g - X


X( k +1) = X ( k ) + X
= (1 ) X( k ) + (LX( k +1) + UX (k ) + g)

MATLAB

167

X ( k +1) = (D - L)-1[(1- )D + U]X ( k ) + (D - L)-1 b


=1 Guass-Seidel >1 <1

5 x1 x2 x3 x4 = 4
x + 10 x x x = 12
1
2
3
4

x1 x2 + 5 x3 x4 = 8
x1 x2 x3 + 10 x4 = 34
107

\\chapter4.rar\4-3.exe
\\chapter4\Fsor.m,sor.m

Editor
function [x,k]=Fsor(A,b,x0,w,tol)
%
%08 /4 /14
%tol
max = 300; %
%
if(w<=0 || w>=2)

MATLAB

168

error;
return;
end
% A

D=diag(diag(A));

% A

L=-tril(A,-1);

% A

U=-triu(A,1);

B=inv(D-L*w)*((1-w)*D+w*U);
f=w*inv((D-L*w))*b;
x=B*x0+f;
k=1;

while norm(x-x0)>=tol
x0=x;
x =B*x0+f;
k=k+1;
if(k>=max)
disp('SOR ');
return;
end
% [k,x']

end
Fsor.m
Editro
%
%08 /4 /14
a=[5 -1 -1 -1
-1 10 -1 -1
-1 -1 5 -1
-1 -1 -1 10];
b=[-4 12 8 34]';
x0=[1 1 1 1]';
[x,k]=Fsor(a,b,x0,1.2,1e-7)
sor.m

>>sor

x=
1.00000000983388

MATLAB

169

1.99999999502864
3.00000000071336
4.00000000211974
k=
14

14

x1( k )

x2 ( k )

x3( k )

x4( k )

1.0000000000000

1.0000000000000

1.00000000000000

1.00000000000000

1.02069360640000

2.05212603596800

3.24099400056832

3.98523856515236

1.06266734312528

2.02424278186792

2.96911688552127

4.00967552823126

0.98819497832385

1.99118993067558

3.00355112783111

3.99601721877341

1.00014299088246

2.00172737436332

2.99878279459838

4.00087493542662

1.00030382687671

1.99964991195554

3.00044232290245

3.99987254032284

0.99993078066806

2.00009949487609

2.99988821122759

4.00001571034804

1.00001466381480

1.99997033127163

3.00002252705876

3.99999776058782

0.99999481577741

2.00000774615655

2.99999557199348

4.00000022395373

10

1.00000188694942

1.99999817271628

3.00000095366997

4.00000007680954

11

0.99999943137711

2.00000042087954

2.99999979224189

12

1.00000015094842

1.99999990204428

3.00000004034457

4.00000002280489

13

0.99999996145681

2.00000002254390

2.99999999356443

3.99999999274684

14

1.00000000983388

1.99999999502864

3.00000000071336

4.00000000211974

4.3
4.3

3.99999994197792

MATLAB

170

4.3
4.3

4.4

Gauss

a)

b)

c)

Step1 AX = b

a11 a12 L
a a L
[A, b] = 21 22
M M

an1 an 2 L
a11 0

a1n b1
a2n b2
M M

ann bn
ai1

a11

MATLAB

171

a11 a12 L a1n

0 a22 L a2n

a11
a11
[A1 , b1 ] =
M
M M

an 2
a
L nn
0
a11
a11

b1
b2
a11

M
bn

a11

Step2
Step3

Gauss

Gauss

2 x1 + 2 x2 + 3 x3 = 3

4 x1 + 7 x2 + 7 x3 = 1
2 x + 4 x + 5 x = 7
1
2
3

\\chapter4.rar\4-4.exe
\\chapter4\Fgauss.m,gauss.m

Editor
function X=Fgauss(A,b)
% Gauss
zengguang=[A b]; n=length(b);
ra=rank(A);

MATLAB

172

rz=rank(zengguang);
temp1=rz-ra;
if temp1>0,
disp('')
return
end
if ra==rz
if ra==n
X=zeros(n,1);
C=zeros(1,n+1);
for p= 1:n-1
for k=p+1:n
m= zengguang(k,p)/ zengguang(p,p);
zengguang(k,p:n+1)= zengguang(k,p:n+1)-m* zengguang(p,p:n+1);
end
end
b=zengguang(1:n,n+1);
A=zengguang(1:n,1:n);
X(n)=b(n)/A(n,n);
for q=n-1:-1:1
X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);
end
else
disp('')
end
end
Fgauss.m

Editor
%Gauss
a=[2 2 3
477
-2 4 5];
b=[3 1 -7]';
x=Fgauss(a,b)
gauss.m

>> gauss

MATLAB

173

x=
2
-2
1

x = ( 2, 2,1)
T

Gauss

a11 a12 L

a21 a22 L
M M

an1 an 2 L

a1n
b1


a2 n
b
x= 2
M
M


ann
bn

a11 a12 L a1i

a21 a22 L a2i


M

ai1 ai 2

M
L aii

0, i = 1, 2,L , n

Gauss

4.5

3.4

k akk ( k 1) akk ( k 1)

ak +1, k ( k 1) ank ( k 1)

MATLAB

174

akk ( k 1) = max aik ( k 1)


k i n

0
2

2
2
-3
1

0
3
0
-6

1 x1 0

2 x2 2
g
=
1 x3 7

-5 x4 6

\\chapter4.rar\4-5.exe
\\chapter4\Fzhuyuan.m, zhuyuan.m

Editor
function X=Fzhuyuan(A,b)
%
zengguang=[A b]; n=length(b);
ra=rank(A);
rz=rank(zengguang);
temp1=rz-ra;
if temp1>0,
disp('.')
return

MATLAB

175

end
if ra==rz
if ra==n
X=zeros(n,1); C=zeros(1,n+1);
for p= 1:n-1
[Y,j]=max(abs(zengguang(p:n,p))); C=zengguang(p,:);
zengguang(p,:)= zengguang(j+p-1,:); zengguang(j+p-1,:)=C;
for k=p+1:n
m= zengguang(k,p)/ zengguang(p,p);
zengguang(k,p:n+1)= zengguang(k,p:n+1)-m* zengguang(p,p:n+1);
end
end
b=zengguang(1:n,n+1);A=zengguang(1:n,1:n); X(n)=b(n)/A(n,n);
for q=n-1:-1:1
X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);
end
else
disp('')
end
end
Fzhuyuan.m

Editor
%
a=[0 2 0 1
2232
4 -3 0 1
6 1 -6 -5];
b=[0 -2 -7 6]';
x=Fzhuyuan(a,b)
zhuyuan.m

>> zhuyuan

x=
-0.50000000000000
1.00000000000000
0.33333333333333
-2.00000000000000

MATLAB

176

Gauss

4.6 LU

A L U
A LU L Doolittle
U Crout
A A

A = LU
L U

AX = b

LUX = b
UX = Y

LY = b

Step1 A LU
Step2 LY = b
Step3 UX = Y

MATLAB LU

LU

LU LU

LU

MATLAB

177

MATLAB LU

5.8 x1 x2 x3 + 4.6 x4 = 21.3


7 x 8 x + x 30.3 x = 15.7
1
2
3
4

9.5 x1 + 2 x2 + 5 x3 x4 = 16.6
6 x1 x2 + 12.9 x3 + 10 x4 = 7.9

\\chapter4.rar\4-6.exe
\\chapter4\LUfj.m

Editor
%LU
a=[5.8 -1 -1 4.6
7 -8 1 -30.3
9.5 2 5 -1
6 -1 12.9 10];
b=[21.3 -15.7 16.6 7.9]';
[l,u]=lu(a);
x=u\(l\b)
LUfj.m

>>LUfj

x=
2.59451803634398
0.03959342091970
-1.41333222048038
1.06044708470527

LU

MATLAB

178

4.7 Cholesky

A = [ aij ] R nn A = GG T A Cholesky
G R nn
A = [ aij ] R nn G

A = GG T
G

AX = b

GG T X = b

MATLAB Cholesky

Cholesky

Cholesky

Cholesky

MATLAB

A=

179

16.42904628903813 16.12007848664000 7.82278120608096 2.95700879000000


16.12007848664000 17.16712678518432 4.36553354006000 4.36310597100000
7.82278120608096 4.36553354006000 14.88811554662400 -0.53261940800000

2.95700879000000 4.36310597100000 -0.53261940800000 18.86911452484754

x1
15.6
x
5.8
2

X=
b=
x3
20.8

11.9
x4
Cholesky AX = b

\\chapter4.rar\4-7.exe
\\chapter4\cholfj.m

Editor
%cholesky
%*********************
%
%temp=[1 2.2336 3 1.20003222
%1.2 1.52221115 3 2.1
%-1.6 3.1444 1.2 -1.000432
%1.00055213 2.1 -2.1114 3];
%
% a=temp*temp'
%***********************
a=[

16.42904628903813

16.12007848664000

7.82278120608096

2.95700879000000
16.12007848664000 17.16712678518432

4.36553354006000

4.36310597100000

7.82278120608096

4.36553354006000 14.88811554662400 -0.53261940800000

2.95700879000000

4.36310597100000 -0.53261940800000 18.86911452484754];

b=[15.6 5.8 20.8 11.9]';


ch=chol(a);
x=ch\(ch'\b)

MATLAB

180

cholfj.m

>>cholfj

x=
21.04568809397816
-18.77801201029621
-4.09920767640171
1.55888894709567

MATLAB
Cholesky Hermitan
MATLAB

4.8

A C mn U C mn V C mn

A = UV H

0
= 1
0 0
1 = diag ( 1 , 2 ,L , r )

1 2 L r > 0, r = rank (A )

MATLAB

181

MATLAB

MATLAB

6.5
6.2

-1 -1
7
-5
2.1 -6
5.6 3.7

3.6
4
4.8
2.1

x1 12.3
x 21.4
g 2 =

x3 7.8

x4 21

\\chapter4.rar\4-8.exe
\\chapter4\svdfj.m

Editor
%
a=[6.5

-1 -1 3.6

6.2 7 -5 4
3 2.1 -6 4.8
1 5.6 3.7 2.1];
b=[12.3 21.4 -7.8 21]';
[u,s,v]=svd(a)
x=v*inv(s)*u'*b
svdfj.m

>> svdfj

MATLAB

182

x=
3.97995209192822
2.50936709711725
2.19909253839485
-2.46145248945037

u=
-0.37530393110199

0.31187061896009 -0.87271349503002 -0.01596345580798

-0.74652590797365

-0.19583143321837

-0.52134773516563

0.34317667132178

-0.17332791772008

0.24028706083599

0.58873699296253

0.35952671579466 -0.69366191471644

-0.86406975358104 -0.22665794629177 -0.41468912364328

s=
14.85749451186780

0
0

7.46282716561529

0
0

5.21320273589473

0
0

2.22341736082823
v=
-0.59265088725310
-0.46547848308270

0.13111175911714 -0.63894229865359
-0.77729393070950

0.39139941954830

0.47257525480137
0.16109134503896

0.44386397593026 -0.61489184557183 -0.63771095689545 -0.13497231040525


-0.48484995462154

0.02306231021941 -0.17856082667821 -0.85586487398819

x=
3.97995209192822
2.50936709711725
2.19909253839485
-2.46145248945037

MATLAB

183

4.9

MATLAB bicg bicg


x = bicg (A,b)
bicg (A,b,tol)
bicg (A,b,tol,maxit)
bicg (A,b,tol,maxit,M)
bicg (A,b,tol,maxit,M1,M2)
bicg (A,b,tol,maxit,M1,M2,x0)
bicg (afun,b,tol,maxit,mfun1,mfun2,x0,p1,p2,...)
[x,flag] = bicg (A,b,...)
[x,flag,relres] = bicg (A,b,...)
[x,flag,relres,iter] = bicg (A,b,...)
[x,flag,relres,iter,resvec] = bicg (A,b,...)
bicg

b - AX
b
(A,b,tol,maxit,M1,M2,x0)Abtol
6

10 matix20
2020x0

[x,flag,relres,iter,resvec]x flag
relers iter resvec
b - AX

MATLAB

184

AX = b

23.6
4.2

9.8
A=
8.4
-9.5

26.32

-6.8
7.62
-6.8
-9.05
4.54
3.08

4.5
0.8
45.2
24.4
15.8
4.6

6.3
-3.1
3.07
2.65
4.89
-3.5

7.2
-4.5
-4.37
6.53
4.8
-7.8

8.6
-9.5000
8.1200
5.3

42.3000
7.82
b =

-3.64
-21.4000
4.7000
-7.48

25.6
3.4700

\\chapter4.rar\4-9.exe

\\chapter4\bicgFa.m

Editor
%
%A,b
A=[23.6 -6.8 4.5 6.3 7.2 8.6
4.2 7.62 0.8 -3.1 -4.5 5.3
9.8 -6.8 45.2 3.07 -4.37
8.4 -9.05

7.82

24.4 2.65 6.53 -3.64

-9.5 4.54 15.8 4.89 4.8 -7.48


26.32

3.08 4.6 -3.5 -7.8 25.6];

b=[-9.5

8.12 42.3 -21.4

4.7 3.47]';

%
[x,flag,relres,iter,resvec]=bicg(A,b,1e-12)
%x
%flag
%relres
% iter

MATLAB

185

%
plot(resvec)
%
bicgFa.m

>> clear
>> bicgFa

x=
1.25672052300766
0.39606838896977
-0.14086092876145
7.61912341562296
-8.41645004513924
-2.70157003627711
flag =
0
relres =
8.430700845349511e-014
iter =
6
resvec =
49.37170545970637
65.90486181041918
50.86097015776917
76.64773215087207
52.67881141389233
3.77088083326368
0.00000000000416
x flag=0

4.4

MATLAB

186

4.4

4.10 LSQR

x = lsqr ( A, b)
b AX

x = lsqr(A,b)
lsqr(A,b,tol)
lsqr(A,b,tol,maxit)
lsqr(A,b,tol,maxit,M)
lsqr(A,b,tol,maxit,M1,M2)
lsqr(A,b,tol,maxit,M1,M2,x0)
lsqr(afun,b,tol,maxit,m1fun,m2fun,x0,p1,p2,...)
[x,flag] = lsqr(A,b,...)
[x,flag,relres] = lsqr(A,b,...)
[x,flag,relres,iter] = lsqr(A,b,...)
[x,flag,relres,iter,resvec] = lsqr(A,b,...)
[x,flag,relres,iter,resvec,lsvec] = lsqr(A,b,...)
A
b AX = b Abtol 106
Maxit 20

x flag=0
relres iter resvec

MATLAB

187

Ab

-3.1
2.6
3.2
7.6

9.8
-6.4

-4.05
6.4
-9.5
4.54

26.3 3.4
A=
4.6
3.4

-1.5 8.2
-9.15 4.5

8.4
-9.05

7.61
0.2
18
-0.8

0.5
0.8
4.2
21.4
15.8
4.5
4.2
4.1
15.8
24.4
10.8
4.2

0.3
-9.1
3.37
2.15
4.89
-3.51
-2.15
-0.41
4.8
2.65
-5.1
3.7

1.2
-4.5
-4.3
6.5
4.8
-7.18
10.4
1.71
4.5
6.53
-4.6
-5.7

8.8
-6.8

7.62
5.3

4.54
3.3

-2.4
3.08
2.65
-7.4

2.6
4.89

,b =
0.22
-3.5

2.4
-2.5
-21.4
-7.8

-3.64
-9.05

4.3
3.63
-1.8
7.3

lsqr

AX = b

\\chapter4.rar\4-10.exe
\\chapter4\lsqrFa.m

Editor

MATLAB

188

% lsqr
%Ab
A=[
2.6 -3.1 0.5 0.3 1.2 8.8
3.2 7.6 0.8 -9.1 -4.5 5.3
9.8 -6.4 4.2 3.37 -4.3 3.3
6.4 -4.05

21.4 2.15 6.5 -2.4

-9.5 4.54 15.8 4.89 4.8 -7.4


26.3 3.4 4.5 -3.51

-7.18

4.6 3.4 4.2 -2.15

10.4 0.22

-1.5 8.2 4.1 -0.41

1.71 2.4

-9.15

2.6

4.5 15.8 4.8 4.5 -7.8

8.4 -9.05

24.4 2.65 6.53 -3.64

0.2 7.61 10.8 -5.1 -4.6 4.3


18 -0.8 4.2 3.7 -5.7 7.3
];
b=[-6.8
7.62
4.54
3.08
2.65
4.89
-3.5
-2.5
-21.4
-9.05
3.63
-1.8];
%
[x,flag,relres,iter,resvec] = lsqr(A,b,[],20)
%x
%flag
%relres
%iter
%resvec
% 1e-6
% 20
plot(resvec)
%
lsqrFa.m

MATLAB

189

lsqrFa
>> lsqrFa
x=
0.07459936339388
-0.24996967593684
-0.07570918543695
-0.91230994628952
-0.48570799233206
-0.25120643229241
flag =
0
relres =
0.76954972316684
iter =
6
resvec =
27.20508040789440
22.94431040549329
22.43530063858994
21.78057317628723
20.95615640851811
20.93567320574129
20.93566209662689

4.5

MATLAB

190

4.5

4.11

x=minres(A,b) AX = b
n A minres
x = minres(A,b)
minres(A,b,tol)
minres(A,b,tol,maxit)
minres(A,b,tol.maxit,M)
minres(A,b,tol,maxit,M1,M2)
minres(A,b,tol,maxit,M1,M2,x0)
minres(afun,b,tol,maxit,mifun,m2fun,x0,p1,p2,...)
[x,flag] = minres(A,b,...)
[x,flag,relres] = minres(A,b,...)
[x,flag,relres,iter] = minres(A,b,...)
[x,flag,relres,iter,resvec] = minres(A,b,...)
[x,flag,relres,iter,resvec,resveccg] = minres(A,b,...)
tol
1E-6maxit A n
x flag=0 felres
iter resvec

MATLAB

191

MATLAB

minres AX = b

A=

232.34
-53.846
103.35
53.387
-44.889
12.986

-53.846
118.09
2.098
-96.853
-135.04
58.624

b =[-6.5

103.35
2.098
139.19
41.495
-53.845
93.173

7.8

2.3

53.387
-96.853
41.495
104.58
64.197
-0.831
-1.4

7.5

\\chapter4.rar\4-11.exe
\\chapter4\minresFa.m

Editor
%
temp=[0.6

-6.8 4.5 6.3 7.2 8.6

1.2 7.62 0.8 -3.1 -4.5 5.3


1.8 -6.8 0.2 3.07 -4.37

7.82

1.4 -9.05 0.4 2.65 0.53 -3.64


-9.5 -4.54

-15.8

4.89 4.8 -7.48

2.32 -3.08

4.6 -3.5 -7.8 05.6];

-44.889
-135.04
-53.845
64.197
463.4
-177.18
4.2]'

12.986
58.624
93.173

-0.831
-177.18

140.48

MATLAB

192

A=temp*temp'
b=[-6.5

% A

7.8 2.3 -1.4 7.5

4.2]';

[x,flag,relres,iter,resvec]=minres(A,b,[],20)
%x
%flag
%relres
%
%resvec
plot(resvec)
%
minresFa.m

>> minresFa

A=

232.34

-53.846

103.35

-53.846
103.35
53.387
-44.889
12.986

118.09
2.098
-96.853
-135.04
58.624

2.098
139.19
41.495
-53.845
93.173

x=
39.751
135.11
-69.832
116.02
27.177
21.253
flag =
0
relres =
2.2289e-010
iter =
5
resvec =
13.573

53.387
-96.853
41.495
104.58
64.197
-0.831

-44.889
-135.04
-53.845
64.197
463.4
-177.18

12.986
58.624
93.173
-0.831
-177.18
140.48

MATLAB

193

8.353
5.3036
3.9297
3.8583
3.8346
x flag

4.6

4.6

4.12

x = qmr(A,b) AX = b A

b - AX
b

x = qmr(A,b)
qmr(A,b,tol)
qmr(A,b,tol,maxit)

MATLAB

194

qmr(A,b,tol,maxit,M)
qmr(A,b,tol,maxit,M1,M2)
qmr(A,b,tol,maxit,M1,M2,x0)
qmr(afun,b,tol,maxit,m1fun,m2fun,x0,p1,p2,...)
[x,flag] = qmr(A,b,...)
[x,flag,relres] = qmr(A,b,...)
[x,flag,relres,iter] = qmr(A,b,...)
[x,flag,relres,iter,resvec] = qmr(A,b,...)
qmr(A,b,tol) tol 1E-6qmr(A,b,tol,maxit) maxit
n 20
[x,flag,relres,iter,resvec] x flag=0
felres iter resvec

MATLAB

AX = b

6.6
5.2

7.8
A=
8.4
-6.5

6.32

-6.8
7.2
-7.8
-4.05
4.4
3.8

8.5
0.5
4.2
14.4
25.8
4.6

9.3
-3.1
3.07
2.65
4.8
-3.5

7.2
-3.5
-4.7
6.3
4.8
-7.8

5.6
-8.5

6.2
5.3

25.3
7.42
,b =

-3.6
-16.4
4.6
-7.4

5.6
3.7

\\chapter4.rar\4-12.exe

MATLAB

195

\\chapter4\qmrFa.m

%
%Ab
A=[6.6

-6.8 8.5 9.3 7.2 5.6

5.2 7.2 0.5 -3.1 -3.5 5.3


7.8 -7.8 4.2 3.07 -4.7 7.42
8.4 -4.05

14.4 2.65 6.3 -3.6

-6.5 4.4 25.8 4.8 4.8 -7.4


6.32 3.8 4.6 -3.5 -7.8 5.6];
b=[-8.5

6.2 25.3 -16.4

4.6 3.7]';

%
[x,flag,relres,iter,resvec] = qmr(A,b)
%x
%flag
%relres
%iter
%resvec
% 1e-6
% 20
plot(resvec)
%
qmrFa.m

>> qmrFa

x=
70.249
67.412
-41.857
182.43
-99.274
-114.24
flag =
0
relres =
2.5541e-012

MATLAB

196

iter =
6
resvec =
32.474
32.402
27.944
29.607
29.258
27.131
8.2944e-011
x flag

4.7

4.7

4.13

x = gmres(A,b) AX = b A

MATLAB

197

b - AX
b

x = gmres(A,b)
gmres(A,b,restart)
gmres(A,b,restart,tol)
gmres(A,b,restart,tol,maxit)
gmres(A,b,restart,tol,maxit,M)
gmres(A,b,restart,tol,maxit,M1,M2)
gmres(A,b,restart,tol,maxit,M1,M2,x0)
gmres(afun,b,restart,tol,maxit,m1fun,m2fun,x0,p1,p2,...)
[x,flag] = gmres(A,b,...)
[x,flag,relres] = gmres(A,b,...)
[x,flag,relres,iter] = gmres(A,b,...)
[x,flag,relres,iter,resvec] = gmres(A,b,...)

gmres(A,b,restart) A n
restart 10 restart 10
n gmres(A,b,restart,tol) tol

1E-6
gmres(A,b,restart,tol,maxit)x flag=0
felres iter resvec

MATLAB

AX = b

MATLAB

198

25.4
4.5

8.9
A=
8.4
-9.5

6.3

-6.5
7.62
-6.8
-5.05
4.54
4.08

5.5
0.7
5.2
4.4
6.3
1.6

6.3
-3.1
3.07
2.65
4.89
-3.5

6.2
-4.5
-4.37
6.53
4.8
-7.8

4.6
-4.5

7.2
5.1

4.3
7.8
,b =

-4.4
-2.4
24.7
-7.4

5.6
5.7

\\chapter4.rar\4-13.exe
\\chapter4\gmresFa.m

Editor
%
%a,b
a=[25.4 -6.5 5.5 6.3 6.2 4.6
4.5 7.62 0.7 -3.1 -4.5 5.1
8.9 -6.8 5.2 3.07 -4.37
8.4 -5.05

7.8

4.4 2.65 6.53 -4.4

-9.5 4.54 6.3 4.89 4.8 -7.4


6.3 4.08 1.6 -3.5 -7.8 5.6];
b=[-4.5

7.2 4.3 -2.4 24.7 5.7]'

[x,flag,relres,iter,resvec] = gmres(A,b)
%x
%flag
%relres
%iter
%resvec
plot(resvec)
%
gmresFa.m

>> gmresFa

MATLAB

199

x=
-0.394
1.2224
1.7766
1.4422
-0.78053
-0.12284
flag =
0
relres =
6.8712e-016
iter =
1

resvec =
27.183
26.032
13.365
10.789
7.4887
4.0804
1.8678e-014
x

4.8

4.8

MATLAB

200

234

MATLAB
MALTAB
AX = b
x=A\b x=inv(A)*b MALTAB

MATLAB 4.4

norm

normest

2-

rank

det

trace

null

orth

rref

subspace

\ /

inv

cond

condest

chol

Cholesky

cholinc

Cholesky

lu

LU

luinc

LU

qr

lsqnonneg

pinv

lscov

eig

svd

eigs

svds

poly

polyeig

condeig

hess

qz

qz

schur

expm

logm

sqrtm

funm

4.4 MATLAB

MATLAB

201

1 Jacobi

3 x + 4 y 7 = 10

5 x 2 y + z = 12
2 x + y + z = 15

x=3,y=4,z=5
2 Gauss-Seidel

4 x 5 y z = 5

3 x + 2 z = 8
x + y 7 z = 55

x=2y=4,z=-7
3

2.1x1 + 3.2 x2 0.8 x3 x4 = 14.01


3.4 x 1.3 x + 7.2 x + 4 x = 13.04

1
2
3
4

2.5 x1 2.4 x2 8.3 x3 3 x4 = 20.96


4 x1 3x2 2 x3 + 2 x4 = 37.2

x = (1.5, 4.2, 3.1, 6.2 )

4 Guass

2.1x + 4.6 y - 0.4 z - 2a = 6.59

6.4 x - 6 y + 7.2 z + 3a = 0.16

-4 x - 4.1 y - 5.6 z - 4a = 19.51


3 x - 5 y - 8 z + 3a = 80.6
( x, y , z , a ) = ( 5.3,1.5, 6.4, 7 )
5

5 x + 7.1 y - 4.1z - 3a = 46.61

5 x - 6.1y + 3.2 z + 5a = 21.36

-4 x - 5.3 y - 9.2 z - 4a = 61.22


2 x - 3 y - 4 z + 5a = 4.1
( x, y , z , a ) = ( 3.6, 1.4, 4.5, 6.7 )
6 LU

MATLAB

202

4 x + 5.3 y - 5.6 z - 3m - 3.4n = 100.16


5 x - 2.1y + 3.2 z + 4m - 8n = 75.72

2 x - 4 y - 7.2 z - 5m - 2.4n = 98.2


5 x - 3 y -8 z + 2.3m + 3n = 57.1

4.2 x - 3 y - 2n = 3.72

( x, y , z , m, n ) = ( 4.6,3.2, 7.5, 11,3)


7 Cholesky

6 x + 4 y - 3.1z - 2m + 2n = 91.72
4 x - 2.6 y + 4 z + 4m + 3n = 13.64

2 x - 4 y - 7.3 z - 0.6m - 3.4n = 28.36


5 x - 3 y - 4.2 z + 2.3m + 8.2n = 65.64

4.2 x - 2.4 y + 2m - 2n = 1.24

( x, y , z , m, n ) = ( 7, 3.4,5.2, 6, 4 )

MATLAB

203

f ( x) = 0

f : A A A A
A f

p a f ( f ( p )), p A

f 2 : A a A f
2

f2:Aa A f

p a f ( f 2 ( p)), p A f 3 : A a A
f , f 2 , f 3 ,L , f n , L

f ( x ) = 0

lim xk = p p f ( x ) = 0
k
ek = xk p
m C

lim
x

ek +1
=C
ek

m M m=1
m>1

1 f ( xn ) < TOL TOL


f ( xn ) 0 xn

2 xn xn 1 < TOL xn xn 1 xn

f ( x )
3

xn xn 1
< TOL
xn

f ( x )

MATLAB

204

5.1

f ( x) = 0
f ( x ) [ab] f ( a) f (b) < 0 f ( x ) [ab]

[ a, b] = [ a1 , b1 ] p1 [ a1 , b1 ]

p1 =

a1 + b1
2

TOL1
f ( p1 ) < TOL1 p1 f ( x ) = 0

f ( p1 ) > TOL1 p1
[ a1 , p1 ] [ p1 , b1 ]

f ( p1 ) f (b1 ) < 0 [ p1 , b1 ] f ( p1 ) f (b1 ) > 0


[ a1 , p1 ] [ a1 , b1 ]

TOL1
TOL2

MATLAB

205

f ( x ) = ( x 1)3 3 x + 2
[24]

\\chapter5.rar\5-1.exe
\\chapter5\Erfen.m,Erfen_main.m

Editor
%
%08 6 17
function gen=Erfen(f,a,b,tol)
%f f(x)=0 f(x)
%

1E-3

if(nargin==3)
tol=1.0e-3;
end
gen=compute_gen(f,a,b,tol);
function r=compute_gen(f,a,b,tol)
%
fa=subs(f,a);
%
fb=subs(f,b);
%
fzd=subs(f,(a+b)/2);
%sub

R = subs(S,old,new)

% S old new
%sub
if(fa*fzd>0)
t=(a+b)/2;
%
r=compute_gen(f,t,b,tol);

MATLAB

206

else
if(fa*fzd==0)
r=(a+b)/2;
else
if(abs(b-a)<=tol)
r=(b+3*a)/4;
else
s=(a+b)/2;
%
r=compute_gen(f,a,s,tol);
end
end
end
Erfen.m

Editor
function Erfen_main()
% [24]
x=Erfen('(x-1)^3-3*x+2',2,4)
%

[-14]

x=-1:0.01:4;
f=(x-1).^3-3*x+2;
plot(x,f)
grid on
Erfen_main.m

>> clear
>> Erfen_main

x=
2.879150390625

MATLAB

207

5.1

5.1
subs

subs
R = subs(S)
R = subs(S, new)
R = subs(S,old,new)
S old new
S oldnew S
S
[]
>> clear
>> syms a b
>> y=sin(a)+cos(b);
% ab cd c,d
>> z1=subs(y,{a,b},{sym('c'),sym('d')})
%
z1 =
sin(c)+cos(d)
%
>> z2=subs(y,{a,b},{sym('c'),2})
%
z2 =
sin(c)+cos(2)
%

MATLAB

208

>> z3=subs(y,{a,b},{5,2})
%
z3 =
-1.37507111121028

5.2

f ( x) = 0

x = g ( x)
x0

xk = g ( xk 1 ), k = 1, 2,L
{ xk } Picard

g ( x) lim xk = p p g p
k

f ( x ) = 0
g ( x) [a,b]

1 g ( x ) [a, b], x [ a, b]
2 L<1, L<1

g ( x ) g ( y ) L x y , x, y [a, b]
x0 [ a, b] Picard p

MATLAB

209

4 0 0.3 4

1
P4 ( x ) = (35 x 4 30 x 2 + 3)
8

\\chapter5.rar\5-2.exe
\\Picard.m,Picard_main.m

Picard
Editor
%08/06/18
%Picard
function [x,time]=Picard(f,x0,tol)
%
%x0
%tol
if(nargin==2)
tol=1.0e-5;
end
%
wucha=0.5; %
x1=x0;

%x1 x0

time=0; %
while(wucha>tol)
x1=subs(f,x0)+x0;
%

MATLAB

210

wucha=abs(x1-x0);
x0=x1;

% x0

time=time+1;
%
end
x=x1;
Picard.m

Editot
%
% 4 0.3
[x,time]=Picard('1/8*(35*x^4-30*x^2+3)',0.3)
%
x=0:0.01:1;
f=1/8*(35*x.^4-30*x.^2+3);
plot(x,f)
grid
title('')
Picard_main.m

>> picard_main

x=
0.339985464476505
time =
61

x 4 P4 ( x ) =

1
(35 x 4 30 x 2 + 3) = 0 x=0.3
8

time 61 5.2 4

MATLAB

5.2

5.3

211

4 x

Aitken

{ xn } : x0 , x1 , x2 L p

lim
n

xn +1 p
= , ( 0)
xn p

xn+1 p xn + 2 p

xn p
xn+1 p

p xn

( xn+1 xn )

xn+ 2 2 xn+1 + xn

x%n+1 xn

( xn+1 xn )

xn+ 2 2 xn+1 + xn

Aitken

MATLAB

212

xn = xn +1 xn

2 xn = (xn )
= xn+ 2 2 xn+1 + xn
Aitken

x%n+1 xn

(xn ) 2
2 xn

Aitken

Aitken

Aitken

3 0 0.1 4

1
P4 ( x ) = (5 x3 3x)
2

\\chapter5.rar\5-3.exe
\\chapter5\Aitken.m, Aitken_main.m

Aitken
Editor
%Aitken
% time
function [gen,time]=Aitken(func,x0,tol)
%
% 10 -5
if(nargin==2)

MATLAB

213

tol=1.0e-5;
end
gen=x0;
x(1:2)=[0,0];
t=0; %
m=0;
x2=x0;
wucha=0.1;

while(wucha>tol)
t=t+1; %
x1=x2;
temp=gen;
gen=subs(func,temp)+temp;
x(t)=gen;
% Aitken
if(t>2)
m=m+1;
x2=x(m)-(x(m+1)-x(m))^2/(x(m+2)-2*x(m+1)+x(m));
%
wucha=abs(x2-x1);
end
end
gen=x2;
time=t; %
Aitken.m

Editor
% Aitken 10 -5
[x_Aitken,time_Aitken]=Aitken('1/2*(5*x^3-3*x)',0.1)
% Picard

[x_picard,time_picard]=Picard('1/2*(5*x^3-3*x)',0.1)
%
x=-1:0.01:1;
f=1/2*(5*x.^3-3*x);
plot(x,f)
grid
Aitken_main.m

>>Aitken_main

MATLAB

214

x_Aitken =
-6.6893680121527e-007
time_Aitken =
5
x_picard =
-2.85594955533468e-006
time_picard =
15

x_Aitken x_picard
105 106
107
Aitken 5 15
Atiken
5.3 x

5.3 x

5.4

Steffensen

Steffensen x = g ( x)

xk +1 = g ( xk ), k = 0,1, 2L

MATLAB

215

( x) = x

[ g ( x ) x]2
g ( g ( x )) 2 g ( x ) + x

yk = g ( xk ), zk = g ( yk )
xk +1 = xk

( yk xk ) 2
, k = 0,1, 2L
z k 2 yk + xk

Steffensen

Steffensen Aitken

Steffensen

x 2 5cos(2 x) 4 = 0
x=1 x

\\chapter5.rar\5-4.exe
\\chapter5\Steff.m,Steff_main.m

Steffensen
Editor
%Steffensen
function [gen,time]=Steff(fun,x0,tol)
% 10 -5
if(nargin==2)
tol=1.0e-5;

MATLAB

216

end
%
time=0; %
wucha=0.1; %
gen=x0;
while(wucha>tol)
x1=gen;
y=subs(fun,x1)+x1;
z=subs(fun,y)+y;
%
gen=x1-(y-x1)^2/(z-2*y+x1);
wucha=abs(gen-x1);
time=time+1; %
end
gen;

time; %
Steff.m

Editor
% Steffensen
function Steff_main()
[x_steff,time_steff]=Steff('x^2-5*cos(2*x)-4',1)
%

x=-4:0.02:4;
y=x.^2-5*cos(2*x)-4;
plot(x,y)
grid
Steff_main.m

>> clear
>> Steff_main

x_steff =
1.08527331222438
time_steff =
5
x_steff x=1 time_steff 5

MATLAB

217

Steffensen Steffensen
x = g ( x)

xk +1 = ( xk ), k = 0,1, 2,L ,

[ g ( x ) x]2
( x) = x
g ( g ( x )) 2 g ( x ) + x
Steffensen x = g ( x) pp
1 r x [ p r , p + r ] x g
x Steffensen x0 [ p r , p + r ]
x 5.4

5.4

5.5

Steffensen x

Newton-Rahpson

NewtonRahpson
NewtonRahpson
Newton f ( x ) = 0 y = f ( x ) x

y = f ( xk ) + f '( xk )( x xk )
y=0 x

MATLAB

218

x = xk

f ( xk )
f '( xk )

xk +1 = xk

f ( xk )
f '( xk )

Newton
Newton f ( x ) p f ( x ) =0
x0 p Newton

Newton-Raphson

f ( x) = x 3 + 2 x 2 + 10 x 20 = 0
[12]

\\chapter5.rar\5-5.exe
\\chapter5\Newton.m,Newton_main.m

Newton-Raphson
Editor
function [gen,time]=Newton(f,x0,tol)
%x0
%tol 10 -5
%Newton-Raphson

MATLAB

219

%
if(nargin==2)
tol=1.0e-5;
end
%
df=diff(sym(f));
x1=x0;
%time
time=0;
wucha=0.1; %
while(wucha>tol)
time=time+1;
fx=subs(f,x1);
df=subs(df,x1);
gen=x1-fx/df;
wucha=abs(gen-x1);
x1=gen; % x1
end
end
Newton.m

Editor :
disp(' Newton-Raphson ')
[x,time]=Newton('x^3+2*x^2+10*x-20',1.5,1e-4)
% x
x=0:0.01:2;
y=x.^3+2*x.^2+10*x-20;
plot(x,y)
grid
Newton_main.m

>> Newton_main

Newton-Raphson
x=
1.36880992354309
time =
4

MATLAB

220

x time 4

Newton
5.5

5.5 Newton-Raphson x
Newton

f ( x ) [a,b]
a f ( a) f (b) < 0
b f '( x) 0, x [ a, b]
c f ''( x ) [ a, b]

f ( a)
f (b)
< b a,
<ba
f '(a )
f '(b)

x0 [ a, b] f ( x ) = 0 2

5.6

MATLAB

221

Newton

xk = xk 1

F ( xk 1 )
f ( x)
F ( x ) =
f '( x)
F '( xk 1 )

xk = xk 1

f ( xk 1 ) f '( xk 1 )
[ f '( xk 1 )]2 f ( xk 1 ) f ''( xk 1 )

Newton x=1.5

f ( x) = x 4 4 x2 + 4 = 0

\\chapter5.rar\5-6.exe
\\Newton_Tay.m, Newton_Tay_main.m

Editor
function [gen,time]=Newton(f,x0,tol)
%x0
%tol 10 -5
%Newton-Raphson
%

MATLAB

222

if(nargin==2)
tol=1.0e-5;
end
%
df=diff(sym(f));
df2=diff(df); %2
x1=x0;
%time
time=0;
wucha=0.1; %
while(wucha>tol)
time=time+1;
fx=subs(f,x1);
df=subs(df,x1);
df2=subs(df2,x1);
gen=x1-fx*df/(df^2-fx*df2);

wucha=abs(gen-x1);
x1=gen; % x1
end
end
Newton_Tay.m

Editor
disp(' Newton-Raphson ')
[x1,time1]=Newton('x^4-4*x^2+4',1.5,1e-4)
disp('')
[x2,time2]=Newton_Tay('x^4-4*x^2+4',1.5,1e-4)
% x
x=-2:0.01:2;
y=x.^4-4*x.^2+4;
plot(x,y)
grid
Newton_Tay_main.m

>> Newton_Tay_main

Newton-Raphson
x1 =

MATLAB

223

1.41837336771881
time1 =
39

x2 =
1.41173276486676
time2 =
2
x1time1 Newton-Raphson x2time2

5.6

5.6 x

5.7

MATLAB

224

Newton f ( x ) = 0 y = f ( x )

y = f ( x ) x f ( x ) = 0
y = f ( x )
x f ( x ) = 0

y = f ( xk ) +

f ( xk ) f ( xk 1 )
( x xk )
xk xk 1

x = xk

f ( xk )( xk xk 1 )
f ( xk ) f ( xk 1 )

xk +1 = xk

f ( xk )( xk xk 1 )
f ( xk ) f ( xk 1 )

2e2 x - 7 x 2 -10 = 0
[-22] x

\\chapter5.rar\5-7.exe
\\chapter5\gexian.m,gexian_main.m

MATLAB

225

Editor
%08/06/21
%
%tol
function [gen,time]=gexian(f,a,b,tol)
% 10 -5
if(nargin==3)
tol=1.0e-5;
end
time=0; %
wucha=0.1; %
fa=subs(sym(f),a);
fb=subs(sym(f),b);
gen=a-(b-a)*fa/(fb-fa);
%
while(wucha>tol)
time=time+1;
x1=gen;
fx=subs(sym(f),x1);
s=fx*fa;
if(s>0)
gen=b-(x1-b)*fb/(fx-fb);
else
gen=a-(x1-a)*fa/(fx-fa);
end
wucha=abs(gen-x1);
end
end
gexian.m

Editor
% [-22]
[x,time]=gexian('2*exp(2*x)-7*x^2-10',-2,2)
% x
x=-2:0.01:2;
e=exp(1);
y=2*e.^(2*x)-7*x.^2-10;
plot(x,y)
grid on
gexian_main.m

MATLAB

226

>> gexian_main

x=
1.11971095143669
time =
39
x time=39 39

5.7
x

5.7 x

5.8

kepler

(a, e, i, , , M )T a e i
M
t p f E

MATLAB

227

M E

E e sin E = M
Kelper
6
Kepler
Kepler Newton
Kepler Newton

Kepler

Kepler

kepler 0.01 32
Kepler

E e sin E = M

\\chapter5.rar\5-8.exe
\\charper6\kelper_Newton.m

Newton
Editor
%Newton Kepler
function [E,n]=kepler_Newton(e,M,tol)
% 10 14
if(nargin==2)
tol=1.0e-14;
end
%
M=M*pi/180;
Ek=M;
%

MATLAB

228

wucha=0.01;
n=0; %
while(wucha>tol)
E=Ek-(Ek-e*sin(Ek)-M)/(1-e*cos(Ek));
%
wucha=abs(Ek-E);
Ek=E;
n=n+1;
end
%
E=E*180/pi;
kelper_Newton.m

>> [E,n]=kepler_Newton(0.01,32,1e-14)

E=
32.306
n=
3
E n 3

Kepler
Newton

sinx

cosx

19
RK

MATLAB

229

MATLAB

x cos x 2=0

x [ 4, 2]
x=

-2.49875576265241

x 3 + 4 x 2 10 = 0
[12]
x=1.3652300134141
3 Neton-Raphson

exp ( x ) sin x = 0
[-4-3]
x=-3.18306301193336

MATLAB

230

2 x3 5x 1 = 0
[12]
x=1.67298164785494

MATLAB

231

20

6.1

f1 ( x1 , x2 ,L , xn ) = 0
( , ,L , ) = 0
xn
f 2 x1 x2

f n ( x1 , x2 ,L , xn ) = 0

x1 = 1 ( x1 , x2 ,L , xn )
x = ( x , x ,L , x )
2
n
2 1
2

xn = n ( x1 , x2 ,L , xn )

2 x 1 x 2

x1( k +1) = 1 ( x1( k ) , x2 ( k ) ,L , xn ( k ) )


k +1
k
k
k
x2( ) = 2 ( x1( ) , x2( ) ,L , xn( ) )

( k +1)
= n ( x1( k ) , x2 ( k ) , L , xn( k ) )
xn

MATLAB

232

(0)

0
0
0
= 1 ( x1( ) , x2 ( ) ,L , xn ( ) )

1
x
1
'(x) = M

n
x
1

1
xn

O
M

n
L
xn
K

'( x) < 1

x + x sin y = 2.2378
3
x y cos y = 0
x
y

0
0

\\chapter6.rar\\6-1.exe
\\chapter6\budong.m,budong_fun.m,
budong_main.m

MATLAB

233

Editor
%
%08-6-26
% x0 tol
% r

n data1

function [r,n,data]=budong(x0,tol)
% 10 -3
if nargin==1
tol=1.0e-3;
end
x1=budong_fun(x0);
n=1;
%
while (norm(x1-x0)>tol)&(n<500)
x0=x1;
x1=budong_fun(x0);
n=n+1;
%data1
data(:,n)=x1;
end
r=x1;
budong.m

Editor
%
function f=budong_fun(x)
f(1)=-sin(x(2))*x(1)+2.2378;
f(2)=x(1)^3-cos(x(2))
f=[f(1) f(2)];
budong_fun.m

Editor
x0=[0 0];
[r,n,data]=budong(x0);
disp('')
r
disp('')
n
% data1

MATLAB

234

subplot(2,1,1)
plot(data(1,:))
% data
subplot(2,1,2)
plot(data(2,:))
%
num=(1:n)';
a=[num data'];
save data1.txt a -ascii
budong_main.m

>> clear
>> budong_main

r=
1.15970358667494

1.19256473358258

n=
211

211

6.1

1.0000000e+000

0.0000000e+000

0.0000000e+000

2.0000000e+000

4.1208438e+000

1.0666038e+001

3.0000000e+000

6.1369116e+000

7.0301109e+001

4.0000000e+000

-3.4505109e+000

2.3075111e+002

5.0000000e+000

-1.1708393e+000

-4.0926555e+001

6.0000000e+000

2.3381939e+000

-6.0874530e-001

7.0000000e+000

3.5748695e+000

1.1962892e+001

8.0000000e+000

4.2665741e+000

4.4862365e+001

2.0300000e+002

1.1593402e+000

1.1935945e+000

2.0400000e+002

1.1599627e+000

1.1899136e+000

2.0500000e+002

1.1609639e+000

1.1890053e+000

2.0600000e+002

1.1604269e+000

1.1922071e+000

MATLAB

235

2.0700000e+002

1.1595464e+000

1.1930099e+000

2.0800000e+002

1.1600208e+000

1.1902018e+000

2.0900000e+002

1.1607857e+000

1.1895076e+000

2.1000000e+002

1.1603752e+000

1.1919528e+000

2.1100000e+002

1.1597036e+000

1.1925647e+000

6.1

6.1
150

6.1

6.2

MATLAB

236

0
0

x0 =

4 x1 x2 + 0.1e x1 = 1

1 2
x1 + 4 x2 + x1 = 0
8

\\chapter6.rar\6-2.exe
\\chapter6\gseid_fun.m, gseid_main.m

Editor
%P182
%n
function [x,n,data]=gseid_fun(x0,tol)
% 10 -10
if nargin==1
tol=1e-10;

MATLAB

237

end
n=1;
%
wucha=0.1;
%
while (wucha>tol)&(n<500)
x1(1)=(1+x0(2)-0.1*exp(x0(1)))/4;
x1(2)=(x1(1)-x1(1)^2/8)/4;
wucha=norm(x1-x0);
x0=x1;
n=n+1;
%data
data(:,n)=x1;
end
x=x1;
gseid_fun.m

Editor
%-
x0=[0,0];
[x,n,data]=gseid_fun(x0);
disp('')
x
disp('')
n
% data1
subplot(2,1,1)
plot(data(1,:)),title('x ')
% data
subplot(2,1,2)
plot(data(2,:)),title('y ')
gseid_main.m

>>clear
>>clc
>> gseid_main

MATLAB

238

x=
0.232567005090585

0.0564515196521212

n=
9

-
9 6.2

x1

x2

1.0000000e+000

0.0000000e+000

0.0000000e+000

2.0000000e+000

2.2500000e-001

5.4667969e-002

3.0000000e+000

2.3235892e-001

5.6402523e-002

4.0000000e+000

2.3256132e-001

5.6450181e-002

5.0000000e+000

2.3256685e-001

5.6451483e-002

6.0000000e+000

2.3256700e-001

5.6451519e-002

7.0000000e+000

2.3256700e-001

5.6451520e-002

8.0000000e+000

2.3256701e-001

5.6451520e-002

9.0000000e+000

2.3256701e-001

5.6451520e-002

6.2

6.2

MATLAB

239

6.2 -

6.3

f1 ( x1 , x2 ,L , xn )

f 2 ( x1 , x2 ,L , xn )

f=

f n ( x1 , x2 , L , xn )
x

(k )

f1( k ) ( x1( k ) , x2 ( k ) ,L , xn ( k ) )
x1( k +1) x1( k )
(k ) (k ) (k )

( k +1)

(k )
x2( k )
f 2 ( x1 , x2 ,L , xn )
( k ) x2

+ f'(x )
=0
M
M

f ( k ) ( x ( k ) , x ( k ) ,L , x ( k ) )
x ( k +1) x ( k )
n
n
1
2
n

f1
f1
x K x
n
1
f'(x) = M O M

f n L f n
x
xn
1

x1( k +1) x1( k )


f1( k ) ( x1( k ) , x2( k ) , L , xn ( k ) )
(k ) (k ) (k )

( k +1) ( k )
(k )
x2
= x2 f'(x ( k ) ) 1 f 2 ( x1 , x2 ,L , xn )

M M
M

x ( k +1) x ( k )
f ( k ) ( x ( k ) , x ( k ) ,L , x ( k ) )
n
n
1
2
n
n

MATLAB

240

x 2 2 x y + 0.5 = 0
2
2
x + 4 y 4 = 0
x
y

1
1

\\chapter6.rar\6-3.exe
\\chapter6\
new_ton.m,f1.m,df1.m,new_main.m

Editor
%
% x0
%tol

10 -10

%data
function [x,n,data]=new_ton(x0,tol)
if nargin==1
tol=1e-10;
end
x1=x0-f1(x0)/df1(x0);

MATLAB

241

n=1;
%
while (norm(x1-x0)>tol)
x0=x1;
x1=x0-f1(x0)/df1(x0);
n=n+1;
%data
data(:,n)=x1;
end
x=x1;
new_ton.m
Jacobi
1 Editor
%
function f=f1(x0)
x=x0(1);
y=x0(2);
f1=x^2-2*x-y+0.5;
f2=x^2+4*y^2-4;
%
f=[f1 f2];
f1.m
2 Editor
% jacobi
function f=df1(x0);
x=x0(1);
y=x0(2);
f=[2*x-2

-1

2*x 8*y];
df1.m

Editor
%
x0=[1 1];
[x,n,data]=new_ton(x0);
disp('')
x
disp('')
n

MATLAB

242

% data1
subplot(2,1,1)
plot(data(1,:)),title('x ')
% data
subplot(2,1,2)
plot(data(2,:)),title('y ')
new_main.m

>> clear
>> new_main

x=
-0.222214555069498

0.993808418603981

n=
16

16 6.3

1.0000000e+000

0.0000000e+000

0.0000000e+000

2.0000000e+000

1.0365566e+001

-3.2417453e+000

3.0000000e+000

-1.1642673e+000

2.8124951e+000

4.0000000e+000

-1.7772623e-001

1.5676266e+000

5.0000000e+000

-3.9354034e-001

1.0830395e+000

6.0000000e+000

-2.4209867e-001

1.0027873e+000

7.0000000e+000

-2.2445033e-001

9.9489768e-001

8.0000000e+000

-2.2248412e-001

9.9393058e-001

9.0000000e+000

-2.2224505e-001

9.9382342e-001

1.0000000e+001

-2.2221827e-001

9.9381008e-001

1.1000000e+001

-2.2221497e-001

9.9380863e-001

1.2000000e+001

-2.2221461e-001

9.9380844e-001

1.3000000e+001

-2.2221456e-001

9.9380842e-001

1.4000000e+001

-2.2221456e-001

9.9380842e-001

1.5000000e+001

-2.2221456e-001

9.9380842e-001

1.6000000e+001

-2.2221456e-001

9.9380842e-001

MATLAB

243

6.3
MATLAB 6.3
x y

6.3

6.4

n Jacobi

k Jacobi

MATLAB

244

x1( k +1) x1( k )


f1( k ) ( x1( k ) , x2 ( k ) , L , xn( k ) )
(k ) (k ) (k )

( k +1) ( k )
(k )
x2
= x2 f'(x(0) ) 1 f 2 ( x1 , x2 ,L , xn )

M M
M

x ( k +1) x (k )
f ( k ) ( x ( k ) , x ( k ) ,L , x ( k ) )
1
2
n
n
n
n

2
x 2 x y + 0.5 = 0
2
2
x + 4 y 4 = 0

\\chapter6.rar\6-4.exe
\\chapter6\
new2_ton.m,f1.m,df1.m,new2_main.m

Editor
%
% x0
%tol

10 -10

%data

MATLAB

245

function [x,n,data]=new2_ton(x0,tol)
if nargin==1
tol=1e-10;
end
x1=x0-f1(x0)/df1(x0);
n=1;
% Jacobi
cmat=df1(x0);
%
while (norm(x1-x0)>tol) &(n<500)
x0=x1;
x1=x0-f1(x0)/cmat;
n=n+1;
%data
data(:,n)=x1;
end
x=x1;
new2_ton.m

jacobi
1 Editor
%
function f=f1(x0)
x=x0(1);
y=x0(2);
f1=x^2-2*x-y+0.5;
f2=x^2+4*y^2-4;
%
f=[f1 f2];
f1.m
2 Editor
% jacobi
function f=df1(x0);
x=x0(1);
y=x0(2);
f=[2*x-2

-1

2*x 8*y];
df1.m
[]

MATLAB

246

Editor
%
x0=[1 1];
[x,n,data]=new2_ton(x0);
disp('')
x
disp('')
n
% data1
subplot(2,1,1)
plot(data(1,:),'-.'),title('x ')
% data
subplot(2,1,2)
plot(data(2,:),'-.'),title('y ')
new2_main.m

>> clear
>> new2_main

x=
NaN

-Inf

n=
9

x 0
y = 1.5

x0=[1 1];

x0=[0 1.5];

>>clear
>> new2_main

x=

MATLAB

247

-0.222214555094034

0.99380841863608

n=
21

6.4

1.0000000e+000

0.0000000e+000

0.0000000e+000

2.0000000e+000

-1.4583333e-001

1.0219907e+000

3.0000000e+000

-2.5036169e-001

9.9668607e-001

4.0000000e+000

-2.1700255e-001

9.9644821e-001

5.0000000e+000

-2.2467905e-001

9.9424798e-001

6.0000000e+000

-2.2188365e-001

9.9409786e-001

7.0000000e+000

-2.2243275e-001

9.9387255e-001

8.0000000e+000

-2.2219811e-001

9.9384153e-001

9.0000000e+000

-2.2223476e-001

9.9381715e-001

1.0000000e+001

-2.2221443e-001

9.9381231e-001

1.1000000e+001

-2.2221653e-001

9.9380956e-001

1.2000000e+001

-2.2221469e-001

9.9380888e-001

1.3000000e+001

-2.2221476e-001

9.9380857e-001

1.4000000e+001

-2.2221458e-001

9.9380848e-001

1.5000000e+001

-2.2221458e-001

9.9380844e-001

1.6000000e+001

-2.2221456e-001

9.9380843e-001

1.7000000e+001

-2.2221456e-001

9.9380842e-001

1.8000000e+001

-2.2221456e-001

9.9380842e-001

1.9000000e+001

-2.2221456e-001

9.9380842e-001

2.0000000e+001

-2.2221456e-001

9.9380842e-001

2.1000000e+001

-2.2221456e-001

9.9380842e-001

6.4

x y

MATLAB

248

6.4

6.5 Broyden

Jacobi

H k f'(x k )

x k +1 = x k - H k f(x k )
H k Broyden Broyden

x k +1 = x k - H k f(x k )

T
H = H + (x k - H k y k )(x k ) H k
k
T
k +1
( x k ) H k y k

x k = x k +1 - x k , y k = f(x k +1 ) - f(x k )
20 60

MATLAB

249

Broyden

3 x cos( yz ) 2 = 0
2
2
x 81( y + 0.1) + sin z + 1.06 = 0

10 3
e xy + 20 z +
=0
3

x 0.1

y = 0.1

z 0.1

\\chapter6.rar\6-5.exe
\\chapter6\
broyden.m,f2.m,df2.m,broyden_main.m

Editor
%
% x0

MATLAB

250

%tol

10 -10

%data
function [x,n,data]=broyden(x0,tol)
if nargin==1
tol=1e-5;
end
H0=df2(x0);
H0=inv(H0);
x1=x0-H0*f2(x0);
n=1;
%
wucha=0.1;
%
while

(wucha>tol)&(n<20) &(n<500)

wucha=norm(x1-x0);
dx=x1-x0;
y=f2(x1)-f2(x0);
fenzi=dx'*H0*y; %
H1=H0+(dx-H0*y)*(dx)'*H0/fenzi;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
temp_x0=x0;
x0=x1;
x1=temp_x0-H1*f2(temp_x0);

%x1

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% H
H=H1;
n=n+1;
%data
data(:,n)=x1;
end
x=x1;
broyden.m
Jacobi
1 Editor
%
%

MATLAB

251

function F = f2(x0)
x=x0(1);
y=x0(2);
z=x0(3);
f1=3*x-cos(y*z)-1/2;
f2=x^2-81*(y+0.1)^2+sin(z)+1.06;
f3=exp(-x*y)+20*z+(10*pi-3)/3;
F=[f1;f2;f3];
f2.m
2 Editor
%Jacobi
%33
function f=df2(x0)
x=x0(1);
y=x0(2);
z=x0(3);
f=[3 z*sin(x*y) y*sin(y*z)
2*x -162*(y+0.1) cos(z)
-y*exp(-x*y) -x*exp(-x*y) 20];
df2.m

Editor
%
x0=[0.1 0.1 -0.1]';
[x,n,data]=broyden(x0);
disp('')
x
disp('')
n
% data1
subplot(3,1,1)
plot(data(1,:)),title('x1 ')
% data
subplot(3,1,2)
v=[1 n -0.05 0.05]; %
plot(data(2,:)),axis(v),title('x2 ')
%
subplot(3,1,3)
plot(data(3,:)),title('x3 ')
%

MATLAB

252

num=(1:n)';
a=[num data'];
save data1.txt a ascii
broyden_main.m

>>clear
>>broyden_main

x=
0.5
2.18322554219361e-015
-0.523598775598299

n=
7

Broyden DFPBFS

7
6.5

x1

x2

x3

1.0000000e+000

0.0000000e+000

0.0000000e+000

0.0000000e+000

2.0000000e+000

4.9997948e-001

8.7357473e-003

-5.2317450e-001

3.0000000e+000

5.0000665e-001

8.4957485e-004

-5.2357450e-001

4.0000000e+000

5.0000033e-001

3.6894065e-005

-5.2359783e-001

5.0000000e+000

5.0000000e-001

1.6228628e-007

-5.2359877e-001

6.0000000e+000

5.0000000e-001

3.2211591e-011

-5.2359878e-001

7.0000000e+000

5.0000000e-001

2.1832255e-015

-5.2359878e-001

6.5

3 6.5

MATLAB

253

6.5
H
H H
7 H

H 0 =

0.33333 -1.034e-005 1.7181e-005


0.0021086 -0.030869 0.0015358
0.0016605 -0.00015286 0.050008

0.3334 -9.1303e-006 7.1072e-006

H1 = -0.0020213 -0.030948 0.002197


0.001024 -0.0001651
0.05011

0.33334 6.8572e-005 -6.4284e-006

H 2 = 0.00013882 -0.053288 0.0082432


0.0015593 -0.0013047 0.050352

H3 =

0.33333 2.6195e-005 1.2362e-005


0.0030565 -0.058888 0.0052313
0.001705 -0.0014679 0.050181

H 4 =

0.33333 2.566e-006 1.5939e-005


0.0068284 -0.061549 0.0044891
0.0018733 -0.0015358 0.050141

H5 =

0.33333 1.1423e-007 1.6229e-005


0.0072323 -0.06182 0.0043549
0.0018906 -0.0015427 0.050134

MATLAB

254

H 6 =

0.33333 5.1651e-009 1.6243e-005


0.0072804 -0.061833 0.0043439
0.0018927 -0.0015429 0.050134

6.6 Broyden

Broyden Broyden

-
2005

x k +1 = x k - H k f(x k )

T
x k - H k y k )
(

T
H k +1 = H k + ( x k - H k y k )
( x k - H k y k ) H k y k

x k = x k +1 - x k , y k = f(x k +1 ) - f(x k )

1 Broyden

3 MATLAB Broyden

8 H

MATLAB

255

Broyden

3 x cos( yz ) 2 = 0
2
2
x 81( y + 0.1) + sin z + 1.06 = 0

10 3
e xy + 20 z +
=0

3
x 0.1

y = 0.1

z 0.1

\\chapter6.rar\6-6.exe
\\chapter6\broyden2.m,f2.m,df2.m,
broyden2_main.m

Broyden
Editor
%Broyden
% x0
%tol

10 -10

%data
function [x,n,data]=broyden2(x0,tol)
if nargin==1
tol=1e-5;
end
H0=df2(x0);
H0=inv(H0);
x1=x0-H0*f2(x0);
n=1;
%
wucha=0.1;
%

MATLAB

while

256

(wucha>tol)&(n<20)

wucha=norm(x1-x0);
dx=x1-x0;
y=f2(x1)-f2(x0);
%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%
%%H1
temp1=dx-H0*y;
temp2=(dx-H0*y)';
temp3=(dx-H0*y)'*y;

H1=H0+temp1*temp2/temp3;
%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%
%
temp_x0=x0;
x0=x1;
x1=temp_x0-H1*f2(temp_x0);

%x1

%%%%%%%%%%%%%%%%%%%
% H
H=H1;
n=n+1;
%data
data(:,n)=x1;
end
x=x1;
broyden_2.m
Jacobi
1 Editor
%broyden
function F = f2(x0)
x=x0(1);
y=x0(2);
z=x0(3);
f1=3*x-cos(y*z)-1/2;
f2=x^2-81*(y+0.1)^2+sin(z)+1.06;
f3=exp(-x*y)+20*z+(10*pi-3)/3;
F=[f1;f2;f3];
f2.m
2 Editor

MATLAB

257

function f=df2(x0)
x=x0(1);
y=x0(2);
z=x0(3);
f=[3 z*sin(x*y) y*sin(y*z)
2*x -162*(y+0.1) cos(z)
-y*exp(-x*y) -x*exp(-x*y) 20];
df2.m

Editor
%broyden
x0=[0.1 0.1 -0.1]';
[x,n,data]=broyden_2(x0);
disp('')
x
disp('')
n
% data1
subplot(3,1,1)
plot(data(1,:)),title('x1 ')
% data
subplot(3,1,2)
v=[1 n -0.05 0.05]; %
plot(data(2,:)),axis(v),title('x2 ')
%
subplot(3,1,3)
plot(data(3,:)),title('x3 ')
%
num=(1:n)';
a=[num data'];
save data1.txt a -ascii
broyden2_main.m

>>clear
>> broyden2_main

x=

MATLAB

258

0.5
1.3408e-011
-0.5236

n=
6

Broyden 6
6.6

x1

x2

x3

1.0000000e+000

0.0000000e+000

0.0000000e+000

0.0000000e+000

2.0000000e+000

5.0006960e-001

2.8214778e-003

-5.2408597e-001

3.0000000e+000

5.0000264e-001

2.1481596e-004

-5.2359468e-001

4.0000000e+000

5.0000001e-001

4.9558509e-006

-5.2359859e-001

5.0000000e+000

5.0000000e-001

7.4760173e-009

-5.2359878e-001

6.0000000e+000

5.0000000e-001

1.3408232e-011

-5.2359878e-001

6.6 Broyden

6.6

6.6

Broyden

6.6

MATLAB

259

6.7

H 0 =

0.33333 -1.034e-005 1.7181e-005


0.0021086 -0.030869 0.0015358
0.0016605 -0.00015286 0.050008

H1 =

0.33333 0.00025734 5.8434e-005


0.0023763 -0.048437 -0.0011717
0.0017018 -0.0028604
0.04959

H 2 =

0.33333 5.9456e-005 2.0666e-005


0.0021784 -0.05587 0.00028757
0.001664 -0.0014011 0.049945

H3 =

0.33333 3.7999e-006 1.782e-005


0.0021228 -0.060344 0.00020338
0.0016612 -0.0014853 0.049947

H 4 =

0.33333 4.84e-007 1.7667e-005


0.0021194 -0.061766 0.00014883
0.001661 -0.0015399 0.049945

H5 =

0.33333 3.0628e-007 1.766e-005


0.0021193 -0.061859 0.00014195
0.001661 -0.0015468 0.049945

DFP

DFP Davidon-Fletcher-Powell Broyden


1 DFP BFS
2

MATLAB

260

x k +1 = x k - H k f(x k )

T
x k )( x k ) H k y k y k T H k
(

T
H k +1 = H k +
yk Hk yk
x
y
(
)
k
k

x k = x k +1 - x k , y k = f(x k +1 ) - f(x k )


1978

DFP

3 x cos( yz ) 2 = 0
2
2
x 81( y + 0.1) + sin z + 1.06 = 0

10 3
e xy + 20 z +
=0

\\chapter6.rar\6-7.exe
\\chapter6\
DFP.m,f2.m,df2.m,DFP_main.m

MATLAB

261

DFP
Editor
%
% x0
%tol

10 -10

%data
function [x,n,data]=DFP(x0,tol)
if nargin==1
tol=1e-5;
end
H0=df2(x0);
H0=inv(H0);
x1=x0-H0*f2(x0);
n=1;
%
wucha=0.1;
%
while

(wucha>tol)&(n<20)

wucha=norm(x1-x0);
dx=x1-x0;
y=f2(x1)-f2(x0);
%DFP H
H1=H0+dx*dx'/(dx'*y)-H0*y*y'*H0/(y'*H0*y);
%%%%%%%%%%%
%
temp_x0=x0;
x0=x1;
x1=temp_x0-H1*f2(temp_x0);
%%%%%%%%
% H
H=H1;
n=n+1;
%data
data(:,n)=x1;
end
x=x1;

%x1

MATLAB

262

DFP.m
Jacobi
1 Editor
%DFP
function F = f2(x0)
x=x0(1);
y=x0(2);
z=x0(3);
f1=3*x-cos(y*z)-1/2;
f2=x^2-81*(y+0.1)^2+sin(z)+1.06;
f3=exp(-x*y)+20*z+(10*pi-3)/3;
F=[f1;f2;f3];
f2.m
2 Editor
function f=df2(x0)
x=x0(1);
y=x0(2);
z=x0(3);
f=[3 z*sin(x*y) y*sin(y*z)
2*x -162*(y+0.1) cos(z)
-y*exp(-x*y) -x*exp(-x*y) 20];
df2.m

Editor
%DFP
x0=[0.1 0.1 -0.1]';
[x,n,data]=DFP(x0);
disp('')
x
disp('')
n
% data1
subplot(3,1,1)
plot(data(1,:)),title('x1 ')
% data
subplot(3,1,2)
v=[1 n -0.05 0.05]; %
plot(data(2,:)),axis(v),title('x2 ')
%
subplot(3,1,3)
plot(data(3,:)),title('x3 ')

MATLAB

263

%
num=(1:n)';
a=[num data'];
save data1.txt a ascii
DFP_main.m

>>clear
>> DFP_main

x=
0.499999999999997
-2.26125878261035e-012
-0.52359877559838

n=
7

DFP

Broyden 7

H H

H 0 =

0.33333 -1.034e-005 1.7181e-005


0.0021086 -0.030869 0.0015358
0.0016605 -0.00015286 0.050008

0.33444 -0.0023296 -0.00037419

H1 = 0.00081677 -0.030242 0.0027621


0.00034443 0.0023144 0.050579

MATLAB

264

0.33328 6.4324e-005 -9.0927e-005

H 2 = 0.00015772 -0.054495 -0.0013636


0.0015357 -0.0013475
0.04981

0.33424 -2.2783e-005 -0.00022332

H3 = 0.00010262 -0.059197 -0.0014467


0.00062413 -0.0014615
0.05012

0.33329 1.6921e-006 -2.7854e-005

H 4 = 2.4669e-005 -0.061677 -0.0015425


0.0015962 -0.0015391 0.049902

0.33338 4.1877e-007 5.7332e-005

H5 = 1.1848e-005 -0.061796 -0.0015452


0.0016341 -0.001548 0.049929

0.33329 -3.5772e-007 -3.7352e-006

H 6 = 9.2713e-005 -0.062134 -0.001562


0.0014736 -0.001558 0.049823

6.7

x1

x2

x3

1.0000000e+000

0.0000000e+000

0.0000000e+000

0.0000000e+000

2.0000000e+000

4.9919291e-001

8.9623267e-003

-5.2233579e-001

3.0000000e+000

5.0000785e-001

7.4009242e-004

-5.2357195e-001

4.0000000e+000

4.9999972e-001

2.9806602e-005

-5.2359785e-001

5.0000000e+000

5.0000000e-001

5.7913103e-008

-5.2359877e-001

6.0000000e+000

5.0000000e-001

3.1249693e-010

-5.2359878e-001

7.0000000e+000

5.0000000e-001

-2.2612588e-012

-5.2359878e-001

6.7 DFP
6.7
3 DFP

MATLAB

265

6.7 DFP

6.8 BFS

BFS 2 BFS Broyden-Flether-Shanno

BFS
DFP

x k +1 = xk - H k f(x k )

T
T
k x k ( x k ) - H k y k ( x k ) - ( x k ) y k T H k

H k +1 = H k +
T
( x k ) y k

T
k = 1 + y k H k y k
T

( x k ) y k

x k = x k +1 - x k , y k = f(x k +1 ) - f(x k )

DFP BFS

MATLAB

266

BFS

3 x cos( yz ) 2 = 0
2
2
x 81( y + 0.1) + sin z + 1.06 = 0

10 3
e xy + 20 z +
=0

3
x 0.1

y = 0.1

z 0.1

\\chapter6.rar\6-8.exe
\\chapter6\
BFS.m,f2.m,df2.m,BFS_main.m

BFS
Editor
%BFS
% x0
%tol

10 -10

MATLAB

267

%data
function [x,n,data]=BFS(x0,tol)
if nargin==1
tol=1e-5;
end
H0=df2(x0);
H0=inv(H0);
x1=x0-H0*f2(x0);
n=1;
%
wucha=0.1;
%
while

(wucha>tol)&(n<20)

wucha=norm(x1-x0);
dx=x1-x0;
y=f2(x1)-f2(x0);
u=1+y'*H0*y/(dx'*y);
H1=H0+(u*dx*dx'-H0*y*dx'-dx*y'*H0)/(dx'*y);
%%%%%%%%%%%
%
temp_x0=x0;
x0=x1;
x1=temp_x0-H1*f2(temp_x0);

%x1

%%%%%%
% H
H=H1;
n=n+1;
%data
data(:,n)=x1;
end
x=x1;
BFS.m
Jacobi
1 Editor
function F = f2(x0)
x=x0(1);
y=x0(2);

MATLAB

268

z=x0(3);
f1=3*x-cos(y*z)-1/2;
f2=x^2-81*(y+0.1)^2+sin(z)+1.06;
f3=exp(-x*y)+20*z+(10*pi-3)/3;
F=[f1;f2;f3];
f2.m
2 Editor
function f=df2(x0)
x=x0(1);
y=x0(2);
z=x0(3);
f=[3 z*sin(x*y) y*sin(y*z)
2*x -162*(y+0.1) cos(z)
-y*exp(-x*y) -x*exp(-x*y) 20];
df2.m

Editor
%BFS
x0=[0.1 0.1 -0.1]';
[x,n,data]=DFP(x0);
disp('')
x
disp('')
n
% data1
subplot(3,1,1)
plot(data(1,:)),title('x1 ')
% data
subplot(3,1,2)
v=[1 n -0.05 0.05]; %
plot(data(2,:)),axis(v),title('x2 ')
%
subplot(3,1,3)
plot(data(3,:)),title('x3 ')
%
num=(1:n)';
a=[num data'];
save data1.txt a ascii
BFS_main.m

MATLAB

269

>> clear
>> BFS_main

x=
0.499999999999998
-7.43062354656595e-013
-0.523598775598313

n=
7

BFS DFP

BFS DFP
H

H 0 =

0.33333 -1.034e-005 1.7181e-005


0.0021086 -0.030869 0.0015358
0.0016605 -0.00015286 0.050008

0.33444 -0.0023344 -0.00037497

H1 = 0.00078724 -0.03018 0.0027722


0.00033801 0.002328 0.050581

0.33331 6.7531e-005 -4.0646e-005

H 2 = 0.00015821 -0.054489 -0.0013616


0.0015475 -0.0013458 0.049833

0.3338 2.1978e-006 -0.00010594

H3 = 0.00017794 -0.059196 -0.0014668


0.0010797 -0.0014875 0.049997

0.33332 2.1055e-006 -2.5196e-006

H 4 = 2.4773e-005 -0.061672 -0.0015426


0.0015816 -0.0015396 0.049886

MATLAB

270

0.33333 -2.728e-009 1.6809e-005

H5 = -8.2965e-006 -0.061781 -0.0015443


0.0016163 -0.0015443 0.049928

0.33331 -4.092e-007 -1.5962e-005

H 6 = 3.1285e-005 -0.061966 -0.0015509


0.001573 -0.0015454 0.049876

H
6.8

x1

x2

x3

1.0000000e+000

0.0000000e+000

0.0000000e+000

0.0000000e+000

2.0000000e+000

4.9919127e-001

8.9835755e-003

-5.2233116e-001

3.0000000e+000

5.0000736e-001

7.4194500e-004

-5.2357209e-001

4.0000000e+000

5.0000001e-001

2.9840067e-005

-5.2359815e-001

5.0000000e+000

5.0000000e-001

5.2475693e-008

-5.2359877e-001

6.0000000e+000

5.0000000e-001

1.5636976e-010

-5.2359878e-001

7.0000000e+000

5.0000000e-001

-7.4306235e-013

-5.2359878e-001

6.8

BFS

6.8

BFS

MATLAB

271

6.8

BFS

6.9

f1 ( x1 , x2 ,L , xn ) = 0
( , ,L , ) = 0
xn
f 2 x1 x2

f n ( x1 , x2 ,L , xn ) = 0

n
n n
0

n
h

h = f12 + f 2 2 + L + f n 2
x0 x

xk +1 = x k + p k
p k
p(x) = -gradh(x), p k = p(x k )
h xk

p k (x) = -gradh(x k )

MATLAB

272

MATLAB

2
x 2 x y + 0.5 = 0
2
2
x + 4 y 4 = 0

\\chapter6.rar\6-9.exe
\\chapter6\
tidu_fuhao.m,f1_tidu.m,zuisu.m,zuisu_main.m

c/c++,java,delphi
MATLAB

Editor
% f1
%
syms x y

MATLAB

273

f1=x^2-2*x-y+0.5;
f2=x^2+4*y^2-4;
h=f1^2+f2^2
grad=[diff(h,x),diff(h,y)];
grad=simple(grad)
tidu_fuhao.m

>> clear
>> tidu_fuhao

h=
(x^2-2*x-y+1/2)^2+(x^2+4*y^2-4)^2
grad =
[ 8*x^3-12*x^2-4*x*y-6*x+4*y-2+16*x*y^2, -2*x^2+4*x-62*y-1+16*y*x^2+64*y^3]
h grad

Editor
%
function f=f1_tidu(x0)
x=x0(1);
y=x0(2);
f= [8*x^3-12*x^2-4*x*y-6*x+4*y-2+16*x*y^2
-2*x^2+4*x-62*y-1+16*y*x^2+64*y^3]';
f1_tidu.m

Editor
%
% x0
%tol

10 -10

%data
function [x,n,data]=zuisu(x0,tol)
if nargin==1
tol=1e-4;
end
x1=x0-0.001*f1_tidu(x0);
n=1;

MATLAB

274

%
while (norm(x1-x0)>tol)& (n<2000)
x0=x1;
%0.001
x1=x0-0.001*f1_tidu(x0);
n=n+1;
%data
data(:,n)=x1;
end
x=x1;
zuisu.m

Editor
%
x0=[0 0];
[x,n,data]=zuisu(x0);
disp('')
x
disp('')
n
% data1
subplot(2,1,1)
plot(data(1,:),'-.'),title('x ')
% data
subplot(2,1,2)
plot(data(2,:),'-.'),title('y ')
zuisu_main.m

>> clear
>> zuisu_main

x=
-0.21412

n=
426

0.99395

MATLAB

275

426

6.9

1.0000000e+000

0.0000000e+000

0.0000000e+000

2.0000000e+000

4.0080559e-003

2.0540079e-003

3.0000000e+000

6.0241131e-003

3.1653552e-003

4.0000000e+000

8.0481054e-003

4.3375795e-003

5.0000000e+000

1.0079954e-002

5.5744368e-003

6.0000000e+000

1.2119567e-002

6.8799151e-003

7.0000000e+000

1.4166837e-002

8.2582483e-003

8.0000000e+000

1.6221643e-002

9.7139312e-003

9.0000000e+000

1.8283847e-002

1.1251735e-002

4.1600000e+002

-2.1307193e-001

9.9396857e-001

4.1700000e+002

-2.1318305e-001

9.9396676e-001

4.1800000e+002

-2.1329283e-001

9.9396497e-001

4.1900000e+002

-2.1340130e-001

9.9396319e-001

4.2000000e+002

-2.1350846e-001

9.9396144e-001

4.2100000e+002

-2.1361434e-001

9.9395970e-001

4.2200000e+002

-2.1371894e-001

9.9395798e-001

4.2300000e+002

-2.1382229e-001

9.9395628e-001

4.2400000e+002

-2.1392439e-001

9.9395459e-001

4.2500000e+002

-2.1402527e-001

9.9395293e-001

4.2600000e+002

-2.1412493e-001

9.9395128e-001

6.9

MATLAB

276

6.9
6.9

6.10

p(x) = f '(x)1 f(x)


= 1

x k +1 = x k k f '(x k )1 f(x k )
k

min f ( x k k f '(x k )1 f(x k ) ) = f ( x k k f '(x k )1 f(x k ) )

MATLAB

277

2
x 2 x y + 0.5 = 0
2
2
x + 4 y 4 = 0

\\chapter6.rar\6-10.exe
\\chapter6\
xiajiang.m,f1.m,df1.m,xiajiang_main.m

Editor
%
% x0
%tol

10 -10

%data
function [x,n,data]=new_ton(x0,tol)
if nargin==1
tol=1e-10;
end
x1=x0-f1(x0)/df1(x0);
n=1;
%
namda=0.8;

MATLAB

278

%
while (norm(x1-x0)>tol) &(n<500)
x0=x1;
x1=x0-namda*f1(x0)/df1(x0);
n=n+1;
%data
data(:,n)=x1;
end
x=x1;
xiajiang.m

Jacobi
1 Editor
%
function f=f1(x0)
x=x0(1);
y=x0(2);
f1=x^2-2*x-y+0.5;
f2=x^2+4*y^2-4;
f=[f1 f2];
f1.m
2 Editor
% jacobi
function f=df1(x0);
x=x0(1);
y=x0(2);
f=[2*x-2

-1

2*x 8*y];
df1.m

Editor
%
x0=[1 1];
[x,n,data]=xiajiang(x0);
disp('')
x
disp('')
n
% data1
subplot(2,1,1)
plot(data(1,:),'-.'),title('x ')

MATLAB

279

% data
subplot(2,1,2)
plot(data(2,:),'-.'),title('y ')
xiajiang_main.m

>> clear
>> xiajiang_main

x=
-0.22221455507441

0.993808418606753

n=
25

MATLAB
25
6.10

1.0000000e+000

0.0000000e+000

0.0000000e+000

2.0000000e+000

9.8924528e+000

-2.2433962e+000

3.0000000e+000

-9.3419360e-003

3.3895442e+000

4.0000000e+000

-1.1351822e+000

2.1102150e+000

5.0000000e+000

-4.1241089e-001

1.4374303e+000

6.0000000e+000

-3.0867994e-001

1.1379207e+000

7.0000000e+000

-2.6066196e-001

1.0311720e+000

8.0000000e+000

-2.3639580e-001

1.0029638e+000

9.0000000e+000

-2.2678878e-001

9.9622182e-001

1.0000000e+001

-2.2360243e-001

9.9448708e-001

1.1000000e+001

-2.2262648e-001

9.9400479e-001

1.2000000e+001

-2.2233594e-001

9.9386581e-001

1.3000000e+001

-2.2225024e-001

9.9382525e-001

1.4000000e+001

-2.2222504e-001

9.9381336e-001

MATLAB

280

1.5000000e+001

-2.2221763e-001

9.9380987e-001

1.6000000e+001

-2.2221546e-001

9.9380884e-001

1.7000000e+001

-2.2221482e-001

9.9380854e-001

1.8000000e+001

-2.2221463e-001

9.9380846e-001

1.9000000e+001

-2.2221458e-001

9.9380843e-001

2.0000000e+001

-2.2221456e-001

9.9380842e-001

2.1000000e+001

-2.2221456e-001

9.9380842e-001

2.2000000e+001

-2.2221456e-001

9.9380842e-001

2.3000000e+001

-2.2221456e-001

9.9380842e-001

2.4000000e+001

-2.2221456e-001

9.9380842e-001

2.5000000e+001

-2.2221456e-001

9.9380842e-001

6.10
6.10
67

6.10

6.11 Fletcher-Reeves

MATLAB

281

Fletcher-Reeves

p k = -g k + k p k 1
p k g k Fletcher-Reeves

gkT gk
k =
g k 1T g k 1

x k +1 x k = k p k

p 0 = g 0
p = -g + p
k
k k 1
k

Fletcher-Reeves

x 2 2 x y + 0.5 = 0
2
2
x + 4 y 4 = 0
[ x, y ] = [ 0,1]

MATLAB

282

\\chapter6.rar\6-11.exe
\\chapter6\
gongE.m,gEf_tidu.m,gongE_main.m

Flechter-Reeves
Editor
% Fletcher-Reeves
% x0
%tol

10 -10

%data
function [x,n,data]=gongE(x0,tol)
if nargin==1
tol=1e-4;
end
x1=x0-0.001*gEf_tidu(x0);
n=1;
%
wucha=0.1;
while (wucha>tol)&(n<1000)
p0=-gEf_tidu(x0);
beta=gEf_tidu(x0)'*gEf_tidu(x1)/(gEf_tidu(x0)'*gEf_tidu(x0));
p1=p0+beta*p0;
x1=x0+0.001*p1;
wucha=norm(x1-x0);
x0=x1;
n=n+1;
%data
data(:,n)=x1;
end
x=x1;
gongE.m

Editor
%
%
function f=gEf_tidu(x0)
x=x0(1);
y=x0(2);
f= [8*x^3-12*x^2-4*x*y-6*x+4*y-2+16*x*y^2
-2*x^2+4*x-62*y-1+16*y*x^2+64*y^3];

MATLAB

283

gEf_tidu.m

Editor
%
x0=[0 1]';
[x,n,data]=gongE(x0);
disp('')
x
disp('')
n
% data1
subplot(2,1,1)
plot(data(1,:),'-.'),title('x ')
% data
%
v=[0,n,0.5,1.5];
subplot(2,1,2)
plot(data(2,:),'-.'),axis(v),title('y ')
%
num=(1:n)';
a=[num data'];
save data1.txt a -ascii
gongE_main.m

>> gongE_main

x=
-0.21832
0.99388

n=
177

177
6.11

MATLAB

284

1.0000000e+000

0.0000000e+000

0.0000000e+000

2.0000000e+000

-3.9321055e-003

9.9803395e-001

3.0000000e+000

-7.8692522e-003

9.9657466e-001

4.0000000e+000

-1.1747431e-002

9.9552198e-001

5.0000000e+000

-1.5570238e-002

9.9476871e-001

6.0000000e+000

-1.9340214e-002

9.9423617e-001

7.0000000e+000

-2.3059150e-002

9.9386635e-001

8.0000000e+000

-2.6728306e-002

9.9361637e-001

9.0000000e+000

-3.0348566e-002

9.9345447e-001

1.0000000e+001

-3.3920550e-002

9.9335708e-001

1.6800000e+002

-2.1734180e-001

9.9389660e-001

1.6900000e+002

-2.1746094e-001

9.9389452e-001

1.7000000e+002

-2.1757717e-001

9.9389249e-001

1.7100000e+002

-2.1769059e-001

9.9389050e-001

1.7200000e+002

-2.1780124e-001

9.9388856e-001

1.7300000e+002

-2.1790921e-001

9.9388666e-001

1.7400000e+002

-2.1801455e-001

9.9388481e-001

1.7500000e+002

-2.1811733e-001

9.9388299e-001

1.7600000e+002

-2.1821760e-001

9.9388122e-001

1.7700000e+002

-2.1831544e-001

9.9387949e-001

6.11
6.11

6.11

y
x
k

MATLAB

285

6.12

Polak-Ribiere

k
Fletcher-Reeves Hestenes-Stiefel Polak-Ribiere
Polak-Ribiere Hestenes-Stiefel
k

Polak-Ribiere

k =

(g k g k 1 )T g k
g k 1T g k 1

Fletcher-Reeves
Hestenes-Stiefel

(g k g k 1 )T g k
k =
(g k g k 1 )T p k 1

MATLAB

286

2
x 2 x y + 0.5 = 0
2
2
x + 4 y 4 = 0

[ x, y ] = [ 0,1]

\\chapter6.rar\6-12.exe
\ \chapter6\
polak_ribi.m,gEf_tidu.m, polak_main.m

Polak-Ririere
Editor
% Polak-Ririerel
% x0
%tol

10 -10

%data
function [x,n,data]=polak_ribi(x0,tol)
if nargin==1
tol=1e-4;
end
x1=x0-0.001*gEf_tidu(x0);
n=1;
%
wucha=0.1;
while (wucha>tol)&(n<1000)
p0=-gEf_tidu(x0);
dgef=gEf_tidu(x1)-gEf_tidu(x0);
%bega
beta=dgef'*gEf_tidu(x1)/(dgef'*gEf_tidu(x0));
%p
p1=p0+beta*p0;
%%%%%%%%%%%%%%%%%%%%%%
% x
wucha=norm(x1-x0);
x0=x1;
%%%%%%%%%%%%%%%%%%%%%
x1=x0+0.001*p1;
n=n+1;

MATLAB

287

%data
data(:,n)=x1;
end
x=x1;
ploak_ribi.m

Editor
%
%
function f=gEf_tidu(x0)
x=x0(1);
y=x0(2);
f= [8*x^3-12*x^2-4*x*y-6*x+4*y-2+16*x*y^2
-2*x^2+4*x-62*y-1+16*y*x^2+64*y^3];
gEf_tidu.m

Editor
%Polak-Ribiere
x0=[0 1]';
[x,n,data]=polak_ribi(x0);
disp('')
x
disp('')
n
% data1
subplot(2,1,1)
plot(data(1,:),'-.'),title('x ')
% data
%
v=[0,n,0.5,1.5];
subplot(2,1,2)
plot(data(2,:),'-.'),axis(v),title('y ')
%
num=(1:n)';
a=[num data'];
save data1.txt a ascii
polak_main.m

MATLAB

288

MATLAB
>>clear
>> polak_main

x=
-0.2184
0.99388

n=
176

176 Fletcher-Reeves
6.12

1.0000000e+000

0.0000000e+000

0.0000000e+000

2.0000000e+000

-5.7733968e-003

9.9711330e-001

3.0000000e+000

-9.2659226e-003

9.9559545e-001

4.0000000e+000

-1.2690309e-002

9.9453740e-001

5.0000000e+000

-1.6135684e-002

9.9383066e-001

6.0000000e+000

-1.9640854e-002

9.9337535e-001

7.0000000e+000

-2.3206935e-002

9.9310126e-001

8.0000000e+000

-2.6807149e-002

9.9295761e-001

9.0000000e+000

-3.0408197e-002

9.9290464e-001

1.0000000e+001

-3.3985321e-002

9.9291109e-001

1.6900000e+002

-2.1766507e-001

9.9389096e-001

1.7000000e+002

-2.1777775e-001

9.9388898e-001

1.7100000e+002

-2.1788766e-001

9.9388705e-001

1.7200000e+002

-2.1799486e-001

9.9388517e-001

1.7300000e+002

-2.1809942e-001

9.9388332e-001

1.7400000e+002

-2.1820140e-001

9.9388152e-001

1.7500000e+002

-2.1830087e-001

9.9387976e-001

1.7600000e+002

-2.1839789e-001

9.9387804e-001

6.12

Polak-Ririere

6.12

MATLAB

289

6.12

Polak-Ririere

6.12 y 6.12
6.12 y 0
x x

6.13

MATLAB fsovle

MATLAB fsovle
x = fsolve(fun,x0)
x = fsolve(fun,x0,options)
[x,fval] = fsolve(...)
[x,fval,exitflag] = fsolve(...)
[x,fval,exitflag,output] = fsolve(...)
[x,fval,exitflag,output,jacobian] = fsolve(...)
fun
fzero fzero MATLAB

fzero
MATLAB
MATLAB
fsovle

MATLAB

290

fsolve

3 x cos( yz ) 2 = 0
2
2
x 81( y + 0.1) + sin z + 1.06 = 0

10 3
e xy + 20 z +
=0
3

2 A 2 2

5
A3 - A2 =
7

6
8

\\chapter6.rar\6-13.exe
\\chapter6\fsolve_main.m,f2.m,f3.m,

Editor
function F = f2(x0)
x=x0(1);
y=x0(2);
z=x0(3);
f1=3*x-cos(y*z)-1/2;
f2=x^2-81*(y+0.1)^2+sin(z)+1.06;
f3=exp(-x*y)+20*z+(10*pi-3)/3;
F=[f1;f2;f3];
f2.m

MATLAB

291

Editor
%
x0 = [0.1 0.1 -0.1];

[x,fx,flag,out,jaco] = fsolve(@f2,x0)
fsolve_main.m

>> clear
>> fsolve_main

Optimization terminated: first-order optimality is less than options.TolFun.


x=
0.500000000007109

7.76727247110874e-010

-0.523598775577995
fx =
2.13264961246296e-011
-1.25582886312259e-008
1.77209358298569e-011
flag =
1
out =
iterations: 4
funcCount: 20
algorithm: 'trust-region dogleg'
firstorderopt: 2.03435432237348e-007
message: [1x76 char]
jaco =
3
0
1
-16.2000013440847
0
-0.5
x

Editor
function F = f3(A)
F = A^3-A^2-[5 6;7,8];
f3.m

fsolve_main.m

0
0.866025403141975
20

MATLAB

292

%
x0 = ones(2,2); %
options = optimset('Display','off');
[A,Fval,exitflag] = fsolve('f3',x0,options)

>>clear
>>clc
>>fsolve_main

A=
0.856455826826365

1.39013497618595

1.62182413888026

1.55152331491535

Fval =
-7.21544415327458e-008

5.31073043319452e-008

6.19440836402418e-008

-4.56180107022419e-008

exitflag =
1
A

fx
Flag=1
xout jaco jacobi

A A
Fval flag=1

0.856455826826365
A=
1.62182413888026

1.39013497618595
1.55152331491535

fsolve
fsolve MATLAB

MATLAB

293

MATLAB

a) -

xy = z 2 + 1

2
2
xyz + y = x + 2
e x + z = e y + 3

( x, y , z ) = (1,1,1)

( x, y , z ) = (1.7776719,1.4239605,1.2374711)

b)

x 5 y 2 + 7 z 2 + 12 = 0

3 xy + xz 11x = 0
2 yz + 40 x = 0

( x, y , z ) = (1.5, 6.5, 5.0 )

( x, y , z ) = (1.000188, 5.000432, 4.000388 )


c)

MATLAB

294

x2 + y2 + z3 = 1
2
2
2 x + y 4 z = 0
x2
2
3 4 y + z = 0

( x, y , z ) = (1,1,1)

( x, y , z ) = ( 0.7851969, 0.4966114, 0.3699228 )


d)
2
2
4 x + y 4 = 0

x + y sin ( x y ) = 0

( x, y ) = (1, 0 )

( x, y ) = ( 0.998607, 0.1055305)

MATLAB

295

Ax = x

Ax = Bx

7.1

A R

n n

n 1 > 2 3 L n

x1 , x 2 , L, x n v 0 = u 0

v0 = u0 0
v k = Au k 1
uk =

vk
max ( v k )

lim u k =
k

x1
max ( x1 )

lim max( v k ) = 1

max( v) v

MATLAB

296

1 2 1
A = 2 -4 1
1 1 -6
A

\\chapter7.rar\7-1.exe
\\chapter7\mifa.m,mifa_main.m

Editor
function [namda,q,time,data_na,data_q]=mifa(A,tol,x0)
%namda
%q
%time
%A
%x0

%tol 10 -7
%data_na
%data_q
if nargin==1
tol=1e-7;
temp=length(A); %x0

MATLAB

297

x0=ones(temp,1); % 1
end
if nargin==2
temp=length(A); %x0
x0=ones(temp,1); % 1
end
%
m1=0;
u=x0;
time=0;
%
while time<500
v=A*u;
[vmax,i]=max(abs(v));
m=v(i);
%

u=v/m;
if abs(m-m1)<tol
break;
end
m1=m;
time=time+1;
%data_na

%data_na
%data_q
data_na(time,1)=m;
data_q(:,time)=u;
end
namda=m;
q=u;
mifa.m

Editor
%

MATLAB

298

%08 7 19
a=[-1 2 1
2 -4 1
1 1 -6];
[namda,v,time,data_na,data_q]=mifa(a,1e-8);
disp('')
namda
disp('')
v
disp('')
time

%
n1=length(data_na);
%n2
n2=(1:n1)';
%
temp1=[n2,data_na];
%
temp2=[n2,data_q];
%
save data_mifa_na.xls temp1 -ascii
save data_mifa_q.xls temp2 ascii
subplot(2,2,1)
plot(data_na)
title('')
grid
subplot(2,2,2)
plot(data_q(:,1))
title('')
grid
subplot(2,2,3)
plot(data_q(:,2))
title('')
grid
subplot(2,2,4)

MATLAB

299

plot(data_q(:,3))
title('')
grid
mifa_main.m

>>clear
>>clc
>>mifa_main

namda =
-6.42106659021352

v=
-0.0461455030428652
-0.374921093002661
1

time =
61
xls

10
108 61

7.1

MATLAB

300

1
2
3
4
5
6
7
8
9
M
51
52
53
54
55
56
57
58
59
60
61

-4.0000000000
-6.2500000000
-6.1600000000
-6.2207792208
-6.2640918580
-6.2991168139
-6.3268432052
-6.3485852626
-6.3655012665
M
-6.4210661064
-6.4210662293
-6.4210663225
-6.4210663931
-6.4210664467
-6.4210664872
-6.4210665180
-6.4210665413
-6.4210665590
-6.4210665724
-6.4210665825

7.1
10 7.1
7.2

1
2
3
4
5
6
7
8
9
10
M
50
51
52
53

-0.500000000
-0.320000000
-0.266233770
-0.218162840
-0.179803370
-0.149414040
-0.125584860
-0.107044960
-0.092707914
-0.081673107
M
-0.046146040
-0.046145905
-0.046145803
-0.046145725

0.250000000
0.160000000
0.045454545
-0.045929019
-0.119313450
-0.177429170
-0.223000410
-0.258456310
-0.285874630
-0.306977710
M
-0.374920070
-0.374920320
-0.374920520
-0.374920670

1.00E+00
1.00E+00
1.00E+00
1.00E+00
1.00E+00
1.00E+00
1.00E+00
1.00E+00
1.00E+00
1.00E+00
M
1.00E+00
1.00E+00
1.00E+00
1.00E+00

MATLAB

301

54
55
56
57
58
59
60
61

-0.046145667
-0.046145622
-0.046145589
-0.046145563
-0.046145544
-0.046145529
-0.046145518
-0.046145509

-0.374920780
-0.374920860
-0.374920930
-0.374920980
-0.374921020
-0.374921040
-0.374921060
-0.374921080

1.00E+00
1.00E+00
1.00E+00
1.00E+00
1.00E+00
1.00E+00
1.00E+00
1.00E+00

7.2
7.2

7.1 7.2
7.1

7.1
7.1

MATLAB

302

7.2 2

u k = Av k 1

uk

v k = m
k

mk 1 > 1 v k 1 < 1 v k
2

for k=1,2, L

k
k
z ( ) = Aq ( 1)

(k )

z(
z(

k)

k)
2
H

( k ) = q( k ) Aq ( k )
end

MATLAB

303

2
A = 10
3

3 2
3 4
6 1

\\chapter7.rar\7-2.exe
\\chapter7\mifa_2.m,mifa_2_main

Editor
function [namda,q,time,data_na,data_q]=mifa_2(A,tol,x0)
%namda
%q
%time
%A
%x0

%tol 10 -7
%data_na
%data_q
if nargin==1
tol=1e-7;
temp=length(A); %x0
x0=ones(temp,1); % 1
end
if nargin==2
temp=length(A); %x0
x0=ones(temp,1); % 1
end
%
m1=0;
u=x0;
time=0;
%

MATLAB

304

while time<500
v=A*u;
u=v/norm(v);
m=u'*A*u;
if abs(m-m1)<tol
break;
end
m1=m;
time=time+1;
%data_na

%data_na
%data_q
data_na(time,1)=m;
data_q(time,:)=u;
end
namda=m;
q=u;
mifa_2.m

Editor
% 2
%
a=[2 3 2
10 3 4
3 6 1];
[namda,v,time,data_na,data_q]=mifa_2(a,1e-8);
disp('')
namda
disp('')
v
disp('')
time
%

MATLAB

305

subplot(2,2,1)
plot(data_na)
title('')
grid
%
subplot(2,2,2)
plot(data_q(:,1))
title('')
grid
subplot(2,2,3)
plot(data_q(:,2))
title('')
grid
subplot(2,2,4)
plot(data_q(:,3))
title('')
grid
mifa_2_main.m

>>clear
>>clc
>> mifa_2_main

namda =
11.0000

v=
0.5000
1.0000
0.7500

MATLAB

306

time =
18

108 18 7.3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

1.700000000E+01
9.470588235E+00
1.158385093E+01
1.083163539E+01
11.04979951
10.98590609
11.00395312
10.99890329
11.00030258
10.99991685
11.00002279
10.99999376
11.0000017
10.99999953
11.00000013
10.99999997
11.00000001
11

7.3
7.3 11

7.4

1
2


0.411764706
1
0.527950311
1

0.588235294
0.826086957

MATLAB

307

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

0.492761394
0.502004851
0.499455687
0.50014864
0.499959477
0.500011053
0.499996986
0.500000822
0.499999776
0.500000061
0.499999983
0.500000005
0.499999999
0.5
0.5
0.5

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

0.726005362
0.757437751
0.747837306
0.750616681
0.749827131
0.750048013
0.749986749
0.750003642
0.749999001
0.750000273
0.749999925
0.75000002
0.749999994
0.750000002
0.75
0.75

7.4
7.4
7.2

7.2
7.2

MATLAB

308

7.1

7.3 Rayleigh

Rayleigh
Hermitian A C nn Rayleigh Rayleigh-Ritz

R ( x ) = R ( x, A ) =

( Ax, x ) = x H Ax
( x, x ) x H x

x Rayleigh
Rayleigh

Rayleigh
1 x

(0)

R n TOL

2 k = 1, 2, L 36
3

y ( ) = Ax(

mk

Ax(
(
=
( x(

x( k ) =

k 1)

k 1)

k 1)

, x( k 1)

, x( k 1)

y(k )
mk

6 mk mk 1 < TOL
7

mk mk 1
< TOL
mk

MATLAB

309

Rayleigh

Rayleigh

261 209
A = -530 422
-800 631

-49
-98
-144

\\chapter7.rar\7-3.exe
\\chapter7\mifa_ray.m,mifa_ray_main.m

Rayleigh
Editor
function [namda,q,time,data_na,data_q]=mifa_ray(A,tol,x0)
% Rayleigh
%namda
%q
%time
%A
%x0

%tol 10 -7
%data_na
%data_q

MATLAB

310

if nargin==1
tol=1e-7;
temp=length(A); %x0
x0=ones(temp,1); % 1
end
if nargin==2
temp=length(A); %x0
x0=ones(temp,1); % 1
end
%
m1=0;
u=x0;
time=0;
%
while time<500
v=A*u;
%rayleigh
m=u'*v/(u'*u);
q=v/m;
u=q;
if abs(m-m1)<tol
break;
end
m1=m;
%
time=time+1;
%data_na

%data_na
%data_q
data_na(time,1)=m;
data_q(time,:)=u;
end

MATLAB

311

namda=m;
mifa_ray.m

Editor
% Rayleigh
%08 7 19
a=[-261 209 -49
-530 422 -98
-800 631 -144];
[namda,v,time,data_na,data_q]=mifa_ray(a,1e-8,[1 0 0]');
disp('')
namda
disp('')
v
disp('')
time
%
n1=length(data_na);
%n2
n2=(1:n1)';
%
temp1=[n2,data_na];
%
temp2=[n2,data_q];
%
save data_ray_na.dat temp1 -ascii
save data_ray_q.dat temp2 -ascii
subplot(2,2,1)
plot(data_na)
title('')
grid
subplot(2,2,2)
plot(data_q(:,1))
title('')

MATLAB

312

grid
subplot(2,2,3)
plot(data_q(:,2))
title('')
grid
subplot(2,2,4)
plot(data_q(:,3))
title('')
grid
mifa_ray_main.m

>>clear
>> mifa_ray_main

namda =
10.0000000042464

v=
1.01835988750934
2.03671977525235
3.05507966346134

time =
20

MATLAB

313

20 108
10.0000000042464

7.5

-261

13.0604800100301

10.7191389740989

10.2072898264179

10.0632836698198

10.0198035279698

10.0063036760606

10.0020395554168

10.0006715860955

10

10.0002253981757

11

10.0000771920262

12

10.0000269870324

13

10.0000096279234

14

10.0000035011088

15

10.000001295427

16

10.0000004866659

17

10.0000001852133

18

10.0000000712513

19

10.0000000276511

20

10.0000000108049

7.5 Rayleigh
7.5
7.5

1
2
3
4
5
6
7
8
9

1.0000000000
1.0117973747
1.0156477467
1.0172196494
1.0178835697
1.0181628202
1.0182790359
1.0183269313
1.0183465193

2.0306513410
2.0329822577
2.0347985764
2.0358120756
2.0363127971
2.0365434722
2.0366451496
2.0366886865
2.0367069673

3.0651340996
3.0597409738
3.0572609142
3.0560641677
3.0555096219
3.0552628640
3.0551563602
3.0551113740
3.0550926580

MATLAB

314

10
11
12
13
14
15
16
17
18
19
20

1.0183544845
1.0183577096
1.0183590115
1.0183595357
1.0183597465
1.0183598311
1.0183598650
1.0183598787
1.0183598841
1.0183598863
1.0183598872

2.0367145403
2.0367176478
2.0367189143
2.0367194280
2.0367196356
2.0367197193
2.0367197529
2.0367197664
2.0367197719
2.0367197740
2.0367197749

3.0550849544
3.0550818077
3.0550805294
3.0550800122
3.0550798036
3.0550797196
3.0550796858
3.0550796723
3.0550796669
3.0550796647
3.0550796638

7.6Rayleigh

7.3

7.3 Rayleigh
7.3 Rayleigh

7.4 Rayleigh

MATLAB

315

Rayleigh Rayleigh
Rayleigh

Rayleigh ( x, x ) = x
x

(k )

2
2

= 1 R ( x ) = ( Ax, x )

Rayleigh

1 TOL>0 x

(0)

R x( 0 )

0
= 1 x( ) =

1
T
(1,L ,1)
n

2 k = 1, 2, L 36
3

y ( k ) = Ax( k 1)

mk = Ax( k 1) , x( k 1) = y ( k )

x( k ) = y ( k ) / y ( k )

) ( )

x( k 1)

6 mk mk 1 < TOL
7

Rayleigh

Rayleigh

Rayleigh

MATLAB

316

1 2 3
A = 2 3 4
3 4 5

\\chapter7.rar\7-4.exe
\\mifa_ray2,mifa_ray2_main

Rayleigh
Editor
function [namda,q,time,data_na,data_q]=mifa_ray2(A,tol,x0)
% Rayleigh
%namda
%q
%time
%A
%x0

%tol 10 -7
%data_na
%data_q
if nargin==1
tol=1e-7;
temp=length(A); %x0
x0=ones(temp,1); % 1
% 2 1
%-P439
x0=x0/sqrt(temp);
end
if nargin==2
temp=length(A); %x0
x0=ones(temp,1); % 1
end
%
m1=0;

MATLAB

317

u=x0;
time=0;
%
while time<500

v=A*u;
%rayleigh
m=v'*u;
q=v/norm(v);
u=q;
if abs(m-m1)<tol
break;
end
m1=m;
%
time=time+1;
%data_na

%data_na
%data_q
data_na(time,1)=m;
data_q(time,:)=u;
end
namda=m;
mifa_ray2.m

Editor
% Rayleigh
%08 7 22
a=[1 2 3
234
3 4 5];

MATLAB

318

[namda,v,time,data_na,data_q]=mifa_ray2(a,1e-8);
disp('')
namda
disp('')
v
disp('')
time

%
n1=length(data_na);
%n2
n2=(1:n1)';
%
temp1=[n2,data_na];
%
temp2=[n2,data_q];
%
save data_ray2_na.txt temp1 -ascii
save data_ray2_q.txt temp2 -ascii

subplot(2,2,1)
plot(data_na)
title('')
grid
subplot(2,2,2)
plot(data_q(:,1))
title('')
grid
subplot(2,2,3)
plot(data_q(:,2))
title('')
grid
subplot(2,2,4)
plot(data_q(:,3))
title('')
grid

MATLAB

319

mifa_ray2_main.m

>>clear
>>clc
>>>> mifa_ray2_main

namda =
9.62347538297893

v=
0.385089805894758
0.559510214927759
0.73393062396076

time =
5

9.62347538297893

0.385089805894758
v = 0.559510214927759
0.73393062396076
5 7.7

MATLAB

320

1
2
3
4
5

27.0000000000
9.6206896552
9.6234636872
9.6234753339
9.6234753828

7.7
7.7 9.62
8.8

1
2
3
4
5

0.371390676
0.385973822
0.385032501
0.385093502
0.385089550

0.557086015
0.559662042
0.559500354
0.559510851
0.559510171

0.742781353
0.733350262
0.733968206
0.733928200
0.733930792

7.8
7.8 7.4

7.4
7.4
Rayleigh

MATLAB

321

7.5

A A A A
A

1 x0 R n TOL
2 A LU A=LU
3 k = 1, 2, L 47
4 LUy
5

(k)

= x(

k 1)

L U

( )

mk = max y ( k )

6 mk mk 1 < TOL
7

x( k ) =

y (k )
mk

( )

k
(k )
max y ( ) y

n 1

MATLAB

322

2 1 0
A = 1 3 1
0 1 4
A

\\chapter7.rar\7-5.exe
\\chapter7\fanmi.m,fanmi_main.m

Editor
function [namda,q,time,data_na,data_q]=fanmi(A,tol,x0)
%
% A
%tol
%x0
% 10 -7
%
if nargin==1
tol=1e-7;
temp=length(A); %x0
x0=ones(temp,1); % 1
end
%
if nargin==2
temp=length(A); %x0
x0=ones(temp,1); % 1
end
q = x0;

MATLAB

323

m = 0;
namda = 0;
%
for time=1:1000
y = A\q;
m = max(y);

%m

q = y/m;
if(abs(m - namda)<eps)
namda = 1/m;

%l

return;
else
if(time==1000)
disp(' 1000 ');
namda = 1/m;
% 1000
%
break;
else
namda = m;
end
end
%
data_na(time,1)=m;
data_q(time,:)=q;
end
fanmi.m

Editor
%
%08 7 19
a=[2 1 0
131
0 1 4];
[namda,v,time,data_na,data_q]=fanmi(a,1e-8,[1 1 1]');
disp('')
namda
disp('')
v
disp('')

MATLAB

time

%
n1=length(data_na);
%n2
n2=(1:n1)';
%
temp1=[n2,data_na];
%
temp2=[n2,data_q];
%
save data_fanmi_na.txt temp1 -ascii
save data_fanmi_q.txt temp2 -ascii

subplot(2,2,1)
plot(data_na)
title('')
grid
subplot(2,2,2)
plot(data_q(:,1))
title('')
grid
subplot(2,2,3)
plot(data_q(:,2))
title('')
grid
subplot(2,2,4)
plot(data_q(:,3))
title('')
grid
fanmi_main.m

>>clear

324

MATLAB

325

>> fanmi_main

namda =
1.26794919243112

v=
1
-0.732050807568877
0.267949192431123

time =
43

43 42
7.9

0.444444444444444

0.583333333333333

0.69047619047619

0.747126436781609

0.771794871794872

0.781838316722038

0.785882908404155

0.78752378091519

0.788196651833015

10

0.788475153470448

33

0.788675134594323

34

0.788675134594606

MATLAB

326

35

0.788675134594725

36

0.788675134594776

37

0.788675134594797

38

0.788675134594806

39

0.78867513459481

40

0.788675134594812

41

0.788675134594812

42

0.788675134594813

7.9

7.10

0.25

0.5

-0.285714286

0.285714286

-0.551724138

0.24137931

-0.661538462

0.246153846

-0.704318937

0.255813953

-0.720963173

0.26203966

-0.72754581

0.265244818

-0.730197076

0.26675143

-0.731281086

0.267428418

10

-0.731729217

0.267725217

31

-0.732050808

0.267949192

32

-0.732050808

0.267949192

33

-0.732050808

0.267949192

34

-0.732050808

0.267949192

35

-0.732050808

0.267949192

36

-0.732050808

0.267949192

37

-0.732050808

0.267949192

38

-0.732050808

0.267949192

39

-0.732050808

0.267949192

40

-0.732050808

0.267949192

41

-0.732050808

0.267949192

42

-0.732050808

0.267949192

7.10

7.5

MATLAB

327

7.5

8 ASCII

7.6

QR

QR

QR Q R
R
QR A = A1 A1 Q1
R1

A1 = Q1 R1
Q1 R1

A2 = R1Q1
A2 A1 A3 QR

MATLAB

328

Ak = Qk Rk

Ak +1 = Rk Qk

QR

QR

QR

2 1 0
A = 1 3 1
0 1 4
QR A

\\chapter7.rar\7-6.exe
\\chapter7\qr_tz.m,qr_tz_main.m

QR
Editor
function [namda,time,data_na]=qr_tz(A,tol)
%qr
%A
%tol
% 10 -7

MATLAB

329

%time
%data_na
if nargin==1;
tol=1e-7;
end
%
wucha=1;
%
time=0;
% 500
%
while (wucha>tol)&(time<500)
[q,r]=qr(A);
A1=r*q;
%
tz0=diag(A1);
tz1=diag(A);
wucha=norm(tz0-tz1);
%
A=A1;
time=time+1;
%
data_na(time,:)=tz1;
end
namda=tz1;
qr_tz.m

Editor
% QR
%08 7 20
a=[2 1 0
131
0 1 4];
%
[namda,time,data_na]=qr_tz(a);
disp('')
namda

MATLAB

330

disp('')
time
%
n1=length(data_na);
%n2
n2=(1:n1)';
%temp1
temp1=[n2,data_na];

%
subplot(2,2,1:2)
plot(data_na(:,1))
title('')
grid
%
subplot(2,2,3)
plot(data_na(:,2))
title('')
grid
%
subplot(2,2,4)
plot(data_na(:,3))
title('')
grid
qr_tz_main.m

>>clear
>> qr_tz_main

namda =
4.73205074468257
3.00000006288631
1.26794919243113

time =

MATLAB

331

22

MATLAB

3.00000000000000 1.09544511501033 -0.00000000000000


A1 = 1.09544511501033 3.00000000000000 -1.34164078649987

0
-1.34164078649987 3.00000000000000
3.70588235294118 0.95576922407482 0.00000000000000
A 2 = 0.95576922407482 3.52139037433155 0.97383114934675

0
0.97383114934675 1.77272727272727
4.15662650602410 0.82843920181547 -0.00000000000000
A3 = 0.82843920181547 3.48804354473732 -0.41621270158527

0
-0.41621270158527 1.35532994923858
4.44869215291751 0.64215064001026 0.00000000000000
A 4 = 0.64215064001026 3.26902697997599 0.16377060432306

0
0.16377060432306 1.28228086710650
M
4.73205074468257 0.00033003375007 -0.00000000000000
A 21 = 0.00033003375007 3.00000006288631 -0.00000006616708

0
-0.00000006616708 1.26794919243113
4.73205078229337 0.00020923301798 0.00000000000000
A 22 = 0.00020923301798 3.00000002527550 0.00000002796550

0
0.00000002796550 1.26794919243112
4 A

7.11

MATLAB

332

2.0000000000

3.0000000000

4.0000000000

3.0000000000

3.0000000000

3.0000000000

3.7058823529

3.5213903743

1.7727272727

4.1566265060

3.4880435447

1.3553299492

4.4486921529

3.2690269800

1.2822808671

4.6062145205

3.1233961222

1.2703893573

4.6792065950

3.0524176540

1.2683757511

4.7104188676

3.0215564333

1.2680246991

4.7232911410

3.0087462288

1.2679626302

10

4.7285194190

3.0035289918

1.2679515892

11

4.7306297264

3.0014206532

1.2679496203

12

4.7314793609

3.0005713702

1.2679492688

13

4.7318210842

3.0002297097

1.2679492061

14

4.7319584690

3.0000923362

1.2679491949

15

4.7320136933

3.0000371138

1.2679491929

16

4.7320358903

3.0000149172

1.2679491925

17

4.7320448119

3.0000059956

1.2679491924

18

4.7320483978

3.0000024098

1.2679491924

19

4.7320498390

3.0000009686

1.2679491924

20

4.7320504183

3.0000003893

1.2679491924

21

4.7320506511

3.0000001565

1.2679491924

22

4.7320507447

3.0000000629

1.2679491924

7.11 QR

7.6

7.6 QR
7.6
QR

MATLAB

333

7.7 QR

QR QR
A

Hessenberg Hessenberg QR
A
1 A Hessenberg A1 Householder
MATLAB hess
2 k = 1, 2, L

Ak = Qk Rk A QR Givens MATLAB
QR

Ak +1 = Rk Qk
3
k

QR

QR

MATLAB

334

1 2 1
A = 2 -4 1
1 1 -6
QR A

\\chapter7.rar\7-7.exe
\\chapter7\qr_hess.m, qr_hess_main.m

QR
Editor
function [namda,time,data_na]=qr_hess(A,tol)
% qr
%A
%tol
% 10 -8
%time
%data_na
if nargin==1;
tol=1e-8;
end
%
wucha=1;
%
time=0;
% 500
%
A=hess(A);
while (wucha>tol)&(time<500)
[q,r]=qr(A);
A1=r*q;
%
tz0=diag(A1);
tz1=diag(A);

MATLAB

335

wucha=norm(tz0-tz1);
%
A=A1;
time=time+1;
%
data_na(time,:)=tz1;
end
namda=tz1;
qr_hess.m

Editor
% QR
%08 7 20
a=[-1 2 1
2 -4 1
1 1 -6];
%
[namda,time,data_na]=qr_hess(a,1e-6);
disp('')
namda
disp('')
time
%
n1=length(data_na);
%n2
n2=(1:n1)';
%temp1
temp1=[n2,data_na];
%
subplot(2,2,1:2)
plot(data_na(:,1))
title('')
grid
%
subplot(2,2,3)
plot(data_na(:,2))
title('')

MATLAB

336

grid
%
subplot(2,2,4)
plot(data_na(:,3))
title('')
grid
qr_hess_main.m

>> clear
>> qr_hess_main

namda =
-6.42106563041398
-4.86692650854643
0.28799213896042

time =
32

32 106

7.12

1
2
3
4
5

-4.5000000000
-5.0000000000
-5.0873015873
-5.2140691328
-5.3854003054

-0.5000000000
-6.0000000000
-6.2000350315
-6.0739215145
-5.9025918300

-6.0000000000
0.0000000000
0.2873366188
0.2879906473
0.2879921354

MATLAB

337

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

-5.5905925748
-5.8035507131
-5.9941181175
-6.1433155066
-6.2483639650
-6.3169236458
-6.3594798059
-6.3850777668
-6.4001850355
-6.4090010302
-6.4141118824
-6.4170634524
-6.4187642479
-6.4197430552
-6.4203059452
-6.4206295138
-6.4208154671
-6.4209223187
-6.4209837122
-6.4210189854
-6.4210392508
-6.4210508937
-6.4210575827
-6.4210614256
-6.4210636333
-6.4210649017
-6.4210656304

-5.6973995641
-5.4844414259
-5.2938740214
-5.1446766324
-5.0396281739
-4.9710684932
-4.9285123330
-4.9029143721
-4.8878071034
-4.8789911088
-4.8738802565
-4.8709286866
-4.8692278911
-4.8682490838
-4.8676861938
-4.8673626251
-4.8671766718
-4.8670698203
-4.8670084267
-4.8669731535
-4.8669528881
-4.8669412453
-4.8669345563
-4.8669307134
-4.8669285056
-4.8669272372
-4.8669265085

0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390
0.2879921390

7.12 QR

MATLAB

338

7.7 QR

-5.00000000000000 -0.44721359549996 -0.00000000000000


A1 = -0.44721359549996 -6.00000000000000 -1.34164078649987

0
-1.34164078649987 0.00000000000000
-5.08730158730159 -0.54218606994456 0.00000000000000
A2 = -0.54218606994456 -6.20003503151135 -0.06493984322449

0
-0.06493984322449 0.28733661881294
-5.21406913280776 -0.64730330939949 -0.00000000000000
A3 = -0.64730330939949 -6.07392151448703 -0.00306206666675

0
-0.00306206666675 0.28799064729479
-5.38540030535022 -0.73278022814194 0.00000000000000
A4 = -0.73278022814194 -5.90259183000423 -0.00014826254740

0
-0.00014826254740 0.28799213535445
M
-6.42106563041398 -0.00123657212388 0.00000000000000
A31 = -0.00123657212388 -4.86692650854643 0.00000000000000
0
-0.00000000000000 0.28799213896042

-6.42106604905460 -0.00093727513129 -0.00000000000000


A32 = -0.00093727513129 -4.86692608990581 -0.00000000000000

0
-0.00000000000000 0.28799213896042

7.8

MATLAB eig

MATLAB eig MALTAB eig


eig
eig
d = eig(A)
[V,D] = eig(A)
[V,D] = eig(A,'nobalance')
d=eig(A) A [V,D] = eig(A) A

MATLAB

339

D V
AV = VD

[V,D] = eig(A,'nobalance')
LAPACK eig

eig

nobalance

3 1 0
A = 1 2 1
0 1 1
A
2

3
11

B = -4
-1

3
-2

2 3 4
1 2 3
8 9 1
2 9 11
-2 -3 -1
2 3 4
-2 -3 -4

5 6
4 5
2 3
13 15
-1 -1
13 15
-5 -3

7
6
4

8
-1

8
-3

B
3

3
-2

C = eps
- 4

-0.5

-2
4
eps
2
-0.5

-0.9
1
-1
0.1

2eps
-eps

MATLAB

340

\\chapter7.rar\7-8.exe
\\chapter7\egi_1.m,egi_2.m

12
Editor
%08 7 21
%A
A=[3 1 0
121
0 1 1];
% A
na=eig(A)
%B
B=[
3

234567

11 1 2 3 4 5 6
2

891234

-4 2 9 11 13 15 8
-1 -2 -3 -1 -1 -1 -1
3 2 3 4 13 15 8
-2 -2 -3 -4 -5 -3 -3
];
% B
[nb,vb]=eig(B)
egi_1.m

egi_1

>>clear
>> eig_1

na =
0.267949192431123
2

MATLAB

341

3.73205080756888

nb =
Column 1
-0.276028481562631
-0.322388257931397
-0.387139417911047
-0.658924317373996
0.148125422234517
-0.387198225544195
0.252887913926642
Column 2
0.197589184794527
0.252907413978454
0.642528726030861
0.589299309570444
-0.241292986695022
-0.000757631686508277
-0.280457901543078
Column 3
0.108184811518408
0.216038318088682
-0.262535913335478
0.831206497129884
-0.0398971903272591
0.0562645304556878
-0.420757248100261
Column 4
0.197370278186667 0.0877692386215495 -0.333792899976737 +
0.561886070729929
0.0379168178992885 -0.0835637019248653 -0.105168289381923 +

0.147770614822285i
0.524358281985392i
0.322215632665902i
0.035878868347139i
0.130478345913106i
0.296318009345686i

MATLAB

342

Column 5
0.197370278186667 +
0.0877692386215495 +
-0.333792899976737 0.561886070729929
0.0379168178992885 +
-0.0835637019248653 +
-0.105168289381923 Column 6
-0.217676266715753
0.768177329665022
-0.555367075783136
0.190511053262997
-0.045040573473926
-0.0221902811354791
0.123582041504375
Column 7
-0.0126762093075904
-0.570802079043313
0.468911893861173
-0.411282846153999
0.350581211356674
-0.327844148378695
0.233673672350888

vb =
Column 1
18.4123185390661
0
0
0
0
0
0

0.147770614822285i
0.524358281985392i
0.322215632665902i
0.035878868347139i
0.130478345913106i
0.296318009345686i

MATLAB

343

Column 2
0
11.1805196555492
0
0
0
0
0
Column 3
0
0
4.49831918927813
0
0
0
0
Column 4
0
0
0
1.70992818926671 +
0
0
0

4.25219686219268i

Column 5
0
0
0
0
1.70992818926671 0
0
Column 6
0
0

4.25219686219268i

MATLAB

344

0
0
0
-2.23266683394613
0
Column 7
0
0
0
0
0
0
-0.278346928480688

C
Editor
%eig
% nobalance
C=[ 3

-2
-2
-eps/4
-.5

-.9
4
eps/2

2*eps
1

-1

-.5

.1

-eps
0
1

];

% eig nobalance
[VC,DC] = eig(C)
%
xg_1=C*VC - VC*DC
% nobalance
[VN,DN] = eig(C,'nobalance')
%
xg_2=C*VN - VN*DN
eig_2.m

>>clear
>>clc
>> eig_2

MATLAB

345

>> format short


>> eig_2
VC =
-0.6153
0.7881
0.0000
-0.0189

0.4176
0.3261
0.0000
-0.8481

0.0000
0.0000
-0.0000
-1.0000

-0.1475
0.1298
-0.9443
0.2639

DC =
5.5616
0
0
0

0
1.4384
0
0

0
0
1.0000
0

0
0
0
-1.0000

xg_1 =
-0.0000
0.0000
0.0000
0.0000

0.0000
0.0000
0.0000
0.0000

0.0000
0.0000
0.0000
0

0.0000
-0.0000
0.0000
0.4423

-0.4924
-0.3845
-0.0000
1.0000

0
-0.0000
-0.0000
-1.0000

-0.1563
0.1375
-1.0000
0.0453

VN =
0.7808
-1.0000
-0.0000
0.0240

DN =
5.5616
0
0
0

0
1.4384
0
0

0
0
1.0000
0

0
0
0
-1.0000

MATLAB

346

xg_2 =
1.0e-014 *
-0.2665
0 -0.0323 -0.0028
0.4441
0.1110
0.0042 -0.0250
0.0022
0.0002
0.0007
0
0.0056 -0.0444
0.0444
0.0083

0.267949192431123

= 2

3.73205080756888

18.4123185390661

11.1805196555492

4.49831918927813

1.70992818926671 + 4.25219686219268i
1.70992818926671 - 4.25219686219268i

-2.23266683394613

nb
eig

-2
S = -9
-3

-1 9
4 0
1 1

1 = 1, 1 = k (3,9, 2)T
2 = 1 + 3i, 2 = k (1 i,3,1)T
3 = 1 3i, 2 = k (1 + i,3,1)T
MATLAB
>> S=[-2 -1 9
-9 4 0

MATLAB

347

-3 1 1];
>> [x,y]=eig(S)

1+3i
y= 0
0
0.28868-0.28868i
x = 0.86603
0.28868

0
0
1

0
1-3i
0

0.28868 +0.28868i
0.86603
0.28868

-0.30943
-0.92828
-0.20628

y x
C nobalance
eig

5.5615528128
0.0000000000
DC=
0.0000000000

0.0000000000

0.0000000000

0.0000000000

1.4384471872

0.0000000000

0.0000000000

1.0000000000

0.0000000000

0.0000000000

4.176224697E-01

4.440892099E-16

3.260697711E-01

2.220446049E-16

5.338771637E-18

-5.500937404E-33

-8.480978582E-01

-1.000000000E+00

0.0000000000
0.0000000000

0.0000000000

-1.0000000000

-6.153018556E-01
7.880640995E-01
VC =
1.853963667E-17

-1.893677997E-02

-1.475478010E-01
1.298420649E-01
-9.443059266E-01

2.639261291E-01

VC DC
S1 = ( C )( VC ) - ( VC )( DC )

-8.8818e-016
8.8818e-016
S1 =
4.9304e-032

9.7145e-017

1.1102e-016
2.7756e-016
1.2326e-032
4.4409e-016

9.8608e-032
3.4513e-031
1.1002e-032
0

6.3838e-016
-2.2204e-016
2.2204e-016

0.44227

S1 0
[V,D] = eig(A,'nobalance')

MATLAB

348

5.56155281
0.00000000
DN =
0.00000000

0.00000000

0.00000000
1.43844719
0.00000000
0.00000000

0.00000000
0.00000000
1.00000000
0.00000000

0.00000000
0.00000000
0.00000000
-1.00000000

0.78078
-1
VN =
-2.6847e-017

0.024029

-0.49242
-0.38447
-7.0378e-018
1

0
-5.8821e-017
-3.3148e-018
-1

-0.15625
0.1375

-1

0.045313

S2 = ( C )( VN ) - ( VN )( DN )
0

0
-2.6645e-015
4.4409e-015 1.1102e-015
S2 =
2.1795e-017 1.8112e-018

5.5511e-017 -4.4409e-016

-3.2346e-016 -2.7756e-017
4.2267e-017 -2.498e-016

6.6297e-018
0

4.4409e-016 8.3267e-017
S2 DNVN C

7.9

n n A n n B u

Au = Bu
A B

( A, B) = { | det( A B) = 0}
Lanczos QR Cholesky
MATLAB eig
eig
d = eig(A,B)

MATLAB

349

[V,D] = eig(A,B)
[V,D] = eig(A,B,flag)
d = eig(A,B)[V,D] = eig(A,B)
AV = BVD [V,D] = eig(A,B,flag)flag
chol
B Cholesky qz
A B Hermitian

eig

29
A = 44
36

63
-11
-7

12
81

-15 B = 59
24
53

59
43
-37

( A, B)

\\chapter7.rar\7-9.exe
:\\chapter7\gy_tz.m

Editor
%
%08 7 21
% A
A=[

-56
-61
42

MATLAB

350

29 63 12
44 -11 -15
36 -7 53];
% B
B=[
81 59 -56
59 43 -61
24 -37 42];
[V,D]=eig(A,B,'qz');
%
disp('')
V
disp('')
D
%
S=A*V -B*V*D
gy_tz.m

>>clear
>>clc
>>>> gy_tz

D=
3.19732626749086
0
0

0
1.94973368753189
0

0
0
0.359895326837385

-0.713255194302593
-0.56167224369415
-1

-1
-0.642082657272154
0.829312089261579

V=
-0.35978298963673
-0.86202010863856
-1
S=

MATLAB

351

2.8421709430404e-014
6.03961325396085e-014
0

2.8421709430404e-014
1.95399252334028e-014
1.4210854715202e-014

-7.105427357601e-015
-2.8421709430404e-014
3.5527136788005e-015

-0.35978298963673
1 = 3.19732626749086, u1 = -0.86202010863856
-1

-0.713255194302593
2 = 1.94973368753189, u2 = -0.56167224369415
-1

-1

3 = 0.359895326837385, u3 = -0.642082657272154
0.829312089261579
S = AV - BVD

Golub MATRIX COMPUTATION


1996 The Johns Hopkins
University Press

Jacobi

MATLAB

352

MATLAB
MATLAB
MATLAB

1 A

2.3 4.2 5.7


A = 3.4 1.7 2.1
4.3 5.6 3.2

= 10.7379 , v = ( 0.6411, 0.3942, 0.6585 )


2 A

-3 1 0
A = 1 -3 -3
0 -3 4

= -2.4771, v = ( 0.8664, 0.4531, 0.2098 )


3 QR A

-3 1 -1
A = -7 5 -1
-6 6 -2

= ( 2, 2, 4 )

MATLAB

353

y = f ( x ) [a,b] x0 , x1 , L , xn

y0 , y1 ,L , yn g ( x)

g ( xi ) = yi
g ( x) x0 , x1 , L , xn

r ( x) = f ( x) g ( x)
r ( x)

8.1

li ( x) =
j =0
j i

x xi
, i = 0,1, 2,L , n
xi x j

MATLAB

354

pn = f ( xi )li ( x )
i =0

c/c++pascaljava

cos 30 =

3
2
1
o
o
o
cos 45 =
cos 60 = cos 90 = 0
2
2
2
o

cos( 40o ), cos 47o , cos 53o , cos 79o , cos174 ,

\\chapter8.rar\8-1.exe
\\chapter8\lag.m, lag_main.m

Editor
%

MATLAB

355

%
%t
function s=lag(x,y,t)
%
syms p;
% x
n=length(x);
s=0;
for(k=1:n)
la=y(k);
%
for(j=1:k-1)
la=la*(p-x(j))/(x(k)-x(j));
end;
for(j=k+1:n)
la=la*(p-x(j))/(x(k)-x(j));
end;
s=s+la;
simplify(s);
end
%
%
%
%
if(nargin==2)
s=subs(s,'p','x');
%
s=collect(s);
% 6
s=vpa(s,4);
else
% t
m=length(t);
% t
for i=1:m
temp(i)=subs(s,'p',t(i));
end
%
% s
s=temp;
end

MATLAB

356

lag.m

Editor
%lagrange
%
% x y
x=[pi/4,pi/6,pi/3,pi/2];
y=[cos(pi/4),cos(pi/6),cos(pi/3),cos(pi/2)];
%
t=[-40*pi/180,40*pi/180,50*pi/180,70*pi/180,170*pi/180];
disp('')
du=[-40 40 50 70 170]
%
disp('')
yt=lag(x,y,t)
%cos
disp('cos ')
yreal=[cos(-40*pi/180)
cos(40*pi/180)
cos(50*pi/180)
cos(70*pi/180)
cos(170*pi/180)]'
disp('')
dy=yt-yreal
%
yt=lag(x,y)
%
ezplot(yt,[-pi/4,pi])
hold on
% cos
ezplot('cos(t)',[-pi/4,pi]);
hold off
lag_main.m

>> clear
>> lag_main

MATLAB

357

du =
-40

47

53

79

174

yt =
0.53873

0.68196

0.60171

0.19146

-1.1121

0.682

0.60182

0.19081

-0.99452

cos
yreal =
0.76604

dy =
-0.22732 -4.2351e-005

-0.00010309

0.00064885

-0.11759

yt =
.136*x^3-.66*x^2+.9e-1*x+.984

yt =
0.136*x^3-0.66*x^2+0.9e-1*x+0.984
o

40o , 47o , 53o ,79o ,174


-0.22732 -4.2351e-005 -0.00010309 0.00064885 -0.11759
[30o ,90o ]
4
o

40 174

cos 8.1

MATLAB

358

8.1 cos
8.1

8.2

pn ( x) pn +1 ( x)

f ( x )

f [ xk ] = f ( xk )
f [ xk 1 , xk ] =

f [ xk ] f [ xk 1 ]
xk 1 xk

f [ xk 2 , xk 1 , xk ] =

f [ xk 1 , xk ] f [ xk 2 , xk 1 ]
xk 2 xk
M

f [ xk j , xk j +1 ,L , xk ] =

f [ xk j +1 ,L , xk ] f [ xk j ,L , xk 1 ]

xk xk j

MATLAB

359

N n ( x) = f [ x0 ] + f [ x0 , x1 ]( x x0 ) + f [ x0 , x1 , x2 ]
( x x0 )( x x1 ) + L + f [ x0 , x1 ,L , xn ]
( x x0 )( x x1 )L ( x xn 1 )

wk = ( x x0 )( x x1 ) L ( x xk 1 ), k = 1, 2,L , n

N n ( x) = f [ x0 ] + f [ x0 , x1 ]w1 + f [ x0 , x1 , x2 ]w2
+ L + f [ x0 , x1 ,L , xn ]wn

1 Bessel f ( x )
x

1.0

1.3

1.6

1.9

2.2

f(x)

0.7651977

0.6200860

0.4554022

0.2818186

0.1103623

x 1.5

25

1
P5 = (63x 5 70 x 3 + 15 x )
8
x [ 1,1] 9 x=[-1 -0.3 0.4 -0.7 0 -0.4 0.8 0.7 1]
a.

5 9

b. 9
c.

x=[0.24 -0.46 0.83]

MATLAB

360

\\chapter8.rar\8-2.exe
\\chapter8\niudun.m, niudun_main.m

Editor
%
%
%
%
function s=niudun(x,y,t)
%
syms p;
s=y(1);
xishu=0;
dxs=1;
% x
n=length(x);
%%%%%%%%%%%%%%%
%%
for(i=1:n-1)
for(j=i+1:n)
xishu(j) = (y(j)-y(i))/(x(j)-x(i));
end
temp1(i)=xishu(i+1);
dxs=dxs*(p-x(i));
s=s+temp1(i)*dxs;
y=xishu;
end
simplify(s);
%%%%%%%%%%%%%%
%
if(nargin == 2)
s=subs(s,'p','x');
s=collect(s);
s=vpa(s,4);
else

MATLAB

361

%
%
m=length(t);
for i=1:m
temp(i)=subs(s,'p',t(i));
end
%
% s
s=temp;
end
niudun.m

Editor
%Bessel
x=[1.0 1.3 1.6 1.9 2.2];
y=[0.7651977 0.6200860 0.4554022 0.2818186 0.1103623];
yt=niudun(x,y,1.5)
%%%%
%%
clear

syms x
%
fx=(63*x^5-70*x^3+15*x)/8;
v=[-1,1,-1,1];
subplot(1,2,1);
ezplot(fx),grid on
title('5 ')
axis(v)
%
%%%%%%%%5
%%%%%%%
x0=[-1 -0.3 0.4 -0.7
%
y0=subs(fx,x0);
%
yt=niudun(x0,y0);
subplot(1,2,2);

0 -0.4 0.8 0.7 1];

MATLAB

362

ezplot(yt),axis(v),grid
title('')
%
%%%%%%%%%%%%%%%%
t=[0.24 -0.46 0.83];
%
legen5=subs(fx,t)
%
%
chazhi=niudun(x0,y0,t)
wucha=legen5-chazhi %
niudun_main.m

>> clear
>> niudun_main

yt =
0.511819994238683
t=
0.24

-0.46

0.83

legen5 =
0.3353105664

-0.1730058436

-0.344891743637501

0.3353105664

-0.1730058436

-0.344891743637487

4.44089209850063e-016

-2.4980018054066e-016

-1.37667655053519e-014

chazhi =
wucha =

Bessel 1.5 0.512857

10 -15 -16

8.2

MATLAB

363

8.2

8.3

20 N En = f ( x) PN ( x ) 0
x

sinx e

y=

1
1 + x2

[-55] 1
10

y=
c

1
1 + cx 2

MATLAB

364

y=

1
1 + x2

[-55] 1

\\chapter8.rar\8-3.exe
\\chapter8\runge.m

Editor
% Runge
%
syms x
f=1/(1+x^2);
%
x=-5:5;
y=subs(f,x);
% y
%%%
chazhi=niudun(x,y);

MATLAB

365

%
%
v=[-5,5,-0.5,2];
%
ezplot(chazhi),axis(v),grid
hold on
%
t=-5:0.05:5;
yt=subs(f,t);
plot(t,yt,':')
runge.m

>> clear
>> runge
8.3

8.3 Runge

8.3

MATLAB

366

Chebyshev

8.4

Hermite

Hermit
f ( x ) [a,b]x0 , x1 , L xn [ a, b]
H 2 n +1 ( x) f ( x )

H 2 n +1 ( x) = f ( xi )[1 2( x xi )li '( xi )]li 2 ( x )


i =0

+ f '( xi )( x xi )li 2 ( x)
i =0

( x xi ) , i = 0,1,L , n

li ( x) =
j =0
j i

(x x )
i

li ' ( xi ) =
j =0
j i

1
,i = 0,1,L , n
xi x j

Hermite
MATLAB

FortranDelphi
C/C++Java

MATLAB

367

Hermite

Hermite

Hermite

f = x 2 13 -8 6-4

Hermite

a.

9 10

25 75

b. X = ( -5.3 2.4 -4.2 -1.8 3.4 )


2

g = x 2 sin x

X = ( 3, 2, 1, 0,1, 2,3)

p = ( -5.1,-3.2, -1.4,1.6,5.3)

\\chapter8.rar\8-4.exe

\ \chapter8\herm.m, herm2.m,
herm_main.m

Herimite

MATLAB

368

Editor
%Hermite
%
%
%
%
function f = Hermite(x,y,dy,x0)
%
syms s;
f=0.0;
n=length(x);
for i=1:n
la=1;
lp=0.0;
for j=1:n
if (j~=i)
la=la*(s-x(j))/(x(i)-x(j));
lp=lp+1/(x(i)-x(j));
end
end
%
P171
%
%
temp1=1-2*(s-x(i))*lp;
temp2=y(i)*temp1*la^2;
temp3=dy(i)*(s-x(i))*la^2;
f=f+temp2+temp3;
end
%
f=simplify(f);
if(nargin==3)
% x
f=subs(f,s,'x');
% 4
f=vpa(f,4);
end
if(nargin==4)
f=subs(f,s,x0);
end

MATLAB

369

herm.m

Hermite

Editor
% Hermite
%
%
% t
function f = Hermite(x,y,dy,t)
%
n=length(x);
m=length(t);
for k=1:m
%
g(k)=0.0;
for i=1:n
la=1;
lp=0.0;
for j=1:n
if (j~=i)
%
P171
%
la=la*(t(k)-x(j))/(x(i)-x(j));
lp=lp+1/(x(i)-x(j));
end
end
temp1=1-2*(t(k)-x(i))*lp;
temp2=y(i)*temp1*la^2;
temp3=dy(i)*(t(k)-x(i))*la^2;
%
g(k)=g(k)+temp2+temp3;
end
end
f=g;
herm2.m

%Hermit

MATLAB

370

syms x
y=x^2;
%

t=[1 3 -8 6 -4];
%
yt=subs(y,t);
%
dy=subs('x*2',t);
%
z1=herm(t,yt,dy)
%
x=[9
25

10
75];

z2=herm(t,yt,dy,x)
ezplot(z1),grid on
hold on
%
%
xc=[-5.3 2.4

-4.2 -1.8 3.4];

z3=herm2(t,yt,dy,xc)
plot(xc,z3,'o')
%
clear

%
syms x
%
p=sin(x)*x^2;
%
q=diff(p);
%
figure(2)
ezplot(p)
hold on
%
t=-3:3;
%

MATLAB

371

y=subs(p,t);
dy=subs(q,t);
%
x0=[-5.1 -3.2 -1.4 1.6 5.3];
%
chazhi=herm2(t,y,dy,x0)
%
zhen=subs(p,x0)
%
wucha=chazhi-zhen
plot(x0,chazhi,'*')
grid
herm_main.m

>> format short


>> herm_main

z1 =
x^2

z2 =
81

100

625

5625

z3 =
28.0900

5.7600

17.6400

3.2400

11.5600

0.5978

-1.9315

2.5589 -26.2206

chazhi =
25.5247

MATLAB

372

zhen =
24.0804

0.5978

-1.9315

0.0000

0.0000

2.5589 -23.3784

wucha =
1.4443

-0.0000

-2.8422

Hermite

7.4

8.4 Hermit

[-33]

8.5

MATLAB

373

8.5 Herimite
8.5 *

8.5

8.3

MATLAB splinespline
yy = spline(x,y,xx)
pp = spline(x,y)
x y yy y y
y
xx

MATLAB

374

spline

8.3

-5

-4

-3

-2

-1

0.038462

0.058824

0.1

0.2

0.5

0.5

0.2

0.1

0.058824

0.038462

\\chapter8.rar\8-5.exe
\\chapter8\yangtiao_main.m

Editor
% Runge
%
syms x
f1=1/(1+x^2);
f2=1/(1+5*x^2);
%
x=-5:5;
y1=subs(f1,x);
% y
%%%
y2=subs(f2,x);
%%
%
%%%%%%%%%%%%%%%
xx=-5:0.25:5;

MATLAB

yy=spline(x,y1,xx);
yy2=spline(x,y2,xx);
%
subplot(2,2,1)
plot(x,y1,'o',xx,yy),grid
%
t=-5:0.05:5;
yt=subs(f1,t);
yt2=subs(f2,t);
%
subplot(2,2,2)
plot(t,yt),grid
%
subplot(2,2,3)
plot(x,y2,'o',xx,yy2),grid
%
subplot(2,2,4)
plot(t,yt2),grid
yangtiao_main.m

>>yangtiao_main
8.6

375

MATLAB

376

8.6

f ( x) =

1
1 + x2

g ( x) =

1
1 + 5 x2

x
f(x) f(x)

8.6

MATLAB

377

MATLAB pchippchip
Hermite pchip
yi = pchip(x,y,xi)
pp = pchip(x,y)
x,y xi
y
Hermit

spline pchip spline

pchip spline

pchip

pchip

pchip

pchip spline

8.1 spline pchip


x

-8

-6

-4

-2

-1

-3

-1

8.1

\\chapter8.rar\8-6.exe
\\chapter8\baoxing.m

MATLAB

378

Editor
% Hermite
x = -8:2:8
y = [1 2 -1 -3 0 1 -1 2 3]
%
t = -8:.01:8;
%pchip
p = pchip(x,y,t);
%spline
s = spline(x,y,t);
plot(x,y,'o',t,p,'-',t,s,'-.')
legend('data','pchip','spline',4),grid
baoxing.m

>>clear
>>baoxing
8.7

8.7 pchip spline

8.7 pchip spline spline


pchip

MATLAB

379

pchip
pchip

8.7

MATLAB interp1

MATLAB interp1
interp1

interp1
yi = interp1(x,Y,xi)
yi = interp1(Y,xi)
yi = interp1(x,Y,xi,method)
yi = interp1(x,Y,xi)x,Y Y
x x x nn Y
method

nearest
linear
spline
pchip cubic Hermite
v5cubicMATLAB5
MATLAB nearest
linearv5cubic NaN

interp1 interp1

MATLAB

380

interp1

1991 1996
8.2

1991

6878.4

5343.7

4847.9

6421.9

1992

6815.4

5532.6

4745.6

6406.2

1993

6634.4

5658.5

4674.8

6645.5

1995

7413.5

5863.1

4997.4

6776.1

1994

7130.2

5532.6

4989.6

6642.3

1996

7476.5

5965.3

5202.1

6894.1

8.2

\\chapter8.rar\8-7.exe
\\chapter8\yongmei.m

Editor
%interp1

%
origin_data=[
1991 6878.4 5343.7 4847.9 6421.9
1992 6815.4 5532.6 4745.6 6406.2

MATLAB

381

1993 6634.4 5658.5 4674.8 6645.5


1995 7413.5 5863.1 4997.4 6776.1
1994 7130.2 5532.6 4989.6 6642.3
1996 7476.5 5965.3 5202.1 6894.1
];
%x y
%
x=origin_data(:,1);
y=origin_data(:,2:5);
% nearest
t=1991:0.2:1996;
y1=interp1(x,y,t,'nearest');
plot(x,y,'o',t,y1),title('nearest '),grid
% linear
figure
y2=interp1(x,y,t);
plot(x,y,'o',t,y2),title('linear '),grid
% pchip
figure
y3=interp1(x,y,t,'pchip');
plot(x,y,'o',t,y3),title('pchip '),grid
% spline
figure
y4=interp1(x,y,t,'spline');
plot(x,y,'o',t,y4),title('spline '),grid
yongmei.m

>> clear
>> yongmei
8.8-8.11

nearest

MATLAB

382

8.8

8.8 nearest
7.8 nearest

nearest
8.9

8.9 linear
pchip spline pchip 8.10
pchip pchip

MATLAB

383

8.10

interp1 pchip

8.11 spline ,
spline

8.11

interp1 spline

interp1

MATLAB

384

8.8

MATLAB interp2 interp2


ZI = interp2(X,Y,Z,XI,YI)
ZI = interp2(Z,XI,YI)
ZI = interp2(Z,ntimes)
ZI = interp2(X,Y,Z,XI,YI,method)
interp1 interp2 nearestlinearspline
cubic

meshgrid
[a,b]=meshgrid(x,y)
x,y a x b y

interp2

meshgrid

interp2

[ 3,3] [ 3, 3] peaks

MATLAB

385

\\chapter8.rar\8-8.exe
\\chapter8\interp_2.m

Editor
%
[X,Y] = meshgrid(-3:0.6:3);
Z = peaks(X,Y);
[XI,YI] = meshgrid(-3:.125:3);
ZI = interp2(X,Y,Z,XI,YI);
subplot(2,2,1)
surf(X,Y,Z)
axis([-3 3 -3 3 -5 5])
title('')
% nearest
subplot(2,2,2)
ZI = interp2(X,Y,Z,XI,YI,'nearest');
surf(XI,YI,ZI)
title('nearest')
axis([-3 3 -3 3 -5 5])
% linear
subplot(2,2,3)
ZI = interp2(X,Y,Z,XI,YI,'linear');
surf(XI,YI,ZI)
axis([-3 3 -3 3 -5 5])
title('linear')
% spline
subplot(2,2,4)
ZI = interp2(X,Y,Z,XI,YI,'spline');
surf(XI,YI,ZI) ,title('spilne')
axis([-3 3 -3 3 -5 5])
interp_2.m

>>clear

MATLAB

386

>> interp_2
8.12 8.13

8.12
[-33] 0.6

8.12 nearest
nearest 8.8

8.12 nearest
8.13 linear interp2
7.12 8.13
spline
8.13

MATLAB

387

8.13 linear spline


MATLAB interp3
interpn n

8.9

Chebyshev

f ( x ) [a,b] ( x )
f ( x )

MATLAB

388

j ( x )
n

( x ) = c j j ( x)
j =0

lim max f ( x) ( x) = 0
n a x b

lim f ( x ) ( x ) W ( x)dx = 0
n a

W ( x) L p=2
f ( x ) [a,b] > 0 p ( x)

f ( x) p ( x) <
x [ a, b] Weierstrass
H n = span{1, x,L , x n } pn ( x) H n

max f ( x) pn ( x )
a xb

En = min max f ( x) pn ( x )
pn ( x )H n a x b

n Weierstrass n 0

H n p( x)

max f ( x) pn ( x ) = En
a xb

px fx n
Chebyshev Chebyshev

( 2 j + 1) + b + a], j = 0,1, 2,L , n


1
x j = [(b a) cos
2
2 ( n + 1)

Weierstrass

Chebyshev

MATLAB

389

Chebyshe [-11]

f ( x) = xe x [ 6, 6] 35 12 Chebyshev

\\chapter8.rar\8-9.exe
\\chapter8\
cheby.m,lag.m, cheby_main.m

Editor
%08 07 03
%Chebyshev
function g=cheby(f,n,a,b)
%n
%
for j=0:n
temp1=(j*2+1)*pi/2/(n+1);
temp2=(b-a)*cos(temp1)+b+a;
temp3(j+1)=temp2/2;
end
x=temp3;
%
y=f(x);
%
g=lag(x,y);
cheby.m

Editor
%
%

MATLAB

390

%t
function s=lag(x,y,t)
%
syms p;
% x
n=length(x);
s=0;
for(k=1:n)
la=y(k);
%
for(j=1:k-1)
la=la*(p-x(j))/(x(k)-x(j));
end;
for(j=k+1:n)
la=la*(p-x(j))/(x(k)-x(j));
end;
s=s+la;
simplify(s);
end
%
%
%
%
if(nargin==2)
s=subs(s,'p','x');
%
s=collect(s);
% 6
s=vpa(s,4);
else
% t
m=length(t);
% t
for i=1:m
temp(i)=subs(s,'p',t(i));
end
%
% s
s=temp;
end

MATLAB

391

lag.m

Editor
%08 07 03
%
%
f=inline('x.*exp(x)','x');
%
z1=cheby(f,3,-6,6)
z2=cheby(f,5,-6,6)
z3=cheby(f,12,-6,6)
%
subplot(2,2,1),ezplot('x*exp(x)'),grid
subplot(2,2,2),ezplot(z1),grid
subplot(2,2,3),ezplot(z2),grid
subplot(2,2,4),ezplot(z3),grid
%
set(gcf,'color','white')
cheby_main.m

>> clear
>> cheby_main

z1 =
-133.0+4.822*x^3+27.38*x^2-20.40*x
z2 =
.2001*x^5+1.359*x^4-2.020*x^3-18.56*x^2+6.126*x+40.25
z3 =
-.2405e-16+.5187e-7*x^12+.6439e-6*x^11+.1420e-5*x^10+.6201e-5*x^9+.2287e-3*x^8+.1
813e-2*x^7+.8007e-2*x^6+.3709e-1*x^5+.1682*x^4+.5209*x^3+.9981*x^2+.9729*x

MATLAB

392

MATLAB

8.14

Chebyshev

8.14
3 5 12
12

8.10

Chebyshev Chebyshev

Chebyshev Chebyshev

MATLAB

393

Tn ( x ) =

) (

n
n
1

2
2
x
+
x

1
+
x

, x (, +)
2

x 2 1 Chebyshev Chebyshev

Un =

sin [(n + 1) arccos x ]


1 x2

, x [1,1]

x [ 1,1] Chebyshev Chebyshev

Chebyshev

Chebyshev

Chebyshev

Chebyshev

Chebyshev

Chebyshev

Chebyshev

MATLAB Chebyshev Chebyshev

Chebyshev

Tn+1 = 2 xT0 ( x) Tn1 ( x)

T0 = 1
T = x
1
Chebyshev

U n +1 = 2 xU 0 ( x ) U n1 ( x)

U 0 = 1
U = 2 x
1

MATLAB

394

\\chapter8.rar\8-10.exe
\ \chapter8\cheby_p.m, cheby2_p.m,
chep_main.m

Chebushev
Editor
% CHebyshev
function t=cheby_p(x,n)
t(1:n+1)=x;
t(1)=1;
t(2)=x;
%
for i=3:n+1
t(i)=2*x*t(i-1)-t(i-2);
end;
t= simplify(t);
% 1

n+1
cheby_p.m

Chebyshev
Editor
% Chebyshev
function t=cheby2_p(x,n)
t(1:n+1)=x;
t(1)=1;
t(2)=2*x;
%
for i=3:n+1
t(i)=2*x*t(i-1)-t(i-2);
end;
t= simplify(t);
% 1

n+1
cheby2_p.m

Editor
%chebyshev

MATLAB

395

% chebyshev
syms x
T1=cheby_p(x,5);
disp(' Chebyshev ')
for i=1:6
disp(T1(i))
end
v=[-1,1,-1,1];
subplot(3,2,1),ezplot(T1(1)),axis([-1,1,-0.5,1.5]),grid
subplot(3,2,2),ezplot(T1(2)),axis(v),grid
subplot(3,2,3),ezplot(T1(3)),axis(v),grid
subplot(3,2,4),ezplot(T1(4)),axis(v),grid
subplot(3,2,5),ezplot(T1(5)),axis(v),grid
subplot(3,2,6),ezplot(T1(6)),axis(v),grid
% chebyshev
disp(' Chebyshev ')
T2=cheby2_p(x,5);
for i=1:6
disp(T2(i))
end
figure
v=[-1,1,-3,3];
subplot(3,2,1),ezplot(T2(1)),axis([-1,1,-0.5,1.5]),grid
subplot(3,2,2),ezplot(T2(2)),axis(v),grid
subplot(3,2,3),ezplot(T2(3)),axis(v),grid
subplot(3,2,4),ezplot(T2(4)),axis(v),grid
subplot(3,2,5),ezplot(T2(5)),axis(v),grid
subplot(3,2,6),ezplot(T2(6)),axis(v),grid
chep_main.m

>> clear
>> chep_main

Chebyshev
1
x
2*x^2-1
4*x^3-3*x

MATLAB

396

8*x^4-8*x^2+1
16*x^5-20*x^3+5*x
Chebyshev
1
2*x
4*x^2-1
8*x^3-4*x
16*x^4-12*x^2+1
32*x^5-32*x^3+6*x

8.15

8.15 Chebyshev
Chebyshev 2

n1

MATLAB

397

Chebyshev n n

Tn [-11] 1 x

1
2 2

Tm ( x ) Tk ( x ) (1 x

1
2 2

0,

dx = ,
2
,

mk
m=k 0
m=k =0

Chebyshev

8.16 Chebyshev

8.16 Chebyshev
[-11] 1 x 2

0,

1U m ( x )U k ( x ) 1 x dx = ,
2
1

mk

m=k

Chebyshev

MATLAB

398

8.11 LegendreLaguerre Hermite

8.10
LegendreLaguerre Heimite
Legendre Pn ( x)

Pn ( x) =

1 d n ( x 2 1) n
, n = 1, 2,L ,
2n n !
dx n

Legendre

Pn +1 ( x) =
P0 ( x) = 1

2n + 1
n
xPn ( x)
Pn 1 ( x )
n +1
n +1

P1 ( x) = x
Laguerre Ln ( x)

Ln ( x) = e x

d n ( xn e x )
dx n

, 0 x < +

Laguerre

Ln +1 ( x ) = (1 + 2n x ) Ln ( x ) n 2 Ln 1 ( x)
L0 ( x) = 1
L1 ( x) = 1 x
Hermite

H n ( x) = ( 1) e x
n

( ) , < x < +

d n e x

dx n

Hermite

H n+1 ( x ) = 2 xH n ( x ) 2nH n 1 ( x )
H 0 ( x) = 1
H1 ( x) = 2 x

MATLAB

399

LegendreLaguerre Hermite

LegendreLaguerre Hermite

\\chapter8.rar\8-11.exe
\\chapter8\leg_p.m,
lague_p.m, herm_p.m, dxs_main.m

Legendre
Editor
%Legendre
function p=leg(x,n)
p(1:n+1)=x;
p(1)=1;
p(2)=x;
%
for i=3:n+1
p(i)=(2*i-3)*p(i-1)*x/(i-1)-(i-2)*p(i-2)/(i-1);
end;
p= simplify(p);
leg_p.m

Laguerre
Editor
%
function t=lague_p(x,n)
t(1:n+1)=x;
t(1)=1;
t(2)=1-x;
%
for i=2:n

MATLAB

400

t(i+1)=(1+(i-1)*2-x)*t(i)-(i-1)^2*t(i-1);
end;
t= simplify(t);
lague_p.m

Hermit
Editor
%Hermit
function t=lague_p(x,n)
t(1:n+1)=x;
t(1)=1;
t(2)=2*x;
%
for i=2:n
t(i+1)=2*x*t(i)-(i-1)*2*t(i-1);
end;
t= simplify(t);
herm_p.m

Editor
%Legendre LaguerreHermite
%Legendre
syms x
T1=leg_p(x,5);
disp('Legendre ')
for i=1:6
disp(T1(i))
end
v=[-1,1,-1,1];
subplot(3,2,1),ezplot(T1(1)),axis([-1,1,-0.5,1.5]),grid
subplot(3,2,2),ezplot(T1(2)),axis(v),grid
subplot(3,2,3),ezplot(T1(3)),axis(v),grid
subplot(3,2,4),ezplot(T1(4)),axis(v),grid
subplot(3,2,5),ezplot(T1(5)),axis(v),grid
subplot(3,2,6),ezplot(T1(6)),axis(v),grid
%Laguerre
disp('Laguerre ')
T2=lague_p(x,5);
for i=1:6

MATLAB

401

disp(T2(i))
end
figure(2)
subplot(3,2,1),ezplot(T2(1)),axis([-1,1,-0.5,1.5]),grid
subplot(3,2,2),ezplot(T2(2)),grid
subplot(3,2,3),ezplot(T2(3)),grid
subplot(3,2,4),ezplot(T2(4)),grid
subplot(3,2,5),ezplot(T2(5)),grid
subplot(3,2,6),ezplot(T2(6)),grid
%Hermite
disp('Hermite ')
T3=Herm_p(x,5);
for i=1:6
disp(T3(i))
end
figure(3)
subplot(3,2,1),ezplot(T3(1)),axis([-1,1,-0.5,1.5]),grid
subplot(3,2,2),ezplot(T3(2)),grid
subplot(3,2,3),ezplot(T3(3)),grid
subplot(3,2,4),ezplot(T3(4)),axis([-2,2,-20,20]),grid
subplot(3,2,5),ezplot(T3(5)),axis([-2,2,-20,20]),grid
subplot(3,2,6),ezplot(T3(6)),axis([-2,2,-100,100]),grid
dxs_main.m

>>clear
>> dxs_main

Legendre
1
x
3/2*x^2-1/2
5/2*x^3-3/2*x
35/8*x^4-15/4*x^2+3/8
63/8*x^5-35/4*x^3+15/8*x
Laguerre
1
1-x

MATLAB

402

2-4*x+x^2
6-18*x+9*x^2-x^3
24-96*x+72*x^2-16*x^3+x^4
120-600*x+600*x^2-200*x^3+25*x^4-x^5
Hermite
1
2*x
4*x^2-2
8*x^3-12*x
16*x^4-48*x^2+12
32*x^5-160*x^3+120*x

0 5

P0 = 1
P1 = x
1 2
( x 1)
2
1
P3 = ( 5 x 3 3x )
2
1
P4 = ( 35 x 4 30 x 2 + 3)
8
1
P5 = ( 63x 5 70 x3 + 15 x )
8
P2 =

8.17

MATLAB

403

8.17 Legendre
Legendre x x

Legendre [-11] W ( x) = 1

1 Pm ( x) Pk ( x)dx = 2
2m + 1
1

Legendre

mk
m=k

MATLAB

404

8.18 Lagueere
Laguerre

L0 ( x) = 1
L1 ( x) = 1 x
L2 ( x ) = x 2 4 x + 2
L3 ( x ) = x 3 + 9 x 2 18 x + 6
L4 ( x ) = x 4 16 x 3 + 72 x 2 96 x + 24
L5 ( x) = x 5 + 25 x 4 200 x3 + 600 x 2 600 x + 120
x

Laguerre [0, + ] e

0
x
L
(
x
)
L
(
x
)
e
dx
=

2
1 m k
( m !)
1

mk
m=k

8.18
0 5 Laguerre
8.19 0 5 Hermite

MATLAB

405

8.19 Hermite
Hermite

H 0 ( x) = 1
H1 ( x) = 2 x
H 2 ( x) = 4 x 2 2
H 3 ( x ) = 8 x 3 12 x
H 4 ( x ) = 16 x 4 48 x 2 + 12
H 5 ( x) = 32 x 5 160 x3 + 120 x
Hermite [ , + ] e

x2

0
x2
H
(
x
)
H
(
x
)
e
dx
=
m
1 m k
2 m !
1

mk
m=k

Hermite x x

MATLAB

406

8.12 Legendre

j ( x ) [a,b] j ( x ) W ( x)

( x ) = a j j ( x)
j =0

a [ f ( x) ( x) ] W ( x)dx = min ( x) f ( x)
b

W(x)
Legendre
n

P( x) = a j Pj ( x) = a0 P0 ( x ) + a1P1 ( x ) + L + an Pn ( x )
j =0

a j =

( Pj , f )
( Pj , Pj )

( Pj , Pj ) =

1
2
( Pj , f ) = Pj g f dx
1
j +1

Fourier Fourier
Legendre

Legendre

f ( x) = e x [-11]

MATLAB

407

P( x) = a0 P0 ( x) + a1P1 ( x) + a2 P2 ( x ) + a3 P3 ( x )
Pi i Legendre i = 0,1, 2,3

\\chapter8.rar\8-12.exe
\\chapter8\
pingfang.m, pingfang_main.m,

Editor
%legendre
%
function

pf=pingfang(f,n)

syms x
% Legendre
f1=leg_p(x,n);
%
for i=1:n+1
g(i)=f1(i)*f;
temp(i)=int(g(i),-1,1);
a(i)=(2*i-1)*temp(i)/2;
end
% legendre
pf=0;
for i=1:n+1
pf=pf+a(i)*f1(i);
end
%
pf=simplify(pf);
% 8
pf=vpa(pf,8);
pingfang.m

MATLAB

408

Editor
%Lengder
f=inline('exp(x)','x');
px=pingfang(f,3)
ezplot(px),grid
hold on
%
x=-1:0.01:1;
y=f(x);
plot(x,y,'^')
pingfang_main.m

>> clear
>> pingfang_main

px =
.99629405+.99795482*x+.53672140*x^2+.17614068*x^3

Legendre

P( x) = 7.152 P0 ( x) + 1.1036 P1 ( x) + 0.3578P2 ( x ) + 0.07046 P3 ( x)


7.20 [-11]
[-11]
^

MATLAB

409

8.20 Legendre

8.13

Chebyshev

Hilbert Hilbert

1
1/ 2
H =
M

1/(n+1)

1/2
L 1/(n+1)
1/3
L 1/(n+2)

1/(n + 2) L 1/(2n + 1)

Hilert n

Legendre
Fourier

1
1 x2

MATLAB

410

Chebyshev

f ( x ) = arccos x( 1 x 1)

1
1 x2

\\chapter8.rar\8-13.exe
\\chapter8\
ping_che.m, ping_che_main.m

aj =

2 1
dx
T j ( x) f ( x)

1
1 x2

x = cos( )

a j = f ( cos ) cos j d
0

a j = cos j d =
0

2
(1) j 1
2
j

MATLAB

411

Editor
%chebyshev

function f=ping_che(n)
%
%pip pi pi MATLAB
syms x pip
%
for i=2:n+1
a(i)=((-1)^i-1)*2/pip/i^2;
end
%

a=[pip,-4/pip,a(2:n)]
% chebyshev
che=cheby_p(x,n);
f=a(1)/2;
for i=2:n+1
f=f+a(i)*che(i);
end
%
f=simplify(f);
ping_che.m

Chebyshev
Editor
% CHebyshev
function t=cheby_p(x,n)
t(1:n+1)=x;
t(1)=1;
t(2)=x;
%
for i=3:n+1
t(i)=2*x*t(i-1)-t(i-2);
end;
t= simplify(t);
% 1

n+1
cheby_p.m

Editor

MATLAB

412

f=@(x) acos(x);
t=-1:0.01:1;
f1=f(t);
%
subplot(1,2,1)
plot(t,f1,'*')
hold on
%5
%
f5=ping_che(5);
% pip pi
f5=subs(f5,'pip',pi)
ezplot(f5),title('5 '),grid
%7
subplot(1,2,2),
f7=ping_che(7);
% pip pi
f7=subs(f7,'pip',pi)
ezplot(f7),grid,title('7 ')
ping_che_main.m

>> ping_che_main

f5 =
-1/450*(-225*pi^2+1560*x-640*x^3+1152*x^5)/pi
f7 =
-1/22050*(-11025*pi^2+63840*x+69440*x^3-145152*x^5+115200*x^7)/pi

5 7
8.21 8.21 5 7

MATLAB

413

8.21 Chebyshev

p5 ( x) =

4
4
4
T1 ( x)
T3 ( x)
T5 ( x )
2
9
25

8.14

MATLAB

MATLAB

414

MATLAB

MATLAB

East Anglia
HadCRUT3 13
1850 2006
UltraEditor
8.22

8.22

\\chapter8.rar\8-14.exe

MATLAB

415

\\chapter8\temperature\fenxi.m

Import Wizard
Import Wizad
1 8.23

8.23
2 8.24

8.24
3Import Data 8.25

MATLAB

416

8.25 Import Wizard


4 Next 8.26

8.26
Finish

5 8.27

MATLAB

417

8.27

origin_data

>>clear
>> origin_data=importdata('HadCRUT3 Northern Hemisphere.txt');

8.28

8.28
whos

>>whos
8.29

MATLAB

418

8.29

>> doc fileformats


8.30

8.30 MATLAB
y.h

1 origin_data origin_data

MATLAB

419

8.31

8.31

2 1
8.32

832
create Variable from Selction
unnamed
8.33

MATLAB

420

8.33
unnamed 8.34

7.34
Rename year 8.m

8.35
2 14
2 shift 14 8.36

MATLAB

421

8.36
8.37

8.37 annual
create Variable from Selection

annual
8.38

MATLAB

422

8.38

8.39

7.39
8.40

8.40
8.41

MATLAB

423

8.41 mat

, 8.42

8.42 IE mat

>> save shuju.mat annual origin_data year


8.41

>>clear all
8.41 shuju.mat
>> clear all
>> load shuju
8.38

Editor
%
% 13
%

MATLAB

424

load shuju.mat

%%
%
figure
plot(year,annual),grid
title('HadCRUT3 Temperature Anomaly Measurements from 13 Weather Stations')
xlabel('Year')
ylabel('Temperature Anomaly ')

%%
annual_avg = mean(annual);
%
figure
area(year,annual_avg),grid
title('Average Annual Temperature Anomaly')
xlabel('Year')
ylabel('Temperature Anomaly ')

% :
above_zero = annual_avg .* (annual_avg >= 0); % Values Above Zero
below_zero = annual_avg .* (annual_avg < 0); % Values below Zero

%
figure
hold on
%
plot(year,annual_avg,'--k','LineWidth',0.5);
grid
bar(year,above_zero,'FaceColor','r','EdgeColor','none')
bar(year,below_zero,'FaceColor','b','EdgeColor','none')
hold off
%

title('Positive vs Negative Temperature Annomaly')


xlabel('Year')
ylabel('Temperature Anomaly ')

MATLAB

425

legend('Annual Average','Above Average','Below Average','Location','SE')


text(1850,0.5,'\bfNorthern Hemisphere')

% 5
span = 5;
window = ones(1,span)/span;
five_year_avg = convn(annual_avg,window,'valid');
yr = year(ceil(span/2):length(five_year_avg)+ceil(span/2)-1);
%
figure %
hold on
plot(year,annual_avg,'--ko',...
'LineWidth',1,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','b',...
'MarkerSize',3)
plot(yr,five_year_avg,'r-','LineWidth',3)
grid
hold off
% Annotate figure
title('Comparing the Annual Temperature Anomaly and the Five Year Moving Average')
xlabel('Year')
ylabel('Temperature Anomaly')
legend('Annual Average','Five Year Average','Location','SE')
fenxi.m

>>clear
>>fenxi

MATLAB

426

8.43
8.43

8.44
8.43

7.44 earea 8.44


1950

MATLAB

427

8.45

bar 7.45 1880

1840 1940
1980

8.46 5
5
8.46

MATLAB

428

Lagrange Netown Hermite

MATLAB

MATLAB

f ( x ) = x2 2 x
x = ( 3, 7, 2,5, 9, 4 ) f(x)

MATLAB

429

t = ( 2,1, 6 )

y ( t ) = ( 8, 1, 24 )
2
x

-4

-2

20

-4

-4

, t=[3.2 5.5 4.3]


y ( t ) = ( -4.4800 -1.3750 -3.6550 )
3

-4

0.97279

-3

3.4234

-2

3.8186

-1

1.8415

-0.15853

-0.18141

-2.5766

-7.0272

Hermite

8.47 8.48

8.47

MATLAB

430

8.48
4 [-11] f ( x ) = e x P3 ( x )

f ( x ) = 1.2661T0 ( x ) + 1.1303 T1 ( x ) + 0.2715T2 ( x ) + 0.0438T3 ( x )

MATLAB

431

18 Gauss

1980 Gloub 60 Kalman Kalman

9.1

Ax = b
mn

rank ( A ) = rank ([A,b])

x s

f (x) = Ax - b

x = x s x s Ax = b x s
x s

AT Ax = AT b

MATLAB \

MATLAB

432

1
0

-2
1
-4
-7

1
-1
3
4

x1 4
x 3
g 2 =
x3 1

x4 6

\\chapter9.rar\9-1.exe
\\chapter9\zx2c.m

Editor
%
a=[1 -2 1
0 1 -1
2 -4 3
4 -7 4];
b=[-4 3 1 -6]';
%
A=a'*a;
B=a'*b;

MATLAB

433

%
x1=A\B
% MATLAB \
x2=a\b
zx2c.m

>>clear
>>clc

>> zx2c
x1 =
10.7142857142858
12.5714285714286
9.85714285714285

x2 =
10.7142857142856
12.5714285714285
9.85714285714279

MATLAB \
MATLAB
\

MATLAB

MATLAB

MATLAB

434

9.2 SVD

Gauss n

X n X X

Y = HX + V
X V V R

E [V] = 0
Cov[V ] = E[VV ] = R

gf = Y - HX

E[V] = 0

- X] = ( H T H )-1 H T E[V] = 0
[X
P

)(

-X X
- X ] = ( H T H )-1 H T RH ( H T H )-1
P = E[ X
T

V R = 2 I

R = 2I
SVD
QR SVD
A A = UV T
r

X LS =
i =1

ui , vi U V

uiT b
vi
i

MATLAB

435

y x y
x
y(%)

1.00

0.9

0.9

0.81

0.60

0.56

0.35

x(%)

3.6

3.7

3.8

3.9

4.0

4.1

4.2

y x

\\chapter9.rar\9-2.exe
\\chapter9\qyfj_f.m, qyfj_main.m

y,x

y=[1.00 0.9 0.9 0.81 0.60 0.56 0.35];


x=[3.6

3.7 3.8 3.9 4.0 4.1 4.2];

plot(x,y,'^')
9.1

MATLAB

436

9.1 y x
y x y=ax+b ab

3.6
3.7

3.8

3.9
4.0

4.1
4.2

1
1.0000

0.9000
1

0.9000
1
a

1 g = 0.8100
b
1 0.6000

1
0.5600
0.3500
1

SVD
Editor
%
%07 7
function

x=qyfj_f(A,B)

%
[u,s,v]=svd(A);
[m,n]=size(A);
x=0;
%
for i=1:n
x=x+u(:,i)'*B*v(:,i)/s(i,i);
end
qyfj_f.m

MATLAB

437

Editor
%SVD
%A
A=[3.6 1
3.7 1
3.8 1
3.9 1
4.0 1
4.1 1
4.2 1];
%B
B=[1.0 0.9 0.9 0.81 0.60 0.56 0.35]';
%
x=qyfj_f(A,B)
qyfj_main.m

>>clear
>>clc
>> qyfj_main

x=
-1.0464
4.8125

y x y=-1.0464x+4.8125SVD
A A SVD [u,s,v]=SVDA

u=
-0.3503
-0.3594
-0.3684
-0.3775
-0.3866
-0.3957
-0.4048

-0.5845
-0.3957
-0.2069
-0.0182
0.1706
0.3594
0.5481

-0.3767
-0.1484
0.8954
-0.0998
-0.0950
-0.0902
-0.0854

-0.3510
0.0513
-0.0901
0.8849
-0.1401
-0.1651
-0.1900

-0.3253
0.2511
-0.0756
-0.1304
0.8148
-0.2400
-0.2947

-0.2996
0.4509
-0.0611
-0.1456
-0.2302
0.6852
-0.3994

-0.2740
0.6506
-0.0465
-0.1609
-0.2753
-0.3897
0.4959

MATLAB

438

s=
10.6646
0
0
0
0
0
0

0
0.1313
0
0
0
0
0

v=
-0.9688
-0.2478

0.2478
-0.9688

SVD

-1.0464
x=

4.8125

9.3

Gauss-Markov

( Y - HX )T W ( Y - HX ) =

Y - HX

2
W

MATLAB

439

= ( HT WH )1 HT WY
X

P = ( HT WH ) HT WH ( HT WH )
1

-1

W = R Gauss-Markov

= ( HT R 1H )1 HT R 1Y
X

P = ( HT R 1H )

Gauss-Markov

Gauss-Markov

Gauss-Markov

Gauss-Markov

4 Y
Y X

y1 = x1 + x2
y = x 2x
2
1
2

y3 = 2 x1 + x2
y4 = 3 x1 x2
y1 , y2 , y3 , y4

1
8

2
7.8

3
-7

4
-7.1

5
10

6
4.2

MATLAB

440

R=

0.0100
0
0
0
0
0
0 0.0200
0
0
0
0
0
0 0.0400
0
0
0

0
0
0 0.0030
0
0
0
0
0
0 0.1000
0

0
0
0
0
0 0.3000

\\chapter9.rar\9-3.exe
\\chapter9\ gs_mark..m

8 = x1 + x2
= +
7.8 x1 x2
7 = x1 2 x2

7.1 = x1 2 x2
10 = 2 x1 + x2

4.2 = 3 x1 x2

MATLAB x=H\Y

Editor
%GaussMarkov
%
H=[1 1
11
1 -2

MATLAB

441

1 -2
21
3 -1];
%
Y=[8.0 7.8 -7 -7.1 10 4.2]';
%
R=diag([0.01 0.02 0.04 0.003 0.1 0.3])

disp('')
x_g=H\Y
disp('')
P_g=inv(H'*H)*H'*R*H*inv(H'*H)
disp('')
trace_g=trace(P_g)

R1=1./([0.01 0.02 0.04 0.003 0.1 0.3]);


disp('')
W=diag(R1)
disp('')
x_g_m=inv(H'*W*H)*H'*W*Y
disp('')
P_g_m=inv(H'*W*H)
disp('')
trace_g_m=trace(P_g_m)
gs_mark..m

>>clc
>>clear
>> gs_mark

R=
0.0100

MATLAB

442

0
0
0
0
0

0.0200
0
0
0
0

0
0.0400
0
0
0

0
0
0.0030
0
0

0
0
0
0.1000
0

0
0
0
0
0.3000

0
0
25.0000
0
0
0

0
0
0
333.3333
0
0

0
0
0
0
10.0000
0

0
0
0
0
0
3.3333

x_g =
2.8769
4.8692

P_g =
0.0107
-0.0004

-0.0004
0.0033

trace_g =
0.0140

W=
100.0000
0
0
0
0
0

0
50.0000
0
0
0
0

x_g_m =
2.8821
4.9877

MATLAB

443

P_g_m =
0.0026
0.0009

0.0009
0.0009

trace_g_m =
0.0035

2.8769
x=

4.8692

0.0107 -0.0004
P=

-0.0004 0.0033
0.0140

2.8821
x=

4.9877

0.0026
P=
0.0009

0.0009
0.0009

0.0035

Gauss-Markov

Gauss-Markov

MATLAB

444

Gauss-Markov

9.4

Kalman

Kamlan Kalman
Kalman
Kalman
Kamlan MATLAB

x& = Ax + Bu + Gw
y = Cx + Du + Hw + v

[kest,L,P] = kalman(sys,Qn,Rn,Nn)
[kest,L,P] = kalman(sys,Qn,Rn,Nn,sensors,known)
[kest,L,P,M,Z] = kalman(sys,Qn,Rn,Nn)
Kalman

Kalman

MATLAB

445

Kalman

MATLAB

0.298 0.412
0.49

x k +1 = 0.401 -0.391 0.391 x k + e k


-0.992 0.401 0.296
yk = x ( 2) k + vk
2
x ( ) x e v

10.9

x1 x1 = 8.481 k = 1, 2,L 30 xk

4.3

Kalman

\\chapter9.rar\9-4.exe
\\chapter9\lvbo.m

Editor
%%%%%%%%

MATLAB

446

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%

x[n+1]=Ax[n]+Bu[n]+Gw[n]

y[n]=Cx[n]+Du[n]+Hw[n]+v[n]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
A=[0.49 0.298 0.412
0.401 -0.391 0.391
-0.992 0.401 0.296];
%B
B=zeros(3,3);
% G
G=eye(3,3);
%C

C=[0 1 0];
D=[0 0 0];
H=zeros(1,3);

%---
%
x(:,1)=[10.9 8.481 -4.3]';
%
guji=[20.1

21.3

20.7]';

%
for i=2:30
%
w=randn(3,1);
%
v=randn(1,1);
%

x(:,i)=A*x(:,i-1);
%
x1(:,i)=x(:,i)+w;
Qn=eye(2,2);
Rn=1;
Nn=0;
%
z0(:,i)=C*x1(:,i)+v;

MATLAB

447

% Kalman
sys=ss(A,[B G],C,[D H],-1);
[kest,L,P,M,Z]=kalman(sys,Qn,Rn,Nn);
%
guji(:,i)=A*guji(:,i-1)+L*(z0(:,i)-C*A*guji(:,i-1));
end

subplot(2,2,1)
% x1
plot(x(1,:))
hold on
% x1
plot(guji(1,:),':m')
hold off
legend('real of x1','estimate of x1')
grid

subplot(2,2,2)
% x2
plot(x(2,:))
hold on
% x2
plot(guji(2,:),':m')
hold off
legend('real of x2','estimate of x2')
grid

subplot(2,2,3:4)
% x2
plot(x(3,:))
hold on
% x3
plot(guji(3,:),':m')
hold off
legend('real of x1','estimate of x1')
grid
lvbo.m

MATLAB

448

>>clear
>>clc
>>lvbo
9.2

9.2

Kalman

9.2
9.1

10.9

8.481

-4.3

6.096738

-0.626471

-8.684719

-0.777390966

-0.70598303

-8.869855791

-4.245685102

-3.503808027

-2.137404671

MATLAB

449

-4.005131216

-1.168256014

2.17402082

-1.41495801

-0.299227376

4.148129668

0.92653024

1.171518442

2.51149455

1.837848068

0.895469285

0.294063284

1.288549473

0.501827329

-1.377019368

10

0.213601806

-0.21792072

-1.484606051

11

-0.571933183

-0.40961964

-0.738722592

12

-0.70666762

-0.35802446

0.184438354

13

-0.376969821

-0.071270755

0.612040224

14

0.046206675

0.116009694

0.526538396

15

0.274145979

0.179045599

0.156538231

16

0.252180869

0.101132157

-0.153820209

17

0.090332082

0.001438153

-0.255140209

18

-0.060426476

-0.064098975

-0.164554228

19

-0.11650681

-0.063509021

-0.014468676

20

-0.08197512

-0.027544456

0.08582491

21

-0.013016194

0.011455399

0.095678165

22

0.036455178

0.027711608

0.045826416

23

0.04500158

0.021701416

-0.011486563

24

0.023785332

0.005069134

-0.039339322

25

-0.003042386

-0.007825788

-0.033206766

26

-0.017504042

-0.011143959

-0.009949297

27

-0.015996991

-0.006552008

0.00995029

28

-0.005691504

3.76E-05

0.016186945

29

0.003891391

0.004032099

0.010452388

30

0.007414731

0.004070781

0.000850519

9.1

9.2 9.1 9.2


8.2

20.1

21.3

20.7

22.7252488

9.494219162

-6.316169216

10.40651623

3.728682279

-21.10563016

-1.788182459

-6.118879723

-14.71090286

-8.614322881

-4.198556849

-4.957777626

-6.763631785

-4.378077639

5.787030676

-2.357407994

1.364838315

6.60265909

1.422692466

1.56099626

4.553088326

2.392673342

2.2791037

0.224864281

MATLAB

450

10

1.861692101

0.225133574

-1.436205036

11

0.517263742

-0.01125328

-2.113843039

12

-0.58022756

-0.648547414

-1.122123626

13

-0.593150559

-0.707212838

0.164664887

14

-0.553204215

0.202906809

0.290993037

15

-0.391235191

0.063405251

0.559150432

16

-0.618625591

0.601259193

0.22549466

17

0.434915463

-0.783860719

1.165157579

18

-0.045343222

1.357835159

-0.664868843

19

-0.11295527

-0.624252831

0.276887725

20

-0.398859291

0.53368178

-0.198301503

21

-0.179721431

-0.394725491

0.518760826

22

-0.279207237

0.524824267

0.023365338

23

0.448919666

-0.658297751

0.7137889

24

0.479427729

0.581682628

-0.413558092

25

0.032585161

-0.025564549

-0.472086999

26

0.014970698

-0.329369401

-0.077156563

27

-0.852877938

0.7140655

-0.551591054

28

0.072338102

-1.258081817

1.233014025

29

-0.453268751

1.521953811

-0.536391476

30

-0.003343612

-0.975064648

0.893963618

9.2 Kalman
Kalman

Kalman

Kalman Kalman

9.5

MATLAB

MATLAB polyfit()

MATLAB polyfit
p = polyfit(x,y,n)

MATLAB

451

xy n polyval
poly2sym

polyval

MATLAB

polyval

f ( x ) = sin x + x
[-33] 0.5

\\chapter9.rar\9-5.exe
\\chapter9\dxs_main.m

Editor
%
x=-3:0.5:3;
y=sin(x)+x;
%
p3=polyfit(x,y,3);
%
vpa(poly2sym(p3),10)

MATLAB

452

x1=-3:0.1:3; %
y1=polyval(p3,x1);%
plot(x,y,x,y,'*',x1,y1)
grid
dxs_main.m

>>clear
>>clc
>>dxs_main

ans =
-.9180150775e-1*x^3-.1038199528e-15*x^2+1.851366521*x+.1856830267e-15

( x ) = 0.9180150775e 1x 3 .1038199528e 15 x 2 + 1.851366521x + 0.1856830267e 15


9.3

9.3

MATLAB

9.6

453

MATLAB lsqcurvefit

( x _ d , y _ d )

min
x

1
F ( x, x _ d ) y _ d
2

2
2

MATLAB lsqcurvefit

x = lsqcurvefit(fun,x0,xdata,ydata)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
[x,resnorm] = lsqcurvefit(...)
[x,resnorm,residual] = lsqcurvefit(...)
[x,resnorm,residual,exitflag] = lsqcurvefit(...)
[x,resnorm,residual,exitflag,output] = lsqcurvefit(...)
[x,resnorm,residual,exitflag,output,lambda] = lsqcurvefit(...)
[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(...)
x0
xdataydata
x

lsqcurvefit

MATLAB

454

x
-6
-5.5
-5
-4.5
-4
-3.5
-3
-2.5
-2
-1.5
-1
-0.5
0

y
38.84982659
34.74885434
30.71474987
27.17440033
24.21494064
19.79552224
8.319659194
0.912559575
-1.898102117
-6.749766907
-2.080384316
-1.49300822
-2.655131444

x
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
5.5
6

y
2.415889835
9.869970417
10.10978871
10.58268605
5.186611205
6.567569969
4.191909502
-2.247630195
-7.57887831
-12.72526736
-26.44077449
-47.06416166

0 = sin ( x )

2
1 = x

x
1 = e

\\chapter9.rar\9-6.exe
\\chapter9\fun_nihe.m, nihe.m

Editor
%
function f=fun_nihe(c,x)
f=c(1)*sin(x)+c(2)*x.^2+c(3)*exp(x);
fun_nihe.m

Editor

MATLAB

455

%%
%
f=@(x)8*sin(x)+x.^2-0.2*exp(x);
f(2)
x=-6:0.5:6;
% y
y=f(x)+2*randn(size(x));
%
plot(x,y,'*')
grid
hold
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
%
c0=[1 1 1];
%
[c,r]=lsqcurvefit(@fan_nihe,c0,x,y)
%
g=@(x)c(1)*sin(x)+c(2)*x.^2+c(3)*exp(x);
x_g=-6:0.1:6;
y_g=g(x_g);
%
plot(x_g,y_g)
hold off
nihe.m

>> clear
>> nihe

ans =
9.79656819481932
Current plot held

MATLAB

456

Optimization terminated: relative function value


changing by less than OPTIONS.TolFun.
c=
7.95542904102721

0.997246158847839

-0.203088890284279

r=
93.04797547706

9.4

9.4

MATLAB

457

9.7

MATLAB

{( x , y )}

i =1

( x ) = a0 0 ( x ) + a11 ( x ) + L + ann ( x )

E = a j j ( x ) yi
i =1 j = 0

E ( a0 , a1 ,L , an )
=0
ai

a0
a
a = 1 ,
M

an
A = aij

m ( n +1)

y1
y
y= 2
M

ym

, aij = j ( xi )

E = Aa - y

2
2

Aa = y
8.1

MATLAB

458

-3

-2

-1

-1

-2

-5

f ( x ) = a0 + a1 x + a2 x

\\chapter9.rar\9-7.exe
\\chapter9\zx_nh.m,zx_nh_f.m

Editor
%
x=[-3 -2 -1 0 1 2 3]';
y=[4
%

3 0 -1 -2 -5]';

%
a=[
zx_nh_f(x(1))
zx_nh_f(x(2))

MATLAB

459

zx_nh_f(x(3))
zx_nh_f(x(4))
zx_nh_f(x(5))
zx_nh_f(x(6))
zx_nh_f(x(7))];
b=y;
%
A=a'*a;
B=a'*b;
c=A\B
%%
% MATLAB c=a\b
%
%c
%
x_n=-3:0.02:3;
y_n=c(1)*1+c(2)*x_n+c(3)*x_n.^2;
plot(x,y,'*',x_n,y_n)
grid
zx_nh.m

Editor
%
function f=zx_nh_f(x)
f(1)=1;
f(2)=x;
f(3)=x^2;

>>clear
>>clc
>> zx_nh

c=
0.666666666666666
-1.39285714285714
-0.130952380952381

MATLAB

460

f ( x) = 0.666666666666666 -1.39285714285714x 0.130952380952381x 2


9.5

9.5

MATLAB

461

Kalman

x = (1.8725

4
-7

11 x1 2

-7 x2 8
=

-5 x3 4

5 x4 10

-2
3
T
0.0935 -7.4699 -1.5274 )

3
3
-1
-10
1
8

5
-8
0
-3
-5
-6

1
-2
0
-2
-2
2

2
x

11

28

40

-3

-3.99

-2.5

-3.3011

-2

-2.4161

-1.5

-1.4293

y 6.55 x 12.5
3

MATLAB

462

-1

-0.4597

-0.5

0.37758

0.5

1.3776

1.5403

10

1.5

1.5707

11

1.5839

12

2.5

1.6989

13

2.01

( x ) = 0.9692912747e 16 x3 .2221378251x 2 + x + 0.7438422527


9.6

9.6

MATLAB

463

S = f ( x )dx
b

sin x
cos x
dx,
dx, sin x 2 dx
x
x
ex
x
1
x2
dx
,
e
x dx, ln xdx, ln x dx

10.1

xi +1

xi

f ( x)dx [a, b] n

f ( x)dx =

h
h3
[ f ( xi ) + f ( xi+1 )] f '' (i ) , i [ xi , xi+1 ]
2
12

f ( x)dx =
i =1

xi +1

xi

f ( x)dx =
i =1

n
h
h3
[ f ( xi ) + f ( xi+1 )] f '' (i )
2
i =1 12

MATLAB

464

1 n
f '' (i ) = f '' ( )
n i =1

n 1
h
nh3
f ( x)dx = f (a) + f (b) + 2 f ( a + ih )
f '' ( )
2
i =1
12

n 1
h
ba

f
a
f
b
f ( a + ih ) , h =
(
)
+
(
)
+
2

2
n
i =1

f ( x)dx

(x
2

+ sin( x ) )dx

204080 200

\\chapter10.rar\10-1.exe
\ \chapter10\tixing.m, fun_tixing.m,
tixing_main.m

Editor
%
%by song

MATLAB

465

%08 8 7
function s=tixing(a,b,n)
% ab
% n
h=(b-a)/n;
s=0;
%
for k=1:(n-1)
x=a+h*k;
s=s+fun_tixing(x);
end
s=h*(fun_tixing(a)+fun_tixing(b))/2+h*s;
tixing.m

Editor
%
function f=fun_tixing(x)
f=x^2+sin(x);
fun_tixing.m

Editor
%%
disp('20 ')
s_20=tixing(-2,2,20)
disp('40 ')
s_40=tixing(-2,2,40)
disp('80 ')
s_80=tixing(-2,2,80)
disp('200 ')
s_200=tixing(-2,2,200)

%%%
disp('')

MATLAB

466

fenxi_s=int('x^2+sin(x)',-2,2)
% 12
s=vpa(fenxi_s,12)
%
TOL=[s_20-s;
s_40-s;
s_80-s;
s_200-s]
%%%%
x=-2:0.05:2;
y=x.^2+sin(x);
area(x,y)
grid
tixing_main.m

>>clear
>>clc
>> tixing_main

20
s_20 =
5.36
40
s_40 =
5.34
80
s_80 =
5.335
200

MATLAB

467

s_200 =
5.3336

fenxi_s =
16/3
s=
5.33333333333
TOL =
.266666666700000000000000000000e-1
.66666666700000000000000000000e-2
.16666666700000000000000000000e-2
.2666666700000000000000000000e-3

10.1

20

5.36

0.2666666667e-1

40

5.34

0.666666667e-2

80

5.335

0.166666667e-2

200

5.3336

0.26666667e-3

10.1
10.1

10.1 x x

MATLAB

468

10.1

10.2 Simpson

Simpson
n+1 [a,b] m [ x2i 2 , x2 i ], i = 1,L , m
x2i 1

x2i x2i 2 = 2h =

ba
m

[a,b]
n 1

I = f ( x ) dx =
b

k =0

xk +1

xk

f ( x ) dx

h n 1
x + xk +1
f ( xk ) + 4 f k
+ f ( xk +1 ) + Rn ( f )

6 k =0
2

MATLAB

469

x2 i

i =1

x2 i 2

f ( x)dx =

f ( x )dx

m
h
= [ f (a) + f (b) + 4 f (a + 2(i 1)h)
3
i =1
m 1

+ 2 f (a + 2ih)]
i 1

mh5 ( 4)
f ( )
90

a < <b
Simpson

f ( x)dx Sm ( f )
m
h
= [ f (a) + f (b) + 4 f (a + 2(i 1)h)
3
i =1
m 1

+ 2 f (a + 2ih)]
i 1

h=

ba
2m

Em ( f ) =

mh5 ( 4)
h 4 (b a ) ( 4 )
f ( ) =
f ( )
90
180
a< <b

Simpson
Simpson

Simpson

Simpson

Simpson
2

I ( f ) = 3ln xdx
1

MATLAB

470

105

\\chapter10.rar\10-2.exe
\\chapter10\xps.m,
f_xps.m, xps_main.m

f ( x ) = 3ln( x ) f ( x ) 4

f ( 4) ( x ) =

18
x4

max f ( 4) ( x ) = 18
x[1,2]

Simpson

h4 ( b a ) ( 4 )
( b a ) f ( 4) ,1 < < 2
Em ( f ) =
f ( ) =
( )
180
2880m 4
5

Em ( f

(b a )
=

2880m

max f ( 4) ( x )

4 x 1,2
[ ]

Em ( f

) 105

(b a )

2880m

max f ( 4) ( x ) 105

4 x 1,2
[ ]

18
105
4
2880m

m 5 m=5 h =

ba
= 0.1
2m

Editor
%Simpson
%08 8
function s=xps(a,b,n)
%a,b

MATLAB

471

%n
% n

100

if nargin<3
n=100;
end
%
h=(b-a)/(2*n);
%
s1=0;
s2=0;
for k=1:n
x=a+h*(2*k-1);
s1=s1+f_xps(x);
end
for k=1:(n-1)
x=a+h*2*k;
s2=s2+f_xps(x);
end
%
s=h*(f_xps(a)+f_xps(b)+4*s1+2*s2)/3;
xps.m

Editor
% Simpson
function f=f_xps(x)
f=3*log(x);
f_xps.m

Editor
%Simpson
disp('')
s_1=xps(1,2,5)

syms x
%
int_f=int(3*log(x));

MATLAB

472

s=subs(int_f,2)-subs(int_f,1);
% Simpson
ds=s-s_1
%
x=1:0.02:2;
y=3*log(x);
area(x,y)
grid
xps_main.m

>> xps_main

s_1 =
1.15888021141442

ds =
2.87194525427914e-006

1.15888021141442
10.2

MATLAB

473

10.2

10.3

Romberg
TOL

f ( x)dx

n 1
h
f ( x)dx [ f (a) + f (b) + 2 f ( xk )]
2
k =1

TOL

MATLAB

474

T = e x dx
2

104

\\chapter10.rar\10-3.exe
\\chapter10\
kong_tixing.m, kong_t_main.m,kong_t_f.m

Editor
%
%8 7
function [jifen,num] = kong_tixing(a,b,tol)
% a,b
%tol 10 -3
if(nargin==3)
eps=1.0e-3;
end
n=1;
h=(b-a)/2;
int_1=0;
%
int_2=(kong_t_f(a)+kong_t_f(b))/h;

MATLAB

475

%
while abs(int_2-int_1)>tol
n=n+1;
h=(b-a)/n;
int_1=int_2;
int_2=0;
for i=0:n-1
x=a+h*i;
x1=x+h;
int_2=int_2+(h/2)*(kong_t_f(x)+kong_t_f(x1));
end
end
%%%%
%
jifen=int_2;
%
num=n;
kong_tixing.m

Editor
function f=kong_t_f(x)
f=exp(-x^2);
kong_t_f.m

Editor
%
% 0.1
[s_1,num_1]=kong_tixing(0,1,1e-1)
% 0.01
[s_2,num_2]=kong_tixing(0,1,1e-4)
% 0.001
[s_1,num_3]=kong_tixing(0,1,1e-7)
%
x=0:0.02:1;
y=exp(-x.^2);
area(x,y)
grid

MATLAB

476

kong_t_main.m

>>clear
>> kong_t_main
s_1 =
0.739986475276682

num_1 =
3

s_2 =
0.746398247893441

num_2 =
12

s_1 =
0.746818876175303

num_3 =
108

104 12 107
108

MATLAB

477

108
10.3
0.746818876175303

10.3

10.4 Simpson

Simpson

[ a, b ] n Simpson
n 1

I = f ( x ) dx =
b

k =0

xk +1

xk

h n 1
f ( xk ) + 4 f
6 k =0

f ( x ) dx

xk + xk +1
+ f ( xk +1 ) + Rn ( f )

n
n
n

MATLAB

478

Simpson

Simpson

( x x ) dx
2

\\chapter10.rar\10-4.exe
\\chapter10\kong_xps.m, kong_xps_f.m,
kong_xps_main.m

Editor
% simpson
%9
function [jifen,num] = kong_xps(a,b,tol)
% a,b
%tol 10 -3
if(nargin==3)
eps=1.0e-3;
end
n=1;
h=(b-a)/2;
int_1=0;
%
int_2=(kong_t_f(a)+kong_t_f(b))/h;

MATLAB

479

%
while abs(int_2-int_1)>tol
n=n+1;
h=(b-a)/n;
int_1=int_2;
int_2=0;
for i=0:n-1
x=a+h*i;
x1=x+h;
int_2=int_2+(h/6)*(kong_xps_f(x)+4*kong_xps_f((x+x1)/2)+kong_xps_f(x1));
end
end
%%%%
%
jifen=int_2;
%
num=n;
kong_xps.m

Editor
% Simpson
function f=kong_xps_f(x)
f=-x-x^2;
kong_xps_f.m

Edior
%
% 0.1
[s_1,num_3]=kong_xps(-1,2,1e-5)
%
real_ans=int('-x-x^2',-1,2)
%
x=-1:0.05:2;
y=-x-x.^2;
area(x,y)
grid
kong_xps_main.m

MATLAB

480

>> kong_xps_main

s_1 =
-4.5

num_3 =
3

real_ans =
-9/2

-4.5-4.5
10.4
10.4 x x

10.4

MATLAB

481

10.5

Romberg

Romberg
Romberg
1 R ( 0, 0 ) =

1
( b a ) f ( a ) + f ( b )
2
i 2

h 2
1
2 R ( i, 0 ) = R ( i 1, 0 ) + i 1
2
2 k =1
3

R ( m, j ) =

f a + k hi 1
2

4 j 1 R ( m, j 1) R ( m 1, j 1)
4 j 1 1

Romberg 5.1
R11
R21 R22
R31 R32 R33
R41 R42 R43 R44
R51 R52 R53 R54 R55
R61 R62 R63 R64 R65 R66

10.2 Romberg
Romberg Romberg

Romberg

Romberg

MATLAB

482

Romberg

S=

1.5

x
dx
4 + x2

106

\\chapter10.rar\10-5.exe
\ \chapter10\rombg.m, rombg_f.m,
rombg_main.m

Editor
%Romberg
%08
%a,b
%TOL
%s
function s=rombg(a,b,TOL)
n=1;
h=b-a;
%
delt=1;
x=a;
k=0;
R=zeros(4,4);
R(1,1)=h*(rombg_f(a)+rombg_f(b))/2;
while delt>TOL
%
k=k+1;

h=h/2; s=0;

for j=1:n
x=a+h*(2*j-1); s=s+rombg_f(x);
end
R(k+1,1)= R(k,1)/2+h*s; n=2*n;
for i=1:k
R(k+1,i+1)=((4^i)*R(k+1,i)-R(k,i))/(4^i-1);
end
%

MATLAB

483

delt=abs(R(k+1,k)-R(k+1,k+1));
end
s=R(k+1,k+1);
rombg.m

Editor
%Romberg
function f=rombg_f(x)
f=x/(4+x^2);
rombg_f.m

Editor
%Romberg
% 08 9 11
s=rombg(0,1.5,1.e-6)
%
x=0:0.02:1.5;
y=x./(4+x.^2);
area(x,y)
grid
rombg_main.m

>> rombg_main

s=
0.223143586093269

5.5
0.111571784504289

MATLAB

484

10.5

1.5 0
( f ( 0 ) + f (1) )
2
1
2 R ( 2,1) = R (1,1) + 1.5 f ( 0.75)
2

R (1,1) =

R ( 2, 2 ) =

R ( 2,1) R (1,1)
3

R ( 3,1) =

1
R ( 2,1) + 0.75 ( f ( 0.375 ) + f (1.125 ) )
2

R ( 3, 2 ) =

4 R ( 3,1) R ( 2,1)
3

R ( 3,3) =

16 R ( 3, 2 ) R ( 2, 2 )
15

10.6 Gauss-Legendre

Gauss

MATLAB

485

Gauss-Legendre

Gauss-Legendre

f ( x ) dx Ak f ( xk )
k =1

xk Legendre [ 1,1]
n Legendre
n
1 dn 2
t 1)
n
n (

2 n ! dt

Pn ( t ) =
Ak
Ak =

(1 xk )

Pn ' ( xk )

2 (1 xk )

n 2 Pn ( xk )

[ a, b ]

x=

f ( x ) dx =

a +b ba
+
t
2
2

ba n
Ak f
2 k =1

a+b ba
+
xk

2
2

-0.9061798459
-0.5384693101

x=
0

0.5384693101
0.9061798459

0.2369268851
0.4786286705

A = 0.5688888889

0.4786286705
0.2369268851

5 Legendre

MATLAB

486

Gauss

Legendre

n Legendre

Gauss-Legendre

S = 2 x 2 cos xdx
0

\\chapter10.rar\10-6.exe
\\chapter10\gau_leg.m, gau_leg_f.m,
gau_leg_main.m

Editor
%Gauss-Legendre
%08 9
%ab
function s=gau_leg(a,b)
%5 Legendre
node=[-0.9061798459,-0.5384693101,0,0.5384693101,0.9061798459];
%
quan=[0.2369268851,0.4786286705,0.5688888889,0.4786286705,0.2369268851];
%t 15
t=(b+a)/2+(b-a)*node/2;
s=((b-a)/2)*sum(quan.*gau_leg_f(t));
gau_leg.m

Editor

MATLAB

487

%Gauss-Legendre
%

function f=gau_leg_f(x)
f=(x.^2).*cos(x);
gau_leg_f.m

Editor
%Gauss-Legendre
disp(':')
s=gau_leg(0,pi/2)
%
x=0:0.01:pi/2;
y=(x.^2).*cos(x);
bar(x,y)
grid
gau_leg_main.m

>> gau_leg_main
:

s=
0.46740109740108

10.6 10.6

MATLAB

488

10.6 Gauss-Legendre
Gauss-Legendre Legendre
Legendre
Gauss-Legendre

22 n+1 ( n !)
R( f ) =
f ( 2n ) ( ) , [ 1,1]
3
2n + 1 ( 2n !)

Legendre

10.7 Gauss-Laguerre

[ 0, ]

S = f ( x )dx
0

n Gauss-Laguerre
n

S Ak f ( xk )
k =1

xk Ak

Ak =
Laguerre

xk

( n + 1)

Ln +1 ( xk )

MATLAB

489

Ln ( x ) = e x

d n n x
( x e ), 0 x <
dx n

5 Laguerre

0.2635599
1.4134029

x = 3.596246

7.0858099
12.6408

0.6790941054
1.638487956

A = 2.769426772

4.315944

7.10489623

Laguerre

Laguerre

Laguerre

S = xe x dx
0

\\chapter10.rar\10-7.exe
\\chapter10\gau_lag.m, gau_lag_f.m,

MATLAB

490

Editor
%Gauss-Laguerre
%
function s=gau_lag()
%
node=[0.26355990,1.41340290,3.59624600,7.08580990,12.640800];
%
quan=[0.6790941054,1.638487956,2.769426772,4.31594400,7.10489623];
%
s=sum(quan.*gau_lag_f(node))
%%%%%%%%%%%
%
clear
x=0:0.1:20;
y=x.*exp(-x);
area(x,y)
grid
gau_lag.m

Editor
%Gauss-Laguerre
function f=gau_lag_f(x)
f=x.*exp(-x);
gau_lag_f.m

>> s=gau_lag

s=
1.00003075881944

0
10.7 10.7

MATLAB

491

10.7
Gauss-Laguerre

( n !) f ( 2 n) , 0 <
R( f ) =
( )
( 2n ) !
2

Gauss-Laguerre

e x g ( x ) dx

10.8

Gauss-Hermite

Gauss-Hermite ( , )

S=

f ( x ) dx

n Guass-Hermite
n

S Ak f ( xk )
k =1

xk , Ak 5 Hermite

MATLAB

492

-2.020182
-0.9585719

x=
0

0.9585719
2.020182

1.181469599
0.9865791417

A = 0.9453089237

0.9865791417
1.181469599

Hermite

Gauss-Hermite

Gauss-Hermite

Gauss-Hermite

S = e x dx
2

\\chapter10.rar\10-8.exe
\\chapter10\gau_herm.m, gau_herm_f.m

Editor
%Gauss-Laguerre
%

MATLAB

493

function s=gau_lag()
%
node=[
-2.02018200
-0.95857190
0.00000000
0.95857190
2.02018200];
%
quan=[
1.181469599
0.9865791417
0.9453089237
0.9865791417
1.181469599
];
%
s=sum(quan.*gau_herm_f(node));
%%
%
clear
x=-6:0.1:6;
y=exp(-x.^2);
area(x,y)
grid
gau_herm.m

Editor
%Gauss-Laguerre
function f=gau_herm_f(x)
f=exp(-x.^2);
gau_herm_f.m

>> gau_herm

ans =
1.77245292373229

MATLAB

494

10.8 10.8 x

10.8
Gauss-Hermite

S = e x g ( x ) dx
2

Hermite

d2y
dy
2 x + 2ny = 0
2
dx
dx

( )

d n x2
H n ( x ) = ( 1) e
e
dx n
n

x2

H n ( x )
H0 ( x) = 1

H1 ( x ) = 2 x

H n ( x ) = 2 xH n1 ( x ) 2 ( n 1) H n 2 ( x ) , n 2

10.9 Gauss-Chebyshev

MATLAB

495

[ 1,1]

( x) =

1
1 x2

Gauss-Chebyshev
1

f ( x)

1 x2

dx Ak f ( xk )
k =1

2k 1
, k = 1, 2,L n
xk = cos
2n

Ak =

Gauss-Chebyshev

R( f ) =

2
f ( 2 n ) ( ) , 1 < < 1
2 ( 2n ) !
2n

[ 1,1] [ a, b ]
1

f ( x)

1 x

dx

(b a )
2n

a+b ba
+
xk
2
2

f
k =1

Gauss-Chebyshev

[ 1,1]

Gauss-Chebyshev

MATLAB

496

S=

ex
1 x2

dx

\\chapter10.rar\10-9.exe
\\chapter10\gau_cheb.m, gau_cheb_f.m,
gau_cheb_main.m

Editor
%Gauss-chebyshev
%08 9
function s=gau_cheb(a,b,n)
%a,b
%n 5
if nargin==2
n=5;
end;
k=1:n;
x=cos(pi*(2*k-1)/(2*n));
t=(b+a)/2+(b-a)/2*x;
s=(b-a)*pi/2/n*sum(gau_cheb_f(t));
gau_cheb.m

Editor
%Gauss-chebyshev
function f=gau_cheb_f(x)
f=exp(x);
gau_cheb_f.m

Editor
%Gauss-chebyshev
for i=1:9
s(i)=gau_cheb(-1,1,i);

MATLAB

497

end
disp('')
s=s'

%
clear
x=-0.99:0.02:0.99;
y=exp(x)./sqrt(1-x.^2);
area(x,y);
grid
gau_cheb_main.m

>> gau_cheb_main

s=
3.97746326050642

10.9

10.9

MATLAB

498

( x) =

1 x2

Gauss-Chebyshev 10.3

3.14159265358979

3.96026605279076

3.97732196008232

3.97746263466196

3.97746325877669

3.97746326050316

3.97746326050642

3.97746326050642

3.97746326050642

10.3
9

R( f )

2
e
2 18!
18

10.10

S = f ( x ) dx
b

0 1 t (1 n )

xk = a + ( b a ) tk , k = 1, 2L , n

MATLAB

499

S = f ( x ) dx
b

ba n
f ( xk )
n k =1

S=

8.4

2.5

(x

+ sin x ) dx

\\chapter10.rar\10-10.exe
\\chapter10\
monte_carlo.m, monte_carlo_f.m,monte_carlo_main.m

Editor
function s=monte_carlo(a,b,n)
%Monte_carlo
%08 9 16
if nargin==2

MATLAB

n=10000;
end
%
t=rand(1,n);
%
x=a+(b-a)*t;
s=sum(monte_carlo_f(x));
s=s*(b-a)/n;
monte_carlo.m

Editor
function f=monte_carlo_f(x)
%montecarlo
f=x.^2+sin(x);
monte_carlo_f.m

%monte_carlo
%08 9
%by song yezhi
format short
s=monte_carlo(0,0.4)

%
s_format=int('exp(3*x)*cos(2*x)',0,0.4)
s_ex=vpa(s_ex,6)
x=-0.5:0.01:0.5;
y=exp(3*x).*cos(2*x);
plot(x,y)
hold on
%
x1=0:0.01:0.4;
y1=exp(3*x1).*cos(2*x1);
area(x1,y1)
grid on
monte_carlo_main.m

500

MATLAB

501

>> monte_carlo_main
s=
0.6693
s_format =
3/13*exp(6/5)*cos(4/5)+2/13*exp(6/5)*sin(4/5)-3/13

s_ex =
.669451

10.10

10.10
n

MATLAB

502

10.11 MATLAB

MATLAB

MATLAB trapz quad quadl


Trapz
Z = trapz(Y)
Z = trapz(X,Y)
Z = trapz(Y) Y
Y Z = trapz(X,Y) Y X
quad
q = quad(fun,a,b)
q = quad(fun,a,b,tol)
q = quad(fun,a,b,tol,trace)
[q,fcnt] = quadl(fun,a,b,...)
fun a,b tol
MATLAB
Quadl
q = quadl(fun,a,b)
q = quadl(fun,a,b,tol)
q = quadl(fun,a,b,tol,trace)
[q,fcnt] = quadl(fun,a,b,...)
quadl MATLAB
quad8 quad8 8 Newton-Cotes Mahtworks
quadl quad8

trapz

quad

quadl

MATLAB

503

1 trapz

S1 =

2 x x 2 dx

2 quad

S 2 = 2 ( x 3 + sin 2 x ) cos 2 xdx

3 quadl

S = x (1 x
1

3
4 2

dx

\\chapter10.rar\10-11.exe
\\chapter10\tr_quad.m

Editor
%MATLAB
%
%08 9 16
x=0:0.01:1;
y=sqrt(2*x-x.^2);
s1=trapz(x,y)
%s1
s1_ex=pi/4

%quad
%
f=@(x)(x.^3+(sin(x)).^2).*cos(x).*cos(x);
s=quad(f,-pi/2,pi/2)
%s2
s2_ex=pi/8

MATLAB

%quadl
%
g=@(x)x.*(1-x.^4).^(3/2);
s=quadl(g,0,1)
%s3
s3_ex=pi*3/32
%%%%%%%%%%%%%%
%
%
subplot(3,1,1)
area(x,y)
grid
title('trapz method')
%
x=-pi/2:0.05:pi/2;
y=(x.^3+(sin(x)).^2).*cos(x).*cos(x);
subplot(3,1,2)
area(x,y)
grid
title('quad method')
%
x=0:0.01:1;
y=x.*(1-x.^4).^(3/2);
subplot(3,1,3)
area(x,y)
grid
title('quadl method')
tr_quad.m

>>clear
>>clc
>> tr_quad

504

MATLAB

505

s1 =
0.78510425794476

s1_ex =
0.78539816339745

s=
0.39269910233665

s2_ex =
0.39269908169872

s=
0.29452507494360

s3_ex =
0.29452431127404

3
2 3
10.11
4
8
32

MATLAB

506

10.11

MATLAB quadl

10.12

MATLAB
q = dblquad(fun,xmin,xmax,ymin,ymax)
q = dblquad(fun,xmin,xmax,ymin,ymax,tol)
q = dblquad(fun,xmin,xmax,ymin,ymax,tol,method)

fun [ x min, x max ] [ y min, y max ] method

MATLAB
triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax)
triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)
triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol,method)

[ x min, x max ] [ y min, y max ] [ z min, z max ]

MATLAB

507

tol method

MATLAB

MATLAB

V =

( y sin x + x cos y ) dxdy

M =

(x
2

+ y 2 + z 2 ) dxdydz

\\chapter10.rar\10-12.exe

\\chapter10\d_int.m

Editor
%
%
%08 9
%%%%%%%%%%
f=@(x,y)y*sin(x)+x*cos(y);
v=dblquad(f,pi,2*pi,0,pi)

MATLAB

508

%
x=pi:0.1:2*pi;
y=0:0.1:pi;
[x,y]=meshgrid(x,y);
z=y.*sin(x)+x.*cos(y);
waterfall(x,y,z)
%
view(-37.5,60)
grid
%%%%%%%%%%%%
%
g=@(x,y,z)x.^2+y.^2+z.^2;
%
m=triplequad(g,1,2,1,2,1,2)
d_int.m

>> d_int

v=
-9.86960437725457

m=
7.00000000000000

z = f ( x, y ) 10.12

MATLAB

509

10.12
MATLAB Howard Wilson Bryce Gardner
NIT
The Math Works
MATLAB NIT

simpson Newton-Cotes
n 1 2
Romberg
MATLAB
quadl

MATLAB

510

a)

I =

x + 1 x2

) dx
2

I=2
b) Romberg

I =

1 sin xdx

I= 4 2 4
c) Gauss-Legendre
1.5

I = e x dx
2

I=0.1093642
d)

I=

x[ 1,1]
y[0,2]

-7.5989e-018

sin x cos ydxdy

MATLAB

511

11.1 Euler

Euler

dy
= f ( x, y )
dx

xn = x0 + nh, n = 0,1, 2,L

y ( xn +1 ) y ( xn )
h

f ( xn , y ( xn ) )

yn+1 = yn + hf ( xn , yn )
Euler

x0

MATLAB

512

Euler

Eluer
Euler

dx 2
2 t
= x+t e
dt t
t [1, 2], x (1) = 0

\\chapter11.rar\11-1.exe
\ \chapter11\Euler.m, Euler_fun.m,
Euler_main.m

Euler
Editor
function [t,x]= Euler(fun,t0,tt,x0,N)
%MyEuler
%fun ft,x
%t0,tt
%x0 x0 ,
%N [t0,tt]

h=(tt-t0)/N;

% h

t=t0+[0:N]'*h;

% t

x(1,:) = x0';

for k = 1:N
f=feval(fun,t(k),x(k,:));
f=f';
x(k+1,:) =x(k,:)+h*f;
end

MATLAB

513

Euler.m

Editor
function f=Euler_fun(t,x)
f=2/t*x+t^2*exp(t);
Euler_fun.m

Editor
%Euler
function main_Euler
[t,x]=Euler('Euler_fun',1,2,0,20);%
fh=dsolve('Dx=2/t*x+t^2*exp(t)','x(1)=0'); %
for k=1:21

ft(k)=t(k);

fx(k)=subs(fh,ft(k));
end
subplot(1,2,1),plot(t,x,'*',ft,fx),grid on
%
subplot(1,2,2),plot(t,x-fx'),grid on
%
[t,x,fx',x-fx']
%t
%x
%fx
% x-fx
main_Euler.m

>>main_Euler

1.00000000000000

1.05000000000000

0.13591409142295

1.10000000000000

0.30638630848932

MATLAB

514

1.90000000000000

12.96207146777123

1.95000000000000

14.85108970238007

2.00000000000000
16.94901327235141

, 11.1

tn

xn

x (tn )

xn x (tn )

1.05

0.13591409142295

0.15365464178854

-0.01774055036559

1.1

0.30638630848932

0.34591987653974

-0.03953356805042

1.15

0.51599165370984

0.58178240492763

-0.06579075121779

1.2

0.76969599931610

0.86664253575960

-0.09694653644350

1.25

1.07288575102948

1.20634551406687

-0.13345976303739

1.3

1.43139965466354

1.60721507818074

-0.17581542351719

1.35

1.85156288882072

2.07608939732863

-0.22452650850791

1.4

2.34022359688479

2.62035955123583

-0.28013595435104

10

1.45

2.90479202198448

3.24801072380729

-0.34321870182281

11

1.5

3.55328241966640

3.96766629422779

-0.41438387456140

12

1.55

4.29435793472386

4.78863502080140

-0.49427708607754

13

1.6

5.13737864103491

5.72096152559634

-0.58358288456142

14

1.65

6.09245295642217

6.77548030151739

-0.68302734509521

15

1.7

7.17049265851352

7.96387347784497

-0.79338081933145

16

1.75

8.38327174241302

9.29873259561172

-0.91546085319870

17

1.8

9.74348937674285

10.79362466049060

-1.05013528374779

18

1.85

11.26483723135230

12.46316275820360

-1.19832552685133

19

1.9

12.96207146777120

14.32308153589100

-1.36101006811977

20

1.95

14.85108970238000

16.39031787247520

-1.53922817009520

21

16.94901327235140

18.68309708188640

-1.73408380953501

11.1 Euler

10.1

MATLAB

515

11.1 Euler

11.2 Euler

Euler

yn +1 = yn + [ f ( tn , yn ) + f (tn +1 , yn +1 )]
2

y0 =
h=b-a/N Euler

yn+1

yn+1 Euler

y ( 0) n+1 = yn + hf ( xn , yn )

h
( k +1)
(k )
y n +1 = yn + f ( xn , yn ) + f xn +1 , y n +1
2

( k = 0,1, 2,L)

- Euler Henu

MATLAB

516

Euler

Euler

Eluer

dx 1 2
= ( x + x)
dt t
t [1,3], x (1) = 2
Euler

\\chapter11.rar\11-2.exe
\\chapter11\GjEule, GjEuler_fun.m,
GjEuler_main.m

Euler
Editor
function [t,x]=GjEuler(fun,t0,tt,x0,N)
%
h=(tt-t0)/N;%
t=t0+[0:N]'*h;% x
x(1,:)=x0';
for i=1:N
f1=h*feval(fun,t(i),x(i,:));
f1=f1';
f2=h*feval(fun,t(i+1),x(i,:)+f1);
f2=f2';
x(i+1,:)=x(i,:)+1/2*(f1+f2);

MATLAB

517

end
GjEuler.m

Editor
function f=GjEuler(t,x)
f=1/t*(x^2+x);
GjEuler_fun.m

Editor
function GjEuler_main()
%
[t,x]=Euler('GjEuler_fun',1,3,-2,15);%Euler
[tgj,xgj]=GjEuler('GjEuler_fun',1,3,-2,15);% Eule
sh=dsolve('Dx=1/t*(x^2+x)','x(1)=-2','t'); %
for k=1:16

st(k)=t(k);

sx(k)=subs(sh,st(k));
end
plot(t,x,'*',tgj,xgj,'+',st,sx)
[t,x,xgj,sx']
%te
%x Euler
%xgj Euler
% sx sx
[t,sx'-x,sx'-xgj]
%
%plot(t,sx'-x,'+',t,sx'-xgj,'*')
GjEuler_main.m

>>GjEuler_main
11.2
t

Euler

Euler

MATLAB

518

-2

-2

-2

1.1333

-1.7333

-1.7919

-1.7895

1.2667

-1.5838

-1.655

-1.6522

1.4

-1.4865

-1.5582

-1.5556

1.5333

-1.4176

-1.4863

-1.4839

1.6667

-1.3661

-1.4308

-1.4286

1.8

-1.3261

-1.3866

-1.3846

1.9333

-1.2941

-1.3506

-1.3488

2.0667

-1.2678

-1.3208

-1.3191

2.2

-1.2459

-1.2956

-1.2941

2.3333

-1.2274

-1.2741

-1.2727

2.4667

-1.2114

-1.2555

-1.2542

2.6

-1.1976

-1.2393

-1.2381

2.7333

-1.1854

-1.225

-1.2239

2.8667

-1.1747

-1.2123

-1.2113

-1.1652

-1.201

-1.2

11.2 Euler
Euler
Euler

11.2 Euler
11.2 Euler
Euler

11.2

Euler

MATLAB

519

Euler
Euler
11.3
Euler x (tn ) xn

tn

Euler

x (tn ) xn

1.00000000000000

1.13333333333333

-0.05614035087719

0.00242174062607

1.26666666666667

-0.06838306337028

0.00280267287422

1.40000000000000

-0.06909129597029

0.00268328752017

1.53333333333333

-0.06627449248420

0.00245014166524

1.66666666666667

-0.06245176126199

0.00221071205650

1.80000000000000

-0.05850877955396

0.00199417361542

1.93333333333333

-0.05476409482802

0.00180594179520

2.06666666666667

-0.05132079487735

0.00164424191367

2.20000000000000

-0.04819660606024

0.00150547093432

2.33333333333333

-0.04537581957138

0.00138594578253

2.46666666666667

-0.04283098563158

0.00128242314890

2.60000000000000

-0.04053212084758

0.00119219615258

2.73333333333333

-0.03845052092338

0.00111305261287

2.86666666666667

-0.03656018267450

0.00104319722111

3.00000000000000

-0.03483816339401

0.00098117330798

13.3 Euler
11.3

MATLAB

520

11.3 Euler Euler


Euler 11.4

11.4 Euler Euler


40 Euler
Euler

11.3 Runge-Kutta

Runge-Kutta RK
19 C.Runge M.W.Kutta
4
RK

MATLAB

521

h
yn+1 = yn + [ K1 + 2 K 2 + 2 K 3 + K 4 ]
6
K1 =

K2 =

K =
3
K =
4

f (tn , yn )
h
h
f (tn + , yn + K1 )
2
2
h
h
f (t n + , y n + K 2 )
2
2
f (tn , yn + hK 3 )

4 RK4 Gill Gill

h
yn +1 = yn + [ K1 + 2 2 K 2 + 2 + 2 K 3 + K 4 ]
6
K1 =

K2 =

K =
3

K4 =

f (tn , yn )
h
h
f (tn + , yn + K1 )
2
2

h
2 1
2
f (t n + , y n +
hK1 + 1
hK 2 )
2
2
2

2
2
f (tn , yn
hK 2 + 1 +
hK 2 )

2
2

4 RK

RK

dy
= y + t2 + 3
dt
y (0) = 1, t [0,3]

MATLAB

522

RK4 MATLAB

\\chapter11.rar\11-3.exe
\\chapter11\
RK4.m, RK_fun.m,RK_main.m

RK4
Editor
% Runge-Kutta Methold to solve the ODE
% by Song yz
%2008/04/18
function [t,y] = RK4(func,t0,tt,y0,N,varagin)
%Rk
%
% t0 tt y0
%N
if nargin<4
N=200
end
% N tt-t0/200
y(1,:) = y0(:)';
h = (tt-t0)/(

N-1); %

t = t0+[0:N]'*h;
for k = 1:N
f1 = h*feval(func,t(k),y(k,:));
f1 = f1(:)';
%

RK k1

f2 = h*feval(func,t(k) + h/2,y(k,:) + f1/2);


f2 = f2(:)';
%

RK k2

f3 = h*feval(func,t(k) + h/2,y(k,:) + f2/2);


f3 = f3(:)';
%

RK k3

f4 = h*feval(func,t(k) + h,y(k,:) + f3);

MATLAB

523

f4 = f4(:)';
%

RK k4

y(k + 1,:) = y(k,:) + (f1 + 2*(f2 + f3) + f4)/6;


%

end
RK4.m

Editor
%RK
function f=RK_fun(t,y)
f=-y+t*t+3;
RK_fun.m

Eidtor
%rk
x0=0;
xt=3;
y0=1;
%
y=dsolve('Dy=-y+t*t+3','y(0)=1','t')
%RK4
[x,yrk] = RK4('RK_fun',x0,xt,y0,20);
%
yreal=subs(y,x);
tol=yreal-yrk;

%RK4

plot(x,yreal,x,yrk,'+',x,tol,'*')
legend('','RK4 ','')
yrk
[x,yrk,tol]
%yrk
RK_main.m

>> RK_main

y=
t^2-2*t+5-4*exp(-t)
yrk =

MATLAB

524

1
1.29338146919812
1.55129058151601
1.78619116002461

M
7.16014988985172
7.80086149708977
8.4864593145814
y yrk RK4

RK4

RK4 11.4
k

t(k)

RK4

0.157894736842105

1.29338146919812

1.14254596494945e-006

0.315789473684211

1.55129058151601

1.65270437579856e-006

0.473684210526316

1.78619116002461

1.69083369550016e-006

0.631578947368421

2.00872656756034

1.38393953408311e-006

0.789473684210526

2.2279856023052

8.31996673777979e-007

0.947368421052632

2.45172955678135

1.13135838475387e-007

1.10526315789474

2.68658611271397

-7.12108039202519e-007

1.26315789473684

2.93821491570005

-1.59732253690592e-006

10

1.42105263157895

3.21144896611772

-2.50738370066728e-006

11

1.57894736842105

3.51041535854462

-3.41614859822315e-006

12

1.73684210526316

3.83863838603276

-4.30458110134424e-006

13

1.89473684210526

4.19912758502056

-5.1592335630346e-006

14

2.05263157894737

4.59445292044586

-5.97102042920739e-006

15

2.21052631578947

5.02680898935604

-6.73423085739699e-006

16

2.36842105263158

5.49806984696849

-7.4457367302827e-006

17

2.52631578947368

6.00983582486212

-8.10436002574022e-006

MATLAB

525

18

2.68421052631579

6.5634735109254

-8.7103698787061e-006

19

2.84210526315789

7.16014988985172

-9.26508497833822e-006

20

7.80086149708977

-9.77056122852815e-006

21

3.15789473684211

8.4864593145814

-1.02293482573401e-005

11.4 RK
RK4 11.5
11.5

11.5

RK4

11.4 RK

RK
RK Fehlberg
RKF
p p+1

MATLAB
ODE45

[t,y] = ODE45(odefun,tspan,y0,options)
t,y odefun tspan
y0 options MATLAB

MATLAB

526

RKF7-8

Lorenz

dy1
dt = ay1 + y2 y3

dy2
= b( y2 2 y3 )

dt
dy3
dt = cy2 y3 3 y1 y2

a=4b=18c=30 y1 (0) = 0, y2 (0) = 0, y3 (0) = 10 10 t [0,100]

\\chapter11.rar\11-4.exe
\\chapter11\
ODE45_fun.m, ODE45_main.m

Lorenz
Editor
%ODE45
% Loreny E.N.Loreny
%,
%,
function dy=ODE45_fun(t,y)
a=4; b=18; c=30;
dy(1)=-a*y(1)+y(2)*y(3);
dy(2)=-b*(y(2)-2*y(3));

MATLAB

527

dy(3)=c*y(2)-y(3)-3*y(2)*y(1);
dy=[dy(1);dy(2);dy(3)];
ODE45_fun.m

Lorenz
Editor
%ODE45 Lorenz
%tspan
tspan=[0,100];
%y0
y0=[0; 0;10^(-10)];
%
[t,y]=ode45('ODE45_fun',tspan,y0);
%
data=[t,y];
save ODE45_data.txt data -ascii
% ASCII
plot3(y(:,1), y(:,2), y(:,3))
grid on
%
title('Lorenz ')
ODE45_main.m

>>ODE45_main
10.6

11.6

MATLAB

528

ODEdata.txt
UltraEdit
11.5

t(k)

y1(t)

y2(t)

y3(t)

0.0000000e+000

0.0000000e+000

0.0000000e+000

1.0000000e-010

6.2500000e-002

1.2373248e-016

9.2468160e-008

-6.3850985e-008

1.2500000e-001

1.8215161e-016

9.6100484e-008

-6.6330562e-008

1.8750000e-001

-4.4156868e-017

-7.7038040e-008

5.9035670e-008

2.5000000e-001

-4.4160292e-016

-8.5484793e-008

8.8399565e-008

2.6860043e-001

1.4530190e-015

4.8631948e-008

9.7618248e-009

9.9956443e+001

9.8474181e+000

-1.0995575e+001

-6.5572591e+000

9.9968747e+001

1.0252154e+001

-1.1401347e+001

-6.4556463e+000

9.9976560e+001

1.0501501e+001

-1.1580830e+001

-6.3038626e+000

9.9984374e+001

1.0733543e+001

-1.1687908e+001

-6.0865370e+000

9.9992187e+001

1.0939255e+001

-1.1715391e+001

-5.8099429e+000

1.0000000e+002

1.1110895e+001

-1.1659827e+001

-5.4839719e+000

11.5 Lorenz

RKF

MATLAB

529

11.5

Adams

Adams

yn+1 = yn +

h
(55 f n 59 f n1 + 37 f n 2 9 f n 3 )
24

yn+1 = yn +

h
(9 f n +1 + 19 f n 5 f n1 + f n 2 )
24

RK yn +1
MATLAB ODE113 Adams
ODE45

[t,y] = ODE113(odefun,tspan,y0,options)
t,y odefun tspan
y0 options

dy1
dt = 3 y1 + 1.5 y2

dy2 = 1.2 y + 0.8 y


1
2
dt
t [0,1]

MATLAB

530

y1 (0) = 0

y2 (0) = 1

\\chapter11.rar\11-5.exe
\\chapter11\
ODE113_fun.m, ODE113_main.m

Editot
% AdamsODE113
function dy = ODE113_fun(t,y)
dy = zeros(2,1);
%
dy(1) = 3*y(1)+1.5*y(2);
dy(2) = 1.2*y(1)+0.8*y(2);
ODE113_fun.m

Editor
%ODE113
%tspan
tspan=[0,1];
%y0
y0=[0; 1];
%
% RK
tic
[trk,yrk]=ode45('ODE113_fun',tspan,y0);
%
rk_time=toc
%
tic
[tad,yad]=ode113('ODE113_fun',tspan,y0);
ad_time=toc
data=[tad,yad];
save ODE113_data.txt data -ascii

MATLAB

531

% ASCII
plot(tad,yad(:,1), tad,yad(:,2))
legend('y(1)','y(2)')
grid on
%
ODE113_main.m

>>ODE113_main

rk_time =
0.0310000000000059
ad_time =
0.0159999999999982

ODE113_data.txt 11.6
tk

y(1)

y(2)

0.0000000e+000

0.0000000e+000

1.0000000e+000

1.6745910e-005

5.0238991e-005

1.0000134e+000

3.3491819e-005

1.0048051e-004

1.0000268e+000

5.0237729e-005

1.5072454e-004

1.0000402e+000

6.6983638e-005

2.0097111e-004

1.0000536e+000

1.5071319e-004

4.5224179e-004

1.0001206e+000

8.7731422e-001

1.2900770e+001

6.9730501e+000

9.0231422e-001

1.3983422e+001

7.5209790e+000

9.2731422e-001

1.5150385e+001

8.1140353e+000

9.5231422e-001

1.6408241e+001

8.7557911e+000

9.6423567e-001

1.7042103e+001

9.0800721e+000

9.7615711e-001

1.7699044e+001

9.4167364e+000

9.8807856e-001

1.8379905e+001

9.7662403e+000

1.0000000e+000

1.9085558e+001

1.0129057e+001

11.6 ODE113

MATLAB

532

CPU

10.7 y1 , y2

11.7

11.6

MATLAB ODE15s
ODE15s
ODE45 ODE15s

ODE15s
[t,y] = ODE15s(odefun,tspan,y0,options)
t,y odefun tspan
y0 options

MATLAB

533

ODE15s

ODE15s

dy1
dt = y2

dy2 = 400(1 y 2 ) y y
1
2
1
dt

[ 0,1000]
y1 ( 0 ) = 0

y2 ( 0 ) = 1

\\chapter11.rar\11-6.exe
\\chapter11\
ODE15s_fun.m, ODE15s_main.m

Editor
%

NDFs ODE15s

function dy = ODE15s_fun(t,y)
dy = zeros(2,1);
%
dy(1) = y(2);
dy(2) = 400*(1 - y(1)^2)*y(2) - y(1);
ODE15s_fun.m

Editor

MATLAB

534

%ODE15s
tic
[t,y] = ode15s(@ODE15s_fun,[0 1000],[0 1]);
ODE15_time=toc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% RK %
%

% tic

% [t,yrk]=ode45(@ODE15s_fun,[0 1000],[0 1]);

% RK_time=toc

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
data=[t,y];
save ODE15s_data.txt data -ascii
%
plot(t,y(:,1),'^')
ODE15s_main.m

>>ODE15s_main

ODE15s_data.txt 11.7

t(k)

y(1)

y(1)

0.0000000e+000

2.0000000e+000

0.0000000e+000

2.3093959e-005

2.0000000e+000

-4.5132437e-005

4.6187917e-005

2.0000000e+000

-8.9072500e-005

6.9281876e-005

2.0000000e+000

-1.3182655e-004

2.3102711e-004

2.0000000e+000

-4.0292962e-004

3.6325809e-004

1.9999999e+000

-5.8903099e-004

4.9548907e-004

1.9999998e+000

-7.4779776e-004

6.2772005e-004

1.9999997e+000

-8.8316528e-004

7.5995103e-004

1.9999996e+000

-9.9857859e-004

9.6111135e-004

1.9999993e+000

-1.1419575e-003

2.9150377e+003

-1.9830232e+000

1.6906234e-003

MATLAB

535

2.9219597e+003

-1.9712613e+000

1.7076801e-003

2.9288817e+003

-1.9593794e+000

1.7253074e-003

2.9358037e+003

-1.9473733e+000

1.7435389e-003

2.9812798e+003

-1.8650452e+000

1.8812815e-003

3.0000000e+003

-1.8292002e+000

1.9492540e-003

11.7 ODE15s

11.8 y1
RK
ODE15s ODE45
ODE15s

11.8
ODE15s 1
ODE45 429.188
ODE45

11.7

MATLAB

536

dny
dy
d n1 y
=
L
f
(
t
,
y
,
,
,
)
dt n
dt
dt n1
t [ a , b ]

y (a) = 1
y '(a ) =

L
y ( n 1) (a ) =

y1 = y
y = y '
2

L
yn = y ( n1)

y1 ' = y2

y2 ' = y3
L
y ' = y
n
n1
yn ' = f (t , y1 , y2 ,L , yn )

y1 (a ) = 1
y (a ) =
2
2

L
yn (a ) = n

MATLAB

MATLAB

537

d 2 y
dy
2t
2 2 + 2 y = e sin t , t [0,1]
dt
dt
y (0) = 0.4, y '(0) = 0.6

\\chapter11.rar\11-7.exe
\\chapter11\
Gaojie_fun.m, Gaojie_main.m

y1 ' = y2

2t
y2 ' = e sin t 2 y1 + 2 y2

t [0,1]

y1 (0) = 0.4
y (0) = 0.6
2
ODE45

Editor
%
function dy = Gaojie_fun(t,y)
dy = zeros(2,1);
%
dy(1) = y(2);
dy(2) = exp(2*t)*sin(t)-2*y(1)+2*y(2);
Gaojie_fun.m

Editor
%
%tspan

MATLAB

538

tspan=[0,1];
%y0
y0=[-0.4;-0.6];
%
[t,y]=ode45('Gaojie_fun',tspan,y0);
%
data=[t,y];
save Gaojie_data.txt data -ascii
% ASCII
plot(t,y(:,1),'*',t,y(:,2),'^')
grid on
Gaojie_main.m

>>Gaojie_main

0.0000000e+000

-4.0000000e-001

-6.0000000e-001

2.5000000e-002

-4.1512120e-001

-6.0954227e-001

5.0000000e-002

-4.3046877e-001

-6.1808541e-001

7.5000000e-002

-4.4601607e-001

-6.2549619e-001

1.0000000e-001

-4.6173297e-001

-6.3163105e-001

9.2500000e-001

-5.1520684e-001

1.7667315e+000

9.5000000e-001

-4.6794658e-001

2.0172849e+000

9.7500000e-001

-4.1417846e-001

2.2875611e+000

1.0000000e+000

-3.5339441e-001

2.5787465e+000

y y

11.9 y

MATLAB

539

11.9

11.8

d 2 x dx g
+
+ x=0
dt 2 m dt l

g
= 2n, = 2
l
m

d 2x
dx
+ 2n + 2 x = 0
2
dt
dt

2 + 2n + 2 = 0

1,2 = n n2 2

Euler

MATLAB

540

eix = cos x + i sin x

x ( t ) = x0 e n t
sin d t + cos d t
1 2

MATLAB
HTML wordLatexXML

MATLAB HTML

\\chapter11.rar\11-8.exe
\chapter11\sp_mass.m, spring_mass.m

Editor
%
% 0 5
%
z = 0.1;
wn = 10;
wd = wn * sqrt(1-z^2);
x0 = 10;

MATLAB

541

t = 0:0.01:5;
%
x = x0 * exp(-z*wn*t) .* (z/sqrt(1-z^2)*sin(wd*t) + cos(wd*t));
ampDecay = x0 * exp(-z*wn*t);

hold on
plot(t,x)
plot(t,ampDecay,'r:')
grid
hold off
box on
%
title('Underdamped Second Order System')
xlabel('Time [s]')

%x

ylabel('Amplitude [cm]')

%y

legend('System Response','Amplitude Decay','Location','SouthEast')


%
x0 = 10;
z = [0.1;0.99;3];
wn = 10;
wd = wn * sqrt(1-z.^2);
t = 0:0.01:5;
A = z./sqrt(1-z.^2);
%
for k = 1:length(z)
x(k,:) = x0 * exp(-z(k)*wn*t) .* (A(k)*sin(wd(k)*t) + cos(wd(k)*t));
end
%
figure
plot(t,x)
grid
%
title('Comparing Second Order Systems with Various Damping Coefficients')
xlabel('Time [s]')
ylabel('Amplitude [cm]')

MATLAB

542

legend('zeta = 0.1','zeta = 0.99','zeta = 3','Location','SouthEast')


sp_mass.m

>>clear
>>clc
11.10 11.11

11.10

11.11

Editor sp_mass.m 11.12

MATLAB

543

11.12
Cell Editor Cell 11.13

11.13 Cell
Editor Cell 11.14

11.14 Cell
4 %%
MATLAB

MATLAB

544

%% Second Order Dynamic Systems and Damping


%
%

This example shows how various second order

% dynamic systems can be visualized. Using the plot


% and annotation commands.
%% Underdamped second order system
% The following equation describes an underdamped second order system:
%
% $$ x(t) = x_0 e^{-\zeta\omega_n t} \left({\zeta \over
% \sqrt{1-\zeta^2}}\sin\omega_dt + \cos\omega_dt \right) $$
%
% Given:
%
% $$ \begin{array}{l}
%

\zeta = 0.1 \\ \omega_n = 10 \\ \omega_d = \omega_n \sqrt{1-\zeta^2}

\\ x_0 = 10 \end{array} $$

%
% Plot the displacement for, t = 0 to 5s
% Initialize Variables
z = 0.1;
wn = 10;
wd = wn * sqrt(1-z^2);
x0 = 10;
t = 0:0.01:5;
% Compute Equation for Displacement and Amplitude Decay Envelope
x = x0 * exp(-z*wn*t) .* (z/sqrt(1-z^2)*sin(wd*t) + cos(wd*t));
ampDecay = x0 * exp(-z*wn*t);
% Create Plots
figure
hold on
plot(t,x)
plot(t,ampDecay,'r:')
grid
hold off
box on
% Label Figure
title('Underdamped Second Order System')

MATLAB

545

xlabel('Time [s]')
ylabel('Amplitude [cm]')
legend('System Response','Amplitude Decay','Location','SouthEast')

%% Comparing effects of different damping coefficients


% The damping coefficient of a system determines if the system is under
% damped, critically damped, or over damped. The systems, with damping
% coefficients 0, 0.99, and 3 are plot to compare their displacements.
% Initialize Variables
x0 = 10;
z = [0.1;0.99;3];
wn = 10;
wd = wn * sqrt(1-z.^2);
t = 0:0.01:5;
A = z./sqrt(1-z.^2);
% Compute Displacements for Each Damping Coefficient
for k = 1:length(z)
x(k,:) = x0 * exp(-z(k)*wn*t) .* (A(k)*sin(wd(k)*t) + cos(wd(k)*t));
end
% Create Plot
figure
plot(t,x)
grid
% Label Figure
title('Comparing Second Order Systems with Various Damping Coefficients')
xlabel('Time [s]')
ylabel('Amplitude [cm]')
legend('zeta = 0.1','zeta = 0.99','zeta = 3','Location','SouthEast')
spring_mass.m MATLAB
MATLAB HTML Editor File
11.15

MATLAB

546

11.15
HTML HTML 11.16

MATLAB

547

11.16 HTML

11.10

11.11

MATLAB

548

11.9

&&
x ( t ) + p ( t ) x& ( t ) + q ( t ) x ( t ) = f ( t )

x ( a ) = , x ( b ) =

1 x1 ( b )

x1 ( t ) + p ( t ) x&1 ( t ) + q ( t ) x1 ( t ) = 0
&&

x1 ( a ) = 1, x&1 ( a ) = 0
2 x2 ( b )

&&
x2 ( t ) + p ( t ) x&2 ( t ) + q ( t ) x2 ( t ) = 0

x2 ( a ) = 0, x&2 ( a ) = 1
3 x3 ( b )

&&
x3 ( t ) + p ( t ) x&3 ( t ) + q ( t ) x3 ( t ) = f ( t )

x3 ( a ) = 0, x&3 ( a ) = 1
4 m

m=

x1 ( b ) x3 ( b )
x2 ( b )

&&
x ( t ) + p ( t ) x& ( t ) + q ( t ) x ( t ) = f ( t )

x ( a ) = , x& ( a ) = m

MATLAB

549

[ 0, 4]

d 2x
2t dx
2
=

x +1
2
2
dt
1 + t dt 1 + t 2

x ( 0 ) = 1.25, x ( 4 ) = 0.95

\\chapter11.rar\11-9.exe
\\chapter11\
daba.m,daba_fun1.m,daba_fun2.m,
daba_main.m

dx1
dt = x2

dx2 = 2t x 2 x + 1
dt 1 + t 2 2 1 + t 2 1

x ( 0 ) = 1.25, x ( 4 ) = 0.95

Editor
function [t,x]=daba(fun1,fun2,t0_tt,x0_xt)
%

08 9

%fun1 1
%fun2 2

%t0_tt(1)

MATLAB

550

%t0_tt(2)
%x0_xt(1)

%x0_xt(2)

x0_xt

[t,x1]=ode45(fun1,t0_tt,[1;0]);
[t,x2]=ode45(fun1,t0_tt,[0;1]);
[t,x3]=ode45(fun2,t0_tt,[0;0]);
m=(x0_xt(2)-x0_xt(1)*x1(end,1)-x3(end,1))/x2(end,1);
[t,x]=ode45(fun2,t0_tt,[x0_xt(1);m]);
daba.m

Edior
function dx=daba_fun1(t,x)
%
dx1=x(2);
dx2=2*t/(1+t.^2).*x(2)-2/(1+t.^2)*x(1);
dx=[dx1,dx2]'; %
daba_fun1.m

Editor
function dx=daba_fun2(t,x)
%
dx1=x(2);
dx2=2*t/(1+t.^2).*x(2)-2/(1+t.^2)*x(1)+1;
dx=[dx1,dx2]'; %
daba_fun2.m

Editor
function daba_main
%
[t,x]=daba('daba_fun1','daba_fun2',[0,4],[1.25,-0.95]);
subplot(2,1,1)
plot(t,x)
grid
title('')
subplot(2,1,2)
plot(x(:,1),x(:,2))
grid

MATLAB

551

title('')
z=[t,x(:,1)];
daba_main.m

>>clear
>>clc
>> daba_main

11.17

11.17

11.8

1.25

0.016280961

1.257715664

0.032561921

1.265033806

0.048842882

1.271954635

0.065123842

1.278478503

0.146528646

1.305169238

0.227933449

1.322067694

MATLAB

552

0.309338252

1.329361087

0.390743055

1.327322968

10

0.490743055

1.312562574

36

3.090743055

-0.888900607

37

3.190743055

-0.937802676

38

3.290743055

-0.977563983

39

3.390743055

-1.007621196

40

3.490743055

-1.027424754

41

3.590743055

-1.036438456

42

3.693057291

-1.033947923

43

3.795371527

-1.019067863

44

3.897685764

-0.991264092

45

-0.950014847

11.8

MATLAB

MATLAB
MATLAB

MATLAB

553

1 Euler

dy y
y
= + tan
dt t
t
y ( 0 ) = 2 , t = [ 0, 20]

sin

y
= cx
t

2 RK
y ' = e 2 t 2 y

y ( 0) =

1
10

y (t ) =

1 2t
e + te 2t
10

3
d 2x
dx
(1 x 2 ) + x = 0
2
dt
dt
x ( 0 ) = 1, x& ( 0 ) = 0

dy1
= y2
y1 ( 0 ) = 1
dt
,

dy2 = (1 y )2 y y y2 ( 0 ) = 0
1
2
1
dt
11.18.

MATLAB

554

11.18
11.9
1

y(1)

y(2)

5.02E-05

0.999999999

-5.02E-05

0.000100475

0.999999995

-0.000100475

0.000150713

0.999999989

-0.000150713

0.000200951

0.99999998

-0.000200951

0.00045214

0.999999898

-0.00045214

0.000703328

0.999999753

-0.000703328

0.000954517

0.999999544

-0.000954517

0.001205705

0.999999273

-0.001205705

0.002461649

0.99999697

-0.002461646

29.30101612

-1.992623572

0.261162415

29.35441068

-1.977037304

0.32134294

29.40780525

-1.958455698

0.373087341

29.46119981

-1.937299751

0.418011868

29.52683897

-1.908263144

0.46591279

29.59247814

-1.876290087

0.507619257

29.6581173

-1.841720064

0.544776312

29.72375646

-1.804823467

0.578725063

29.79281734

-1.763694911

0.612147997

29.86187823

-1.72030925

0.644185013

29.93093911

-1.67473049

0.675662908

30

-1.626977031

0.707290074

11.9 3

MATLAB

555

x 6678.137000 km
y
km
-0.000000
z -0.000000
km
=
vx -0.000000 km/sec
v y 6.789530 km/sec

v 3.686414 km/sec
z

3 2

GE = 3.986005 10 m s
14

&r& =

GE
r
r2

12.4
11.9
time(min)

xkm

ykm

zkm

6678.137

6662.055548

407.044772

221.007279

6613.888644

812.129155

440.950153

6533.868265

1213.302203

658.769347

6422.379802

1608.631807

873.415808

6279.960201

1996.214

1083.855769

6107.295375

2374.182129

1289.075719

5905.216904

2740.715843

1488.087288

5674.698028

3094.04986

1679.932007

5416.84896

3432.482472

1863.685922

10

5132.911539

3754.383737

2038.464049

11

4824.253251

4058.20333

2203.424628

12

4492.36064

4342.47801

2357.773186

13

4138.832151

4605.838669

2500.766357

14

3765.370428

4847.016922

2631.715464

15

3373.774121

5064.851219

2749.989837

16

2965.929214

5258.292437

2855.019849

17

2543.799949

5426.408935

2946.29966

18

2109.419365

5568.391038

3023.389652

19

1664.879503

5683.554939

3085.918548

20

1212.321332

5771.345992

3133.585201

21

753.924442

5831.341383

3166.16004

MATLAB

556

22

291.896538

5863.252164

3183.486181

23

-171.537182

5866.924648

3185.480177

24

-634.144754

5842.341148

3172.132426

25

-1093.69819

5789.620063

3143.507212

26

-1547.984213

5709.015303

3099.742398

27

-1994.814912

5600.915075

3041.048763

28

-2432.038286

5465.840004

2967.708984

29

-2857.548601

5304.440633

2880.076275

30

-3269.296535

5117.494285

2778.57269

31

-3665.29905

4905.901322

2663.687085

32

-4043.648938

4670.680806

2535.972765

33

-4402.52401

4412.965595

2396.044822

34

-4740.19587

4133.996883

2244.57717

35

-5055.03824

3835.118227

2082.2993

36

-5345.534791

3517.769068

1909.992766

37

-5610.286451

3183.47781

1728.487422

38

-5848.018134

2833.854448

1538.657424

39

-6057.584889

2470.58282

1341.417023

40

-6237.977413

2095.412497

1137.716158

41

-6388.326907

1710.150355

928.535882

42

-6507.909266

1316.651873

714.883639

43

-6596.148564

916.8122

497.78841

44

-6652.619827

512.557023

278.295757

45

-6677.051081

105.833295

57.462791

46

-6669.324661

-301.400143

-163.646925

47

-6629.477779

-707.181992

-383.968493

48

-6557.702343

-1109.557947

-602.440811

49

-6454.344035

-1506.590106

-818.011685

50

-6319.900644

-1896.366302

-1029.642892

51

-6155.019669

-2277.009315

-1236.315186

52

-5960.495202

-2646.685912

-1437.033201

53

-5737.264101

-3003.615675

-1630.83025

54

-5486.40148

-3346.079577

-1816.772978

55

-5209.115532

-3672.428261

-1993.965856

56

-4906.741707

-3981.089983

-2161.555497

57

-4580.736282

-4270.578181

-2318.734764

58

-4232.669348

-4539.498639

-2464.746659

59

-3864.217247

-4786.556194

-2598.887967

60

-3477.1545

-5010.56098

-2720.512643

11.9
11.10
time(min)

dx/dt(km/s)

dy/dt(km/s)

dz/dt(km/s)

MATLAB

557

6.78953

3.686414

-0.535833

6.773181

3.677537

-1.069086

6.72421

3.650948

-1.597189

6.642855

3.606776

-2.117601

6.529507

3.545233

-2.627813

6.384712

3.466616

-3.12537

6.209167

3.371303

-3.607874

6.003718

3.259753

-4.073003

5.769354

3.132503

-4.518515

5.507204

2.990168

10

-4.942265

5.21853

2.833431

11

-5.342213

4.904723

2.663047

12

-5.716432

4.567295

2.479839

13

-6.063119

4.207869

2.284687

14

-6.380606

3.828178

2.078531

15

-6.667363

3.43005

1.862365

16

-6.922009

3.015402

1.63723

17

-7.143317

2.586231

1.404209

18

-7.330222

2.144605

1.164426

19

-7.481824

1.69265

0.919034

20

-7.597392

1.232543

0.669216

21

-7.676369

0.7665

0.416176

22

-7.718377

0.296765

0.16113

23

-7.723211

-0.174398

-0.094691

24

-7.690849

-0.644722

-0.350056

25

-7.621447

-1.111941

-0.603735

26

-7.515339

-1.573805

-0.854506

27

-7.373037

-2.028089

-1.101162

28

-7.195224

-2.472605

-1.342515

29

-6.982758

-2.905213

-1.577402

30

-6.736662

-3.323829

-1.804692

31

-6.458121

-3.726437

-2.02329

32

-6.148477

-4.111098

-2.232144

33

-5.809222

-4.475959

-2.430248

34

-5.441988

-4.819264

-2.616647

35

-5.048544

-5.139358

-2.790444

36

-4.630786

-5.4347

-2.950801

37

-4.190726

-5.703868

-3.096947

38

-3.730482

-5.945565

-3.228178

39

-3.252272

-6.158627

-3.343862

40

-2.758398

-6.342029

-3.443441

41

-2.251239

-6.494886

-3.526435

MATLAB

558

42

-1.733239

-6.616463

-3.592446

43

-1.20689

-6.706174

-3.641156

44

-0.674729

-6.763587

-3.672328

45

-0.139319

-6.788426

-3.685815

46

0.396763

-6.780571

-3.68155

47

0.930933

-6.740059

-3.659554

48

1.46062

-6.667087

-3.619933

49

1.983273

-6.562004

-3.562878

50

2.496374

-6.425318

-3.488663

51

2.997452

-6.257687

-3.397647

52

3.484094

-6.059918

-3.290267

53

3.953955

-5.832963

-3.167041

54

4.404774

-5.577916

-3.028561

55

4.834379

-5.296005

-2.875496

56

5.240701

-4.988588

-2.708582

57

5.621783

-4.657144

-2.528623

58

5.975789

-4.303272

-2.336486

59

6.301016

-3.928674

-2.133096

60

6.595895

-3.535154

-1.919432

11.10

11.19

11.19

MATLAB

559

()

MATLAB

12.1

1957

Jacobi 5 5

[ M ] = m1 + m2
[ L ] = a12
1

2
a 212
T
=
[ ]

G ( m1 + m2 )

MATLAB

560

1 =
=

m1
m1 + m2

m2
m1 + m2

r '1 = , r '2 = 1

xx
x x2
x 2 y& x = (1 ) 3 1
&&
r1
r23

y + 2 x& y = 3 + 3 y
&&
r2
r1

1
&&
z = 3 + 3 z
r2

r1

Orbitial Motion A.E.Roy Adam Hilger Ltd,Bristol

U=

1 2
1
x + y2 ) +
+
(
2
r1
r2

y&
U
&&
r + 2 x& =
0 r

5
Jacobi

Jacobi

MATLAB

561


12.1-
-

0.00000017

0.00000245

0.00000304

0.00000032

0.00095388

0.0002855

0.00004373

0.00005177

0.00000278

1/328900.5

0.01230002

12.1

\\chapter12.rar\12-1.exe
\\
chapter12\pingdong_1.m, pingdong_2.m,
pingdong_3.m, pingdong_main.mmoon_pingdong.m

U
=0
r

(1 )( x ) ( x + 1 )

=0
x
r13
r2 3

y 1 3 3 = 0
r1
r2


z 1 + = 0
r13
r23

MATLAB

562

1
+ 3 0
r13
r2

z = z0 = 0
xy

(1 )

= 0,
x +
( L1 )
2
2
( x ) ( x +1 )

(1 ) +

y = 0, x +
= 0,
( L2 )
2
2
( x ) ( x +1 )

x (1 )
= 0,
( L3 )
2
( x ) ( x + 1 )2

1
1 r 3 r 3 = 0
1
2

y 0,
x (1 )( x ) ( x + 1 ) = 0

r13
r23
r1 = r2 = 1

L1

(1)

1
1
1

3 1 3 1 3
= 1 L

3 3 3 9 3

L2

( 2)

L3

1
1
2

3 1 3 1 3
= 1 + L

3 3 3 9 3

MATLAB

563

( 3)
= 1

= 7

12

23 2 23 3 761 4 3163 5 30703 6


8
1 + 84 + 84 + 2352 + 7056 + 49392 + O ( )

Editor
function f=pingdong_1(x,u)
% 1
f=x+(1-u)/(x-u)^2-u/(x+1-u)^2;
pingdong_1.m

Editor
function f=pingdong_2(x,u)
% 2
%08 9
f=x+(1-u)/(x-u)^2+u/(x+1-u)^2;
pingdong_2.m

Editor
function f=pingdong_1(x,u)
% 3
f=x-(1-u)/(x-u)^2-u/(x+1-u)^2;
pingdong_3.m

Editor
%%%%
%
%08 9 22
%by song yezhi
%
u=[0.00000017
0.00000245
0.00000304
0.00000032
0.00095388
0.00028550
0.00004373
0.00005177

MATLAB

564

0.00000278
1/328900.5
];
au=1.49597870*10^11;
n=length(u);
%%%%%%%%%%%%
% L1
for i=1:n
%temp3 1
%
%
temp1=(u(i)/3)^(1/3);
temp2=1-1/3*(u(i)/3)^(1/3)-1/9*(u(i)/3)^(2/3);
temp3=temp1*temp2;
% L1
x1(i)=fzero(@pingdong_1,temp3,[],u(i));
end
disp(' L1 ')
x1=x1'
disp('L1 /m')
x1_length=x1*au

%%%%%%%%%%%%%%%%%%%%%%%
% L2
for i=1:n
%temp3
temp1=(u(i)/3)^(1/3);
temp2=1+1/3*(u(i)/3)^(1/3)-1/9*(u(i)/3)^(2/3);
temp3=temp1*temp2;
x2(i)=fzero(@pingdong_2,temp3,[],u(i));
end
disp(' L2 ')
x2=x2'
disp('L2 /m')

P41

MATLAB

565

x2_length=x2*au

%%%%%%%%%%%%%%
% L3
for i=1:n
%
v=7/12*u(i);
temp=1-v-23/84*v^2;
x3(i)=fzero(@pingdong_3,temp,[],u(i));
end
disp(' L3 ')
x3=x3'
disp('L3 /m')
x3_length=x3*au
pingdong_main.m

>> pingdong_main

L1
x1 =
-0.996163769352778
-0.990679557065541
-0.989986445920769
-0.995264664262998
-0.932365477089808
-0.954761095327977
-0.975728645856398
-0.974330849965494
-0.990279675377774
-0.98998597161676
L1 /m

MATLAB

566

x1_length =
-149023978066.347
-148203551589.548
-148099863638.617
-148889473860.01
-139479889434.169
-142830226219.932
-145966927118.101
-145757819830.128
-148143730140.806
-148099792683.748
L2
x2 =
-1.00384572606724
-1.00937378898162
-1.01007473104683
-1.00474969004607
-1.06883063216757
-1.04605714797714
-1.02458167566631
-1.02601075986593
-1.00977812996479
-1.01007521087362
L2 /m
x2_length =
-150173182428.263
-151000168865.48
-151105028305.429
-150308413514.052
-159894785963.022
-156487921235.656
-153275236320.711
-153489024273.025
-151060657415.315
-151105100086.494

MATLAB

567

L3
x3 =
1.00000007083333
1.00000102083333
1.00000126666667
1.00000013333333
1.0003974499528
1.00011895833207
1.00001822083333
1.00002157083333
1.00000115833333
1.00000126684717
L3 /m
x3_length =
149597880596.516
149598022714.492
149598059490.635
149597889946.383
149657327666.371
149615665913.096
149600595797.856
149601096950.72
149598043284.199
149598059517.638

Editor
%%%%%%%%%%%%
%
%08/9/22
u_e_m=0.01230002; %
l_e_m=384401;

x1=fzero(@pingdong_1,-0.837,[],u_e_m)
x2=fzero(@pingdong_2,-1.157,[],u_e_m)
x3=fzero(@pingdong_3,1.005,[],u_e_m)

MATLAB

568

disp('/km')
l1_m=x1*l_e_m

% L1

l2_m=x2*l_e_m

% L2

l3_m=x3*l_e_m % L3
moon_pingdong.m

>>clear
>>clc
>> moon_pingdong

x1 =
-0.836182334991025

x2 =
-1.15625411551325

x3 =
1.00512490646298
/km
l1_m =
-321429.325752885

l2_m =
-444465.238257408

l3_m =
386371.019169275

MATLAB

569

12.2

0.00000017

-1.003845726

-0.996163769

1.000000071

0.00000245

-1.009373789

-0.990679557

1.000001021

0.00000304

-1.010074731

-0.989986446

1.000001267

0.00000032

-1.00474969

-0.995264664

1.000000133

0.00095388

-1.068830632

-0.932365477

1.00039745

0.0002855

-1.046057148

-0.954761095

1.000118958

0.00004373

-1.024581676

-0.975728646

1.000018221

0.00005177

-1.02601076

-0.97433085

1.000021571

0.00000278

-1.00977813

-0.990279675

1.000001158

1/328900.5

-1.010075211

-0.989985972

1.000001267

12.2
12.3

0.00000017

-150173182428

-149023978066

149597880597

0.00000245

-151000168865

-148203551590

149598022714

0.00000304

-151105028305

-148099863639

149598059491

0.00000032

-150308413514

-148889473860

149597889946

0.00095388

-159894785963

-139479889434

149657327666

0.0002855

-156487921236

-142830226220

149615665913

0.00004373

-153275236321

-145966927118

149600595798

0.00005177

-153489024273

-145757819830

149601096951

0.00000278

-151060657415

-148143730141

149598043284

1/328900.5

-151105100086

-148099792684

149598059518

12.3 m
12.4

-0.836182335

-321429.3258

-1.156254116

-444465.2383

1.005124906

386371.0192

12.4

MATLAB

570

12.2 Jacobi

y&
U
&&
r + 2 x& =
0 r

U=

1 2
1
+
x + y2 ) +
(
r1
r2
2

Jacobi
x& , y& , z&

&&& + yy
&&& + zz
&&& =
xx

U
U
U
x& +
y& +
z&
x
y
x

1 d 2
dU
x& + y& 2 + z& 2 ) =
(
2 dt
dt

2U ( x& 2 + y& 2 + z& 2 ) = C

v 2 = x& 2 + y& 2 + z& 2

2U v 2 = C
123

Ci ( ) = 2U x ( )i , 0, 0 , i = 1, 2,3
45

MATLAB

571

Ci ( ) = 2U ( xi , yi , 0 ) , i = 4,5
45

C4 = C5 = 3
123

Ci ( ) = xi 2 ( ) + (1 ) + 2
+

xi ( ) xi ( ) + (1 )

Jacobi

l
l

Ci ( )

Ci ( )

12.1
Jacobi

\\chapter12.rar\12-2.exe
\\chapter12\pingdong_1.m,pingdong_2.m,
pingdong_3.m, pingdong_jaco.m,pingdong_jaco_main.m

1 12.1 pingdong_1.m MATLAB


2 12.1 pingdong_2.m MATLAB
3 12.1 pingdong_3.m MATLAB
12.1 Editor

function [u,x1,x2,x3]=pingdong

MATLAB

572

%U
%x1 1
%x2 2
%x3 3
%08 9 22
%by song yezhi
%
u=[0.00000017
0.00000245
0.00000304
0.00000032
0.00095388
0.00028550
0.00004373
0.00005177
0.00000278
1/328900.5
0.01230002
];
n=length(u);
%%%%%%%%%%%%
% L1
for i=1:n
%temp3 1
temp1=(u(i)/3)^(1/3);
temp2=1-1/3*(u(i)/3)^(1/3)-1/9*(u(i)/3)^(2/3);
temp3=temp1*temp2;
% L1
x1(i)=fzero(@pingdong_1,temp3,[],u(i));
end
% L1
x1=x1';

%%%%%%%%%%%%%%%%%%%%%%%
% L2
for i=1:n

MATLAB

573

%temp3
temp1=(u(i)/3)^(1/3);
temp2=1+1/3*(u(i)/3)^(1/3)-1/9*(u(i)/3)^(2/3);
temp3=temp1*temp2;
x2(i)=fzero(@pingdong_2,temp3,[],u(i));
end
% L2
x2=x2';

%%%%%%%%%%%%%%
% L3
for i=1:n
%
v=7/12*u(i);
temp=1-v-23/84*v^2;
x3(i)=fzero(@pingdong_3,temp,[],u(i));
end
% L3
x3=x3';
pingdong_jaco.m

Editor
% Jacobi
%9 22
[u,x1,x2,x3]=pingdong_jaco;
%u
%x1 1
%x2 2
%x3 3
n=length(x1);
jaco=@(x,u)(x^2+u*(1-u))+2*(1-u)/abs(x-u)+2*u/abs(x+(1-u));
% x1 jacobi
for i=1:n
c1(i)=jaco(x1(i),u(i));

MATLAB

574

end
c1=c1'
% x2 jacobi
for i=1:n
c2(i)=jaco(x2(i),u(i));
end
c2=c2'
% x3 Jacobi
for i=1:n
c3(i)=jaco(x3(i),u(i));
end
c3=c3'
pingdong_jaco_main.m

>> pingdong_jaco_main

c1 =
3.00013238200409
3.00078062215388
3.00090089857876
3.00020167766499
3.03971392746425
3.01809699503865
3.0052687679284
3.00588966478798
3.00084896576314
3.00090098382621
3.20186401368308

c2 =
3.00013215533707
3.00077735545817
3.0008968452041
3.0002012509973
3.03844183424838

MATLAB

575

3.01771627648673
3.00521045824658
3.00582063419199
3.00084525906077
3.00089692987394
3.18548480183006

c3 =
3.00000033999997
3.00000489999387
3.00000607999057
3.0000006399999
3.00190683098457
3.000570916787
3.00008745804783
3.000103537264
3.00000555999211
3.00000608085697
3.02444522500393

Jacobi 12.5

0.00000017000

3.00013215534

3.00013238200

3.00000034000

0.00000245000

3.00077735546

3.00078062215

3.00000489999

0.00000304000

3.00089684520

3.00090089858

3.00000607999

0.00000032000

3.00020125100

3.00020167766

3.00000064000

0.00095388000

3.03844183425

3.03971392746

3.00190683098

0.00028550000

3.01771627649

3.01809699504

3.00057091679

0.00004373000

3.00521045825

3.00526876793

3.00008745805

0.00005177000

3.00582063419

3.00588966479

3.00010353726

0.00000278000

3.00084525906

3.00084896576

3.00000555999

0.00000304043

3.00089692987

3.00090098383

3.00000608086

0.01230002000

3.18548480183

3.20186401368

3.02444522500

12.5 Jacobi

MATLAB

576

12.3

L1 , L2 , L3 L4 , L5

-Trojan

y&
U
&&
r + 2 x& =
0 r

x0 = a, y0 = b, z0 = 0
, ,

2U
2U
&&
2& = 2 +

x 0
xy 0

2U
2U
&&
&
+ 2 =
+ 2
yx 0
y 0

2
&& = U
2

z 0

4 + ( 4 U xx U yy ) 2 + U xxU yy U xy 2 = 0

U xx ( L45 ) = 4

U ( L ) = 9
yy 45
4

3 3
1
U xy ( L4 ) =

2
2

U ( L ) = 3 3 1

xy 5
2
2

MATLAB

577

4 + 2 +

27
(1 ) = 0
4

1,2 = S1

3,4 = S 2

S1,2 = 1 1 + 1 27 (1 )

2
0 < 1 27 (1 ) < 1

1
69
< 1
0.385
2
9

L4 L5

L4
= 0.01

\\chapter12.rar\12-3.exe

MATLAB

578

\\chapter12\sanjiao.m


Editor
% L4
%
t1=0:0.5:200;
%
syms t
x=3.45e-5*cos(0.268*t)-2.45e-5*cos(0.963*t)...
+3.07e-4*sin(0.268*t)-8.55e-5*sin(0.963*t);
y=5.20e-5*cos(0.268*t)-4.20e-5*cos(0.963*t)...
-1.76e-4*sin(0.268*t)+4.9e-5*sin(0.963*t);
%
vx=diff(x,t);
vy=diff(y,t);
%
x1=subs(x,t,t1);
y1=subs(y,t,t1);

vx1=subs(vx,t,t1);
vy1=subs(vy,t,t1);

subplot(2,2,1)
plot(x1,y1)
title('')
grid
subplot(2,2,2)
plot(vx1,vy1)
title('')
grid
subplot(2,2,3)
plot(x1,vx1)

MATLAB

579

title('x ')
grid
subplot(2,2,4)
plot(y1,vy1)
title('y ')
grid
%
key=[t,x1,y1]
sanjiao.m

>>clear
>>clc
>> sanjiao
12.1

12.1

-
12.6

MATLAB

580

0.000

0.00001000000000

0.00001000000000

0.500

0.00001389550743

0.00001348805335

1.000

0.00003038442874

0.00001977833508

1.500

0.00006396134252

0.00002231224219

2.000

0.00011480480908

0.00001537207327

2.500

0.00017859667023

-0.00000452659785

3.000

0.00024737411759

-0.00003775180421

3.500

0.00031122309931

-0.00008138376969

4.000

0.00036043009251

-0.00012979574720

4.500

0.00038760477405

-0.00017585652027

194.000

0.00038549679358

-0.00022636825828

194.500

0.00035473120036

-0.00024457744344

195.000

0.00030286277764

-0.00024561208151

195.500

0.00023777266742

-0.00022887975434

196.000

0.00016935085916

-0.00019714538255

196.500

0.00010733528715

-0.00015592113521

197.000

0.00005920181455

-0.00011224353040

197.500

0.00002858304517

-0.00007311526294

198.000

0.00001457339128

-0.00004396533229

198.500

0.00001207607239

-0.00002747669204

199.000

0.00001311060929

-0.00002304689546

199.500

0.00000878082979

-0.00002700311661

200.000

-0.00000854688114

-0.00003352125284

12.6

12.4

MATLAB

581

v
uv
uv
uv
uv
uv
uv
uv
uv
d 2 r uv
=
F
TB + F NB + F NS + F TD + F RL + F SR + F AL + F DG + F TH
dt 2

uv
F
uv TB
F
uv NB
F
uv NS
F
uvTD
F
uv RL
F
uv SR
F
uv DG
F TH

J 2

Kepler

da
2
=
[e( S sin f + T cos f ) + T ]
dt n 1 e 2
de
1 e2
=
( S sin f + T cos f ) + T cos E
dt
na
di
r cos u
=
W
dt na 2 1 e2
d
r sin u
1
=
W
dt na 2 1 e 2 sin i
d
d
1
= cos i
+
1 e2 ( S cos f + T sin f ) + T sin E

dt
dt nae
dM
2 r
1 e2
= n ( )S
1 e 2 ( S cos f + T sin f ) + T sin E

dt
na a
nae
J 2

MATLAB

582

dx
1
dt
dx
2
dt
dx3

dt
dx4

dt

dx5
dt

dx6

dt

r =

= x4
= x5
= x6

z2
Re
1

7.5
1.5
J

2
r
r

x
z
R
= 13 1 J 2 e 7.5 2 1.5
r
r
r

x
z
R
= 13 1 J 2 e 7.5 2 4.5
r
r
r

x1
r3

x12 + x2 2 + x32

67378.140km

ae3 2
T
=
[ ] GE 806.8116341s

MATLAB

1 Jul 2007 12:00:00.000 UTCG

MATLAB

583

6678.41km
a

e 28.5o

= 0

M 0

6678.137000
0.000000

r = 0.000000
km, v = 6.789530
0.00000

3.686414

km / s

J 2 4

\\chapter12.rar\12-4.exe
\ \chapter12\erti.m,

erti_j2.m,

weixing_waitui.m,weixing_waitui_j2.m,weixing_main.m

Editor
function dx=weixing(t,x)
%
r=sqrt(x(1)^2+x(2)^2+x(3)^2);
dx1=x(4);
dx2=x(5);
dx3=x(6);
dx4=-x(1)/r^3;
dx5=-x(2)/r^3;
dx6=-x(3)/r^3;
%
dx=[dx1 dx2 dx3 dx4 dx5 dx6]';
erti.m

MATLAB

584

Editor
function dx=weixing(t,x)
% J2
J2=0.00108263;
r=sqrt(x(1)^2+x(2)^2+x(3)^2);
dx1=x(4);
dx2=x(5);
dx3=x(6);
dx4=-x(1)/r^3*(1-J2/r*(7.5*x(3)^2/r^2-1.5));
dx5=-x(2)/r^3*(1-J2/r*(7.5*x(3)^2/r^2-1.5));
dx6=-x(3)/r^3*(1-J2/r*(7.5*x(3)^2/r^2-4.5));
dx=[dx1 dx2 dx3 dx4 dx5 dx6]';
erti_j2.m

Editor
%
function [t,r,v]=weixing_waitui(x0,v0,tspan)
%x0,v0
%tspan

a=6378.140;
T=806.811665;

%
x0=x0/a;
v0=v0/a*T;
r0=[x0 v0]';
%
ts=tspan*60/806.811665;

kmkm/s

MATLAB

585

%------------
[tt,yy]=ode45(@erti,ts,r0);
%
% km km/s
r=yy(:,1:3)*a;
v=yy(:,4:6)*a/T;
t=tspan(1)+tt*806/60;
weixing_waitui.m

Editor
function [t,r,v]=weixing_waitui_j2(x0,v0,tspan)
% J2
%x0,v0
%tspan

kmkm/s

a=6378.140; %
T=806.811665; %
%
x0=x0/a;
v0=v0/a*T;
r0=[x0 v0]';
%
ts=tspan*60/806.811665;
%----------- J2
[tt,yy]=ode45(@erti_j2,ts,r0);
%
% km km/s
r=yy(:,1:3)*a;

MATLAB

586

v=yy(:,4:6)*a/T;
t=tspan(1)+tt*806/60;
weixing_waitui_j2.m

Editor
%
%08 9 25
%%
x0=[6678.137000 0.000000
v0=[ 0.000000
%

kmkm/2

0.00000];

6.789530 3.686414];

%[0240] 4
tspan=[0,240];
%
[t,r,v]=weixing_waitui(x0,v0,tspan);
x=[t,r,v]; % t r kmv km/s
%
subplot(2,1,1)
plot3(r(:,1),r(:,2),r(:,3))
title('')
grid

%
[t2,r2,v2]=weixing_waitui_j2(x0,v0,tspan);
x2=[t2,r2,v2];
% J2
subplot(2,1,2)
plot3(r2(:,1),r2(:,2),r2(:,3))
title('')
grid

MATLAB

figure
% x
subplot(2,2,1)
plot(t,r(:,1)-r2(:,1))
title('x ')
grid
%y
subplot(2,2,2)
plot(t,r(:,2)-r2(:,2))
title('y ')
grid
%z
subplot(2,2,3:4)
plot(t,r(:,3)-r2(:,3))
title('z ')
grid
weixing_main.m

>>clear
>>clc
>>weixing_main.m
12.2 12.3

587

MATLAB

588

12.2

12.3

12.2 12.3
240 4 y z

MATLAB

589

x

12.4

12.4

12.4

12.5 24
24 1 Jul 2007 12:00:00.000 UTCG
12.5

12.7

xkm

y(km)

z(km)

vx(km/s)

vy(km/s)

vz(km/s)

6678.137

6.78953

3.686414

0.00074

6678.137

0.301692

0.163806

-0.0004

6.78953

3.686414

0.00148

6678.137

0.603385

0.327611

-0.00079

6.78953

3.686414

0.00222

6678.137

0.905077

0.491417

-0.00119

6.78953

3.686414

0.002959

6678.137

1.20677

0.655223

-0.00159

6.78953

3.686414

0.006659

6678.136

2.715232

1.474251

-0.00357

6.789529

3.686414

MATLAB

590

0.010358

6678.135

4.223694

2.293279

-0.00556

6.789528

3.686413

0.014057

6678.134

5.732155

3.112306

-0.00755

6.789527

3.686412

0.017756

6678.132

7.240617

3.931334

-0.00953

6.789525

3.686411

0.036252

6678.116

14.78291

8.026467

-0.01946

6.789508

3.686402

0.054748

6678.089

22.32519

12.12159

-0.02939

6.789481

3.686387

0.073244

6678.051

29.86742

16.21669

-0.03932

6.789442

3.686366

0.09174

6678.001

37.40961

20.31176

-0.04925

6.789392

3.686339

0.18422

6677.59

75.11937

40.78649

-0.09889

6.788974

3.686112

0.276699

6676.903

112.826

61.25953

-0.14852

6.788275

3.685733

0.369179

6675.94

150.528

81.73005

-0.19815

6.787296

3.685201

0.461659

6674.702

188.2238

102.1972

-0.24778

6.786037

3.684518

0.924057

6664.377

376.5551

204.4527

-0.4957

6.77554

3.678818

1.386455

6647.173

564.4977

306.4972

-0.7431

6.75805

3.669322

1.848854

6623.109

751.8575

408.2253

-0.98974

6.733584

3.656038

2.311252

6592.209

938.4414

509.5321

-1.23536

6.702169

3.638981

4.402897

6367.932

1767.626

959.7426

-2.32698

6.474305

3.515261

6.494543

6009.402

2559.459

1389.673

-3.36973

6.109661

3.317275

8.586188

5524.285

3297.201

1790.234

-4.34154

5.61581

3.049136

10.67783

4922.63

3965.394

2153.033

-5.22171

5.003663

2.716767

13.75616

3851.245

4792.822

2602.29

-6.31439

3.917974

2.127286

16.83449

2604.668

5401.372

2932.706

-7.11691

2.647808

1.437642

19.91282

1240.691

5763.136

3129.127

-7.58934

1.246166

0.676613

22.99115

-179.308

5860.029

3181.736

-7.71641

-0.21155

-0.11486

25.79228

-1466.22

5713.005

3101.908

-7.53132

-1.52511

-0.82807

28.5934

-2697.03

5348.931

2904.233

-7.05596

-2.78545

-1.51238

31.39453

-3824.31

4781.466

2596.124

-6.30402

-3.94478

-2.14184

34.19566

-4804.58

4030.831

2188.563

-5.3095

-4.95633

-2.69107

37.26245

-5664.04

3031.176

1645.794

-3.99255

-5.84913

-3.17582

40.32925

-6261.53

1891.969

1027.255

-2.47876

-6.47221

-3.51412

43.39604

-6568.26

666.3514

361.7993

-0.83197

-6.79064

-3.68702

46.46284

-6566.99

-589.509

-320.077

0.858498

-6.79452

-3.68912

49.21114

-6301.75

-1693.12

-919.288

2.339258

-6.53333

-3.54731

51.95945

-5798.17

-2732.31

-1483.52

3.739345

-6.0203

-3.26875

54.70776

-5074.81

-3667.08

-1991.06

5.00413

-5.27051

-2.86166

57.45607

-4157.45

-4461.19

-2422.23

6.082152

-4.31742

-2.34417

60.43441

-2983.03

-5126.8

-2783.63

6.99169

-3.102

-1.68425

63.41274

-1674.39

-5560.6

-3019.16

7.584554

-1.73735

-0.9433

66.39108

-291.307

-5742.41

-3117.87

7.827328

-0.28192

-0.15307

69.36942

1104.106

-5662.04

-3074.24

7.716244

1.187107

0.644546

72.03522

2312.099

-5369.29

-2915.28

7.325723

2.452953

1.331845

74.70103

3435.268

-4880.43

-2649.86

6.664006

3.631495

1.971741

MATLAB

591

77.36684

4432.25

-4213.54

-2287.76

5.752804

4.67859

2.540267

80.03264

5266.382

-3392.21

-1841.82

4.632204

5.554264

3.015719

82.95274

5956.845

-2350

-1275.94

3.219657

6.280308

3.409929

85.87284

6385.735

-1205.07

-654.302

1.661939

6.72771

3.652848

88.79295

6534.641

-8.43446

-4.57954

0.024523

6.87389

3.732218

91.71305

6395.964

1187.909

644.9821

-1.60962

6.720171

3.648755

94.33597

6030.461

2219.539

1205.111

-3.01041

6.337196

3.440817

96.95888

5452.241

3172.585

1722.573

-4.30492

5.728669

3.110413

99.5818

4682.212

4013.307

2179.048

-5.44756

4.914544

2.668379

102.2047

3746.867

4712.047

2558.433

-6.39722

3.928593

2.133052

105.1267

2549.579

5293.117

2873.928

-7.18971

2.675117

1.45247

108.0488

1241.28

5642.596

3063.68

-7.66483

1.300222

0.705963

110.9708

-120.012

5745.265

3119.424

-7.79815

-0.13959

-0.07579

113.8928

-1475.25

5595.235

3037.965

-7.59139

-1.57273

-0.85392

116.5116

-2636.45

5250.229

2850.642

-7.12884

-2.79611

-1.51817

119.1305

-3704.24

4719.929

2562.712

-6.41061

-3.92412

-2.13063

121.7493

-4640.41

4023.011

2184.317

-5.45872

-4.91643

-2.66941

124.3681

-5411.26

3183.105

1728.285

-4.31117

-5.73654

-3.11469

127.2784

-6039.74

2116.933

1149.401

-2.85961

-6.41166

-3.48125

130.1887

-6401.42

957.7747

520.0292

-1.2712

-6.80273

-3.69358

133.099

-6479.5

-242.633

-131.739

0.388095

-6.88671

-3.73918

136.0093

-6267.98

-1431.42

-777.198

2.034611

-6.6654

-3.61901

138.5991

-5841.71

-2436.82

-1323.08

3.424556

-6.22255

-3.37857

141.1889

-5207.84

-3355.27

-1821.76

4.698708

-5.55381

-3.01547

143.7787

-4388.59

-4153.52

-2255.18

5.809837

-4.67974

-2.54089

146.3685

-3411.92

-4802.41

-2607.49

6.716067

-3.63567

-1.97401

149.2195

-2195.05

-5315.26

-2885.95

7.438581

-2.33834

-1.26962

152.0705

-882.735

-5595.59

-3038.16

7.834046

-0.93081

-0.50539

154.9215

467.0177

-5630.74

-3057.24

7.879053

0.527583

0.286454

157.7724

1795.36

-5417.46

-2941.44

7.579298

1.963617

1.066157

160.304

2910.049

-5026.08

-2728.94

7.039558

3.164302

1.718076

162.8356

3923.266

-4460.04

-2421.6

6.251833

4.256751

2.311227

165.3671

4799.535

-3739.23

-2030.23

5.241628

5.201852

2.824375

167.8987

5508.158

-2888.06

-1568.09

4.049833

5.965753

3.23914

170.7082

6068.123

-1826

-991.438

2.570551

6.571033

3.56778

173.5177

6367.885

-686.081

-372.511

0.97775

6.891626

3.741848

176.3272

6395.04

482.2

261.8133

-0.66264

6.910891

3.752308

179.1367

6147.418

1629.18

884.5725

-2.2708

6.635844

3.602969

181.6401

5703.11

2593.744

1408.288

-3.61632

6.157352

3.343169

184.1435

5065.393

3470.075

1884.097

-4.83894

5.468297

2.969043

186.6469

4256.362

4228.382

2295.824

-5.8971

4.590812

2.492607

MATLAB

592

189.1503

3302.869

4842.939

2629.501

-6.75458

3.559075

1.93242

191.9679

2096.381

5336.642

2897.56

-7.44632

2.261059

1.227655

194.7854

800.4026

5601.271

3041.242

-7.81543

0.862182

0.468127

197.603

-528.718

5625.617

3054.461

-7.84249

-0.58066

-0.31527

200.4205

-1834.35

5407.372

2935.963

-7.53408

-1.99787

-1.08476

202.9313

-2932.83

5014.98

2722.912

-6.99159

-3.18635

-1.73005

205.4422

-3930.66

4451.06

2416.729

-6.20615

-4.26852

-2.31762

207.953

-4793.26

3734.922

2027.897

-5.20178

-5.20681

-2.82706

210.4638

-5490.56

2890.235

1569.27

-4.01683

-5.96799

-3.24036

213.2794

-6045.34

1824.915

990.8479

-2.52707

-6.57993

-3.57261

216.095

-6337.03

680.661

369.5688

-0.9176

-6.9042

-3.74868

218.9106

-6352.25

-492.184

-267.234

0.745218

-6.92123

-3.75792

221.7262

-6088.01

-1642.67

-891.898

2.379475

-6.63593

-3.60301

224.2227

-5627.33

-2603.56

-1413.62

3.742253

-6.14304

-3.3354

226.7191

-4971.29

-3473.73

-1886.08

4.980445

-5.43226

-2.94948

229.2155

-4142.43

-4222.42

-2292.59

6.049169

-4.52536

-2.45707

231.712

-3168.49

-4822.88

-2618.61

6.909261

-3.45777

-1.87741

233.7236

-2300.53

-5183.92

-2814.64

7.428631

-2.50768

-1.36156

235.7353

-1380.04

-5426.3

-2946.24

7.778839

-1.49755

-0.8131

237.7469

-428.124

-5544.28

-3010.3

7.950747

-0.45068

-0.2447

239.7586

533.6211

-5534.85

-3005.18

7.940268

0.607882

0.330053

12.7
12.8
12.8
/

xkm

y(km)

z(km)

vx(km/s)

vy(km/s)

vz(km/s)

6678.137

6.78953

3.686414

0.000739

6678.137

0.301225

0.163552

-0.0004

6.78953

3.686414

0.001477

6678.137

0.60245

0.327104

-0.00079

6.78953

3.686414

0.002216

6678.137

0.903676

0.490656

-0.00119

6.78953

3.686414

0.002955

6678.137

1.204901

0.654208

-0.00159

6.78953

3.686414

0.006648

6678.136

2.711027

1.471968

-0.00357

6.789529

3.686414

0.010342

6678.135

4.217153

2.289727

-0.00556

6.789528

3.686413

0.014035

6678.134

5.723279

3.107487

-0.00755

6.789527

3.686412

0.017729

6678.132

7.229404

3.925246

-0.00953

6.789525

3.686411

0.036196

6678.116

14.76002

8.014038

-0.01946

6.789508

3.686402

0.054663

6678.089

22.29061

12.10282

-0.02939

6.789481

3.686387

0.07313

6678.051

29.82117

16.19157

-0.03932

6.789442

3.686366

0.091598

6678.002

37.35168

20.28031

-0.04925

6.789392

3.686339

0.183934

6677.591

75.00304

40.72332

-0.09889

6.788975

3.686112

0.276271

6676.905

112.6513

61.16466

-0.14852

6.788277

3.685732

MATLAB

593

0.368607

6675.943

150.2949

81.60347

-0.19815

6.7873

3.685199

0.460944

6674.707

187.9324

102.0389

-0.24778

6.786043

3.684515

0.922626

6664.398

375.9724

204.1359

-0.4957

6.775562

3.678806

1.384308

6647.221

563.6248

306.0219

-0.74311

6.758099

3.669295

1.845991

6623.194

750.6964

407.5914

-0.98975

6.733671

3.655991

2.307673

6592.341

936.9943

508.7396

-1.23538

6.702303

3.638907

4.394953

6368.564

1764.493

957.9951

-2.3265

6.47494

3.515081

6.482232

6010.865

2554.801

1386.997

-3.36895

6.111118

3.316945

8.569511

5526.862

3291.252

1786.668

-4.34074

5.618347

3.048601

10.65679

4926.545

3958.444

2148.626

-5.22125

5.007433

2.715953

13.72723

3857.945

4784.672

2596.559

-6.31468

3.924112

2.12617

16.79766

2614.342

5393.01

2925.881

-7.11916

2.656109

1.436005

19.8681

1253.179

5755.519

3121.421

-7.59463

1.255918

0.674119

22.93853

-164.476

5853.987

3173.317

-7.72532

-0.20169

-0.11869

25.73721

-1452

5708.456

3092.677

-7.54285

-1.51891

-0.83476

28.53588

-2683.77

5345.347

2893.794

-7.06844

-2.78406

-1.52207

31.33456

-3812.08

4778.156

2584.087

-6.31523

-3.94889

-2.15433

34.13323

-4793.12

4027.021

2174.593

-5.31709

-4.966

-2.70573

37.18867

-5650.57

3029.011

1631.132

-3.99757

-5.86194

-3.1905

40.2441

-6246.41

1891.423

1012.276

-2.47983

-6.48776

-3.52776

43.29954

-6551.76

667.3172

346.9856

-0.82816

-6.80787

-3.69821

46.35497

-6549.35

-587.122

-334.101

0.86741

-6.81212

-3.69653

49.08729

-6284.1

-1687.2

-930.724

2.349112

-6.55098

-3.55083

51.81962

-5781.8

-2723.26

-1491.92

3.749472

-6.03817

-3.26826

54.55194

-5061.02

-3655.57

-1996.11

5.013814

-5.28902

-2.85732

57.28426

-4147.47

-4448.2

-2423.78

6.090906

-4.33718

-2.33654

60.24669

-2977.83

-5113.91

-2781.62

6.99966

-3.12344

-1.67369

63.20912

-1674.8

-5549.43

-3013.85

7.592214

-1.76132

-0.93104

66.17154

-297.672

-5734.8

-3109.8

7.836

-0.30902

-0.14043

69.13397

1092.029

-5659.95

-3064.19

7.727604

1.156877

0.656365

71.79023

2297.749

-5373.08

-2903.94

7.340146

2.422751

1.343306

74.44649

3419.505

-4890.73

-2637.71

6.682298

3.602228

1.982156

77.10275

4416.192

-4230.73

-2275.37

5.77571

4.651567

2.549136

79.75901

5251.376

-3416.38

-1829.76

4.660114

5.530993

3.022716

82.67211

5945.403

-2380.17

-1264.17

3.251215

6.263685

3.415073

85.58521

6379.057

-1240.21

-643.305

1.696357

6.719173

3.6558

88.4983

6533.791

-47.1295

5.168478

0.060668

6.874734

3.732786

91.4114

6401.809

1147.364

653.0563

-1.5732

6.731186

3.646876

94.02594

6043.21

2178.187

1210.943

-2.9741

6.357944

3.43699

96.64047

5472.418

3132.241

1726.02

-4.27049

5.759487

3.104966

99.255

4709.978

3975.898

2180.076

-5.41697

4.955316

2.661669

MATLAB

594

101.8695

3781.989

4679.534

2557.113

-6.37252

3.978539

2.125378

104.7913

2588.179

5269.754

2870.967

-7.17594

2.729479

1.441739

107.7131

1281.425

5628.891

3058.533

-7.66215

1.355786

0.691999

110.6349

-80.2066

5741.149

3111.537

-7.80595

-0.08629

-0.09302

113.5566

-1437.5

5600.048

3026.796

-7.60819

-1.52499

-0.87416

116.1761

-2602.12

5261.879

2836.04

-7.15157

-2.75623

-1.54086

118.7955

-3674.02

4736.977

2544.324

-6.43652

-3.89396

-2.15502

121.4149

-4614.53

4043.799

2161.943

-5.48469

-4.8971

-2.69436

124.0344

-5389.46

3205.871

1701.931

-4.33407

-5.72824

-3.13872

126.9319

-6019.22

2145.078

1121.783

-2.88292

-6.41213

-3.50083

129.8294

-6383.27

990.1271

492.2488

-1.29315

-6.81249

-3.70755

132.727

-6464.61

-207.503

-158.516

0.368914

-6.90552

-3.74637

135.6245

-6257.04

-1395.08

-801.749

2.01919

-6.69247

-3.61858

138.1966

-5836.03

-2398.42

-1343.35

3.409586

-6.25744

-3.37177

140.7688

-5208.72

-3316.63

-1837.13

4.684843

-5.59676

-3.00292

143.341

-4397.05

-4116.72

-2265.27

5.797895

-4.73088

-2.52355

145.9131

-3428.65

-4769.71

-2612.22

6.707138

-3.69488

-1.95309

148.7517

-2218.04

-5290.89

-2885.53

7.436021

-2.40256

-1.24458

151.5904

-911.234

-5581.28

-3032.57

7.838586

-0.99857

-0.47787

154.429

434.1209

-5628

-3046.8

7.891766

0.45812

0.314667

157.2677

1759.625

-5427.47

-2926.75

7.601155

1.894665

1.093353

159.7929

2875.44

-5047.18

-2710.71

7.068953

3.100152

1.744262

162.3182

3891.152

-4491.79

-2400.33

6.288394

4.19944

2.335169

164.8435

4771.291

-3780.81

-2006.54

5.28478

5.153456

2.844982

167.3687

5485.136

-2938.3

-1542.73

4.098709

5.928146

3.255493

170.1688

6052.005

-1885.03

-965.744

2.625741

6.5468

3.578351

172.9689

6360.474

-751.708

-347.626

1.037636

6.883021

3.746315

175.769

6397.851

412.6547

284.811

-0.60016

6.919742

3.750684

178.5691

6161.595

1558.803

904.7179

-2.2083

6.663083

3.595564

181.0605

5728.771

2524.109

1424.488

-3.55437

6.201812

3.331547

183.5519

5103.162

3404.209

1896.024

-4.78047

5.530198

2.954163

186.0433

4306.29

4169.417

2303.371

-5.84535

4.669639

2.475495

188.5347

3364.397

4793.989

2632.778

-6.71287

3.653308

1.914006

191.3535

2162.896

5304.559

2897.458

-7.42268

2.362559

1.204837

194.1723

868.7722

5586.735

3036.99

-7.81008

0.965755

0.441296

196.9912

-461.533

5628.41

3045.377

-7.85462

-0.48048

-0.34552

199.81

-1771.15

5426.384

2921.485

-7.56175

-1.90618

-1.1175

202.3248

-2876.39

5046.296

2702.986

-7.02985

-3.10735

-1.7647

204.8396

-3882.15

4492.264

2391.02

-6.25124

-4.20504

-2.35281

207.3544

-4753.18

3783.286

1996.328

-5.24949

-5.16066

-2.86103

209.8692

-5458.74

2942.88

1532.065

-4.06306

-5.93981

-3.27104

MATLAB

595

212.6716

-6019.05

1885.954

951.8496

-2.57698

-6.56802

-3.59533

215.474

-6317.89

747.5925

330.4202

-0.96844

-6.90998

-3.76229

218.2764

-6341.49

-422.245

-304.854

0.696089

-6.94503

-3.76144

221.0788

-6086.44

-1572.83

-926.306

2.334405

-6.67715

-3.59594

223.556

-5635.96

-2533.63

-1442.31

3.698379

-6.20036

-3.31999

226.0332

-4991.3

-3406.83

-1908.29

4.93984

-5.50564

-2.92689

228.5104

-4174.49

-4161.82

-2307.86

6.014111

-4.61432

-2.4288

230.9875

-3212.71

-4771.97

-2626.84

6.882224

-3.56114

-1.84518

233.1803

-2266.34

-5173.59

-2832.7

7.453321

-2.52517

-1.27462

235.373

-1258.17

-5433.69

-2960.83

7.821107

-1.4173

-0.66753

237.5658

-215.888

-5545.01

-3007.63

7.974109

-0.26788

-0.04062

239.7586

832.2774

-5504.12

-2971.59

7.908705

0.889686

0.587851

12.8

Sattistical Orbit DeterminationByron D.Tapley ELSEVIER ACADEMIC PRESS

12.5

B.Mandelbrot 20 60

x n A nnb A
x Ax + b Ab
2

MATLAB

596

a)
2 Sierpinski

\\chapter12.rar\12-5.exe

\\chapter12\fengxing1.m,fengxing2.m

Editor

%
x = [.5; .5]; %
h = plot(x(1),x(2),'.'); %
%
p = [ .85

.92

.99

1.00];

b1 = [0; 1.6];
b2 = [0; 1.6];
b3 = [0; .44];
%------
A1 = [ .85

.04; -.04

.85];

A2 = [ .20 -.26; .23

.22];

A3 = [-.15 .28; .26 .24];


A4 = [

0;

.16];

for i=1:20000
r = rand;
if r < p(1)

MATLAB

597

x = A1*x + b1;
elseif r < p(2)
x = A2*x + b2;
elseif r < p(3)
x = A3*x + b3;
else
x = A4*x;
end
plot(x(1),x(2),'g'),hold on

end
axis off

fenxing1.m
fengxing1.m

>>clear
>>clc
>>clf
>>fenxing1
12.6

12.6
Sierpinski
Editor

%Sierpinski
%

MATLAB

598

x = [0; 0];
h = plot(x(1),x(2),'.'); %

A=[1/2 0;0 1/2];

b1=[0 0]';
b2=[1/2 0]';
b3=[1/4 sqrt(3)/4]';
for i=1:10000
r = rand;

if r >0.66666666667
x = A*x + b1;
elseif r >0.333333333333
x=A*x+b2;
else
x = A*x+b3;
end
plot(x(1),x(2),'-'),hold on
end
axis off

fengxing2.m
fenxing2.m

>>clear
>>clf
>>clc
>>fengxing2
12.7

MATLAB

599

12.7 Sierpinski

MATLAB

600

GPS

13.1

20
GPS
GLONASS GALILEO

MATLAB

601

13.1
13.1

=
1

2 =

3 =

( x1 xu ) + ( y1 xu ) + ( z1 xu )
2

( x2 xu ) + ( y2 xu ) + ( z2 xu )
2

( x3 xu ) + ( y3 xu ) + ( z3 xu )
2

MATLAB

MATLAB

13 22 23

MATLAB

602

-7134.529244
-22383.700040
-5384.901317

r13 = 16113.648836 , r22 = 18533.233168 , r23 = 28971.622323


23709.205570
5307.245613
2079.796362

23403.844022188124695.7950572489
24870.8328162636

\\chapter13.rar\13-1.exe

\ \chapter13\dingwei_fun.m,
dingwei_main.m

Editor
%
%by song ye zhi
function f=dingwei_f(u)
%
sat13=[-7134.529244
sat22=[-22383.700040
sat23=[-5384.901317

16113.648836
18533.233168
28971.622323

23709.205570];
5307.245613];
2079.796362];

f1=norm(sat13-u)-23403.8440221881;
f2=norm(sat22-u)-24695.7950572489;
f3=norm(sat23-u)-24870.8328162636;
f=[f1;f2;f3];

%%%------------------%
% sat13=[-7134.529244
% sat22=[-22383.700040
% sat23=[-5384.901317

16113.648836
18533.233168
28971.622323

23709.205570];
5307.245613];
2079.796362];

%
% beijing=[-2177.527701
%

4388.901474

4070.001156];

MATLAB

603

% ro13=norm(sat13-beijing)
% ro22=norm(sat22-beijing)
% ro23=norm(sat23-beijing)
dingwei_fun.m

Editor
%
%
x0=[-2000

4000

4000];

options=optimset('Display','iter');
%
x=fsolve(@dingwei_fun,x0,options)
dingwei_main.m

>>clear
>>clc
>> dingwei_main

Norm of
step

First-order
Iteration Func-count
f(x)
optimality
0
4
386572
763
1
8
384770
1
762
2
12
380285
2.5
757
3
16
369186
6.25
746
4
20
342165
15.625
718
5
24
279146
39.0625
649
6
28
149856
97.6563
477
7
32
2166.29
244.141
48.6
8
36
0.00715892
53.9605
0.0818
9
40
1.27615e-014
0.0736983
1.4e-007
Optimization terminated: first-order optimality is less than options.TolFun.

Trust-region
radius
1
1
2.5
6.25
15.6
39.1
97.7
244
610
610

x=
-2177.5277010092

4388.90147390314

4070.00115601053

MATLAB

604

GALILEO
13.2

13.2

MATLAB

13.2

MATLAB

605

=
1

=
2

n =

( x1 xu ) + ( y1 yu ) + ( z1 zu )
2

( x2 xu ) + ( y2 yu ) + ( z1 zu )
2

+ ctu

+ ctu

, n>3

( xn xu ) + ( yn yu ) + ( zn zu )
2

+ ctu

23744.3701483261
24192.1679765305

24423.3020893263

24249.1269736412

=
26517.1495649421

26973.4887347568
26366.3296362982

27190.2240745564

12.8
x(km)

y(km)

z(km)

13

-7134.529244

16113.648836

23709.205570

22

-22383.700040

18533.233168

5307.245613

23

-5384.901317

28971.622323

2079.796362

14

637.466571

28016.053841

9347.297933

12

-11568.199533

-3328.511543

26977.312423

MATLAB

606

21

-28908.916747

-577.061760

6051.375658

-1205.651181

28296.890128

-8397.025036

16456.527324

12347.282494

21199.173063

13.1

\\chapter13.rar\13-2.exe
\ \chapter13\daohang_moni.m,
daohang_fun.m,daohang_dfun.m, daohang_main.m

Editor
%
c=299792.458; %
%
sat13=[-7134.529244
sat22=[-22383.700040
sat23=[-5384.901317

16113.648836
18533.233168
28971.622323

23709.205570];
5307.245613];
2079.796362];

sat14=[637.466571

28016.053841

9347.297933];

sat12=[-11568.199533

-3328.511543

26977.312423];

sat21=[-28908.916747

-577.061760

6051.375658];

sat5=[-1205.651181

28296.890128

-8397.025036];

sat4=[16456.527324

12347.282494

21199.173063];

nanjing=[-2604.298533

4743.297217

3364.978513];

%
sat=[sat13;sat22;sat23; sat14; sat12; sat21; sat5; sat4];

MATLAB

607

%
for i=1:8
length(i)=norm(sat(i,:)-nanjing);
end
length=length'; %
%
ro=length+c*7e-6 % 10 -6
daohang_moni.m

>> daohang_moni

ro =
1.0e+004 *
2.37443701483261
2.41921679765305
2.44233020893263
2.42491269736412
2.65171495649421
2.69734887347568
2.63663296362982
2.71902240745564

f ( x ) = 0

x = [ x1 , x2 ,L , xn ] TOL
T

Step1 k = 1,L , m Step2-5


Step2 f ( x ) f ' ( x )

MATLAB

608

Step3 f' ( x ) y = -f ( x )
Step4 x x + y
Step5 y < TOL
Step6

xu

yu
x=
zu

tu

f ( x) =

+ ctu 1

2
2
2
( x2 xu ) + ( y2 yu ) + ( z1 zu ) + ctu 2

2
2
2
( xn xu ) + ( yn yu ) + ( zn zu ) + ctu n

( x1 xu ) + ( y1 yu ) + ( z1 zu )
2

f' ( x ) =

xu x1

( xu x1 ) + ( yu y1 ) + ( zu z1 )
2

xu x2

( xu x2 ) + ( yu y2 ) + ( zu z2 )
2

yu y1

( xu x1 ) + ( yu y1 ) + ( zu z1 )
2

yu y2

( xu x2 ) + ( yu y2 ) + ( zu z2 )
2

zu z1

( xu x1 ) + ( yu y1 ) + ( zu z1 )
2

( xu x2 ) + ( yu y2 ) + ( zu z2 )

xu xn

( xu xn ) + ( yu yn ) + ( zu zn )
2

( xu xn ) + ( yu yn ) + ( zu zn )
2

zu zn

( xu xn ) + ( yu yn ) + ( zu zn )
2

Editor
%
function f=daohang_fun(x,t,sat,ro)
%x
%t
%ro
% sat

m m

c=299792.458; %

,c

yu yn
2

,c

zu z2
2

xyz

,c

MATLAB

609

[m,n]=size(sat);
for i=1:m
f(i)=norm(sat(i,:)-x)+c*t-ro(i);
end
f=f';
daohang_fun.m

Editor
%
function df=daohang_dfun(x,t,sat)
%x
%t
% sat

m m

xyz

c=299792.458; %
[m,n]=size(sat);
for i=1:m
for j=1:3
df(i,j)=(x(j)-sat(i,j))/norm(sat(i,:)-x(j));
end
end
df(:,4)=c;
daohang_dfun.m

Editor
%
%08 9 24
c=299792.458; %
sat13=[-7134.529244
sat22=[-22383.700040
sat23=[-5384.901317
sat14=[637.466571

16113.648836
18533.233168
28971.622323
28016.053841

23709.205570];
5307.245613];
2079.796362];
9347.297933];

MATLAB

610

sat12=[-11568.199533

-3328.511543

sat21=[-28908.916747

-577.061760

26977.312423];
6051.375658];

sat5=[-1205.651181

28296.890128

-8397.025036];

sat4=[16456.527324

12347.282494

21199.173063];

nanjing=[-2604.298533

4743.297217

3364.978513];

sat=[sat13;sat22;sat23; sat14; sat12; sat21; sat5; sat4];


%
ro=[
23744.3701483261
24192.1679765305
24423.3020893263
24249.1269736412
26517.1495649421
26973.4887347568
26366.3296362982
27190.2240745564];
%-------------------------------%
% ro
%

80

ro=ro+sqrt(80)*randn(size(ro))*1e-3;
%----------------------------------%
nj=[-3000 5000 3000];
%
t0=4e-7;

x=nj;
t=t0;
%%%% 50
for i=1:50
f=daohang_fun(x,t,sat,ro);
df=daohang_dfun(x,t,sat);

MATLAB

611

gaiz=-df\f; % MATLAB
x(1)=x(1)+gaiz(1);
x(2)=x(2)+gaiz(2);
x(3)=x(3)+gaiz(3);
t=t+gaiz(4);

%%
% temp(i,1)=x(1);
% temp(i,2)=x(2);
% temp(i,3)=x(3);
% temp(i,4)=t;
%%
%%----------% 10 -10
tol=norm(gaiz);
if tol<1e-10
break
end
%-------------end
disp('')
i
disp('')
x
disp('')
t
daohang_main.m

>>clear
>>clc
>> daohang_main

i=

MATLAB

612

28

x=
1.0e+003 *
-2.60429207496172

4.74328541696088

3.36497599139875

t=
6.962457400059610e-006

28

-2604.295199
ru = 4743.291059
3364.959154

1000km
13.2

-2534.060334

4695.92068

3372.172544

-5.69E-05

-2623.348295

4756.45928

3370.633356

3.78E-05

-2598.079637

4739.08172

3362.618076

-3.29E-06

-2606.367341

4744.68709

3365.770957

1.04E-05

-2603.600447

4742.82387

3364.685323

5.80E-06

-2604.528155

4743.44767

3365.051103

7.35E-06

-2604.217064

4743.23854

3364.928308

6.83E-06

-2604.321405

4743.30868

3364.9695

7.01E-06

-2604.28641

4743.28515

3364.955684

6.95E-06

MATLAB

613

10

-2604.298147

4743.29304

3364.960317

6.97E-06

11

-2604.294211

4743.29039

3364.958763

6.96E-06

12

-2604.295531

4743.29128

3364.959285

6.96E-06

13

-2604.295088

4743.29098

3364.95911

6.96E-06

14

-2604.295237

4743.29108

3364.959168

6.96E-06

15

-2604.295187

4743.29105

3364.959149

6.96E-06

16

-2604.295203

4743.29106

3364.959155

6.96E-06

17

-2604.295198

4743.29106

3364.959153

6.96E-06

18

-2604.2952

4743.29106

3364.959154

6.96E-06

19

-2604.295199

4743.29106

3364.959154

6.96E-06

20

-2604.295199

4743.29106

3364.959154

6.96E-06

21

-2604.295199

4743.29106

3364.959154

6.96E-06

22

-2604.295199

4743.29106

3364.959154

6.96E-06

23

-2604.295199

4743.29106

3364.959154

6.96E-06

24

-2604.295199

4743.29106

3364.959154

6.96E-06

25

-2604.295199

4743.29106

3364.959154

6.96E-06

26

-2604.295199

4743.29106

3364.959154

6.96E-06

27

-2604.295199

4743.29106

3364.959154

6.96E-06

28

-2604.295199

4743.29106

3364.959154

6.96E-06

13.2

13.3

GPS

13.3

MATLAB

614

13.3

GPS

\\chapter13.rar\13-3.exe

MATLAB

615

\\chapter13\
f_jia.m,df_jia.m,weiju_main.m

c t ( j ) = ru - rs ( j ) + rs ( j ) rm + 1 + 2 + 3
s j j u m MELOUT

F ( X ) = ru - rs ( ) + c ct ( ) + rs ( ) rm
j

X = ( xu , yu , zu , )

Editor
function f=f_jia(ru,t,tt,sat,rm)
%ru
%t
% tt MELOUT

%sat
%sat

% km/s
%rm MELOUT

if nargin==4
rm=[-2177.527701

4388.901474

4070.001156];

end
c=299792.458;

[m,n]=size(sat);
%t tt MELOUT
for i=1:m
f(i)=norm(ru-sat(i,:))+c*t-c*tt(i)+norm(rm-sat(i,:));
end
f=f'; % f
f_weiju.m

MATLAB

616

f' ( x ) =

xu x1

( xu x1 ) + ( yu y1 ) + ( zu z1 )
2

xu x2

( xu x2 ) + ( yu y2 ) + ( zu z2 )
2

yu y1

( xu x1 ) + ( yu y1 ) + ( zu z1 )
2

yu y2

( xu x2 ) + ( yu y2 ) + ( zu z2 )
2

zu z1

( xu x1 ) + ( yu y1 ) + ( zu z1 )
2

( xu x2 ) + ( yu y2 ) + ( zu z2 )

xu xn

( xu xn ) + ( yu yn ) + ( zu zn )
2

yu yn

( xu xn ) + ( yu yn ) + ( zu zn )
2

( xu xn ) + ( yu yn ) + ( zu zn )

Editor
%
function df=df_jia(ru,t,sat)
%ru
%t
% sat

m m

M
zu zn
2

xyz

c=299792.458; %
[m,n]=size(sat);
for i=1:m
for j=1:3
df(i,j)=(ru(j)-sat(i,j))/norm(sat(i,:)-ru(j));
end
end
df(:,4)=c;
df_weiju.m

-4147.409214
R = 3480.089542
3360.431434

t=0

,c

zu z2
2

,c

,c

MATLAB

617

Editor

% km/s
c=299792.458;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%
%
r1=[-5384.901317
r2=[637.466571

28971.622323

2079.796362]; % 23

28016.053841

9347.297933 ]; % 14

r3=[-1205.651181

28296.890128

-8397.025036]; % 5

r4=[-7134.529244

16113.648836

23709.205570]; % 13

r5=[-22383.700040

18533.233168

5307.245613]; % 22

r6=[ 16456.527324

12347.282494

21199.173063]; % 4

ru=[-4147.409214

3480.089542

3360.431434]; %

rm=[-2177.527701

4388.901474

4070.001156]; %

%
%
sat=[r1;r2;r3;r4;r5;r6];
[m,n]=size(sat);
% "(i) " MELOUT
for i=1:m
tt(i)=(norm(sat(i,:)-ru)+norm(sat(i,:)-rm))/c;
end
tt=tt';

%---------------------------------
% tt
%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%

MATLAB

618

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
%%%%%

% x0

nj=[-2000

5000

t0= 0.00000001;

4000];
% 0

ru=nj;
t=t0;

for i=1:200
f=f_jia(ru,t,tt,sat,rm);
df=df_jia(ru,t,sat);
dx=-df\f; %
ru(1)=ru(1)+dx(1);
ru(2)=ru(2)+dx(2);
ru(3)=ru(3)+dx(3);
t=t+dx(4);

tol=norm(dx(1:3));
if tol<10-9
break
end
end
disp('')
ru
disp('')
t
disp('')
i
weiju_main.m

MATLAB

MATLAB

619

-4147.409214
R = 3480.089542
3360.431434

>> weiju_main

ru =
1.0e+003 *
-4.1473

3.4801

3.3604

t=
3.0793e-008

i=
6

0
3.0793e-008 3.0793e-008
0

MATLAB

620

32 140

13.4

13.4

13.4

MATLAB

621

\\chapter13.rar\13-4.exe
\\chapter13\
dop_fun.m,dop.df.m,duopule.m

v s ( rs - rm )
v s ( rs - ru )
1 g
+ F 1 g
= FOA
c rs - ru
c rs - rm

sum MELOUT

y=

FOA
F
v s ( rs - rm )
1 g
c rs - rm

v (r - r )
F ( X ) = f 1 s g s u y
c rs - ru

X = ( ru , f ) = ( xu , yu , zu , f )

Jacobi

MATLAB

622

a11 =

a12 =

a13 =

vsx ru - rs

v s g( ru - rs )
( xu xs )
ru - rs

vsy ru - rs

v s g( ru - rs )
( yu ys )
ru - rs

vsz ru - rs

v s g( ru - rs )
( zu zs )
ru - rs

f
g
c ( xu xs ) 2 + ( yu ys ) 2 + ( zu z s ) 2

f
g
c ( xu xs )2 + ( yu ys ) 2 + ( zu z s ) 2

f
g
c ( xu xs )2 + ( yu ys )2 + ( zu z s )2
a14 = 1 +

vs g( ru - rs )
c ru - rs

i i

Editor
%%%
function F=dop_fun(f,ru,rs,vs,rm,FOA,de_F)
%f
%ru 13
%rs (m,3)m m
%vs (m,3)
%rm MELOUT

13

%FOA MELOUT ,FOA m1


%de_F
%F m1
c=299792.458; %
[m,n]=size(rs);
for i=1:m
temp(i)=1-1/c*(rs(i,:)-rm)*vs(i,:)'/norm(rs(i,:)-rm);
y(i)=FOA(i)/temp(i)-de_F;
temp2(i)=1-1/c*(rs(i,:)-ru)*vs(i,:)'/norm(rs(i,:)-ru);

MATLAB

623

F(i)=temp2(i)*f-y(i);
end
F=F'; %
dop_fun.m

% Jacobi
function df=dop_df(f,ru,rs,vs,rm)
%
%f
%ru
%rs (m,3)
%vs

(m,3)

%rm MELOUT

c=299792.458; %
[m,n]=size(rs);
for i=1:m
temp1=vs(i,1)*norm(ru-rs(i));
temp2=vs(i,:)*(ru-rs(i,:))'*(ru(1)-rs(i,1))/norm(ru-rs(i,:));
%temp2=vs(i,1)*(ru(1)-rs(i,1))^2/norm(ru-rs(i,:));
temp3=(norm(ru-rs(i,:)))^2;
df(i,1)=(temp1-temp2)/temp3*f/c;

temp1=f*vs(i,2)*norm(ru-rs(i));
temp2=vs(i,:)*(ru-rs(i,:))'*(ru(2)-rs(i,2))/norm(ru-rs(i,:));
%temp2=f*vs(i,2)*(ru(2)-rs(i,2))^2/norm(ru-rs(i,:));
temp3=(norm(ru-rs(i,:)))^2;
df(i,2)=(temp1-temp2)/temp3/c;

temp1=f*vs(i,3)*norm(ru-rs(i));
temp2=vs(i,:)*(ru-rs(i,:))'*(ru(3)-rs(i,3))/norm(ru-rs(i,:));

MATLAB

624

%temp2=f*vs(i,3)*(ru(1)-rs(i,3))^2/norm(ru-rs(i,:));
temp3=(norm(ru-rs(i,:)))^2;
df(i,3)=(temp1-temp2)/temp3/c;

df(i,4)=1+(ru-rs(i,:))*vs(i,:)'/c/norm(ru-rs(i,:)); %
end
dop_df.m

4051.423937
R = -2890.386079
3975.643501

406MHZ
MELOUT
Editor

%velocity of light
c=299792.458;
%fixed positon and
sat1=[-5384.901317
5.648243
sat2=[637.466571
3.519054
sat3=[-1205.651181
-0.042952
sat4=[-7134.529244
2.356781
sat5=[-22383.700040
3.629060
sat6=[16456.527324
0.386823
sat7=[-11568.199533
0.091745
sat8=[-28908.916747
-0.088201

velocity of satellite
28971.622323
1.101457

-0.719185]; %satellite23

28016.053841

9347.297933,...

0.989081

-3.204502];

28296.890128
-0.851609

%satellite14

-8397.025036,...

-2.863646]; %satellite5

16113.648836
3.555039
18533.233168
4.493148
12347.282494
2.105412
-3328.511543
4.457554
-577.061760
5.782445

2079.796362,...

23709.205570,...
-1.706937]; %satellite13
5307.245613,...
-0.384526]; %satellite22
21199.173063,...
-1.526563];

%satellite4

26977.312423,...
0.589323];

%satellite12

6051.375658,...
0.130057];

%satellite21

MATLAB

625

sat=[sat1;sat2;sat3;sat4;sat5;sat6;sat7;sat8]; %,
ru=[4051.423937

-2890.386079

3975.643501]; %

rm=[-513.705755

-5288.956687

3515.732137]; %

%
rs=sat(:,1:3);

% 3

vs=sat(:,4:6);

% 3

%%%%
% f 406MHZ, de_F 1140MHZ
% MELOUT FOA
f=406;

de_F=1140;

[m,n]=size(rs);

for i=1:m
temp1=(rs(i,:)-ru)*vs(i,:)'/norm(rs(i,:)-ru)/c;
temp1=f*(1-temp1)+de_F;
temp2=(rs(i,:)-rm)*vs(i,:)'/norm(rs(i,:)-rm)/c;
temp2=1-temp2;
FOA(i)=temp1*temp2;
end
%%%%% MELOUT
FOA=FOA';

%%%%%%%%%%%%%%%%
%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%
%%%%%%%%%%%%%%%%%%

MATLAB

626

nj=[4000

-3000

f0=400;

4000]; %

ru=nj;
f=f0;
for i=1:500
fun=dop_fun(f,ru,rs,vs,rm,FOA,de_F);
dfun=dop_df(f,ru,rs,vs,rm);
dx=-dfun\fun;

% MATLAB

ru(1)=ru(1)+dx(1);
ru(2)=ru(2)+dx(2);
ru(3)=ru(3)+dx(3);
f=f+dx(4);

tol=norm(dx(1:3));
if tol<10-8
break
end
end
disp('')
ru
disp('')
f
disp('')
i
duopule.m

4051.423937
R = -2890.386079
3975.643501

406MHZ

>>clear

MATLAB

627

>>clc
>> duopule

ru =
1.0e+003 *
4.0516

-2.8911

3.9760

f=
406.0000

i=
7

Latitude 3.807deg
Longitude = -35.505deg

13.5

MATLAB

628

\\chapter13.rar\13-5.exe
\chapter13\lianhe_fangzhen.m,
lianhe_fun.m,lianhe_df.m, lianhe_jiesuan.m

MATLAB

629

1140MHZ
13.3-13.10 3 3
km
km/s
16456.527324

12347.282494

21199.173063

0.386823

2.105412

-1.526563

16479.987831

12473.278708

21106.990113

0.395175

2.094437

-1.546187

16503.946142

12598.611936

21013.632307

0.403416

2.083313

-1.565725

16528.395539

12723.273275

20919.104844

0.411545

2.072041

-1.585176

16553.329215

12847.253906

20823.412986

0.419559

2.060623

-1.604538

16578.740264

12970.545093

20726.562060

0.427457

2.049060

-1.623811

16604.621689

13093.138189

20628.557459

0.435238

2.037353

-1.642994

16630.966400

13215.024634

20529.404641

0.442899

2.025505

-1.662085

16657.767217

13336.195954

20429.109127

0.450441

2.013516

-1.681083

16685.016868

13456.643768

20327.676501

0.457860

2.001388

-1.699988

16712.707993

13576.359783

20225.112415

0.465156

1.989123

-1.718799

13.3 4

-1205.651181

28296.890128

-8397.025036

-0.042952

-0.851609

-2.863646

-1208.431295

28245.289062

-8568.608514

-0.049743

-0.868411

-2.855777

-1211.623220

28192.682628

-8739.715047

-0.056679

-0.885121

-2.847748

-1215.235612

28139.076390

-8910.335110

-0.063758

-0.901738

-2.839561

-1219.277064

28084.476022

-9080.459207

-0.070981

-0.918259

-2.831216

-1223.756102

28028.887313

-9250.077868

-0.078344

-0.934682

-2.822713

-1228.681185

27972.316162

-9419.181654

-0.085849

-0.951006

-2.814053

-1234.060704

27914.768576

-9587.761152

-0.093492

-0.967230

-2.805237

-1239.902980

27856.250674

-9755.806980

-0.101274

-0.983350

-2.796265

-1246.216264

27796.768683

-9923.309787

-0.109192

-0.999366

-2.787136

-1253.008734

27736.328936

-10090.260250

-0.117246

-1.015275

-2.777853

13.4 5

-11568.199533

-3328.511543

26977.312423

0.091745

4.457554

0.589323

-11561.313378

-3061.027234

27011.920656

0.137794

4.458495

0.564280

-11551.664194

-2793.503483

27045.025353

0.183845

4.458869

0.539205

-11539.252136

-2525.974240

27076.624673

0.229889

4.458678

0.514101

-11524.077759

-2258.473448

27106.716859

0.275921

4.457921

0.488968

-11506.142015

-1991.035044

27135.300237

0.321934

4.456598

0.463807

-11485.446254

-1723.692952

27162.373219

0.367920

4.454710

0.438621

-11461.992226

-1456.481080

27187.934299

0.413875

4.452258

0.413411

-11435.782074

-1189.433313

27211.982060

0.459790

4.449240

0.388177

-11406.818343

-922.583511

27234.515165

0.505660

4.445659

0.362923

MATLAB

-11375.103972

630

-655.965502

27255.532365

0.551477

4.441514

0.337648

13.5 12

-7134.529244

16113.648836

23709.205570

2.356781

3.555039

-1.706937

-6992.062368

16326.033876

23606.130432

2.392055

3.524389

-1.728885

-6847.489759

16536.566819

23501.741330

2.426972

3.493303

-1.750736

-6700.833016

16745.221645

23396.044076

2.461525

3.461786

-1.772490

-6552.114042

16951.972593

23289.044553

2.495712

3.429841

-1.794145

-6401.355041

17156.794165

23180.748720

2.529526

3.397474

-1.815700

-6248.578513

17359.661130

23071.162605

2.562962

3.364689

-1.837154

-6093.807251

17560.548527

22960.292311

2.596016

3.331489

-1.858506

-5937.064338

17759.431666

22848.144013

2.628683

3.297881

-1.879754

-5778.373143

17956.286138

22734.723954

2.660958

3.263868

-1.900897

-5617.757322

18151.087809

22620.038453

2.692836

3.229455

-1.921935

13.6 13

637.466571

28016.053841

9347.297933

3.519054

0.989081

-3.204502

848.852332

28073.962291

9154.769427

3.527047

0.941183

-3.213085

1060.701236

28128.993723

8961.731346

3.534491

0.893182

-3.221488

1272.980344

28181.142219

8768.194437

3.541387

0.845086

-3.229712

1485.656654

28230.402257

8574.169472

3.547731

0.796901

-3.237757

1698.697099

28276.768707

8379.667251

3.553524

0.748634

-3.245621

1912.068559

28320.236838

8184.698601

3.558765

0.700292

-3.253304

2125.737861

28360.802314

7989.274375

3.563452

0.651880

-3.260806

2339.671785

28398.461195

7793.405453

3.567586

0.603406

-3.268127

2553.837069

28433.209941

7597.102737

3.571164

0.554877

-3.275266

2768.200413

28465.045408

7400.377155

3.574188

0.506298

-3.282223

13.7 14

-22383.700040

18533.233168

5307.245613

3.629060

4.493148

-0.384526

-22164.373326

18801.524693

5284.026548

3.681745

4.449799

-0.389439

-21941.900937

19067.196599

5260.513360

3.733914

4.405828

-0.394330

-21716.314086

19330.211794

5236.707357

3.785559

4.361243

-0.399199

-21487.644419

19590.533559

5212.609865

3.836673

4.316048

-0.404047

-21255.924017

19848.125552

5188.222226

3.887249

4.270251

-0.408871

-21021.185388

20102.951814

5163.545797

3.937280

4.223858

-0.413673

-20783.461464

20354.976775

5138.581952

3.986758

4.176876

-0.418452

-20542.785596

20604.165255

5113.332081

4.035677

4.129310

-0.423207

-20299.191550

20850.482474

5087.797591

4.084029

4.081168

-0.427939

-20052.713499

21093.894055

5061.979904

4.131809

4.032457

-0.432647

13.8 22

MATLAB

631

-5384.901317

28971.622323

2079.796362

5.648243

1.101457

-0.719185

-5045.627175

29035.696462

2036.587748

5.660762

1.034323

-0.721095

-4705.625728

29095.738207

1993.265769

5.672486

0.967045

-0.722964

-4364.944715

29151.739210

1949.832836

5.683414

0.899633

-0.724793

-4023.631970

29203.691691

1906.291367

5.693544

0.832096

-0.726582

-3681.735416

29251.588436

1862.643785

5.702874

0.764444

-0.728330

-3339.303059

29295.422800

1818.892521

5.711404

0.696685

-0.730038

-2996.382979

29335.188706

1775.040009

5.719131

0.628830

-0.731705

-2653.023325

29370.880648

1731.088691

5.726056

0.560888

-0.733332

-2309.272308

29402.493693

1687.041013

5.732177

0.492868

-0.734917

-1965.178192

29430.023475

1642.899428

5.737493

0.424781

-0.736462

13.9 23
14133.552579

25853.867409

-2120.812721

5.024551

-2.805618

-0.717330

14434.024006

25683.743160

-2163.793093

4.991046

-2.865124

-0.715343

14732.464056

25510.060544

-2206.653028

4.956839

-2.924229

-0.713315

15028.830799

25332.843864

-2249.390139

4.921936

-2.982925

-0.711248

15323.082595

25152.117918

-2292.002048

4.886342

-3.041203

-0.709142

15615.178104

24967.907996

-2334.486383

4.850061

-3.099056

-0.706996

15905.076283

24780.239875

-2376.840780

4.813098

-3.156475

-0.704811

16192.736403

24589.139817

-2419.062882

4.775460

-3.213452

-0.702586

16478.118045

24394.634565

-2461.150337

4.737150

-3.269980

-0.700323

16761.181112

24196.751340

-2503.100805

4.698175

-3.326050

-0.698020

17041.885831

23995.517834

-2544.911950

4.658539

-3.381655

-0.695678

13.10 24
txt MATLAB
sat4.txtsat5.txtsat12.txtsat13.txtsat14.txtsat22.txtsat23.txt
sat24.txt

-2604.298533
ru = 4743.297217 km
3364.978513

-2177.527701
rm = 4388.901474 km
4070.001156

406MHZ

MATLAB

632

Editor
%%%%%%%%%%%%
%%%
%velocity of light
c=299792.458;
%
%
load sat4.txt sat4 -ascii
load sat5.txt sat5 -ascii
load sat12.txt sat12 -ascii
load sat13.txt sat13 -ascii
load sat14.txt sat14 -ascii
load sat22.txt sat22 -ascii
load sat23.txt sat23 -ascii
load sat24.txt sat24 -ascii
sat=[sat4(1,:);sat5(1,:);sat12(1,:);sat13(1,:);sat14(1,:);sat22(1,:);sat23(1,:);sat24(1,:)];
%,
ru=[-2604.298533

4743.297217

3364.978513]; %

rm=[-2177.527701

4388.901474

4070.001156]; %

%
rs=sat(:,1:3);

% 3

vs=sat(:,4:6);

% 3

%%%%
% f 406MHZ, de_F 1140MHZ
% MELOUT FOA
f=406;

de_F=1140;
[m,n]=size(rs);

MATLAB

633

%
% "(i) " MELOUT
for i=1:m
tt(i)=(norm(sat(i,1:3)-ru)+norm(sat(i,1:3)-rm))/c;
end
tt=tt';

%
for i=1:m
temp1=(rs(i,:)-ru)*vs(i,:)'/norm(rs(i,:)-ru)/c;
temp1=f*(1-temp1)+de_F;
temp2=(rs(i,:)-rm)*vs(i,:)'/norm(rs(i,:)-rm)/c;
temp2=1-temp2;
FOA(i)=temp1*temp2;
end
%%%%% MELOUT
FOA=FOA';

FOA

% MELOUT
% MELOUT

tt

%
% 0
%
lianhe_fangzhen.m

>> format long


>> lianhe_fangzhen

FOA =
1.0e+003 *
1.54600061607307

MATLAB

634

1.54599637910458
1.54600549668749
1.54600106050714
1.54599568544321
1.54600273251882
1.54599718502428
1.54599370129674

tt =
0.17919264361589
0.17793984796296
0.17494578317460
0.15726251399996
0.16217712768240
0.16306569155443
0.16442053508359
0.18397588836315
FOA tt

n 2n

MATLAB

635

r - r (1) + c ct (1) + rs (1) - rm


u s
M

ru - rs ( n) + c ct ( n) + rs ( n) - rm

v s (1) rs (1) - ru

(1)
FOA
f 1

F
(1)
(1)

c
r
r

v
rs - rm
s
u

1 s

F ( X) =
(1)

r
r
c

s
m


( n)
( n)

( n)

v
r
r

s
s
u
FOA

F
1

(n)
(n)

r
r
c

v
r
r
s
u
s
m

1 s

(n)

r
r
c
s
m

j
t ( ) j

j
FOA( ) j F
X = ( ru , , f ) = ( xu , yu , zu , , f )

xu x1

(1)
r
u - rs

xu xn
,

( n)
r

u - rs

v s (1) g ru - rs (1)

1
1
xu xs (1)
vsx ( ) ru - rs ( )
F' ( x ) =
ru - rs (1)
f
,

2
c
ru - rs (1)

n
n
v s ( ) g ru - rs ( )

n
(n )
(n )
xu xs ( )
vsx ru - rs
(n )
ru - rs
f

2
c
ru - rs ( n )

ru - rs (1)

yu yn

ru - rs ( n )

ru - rs (n )
vsy (1) ru - rs (1)
f
c

v s (1) g ru - rs (1)
ru - rs (1)
ru - rs

(1)

f
,
c

( j)

(y

(1)
u ys

ru - rs
ru - rs (n )

( j)

v s ( ) g ru - rs (
n

n
n
vsy ( ) ru - rs ( )

j j vsx
j y vsz

yu y1

ru - rs (1)

(n )
2

n)

(y

zu z1

c,

zu zn

c,

vsz (1) ru - rs (1)


f
,
c

ys( n)

ru - rs (1)
ru - rs

(1)

Editor
%%%
function F=lianhe_fun(t,tt,f,ru,rs,vs,rm,FOA,de_F)

zs (1)

ru - rs
ru - rs ( n )

( j)

)
,0,1 +

j x vsy

j z

(z

v s ( ) g ru - rs (
n

n
n
vsz ( ) ru - rs ( )

f
,
c

v s (1) g ru - rs (1)

( n)

n)

(z

zs (n )

v s (1) g ru - rs (1)
c ru - rs ( )

)
,0,1 +

v s ( n ) g ru - rs (n
c ru - rs ( n )

MATLAB

636

%t
%tt MELOUT
%f
%ru 13
%rs (m,3)m m
%vs (m,3)
%rm MELOUT

13

%FOA MELOUT ,FOA m1


%de_F
%F m1
c=299792.458; %
[m,n]=size(rs);

for i=1:m
f1(i)=norm(ru-rs(i,:))+c*t-c*tt(i)+norm(rm-rs(i,:));
end
f1=f1';

for i=1:m
temp(i)=1-1/c*(rs(i,:)-rm)*vs(i,:)'/norm(rs(i,:)-rm);
y(i)=FOA(i)/temp(i)-de_F;
temp2(i)=1-1/c*(rs(i,:)-ru)*vs(i,:)'/norm(rs(i,:)-ru);
f2(i)=temp2(i)*f-y(i);
end
f2=f2'; %
F=[f1;f2];
lianhe_fun.m

Editor
% Jacobi

MATLAB

637

% Jacobi
function df=lianhe_df(t,f,ru,rs,vs,rm)
%w
%t
%f
%ru
%rs (m,3)
%vs

(m,3)

%rm MELOUT

c=299792.458; %
[m,n]=size(rs);
weiju=zeros(m,5);
%%%%%%%%%%%%%%
for i=1:m
for j=1:3
weiju(i,j)=(ru(j)-rs(i,j))/norm(rs(i,:)-ru(j));
end
end
weiju(:,4)=c;
weiju(:,5)=0;

%%------------------------------------------------------------%
dpl=zeros(m,5);
for i=1:m
temp1=vs(i,1)*norm(ru-rs(i));
temp2=vs(i,:)*(ru-rs(i,:))'*(ru(1)-rs(i,1))/norm(ru-rs(i,:));
%temp2=vs(i,1)*(ru(1)-rs(i,1))^2/norm(ru-rs(i,:));
temp3=(norm(ru-rs(i,:)))^2;
dpl(i,1)=(temp1-temp2)/temp3*f/c;

MATLAB

638

temp1=f*vs(i,2)*norm(ru-rs(i));
temp2=vs(i,:)*(ru-rs(i,:))'*(ru(2)-rs(i,2))/norm(ru-rs(i,:));
%temp2=f*vs(i,2)*(ru(2)-rs(i,2))^2/norm(ru-rs(i,:));
temp3=(norm(ru-rs(i,:)))^2;
dpl(i,2)=(temp1-temp2)/temp3/c;

temp1=f*vs(i,3)*norm(ru-rs(i));
temp2=vs(i,:)*(ru-rs(i,:))'*(ru(3)-rs(i,3))/norm(ru-rs(i,:));
%temp2=f*vs(i,3)*(ru(1)-rs(i,3))^2/norm(ru-rs(i,:));
temp3=(norm(ru-rs(i,:)))^2;
dpl(i,3)=(temp1-temp2)/temp3/c;

dpl(i,5)=1+(ru-rs(i,:))*vs(i,:)'/c/norm(ru-rs(i,:)); %
end
dpl(:,4)=0;

df=[weiju;dpl];
lianhe_df.m

Editor
%
%%%%%%%%%%%%
%%%
%velocity of light
c=299792.458;
rm=[-2177.527701
de_F=1140;

4388.901474

4070.001156]; % ,

MATLAB

639

%
load sat4.txt sat4 -ascii
load sat5.txt sat5 -ascii
load sat12.txt sat12 -ascii
load sat13.txt sat13 -ascii
load sat14.txt sat14 -ascii
load sat22.txt sat22 -ascii
load sat23.txt sat23 -ascii
load sat24.txt sat24 -ascii

tt=[0.179192643615886
0.177939847962956
0.174945783174601
0.157262513999962
0.162177127682404
0.163065691554433
0.164420535083587
0.183975888363151];

tt=tt+(7e-6)*randn(size(tt));

FOA=[1546.00061607307
1545.99637910458
1546.00549668749
1546.00106050714
1545.99568544321
1546.00273251882
1545.99718502428
1545.99370129674]; %
FOA=FOA+(0.1e-3)*randn(size(FOA));

sat=[sat4(1,:);sat5(1,:);sat12(1,:);sat13(1,:);sat14(1,:);sat22(1,:);sat23(1,:);sat24(1,:)];
%,
%
rs=sat(:,1:3);

% 3

vs=sat(:,4:6);

% 3

MATLAB

640

nj=[-3000

5000

f0=400;

t0=1e-5;

3000]; %

ru=nj;
f=f0;
t=t0;

for i=1:500
fun=lianhe_fun(t,tt,f,ru,rs,vs,rm,FOA,de_F);
dfun=lianhe_df(t,f,ru,rs,vs,rm);

dx=-dfun\fun;

% MATLAB

ru(1)=ru(1)+dx(1);
ru(2)=ru(2)+dx(2);
ru(3)=ru(3)+dx(3);
t=t+dx(4);
f=f+dx(5);
tol=norm(dx(1:3));
if tol<10-8
break
end
end
disp('')
ru
disp('')
f
disp('')
i
lianhe_jiesuan.m

MATLAB

641

>> lianhe_jiesuan

ru =
1.0e+003 *
-2.6023

4.7429

3.3641

f=
406.0000

i=
6

MATLAB

642

MATLAB

643

Bananch Hilbert

S P x, y S

S x + y
a)

x + y = y + x, x, y S

b)

( x + y ) + z = x + ( y + z ) x, y, z S

c)

S 0 x + 0 = x x S

d)

x S S x x + ( x ) = 0

a P x S ag x ax

e)

1x = x, x S

f)

( ab ) x = a ( bx ) , x S , a, b P

g)

a ( x + y ) = ax + ay, x, y S , a P

h)

( a + b ) x = ax + bx, x, a, b P

SP+ g S P
S

1 C m n
C

MATLAB

644

2 C n [ a, b] [ a, b ] n

S S

d :SS R

a)

d ( x, y ) = 0 x = y

b)

d ( x, y ) = d ( y , x )

c)

d ( x, z ) d ( x, y ) + d ( y, z )
S x, y, z d S

S S ( S ; d ) S

3 R x, y d ( x, y ) = x y

4 R x = x , x ,L , x
n

) , y = ( y , y ,L, y )

d ( x, y ) =

( x

i =1

yi )

5 R x = x , x ,L , x
n

) , y = ( y , y ,L, y )
1

p p
n
d ( x, y ) = x i y i
i =1

Minkowski
1

p
i
i p p i p p
i p
x + y x + y
i =1

i =1
i =1


3 ( S ; d ) { xn : n N }

> 0 N N m, n N d ( xm , xn ) <

MATLAB

645

4 ( S ; d ) { xn : n N } a S lim d ( a, xn ) = 0
n

5 ( S ; d )
n

6 R

d ( x, y ) =

( x
n

i =1

yi )


6 a S f : S S

f (a) = a
7 ( S ; d ) f : S S q
0<q<1 S x, y

d ( f ( x ) , f ( y ) ) qd ( x, y )
1Picard-Banach ( S ; d )

f : S S

-
x0 S

x0 , x1 = f ( x0 ) , L , xn +1 = f ( xn ) ,L
a

d ( a, xn )

qn
d ( x1 , x0 )
1 q

2 Banach


8 X x X x

MATLAB

646

: X R X

a)

x = 0 x = 0

b)

x = x

c)

x+ y x + y

{ xn } X a X

xn a 0 ( n ) { xn }

a a lim xn = a
n

d ( x, y ) = x y , ( x, y X )
d ( x, y ) X { xn } a { xn } d ( x, y )
a
d ( x, y ) x
Banach
9 Banach
7 C [ a, b ] x C [ a, b ]

x = max x ( t )
a t b

C [ a, b ] Banach
8 l x = (1 , 2 ,L) l

x = sup j
j

l Banach

V x :V a R x x, y V

1 x 0

MATLAB

647

1a x = 0 x = 0
2 cx = c x c
3 x + y x + y

1 l1
n

x = xi
i =1

2 l2

= 5,

3 l

= max xi
1i n

4 l p
n

x = ( xi )1/ p
i =1

l1 , l2 , l l p p = 1, 2, l p

x = (3, 4,5)T l1 , l2 , l x 1 = 12 x

=5 2 x

= 5

C1 , C2 R

C1 x

x C2 x

A R

n m

A A

1 A > 0 A 0 0 = 0
2 c cA = c A

MATLAB

648

3 A + B A + B
4 AB A B

1Frobenius
m

= ( aij )1/ 2
i =1 j =1

2 l p

= max
x 0

Ax
x

p
p

3
n

row

= max{ aij }
1i m

j =1

col

= max{ aij }

spec

= max = max

1 j n

i =1

max A A A max
H

Hilbert
n

Hilbert R R n
n Hilbert

10 X X x, y x, y

a)

x, x > 0 , x, x = 0 x = 0, x X

b)

ax + by , z = a x, z + b y, z , ( x, y, z X ) , ( a, b ) C

c)

x, y = y, x , ( x, y X )

x, y x y X

MATLAB

649

X x X

x =

x, x

x X

Hilbert
2 Schwarz X x, y

x, y x

xy
Schwarz x, y X

x + y = x + y , x + y = x, x + x, y + y, x + y, y
2

= x + x, y + y, x + y
2

y + y =( x + y

x +2 x
2

x + y x + y

x =

x, x

Hilbert
9 l 2 x = (1 , 2 , 3 ,L) , y = (1 , 2 ,3 ,L)

x, y = ii
i =1

2
l Hilbert

MATLAB

650

UltraEdit

Windows

MATLAB Editor
UltraEdit
UltraEdit
c/c++/c#DelphiFortran
MATLABMapleHTMLJava
1

1 UltraEdit

MATLAB

651

2
3

MATLAB

652

UltraEdit MATLAB
4

4
5

5
5
6

MATLAB

653

6
6

wordfile.txt UltraEdit
6
UltraEdit 7

MATLAB

654

UltraEdit wordfile.txt

wordfile.txt 7

/L20"MATLAB 2008 " Nocase Line Comment = % String Chars = ' File Extensions
= m M
/Function String = "%[ ^t]++function*=[ ^t]++^([a-z0-9_]+^)"
/Function String 1 = "%[ ^t]++function[ ^t]+^([a-z0-9_]+^)[ ^t]++[~=]"
/Delimiters = ~!@$^&*()-+=|\/{}[]:;"'<> ,
.?
/C1
break
case catch
else elseif end
for function
global
if
otherwise
persistent
return
switch
try
while
/C2
abs acos acosh add_annotation add_block add_line add_param all and any
asin asinh assignin atan atan2 atanh

MATLAB

655

balance beep bitand bitcmp bitget bitor bitset bitshift bitxor builtin
callstats cat cd ceil cell cell2struct cellhorzcat cells char chdir
check_system chol cholinc cholupdate class clc clear clock close_system
colon compare_system computer
conj contourc conv2 copyobj cos cosh cputime ctranspose cumprod cumsum
dbclear dbcont dbdown dbquit dbstack dbstatus dbstep dbstop dbtype dbup
delete delete_annotation delete_block delete_line delete_param det diag
diary diff disp display
dongarra dos double dragrect drawnow
echo eig eps eq error errortrap eval evalc evalin exist exit exp expm eye
fclose feature feof ferror feval fft fftn fftw fgets fieldnames fields
filesep fill fill3 filter find find_system findpackage findstr findtype
finite fix floor fopen
format fprintf frame2im fread fscanf fschange fseek ftell full func2str
functions functionscalled fwrite
ge getenv getframe gs_get_buttonmotion gt
handle handle2struct hardcopy hcreate help hess hittest home horzcat
hregister
i ieee ifft ifftn im2frame imag import inf Inf inferiorto inmem input
inputname int16 int32 int8 inv isa iscell ischar isempty isequal isfinite
isglobal ishandle isieee
isinf isjava isletter islogical isnan isreal isruntime isspace issparse
isstr isstudent
j java javaArray javaMethod javaObject java_array java_method
java_object
keyboard
lasterr lastwarn ldivide le length license load log log2 logical loglog
lookfor lower lt ltitr lu luinc
magic matlabpath matlabroot max methods mexext mfilename mimofr min minus
mislocked mldivide mlock mod more movie mpower mrdivide mtimes munlock
nan NaN nargin nargout ndims ne new_system norm not numel
ones open_system or
pack pause permute pfile pi plot plot3 plus pow2 power prod
qr qrupdate quit qz
rand randn rbbox rcond rdivide real rehash rem reset reshape rmappdata
round rtwgen runtime
save save_system schur selectmoveresize semilogx semilogy setappdata
setstr sign sim simulink simver sin single sinh size sldebug sort sparse
sparsfun sprintf sqrt sscanf
str2func strcmp strcmpi strfind string strncmp strncmpi strrep struct
struct2cell struct2handle subsasgn subsindex subsref sum superiorto svd
system system_dependent
tan tanh tic times toc transpose tril triu trmginput type

MATLAB

656

u_convert_to_gobject uigetfile uimenufcn uint16 uint32 uint8


uipushtool uiputfile uisetcolor uisetfont uitoggletool uitoolbar uminus
unix uplus upper
version vertcat vms
waitfor waitforbuttonpress warning what which who whos
xlate
zeros
/C3
axes
dir
figure findobj
gcbf gcbo gcf gco get get_param gcbh
image
light line
patch pwd
rectangle
set set_param sf surface
text
uicontrol uimenu uicontextmenu
/C4
+
=
// /
\
%
&
>
<
^
!
{
}
|
L20 MATLAB 20
cjava 20
20 6
8

MATLAB

657

8 MATLAB
L20 "MATLAB 2008 "

UltraEdit MATLAB m
m 9

MATLAB

658

9 MATLAB
m MATLAB Editor
UltraEdit m 10

MATLAB

659

10
11

MATLAB

660

11
11 12
12 UltraEdit m UltraEdit

12

MATLAB
UltraEdit IDM Computer Solutions, Inc

wordfile.txt

6
MATLAB 6
13

MATLAB

661

13 MATLAB
UltraEdit UltraEdit

MATLABMapleFortranJavaDelphiHTMLPhytonBasicC/C++
C#

MATLAB

662

MATLAB

4 a=1b=2c=3
d=4 a+d a+b a+d

a+b

1 sum = 1 + 2 + 3 +L n n=5 sum

Editor
function s=fulu_ex1(n)
for i=1:n
s=s+i;

MATLAB

663

end
fulu_ex1.m

>> fulu_ex1(5)
MALTAB
??? Undefined function or variable "s".
Error in ==> fulu_ex1 at 4
s=s+i;
s
fulu_ex1 4
s
s
function s=lianjia(n)
s=0;
for i=1:n
s=s+i;
end

>> fulu_ex1(5)

ans =
15

2
2 f ( x ) = x + x cos x x 0 6 0.1

Editor
function f=fulu_ex2(x)
f=x^2+x*cos(x);
fulu_ex2.m

>> x=0:0.1:6;
>> y=fulu_ex2(x);
MATLAB

MATLAB

664

??? Error using ==> mpower


Matrix must be square.
Error in ==> fulu_ex2 at 2
f=x^2+x*cos(x);

function f=fulu_ex1(x)
f=x.^2+x.*cos(x);

>> clear
>>clc
>> x=0:0.1:6;
>> y=fulu_ex2(x); %
>> plot(x,y,'*')
>> grid
1

1 2

s ( x, n ) = x + x 2 + x 3 +L x n
x n

function s=fulu_ex3(x,n)
% 2 3
mi=1;
s=0;

MATLAB

665

for i=1:n
mi=mi*x;
s=s+mi;
end

function s=fulu_ex3(x,n)
% 2 3
mi=1;
s=0;
for i=1:n
mi=mi*mi;
s=s+mi;
end

>>fulu_ex3(2,3)

ans =
3

s ( 2,3) = 2 + 2 2 + 23 = 14
14 3

Editor
n=4;
x=2;
f=fulu_ex3(x,n)
ex3_main.m fulu_ex3()

MATLAB

666

3
3 2

MATLAB

667

4 x

fulu_ex3() 5

MATLAB

668

5
5
6

6
6
mi 7

MATLAB

669

7
mi 1 mi
x 2n 1 mi 2 6
mi=mi*x;
n n 4

>> ex3_main

f=
30

MATLAB 8

MATLAB

670

8
K>>
n
K>> n

n =
4
K>>

100
K>> s=100;
K>>

s 102 9

MATLAB

50

1000

4 3

MATLAB

671

s ( 2, 20 ) = 2 + 22 + 23 + L + 220
fulu_ex3.m 10
ex3_main.m
n=20;
x=2;
f=fulu_ex3(x,n)

10

10

11

11
11 6
12

MATLAB

672

12
Editor DebugSet/Modify Conditional Breakpoit

13

13

MATLAB 13
i>10

14

MATLAB

673

14

11

11 10 15

15
i 11
MATLAB 16

MATLAB

674

16

pascalfortran

MATLAB

675


A
1
http://www.amss.ac.cn/amss/index.htm
2
http://lsec.cc.ac.cn/chinese/icmsec/indexcn.html
3
http://www.math.pku.edu.cn/
4
http://www.nju.edu.cn/cps/site/mathematics/main/main.htm
5
http://math.fudan.edu.cn/
6
http://www.math.zju.edu.cn/webpagenew/homepage.asp
7
http://math.tsinghua.edu.cn/
8
http://math.sysu.edu.cn/sjxy/index.aspx
9
http://math.ustc.edu.cn/Ch/
10

http://math.bnu.edu.cn/
11

http://math.ecnu.edu.cn/

B
1 CMLIB
NITS Fortran

MATLAB

676

http://gams.nist.gov/
2 IMSL
Visual Numerics C#C Fortran Visual Fotran
IMSL
http://www.vni.com/
3 NAG
Fortran77/90 C
1000
http://www.nag.com/
4 SLATEC
Fortran

http://www.energy.gov/

C
1 MATLAB
MATLAB
http://www.mathworks.com
2 Maple
MATLAB

http://www.maplesoft.com
3 Mathmatica
Wolfram
MATLAB

http://www.mathematica.com
4 Scilab
Scilab INRIA
MATLAB MATLAB Scilad

http://www.scilab.org/

MATLAB

677

1
2005
2 1978
3
2005
4 [] BA

2006
5 [] David KincaidWard Cheney
2005
6 MATLAB 2006
7 MATLAB 2004
8 MATLAB 2007
9 C
2004
10
1992
11

12

13
Byron D Tapley Bob E Schutz George H Born Statistical Orbit
DeterminationELSEVIER ACADEMIC PRESS2004
14
A E RoyOrbital MotionSecond EditionBristolAdam Hilger Ltd
15
CARL DMURRAYSTANLEY FDERMOTTCAMBRIDGE UNIVERSITY
PRESS1999
16
2007
17

1983
18
[] VIAnorld 2006
19
MATLAB 2006
20
1998
21

2003
22
1998
23
2004
24
2003
25
1990
26
[] John HMathews,Kurtis DFink
2007
27
2007
28

2001
29

2002
30

2005
31
2004
32
2000
33
Java
2003

MATLAB

678

34

2001
35

1985
36
Cleve BMolerNumerical Computing with MATLABSociety for Industrial and
Applied Mathmatics,2004
37

1988
38

2001
39
[] Pratap MisraPer Enge
2008
40
2006
41

1998
42
PVenkataramanAPPLIED OPTIMIZATION WITH MATLAB PROGRAMMINGA
WILEY-INTERSCIENCE PUBLICATION JOHN WILEY&SONS,INC
43
[]GHCF
2001
44
Willian H Press Saul A Teukolsky William T Vetterling Brian
PFlanneryNUMERICAL RECIPES(Third Editon) Cambrige University Press,2007

MATLAB

679