-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGRAD.txt
123 lines (97 loc) · 1.86 KB
/
GRAD.txt
1
2
3
4
5
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
Lbl MS
ClrHome
Menu("Setup","A eingeben",IA,"b eingeben",IB,"xsmall0 eingeben",IC,"starten",GO)
Lbl IA
Input "Matrix A=",[A]
ClrHome
Disp "Matrix A="
Pause [A]>Frac
Goto MS
Lbl IB
Input "Rechte Seite b=",[B]
ClrHome
Disp "Rechte Seite b="
Pause [B]>Frac
Goto MS
Lbl IC
Input "Startwert xsmall0=",[C]
ClrHome
Disp "Startwert xsmall0="
Pause [C]>Frac
Goto MS
" Arbeitsvektor und Dimension initialisieren
Lbl GO
[C]->[D]
dim([D])->|LDIM:|LDIM(1)->N
" Nullvektor initialisieren
[D]->[G]
Fill(0,[G])
Disp "Residuum:"
[B]-[A][D]->[J]
Disp "rsmall0=b-Axsmall0=",[J]
If [J]=[G]:Return
Pause
det([J]^^T[J])->R
Disp "rhosmall0=<rsmall0,rsmall0>"+"="
Pause R>Frac
ClrHome
" Indizes bestimmen
0->K
"small0"->Str0
Lbl IT
K+1->K
Str9->Str8
Str0->Str9
If K=1:"small1"->Str0
If K=2:"small2"->Str0
If K=3:"small3"->Str0
If K=4:"small4"->Str0
If K=5:"small5"->Str0
0->C
Menu("Verfahren?","konjugiert",C,"gewoehnlich",G,"beenden",E)
Lbl C
1->C
Lbl G
If C=0:[J]->[I]
If C=1:Then
Disp "Suchrichtung:"
If K=1:Then
[J]->[I]
Disp "d"+Str0+"=r"+Str9+"="
Else
[J]+(R/S)[I]->[I]
Disp "d"+Str0+"=r"+Str9+"+(rho"+Str9+"/rho"+Str8+")d"+Str9+"="
End
Pause [I]
ClrHome
End
Disp "Line search:"
[A][I]->[H]
If C=1:Disp "a"+Str0+"=Ad"+Str0+"="
If C=0:Disp "a"+Str9+"=Ar"+Str9+"="
Pause [H]
R/det([I]^^T[H])->Q
If C=1:Disp "alpha"+Str0+"=rho"+Str9+"/<d"+Str0+",a"+Str0+">"+"="
If C=0:Disp "lambda"+Str9+"=<r,r>/<r,a>"+"="
Pause Q>Frac
ClrHome
Disp "Neue Iterierte:"
[D]+Q[I]->[D]
If C=1:Disp "x"+Str0+"=x"+Str9+"+alpha"+Str0+"d"+Str0+"="
If C=0:Disp "x"+Str0+"=x"+Str9+"+lambda"+Str9+"r"+Str9+"="
Pause [D]
ClrHome
Disp "Residuum:"
[J]-Q[H]->[J]
If C=1:Disp "r"+Str0+"=r"+Str9+"-alpha"+Str0+"a"+Str0+"="
If C=0:Disp "r"+Str0+"=r"+Str9+"-lambda"+Str9+"a"+Str9+"="
Disp [J]
If [J]=[G]:Return
Pause
R->S
det([J]^^T[J])->R
Disp "rho"+Str0+"=<r"+Str0+",r"+Str0+">"+"="
Pause R>Frac
ClrHome
Goto IT
Lbl E