]> git.llucax.com Git - z.facultad/75.12/tp1.git/blob - informe.lyx
Se expanden keywords del svn.
[z.facultad/75.12/tp1.git] / informe.lyx
1 #LyX 1.1 created this file. For more info see http://www.lyx.org/
2 \lyxformat 218
3 \textclass book
4 \language spanish
5 \inputencoding auto
6 \fontscheme default
7 \graphics default
8 \paperfontsize default
9 \spacing single 
10 \papersize Default
11 \paperpackage a4
12 \use_geometry 0
13 \use_amsmath 0
14 \paperorientation portrait
15 \secnumdepth 2
16 \tocdepth 2
17 \paragraph_separation indent
18 \defskip medskip
19 \quotes_language english
20 \quotes_times 2
21 \papercolumns 1
22 \papersides 2
23 \paperpagestyle default
24
25 \layout Title
26
27 Análisis Numérico I
28 \newline 
29 Trabajo Práctico N° 1
30 \layout Author
31
32 Leandro Lucarella (77.891)
33 \layout Date
34
35 $Date$ ($Rev$)
36 \layout Standard
37
38 Copyright (C) 2002 Leandro Lucarella.
39 \layout Standard
40
41 Tiene permiso para copiar, distribuir y/o modificar este documento bajo
42  los términos de la GNU Free Documentation License (Licencia de Documentación
43  Libre GNU), Versión 1.1 o cualquier versión posterior publicada por la Free
44  Software Foundation (Fundación de Software Libre); sin Invariant Sections
45  (Secciones Invariantes), sin Front-Cover Texts (Texto de Portada-Delantera),
46  y sin Back-Cover Texts (Texto de Portada-Trasera).
47  Puede obtener una copia de la licencia en inglés en 
48 \begin_inset LatexCommand \url{http://www.gnu.org/licenses/fdl.txt}
49
50 \end_inset 
51
52  o en español (sin validez legal) en 
53 \begin_inset LatexCommand \url{http://www.geocities.com/larteaga/gnu/gfdl.html}
54
55 \end_inset 
56
57 .
58 \layout Standard
59
60
61 \begin_inset LatexCommand \tableofcontents{}
62
63 \end_inset 
64
65
66 \layout Chapter
67
68 Introducción.
69 \layout Section
70
71 Objetivo.
72 \layout Standard
73
74 El objetivo de este trabajo práctico es adquirir experiencia en el uso de
75  métodos iterativos para la resolución de sistemas de ecuaciones lineales
76  ralos resultantes de la discretización mediante diferencias finitas de
77  ecuaciones diferenciales.
78  Mediante experimentación numérica se optimiza la velocidad de convergencia
79  del proceso iterativo en función de la discretización empleada.
80  Los resultados de la optimización numérica se comparan con resultados teóricos.
81  Finalmente se efectúa una aplicación práctica.
82 \layout Section
83
84 Generalidades.
85 \layout Standard
86
87 La solución aproximada 
88 \begin_inset Formula \( f_{i} \)
89 \end_inset 
90
91  de la ecuación de Laplace 
92 \begin_inset Formula \( \nabla ^{2}\phi =0 \)
93 \end_inset 
94
95  en un dominio bidimensional cuadrado discretizado usando una grilla uniforme
96  
97 \begin_inset Formula \( (x_{i}=x_{0}+ih\; ;\; y_{j}=y_{0}+jh) \)
98 \end_inset 
99
100  puede obtenerse resolviendo el sistema de ecuaciones lineales que surge
101  de aplicar el siguiente operador a cada uno de los nodos de la grilla:
102 \begin_inset Formula \[
103 4f_{i,j}-f_{i-1,j}-f_{i+1,j}-f_{i,j-1}-f_{i,j+1}=0\]
104
105 \end_inset 
106
107  La matriz de coeficientes del sistema de ecuaciones lineales resultante
108  es rala (a lo sumo 5 elementos por fila son distintos de cero) y presenta
109  una estructura tri-diagonal en bloques.
110  La resolución de este sistema de ecuaciones fue ampliamente estudiada en
111  forma teórica durante la época del auge del método de las diferencias finitas
112  (aproximadamente a mediados del siglo XX).
113  Estos resultados muestran que el método de Gauss-Seidel converge cuando
114  se aplican condiciones de borde de tipo Dirichlet pero que la velocidad
115  de convergencia disminuye a medida que se mejora la discretización (reducción
116  de h).
117  Esta situación es revertida utilizando sobre-relajación con un valor óptimo
118  que también se estableció en forma teórica para dominios cuadrados y rectangula
119 res.
120  Entre las aplicaciones más importantes efectuadas en ese momento con esta
121  técnica se encuentra el desarrollo de reactores nucleares.
122 \layout Section
123
124 Planteo del Trabajo Práctico.
125 \layout Standard
126
127 El trabajo práctico se divide en dos partes: en la primera se analiza la
128  optimización del proceso iterativo y en la segunda se efectúa una aplicación
129  practica consistente en determinar la distribución de temperaturas sobre
130  una región del 
131 \emph on 
132 \lang english
133 motherboard
134 \emph default 
135 \lang spanish
136  de una computadora.
137 \layout Chapter
138
139 Primera Parte.
140 \layout Section
141
142 Introducción.
143 \layout Standard
144
145 En la figura 
146 \begin_float fig 
147 \layout Caption
148
149
150 \begin_inset LatexCommand \label{fig:grilla}
151
152 \end_inset 
153
154 Discretización de un dominio cuadrado (N=4).
155 \layout Standard
156 \align center 
157
158 \begin_inset Figure size 216 216
159 file grilla.eps
160 subcaption Grilla
161 flags 11
162
163 \end_inset 
164
165
166 \end_float 
167
168 \begin_inset LatexCommand \vref{fig:grilla}
169
170 \end_inset 
171
172  se muestra la discretización de un dominio cuadrado cuyos lados se dividieron
173  en N = 4 partes iguales.
174  Sobre los contornos el valor de se encuentra impuesto (condición de tipo
175  Dirichlet).
176  La solución aproximada 
177 \begin_inset Formula \( f_{i} \)
178 \end_inset 
179
180  en los 
181 \begin_inset Formula \( (N-1)\cdot (N-1) \)
182 \end_inset 
183
184  nodos interiores se obtienen como solución de un sistema de ecuaciones
185  lineales cuya matriz de coeficientes, para N = 4, es de la forma:
186 \begin_inset Formula \[
187 A=\left[ \begin{array}{ccc}
188 T & -I & 0\\
189 -I & T & -I\\
190 0 & -I & T
191 \end{array}\right] \, con\, T=\left[ \begin{array}{ccc}
192 4 & -1 & 0\\
193 -1 & 4 & -1\\
194 0 & -1 & 4
195 \end{array}\right] \]
196
197 \end_inset 
198
199
200 \layout Standard
201
202 donde 
203 \begin_inset Formula \( I \)
204 \end_inset 
205
206  es la matriz identidad de dimensión N - 1.
207  Si se aplica el método de Gauss-Seidel a este sistema de ecuaciones el
208  radio espectral de la matriz de iteración resulta 
209 \begin_inset Formula \( \rho _{\left( T_{GS}\right) }=\cos \left( \frac{\pi }{N}\right)  \)
210 \end_inset 
211
212 .
213  Observar que si bien el método converge para todo N > 0, la convergencia
214  es muy lenta para valores grandes de N pues 
215 \begin_inset Formula \( \rho _{\left( T_{GS}\right) } \)
216 \end_inset 
217
218  tiende a 1.
219  En cambio, el método SOR optimizado presenta un 
220 \begin_inset Formula \( \rho _{\left( T_{\omega }\right) _{optimo}}=\omega _{optimo}-1 \)
221 \end_inset 
222
223  donde el factor de relajación óptimo es:
224 \layout Standard
225
226
227 \begin_inset Formula \[
228 \omega _{optimo}=\frac{2}{1+\sqrt{\rho _{\left( T_{GS}\right) }}}=\frac{2}{1+\sin \left( \frac{\pi }{N}\right) }\]
229
230 \end_inset 
231
232 Dado que las propiedades de convergencia no dependen del valor de arranque
233  ni del valor sobre los contornos, en la primera parte de este trabajo se
234  asume, por simplicidad, que en los contornos 
235 \begin_inset Formula \( \phi =1 \)
236 \end_inset 
237
238  y se toma 
239 \begin_inset Formula \( f_{i}=0 \)
240 \end_inset 
241
242  como valor de arranque.
243  Además se indica utilizar el siguiente criterio de convergencia:
244 \begin_inset Formula \[
245 R\leq R_{TOL}\, donde\, R=\frac{\left\Vert f^{k+1}-f^{k}\right\Vert _{2}}{\left\Vert f^{k+1}\right\Vert _{2}}\]
246
247 \end_inset 
248
249  
250 \begin_inset LatexCommand \label{sec:s}
251
252 \end_inset 
253
254 Para estimar el radio espectral de la matriz de iteración, 
255 \begin_inset Formula \( \rho _{\left( T_{\omega }\right) } \)
256 \end_inset 
257
258 , se usará la expresión:
259 \begin_inset Formula \[
260 S=\frac{\left\Vert f^{k+1}-f^{k}\right\Vert _{2}}{\left\Vert f^{k}-f^{k-1}\right\Vert _{2}}\]
261
262 \end_inset 
263
264
265 \layout Section
266
267 Construcción del programa principal.
268 \layout Standard
269
270 Para comenzar se describirá brevemente el proceso de construcción del programa
271  principal que resuelve este particular problema por el método de SOR (o
272  Gauss-Seidel si 
273 \begin_inset Formula \( \omega =1 \)
274 \end_inset 
275
276 ).
277 \layout Standard
278
279 Primero se identificaron los tipos de nodos presentes, dividiéndolos en
280  tres grandes grupos:
281 \layout Description
282
283 Nodos\SpecialChar ~
284 de\SpecialChar ~
285 los\SpecialChar ~
286 vértices Tienen dos condiciones de borde.
287 \layout Description
288
289 Nodos\SpecialChar ~
290 de\SpecialChar ~
291 los\SpecialChar ~
292 bordes Tienen una condición de borde.
293 \layout Description
294
295 Nodos\SpecialChar ~
296 centrales No tienen condiciones de borde.
297 \layout Standard
298
299 A su vez, cada grupo (exceptuando los nodos centrales) se divide en cuatro
300  subgrupos, según la ubicación de los bordes, tomando como nomenclatura
301  a los puntos cardinales como se ve en la figura
302 \begin_float fig 
303 \layout Caption
304
305
306 \begin_inset LatexCommand \label{fig:regiones}
307
308 \end_inset 
309
310 Regiones según tipo de nodo.
311 \layout Standard
312 \align center 
313
314 \begin_inset Figure size 216 216
315 file regiones.eps
316 subcaption Regiones
317 flags 11
318
319 \end_inset 
320
321
322 \end_float 
323  
324 \begin_inset LatexCommand \vref{fig:regiones}
325
326 \end_inset 
327
328 .
329  De esta forma, podeNordestemos distinguir N nodos en los vértices (en orden
330  ascendente según el número de nodo):
331 \layout Itemize
332
333 Sudoeste (SO).
334 \layout Itemize
335
336 Noroeste (NO).
337 \layout Itemize
338
339 Sudeste (SE).
340 \layout Itemize
341
342 Nordeste (NE).
343 \layout Standard
344
345 De la misma manera se distinguen cuatro subgrupos de los nodos de los bordes
346  (con N - 3 nodos cada uno):
347 \layout Itemize
348
349 Oeste (O).
350 \layout Itemize
351
352 Norte (N).
353 \layout Itemize
354
355 Sur (S).
356 \layout Itemize
357
358 Este (E).
359 \layout Standard
360
361 Podemos observar entonces que se tiene 9 tipos distintos de nodos, contenidos
362  en 3 grandes grupos.
363 \layout Standard
364
365 El problema siguiente es la identificación de cada nodo.
366  Probando con distintos N podemos hallar las siguientes condiciones para
367  que un nodo sea de un tipo particular, a saber:
368 \layout Description
369
370 SO Si es el primer nodo.
371 \layout Description
372
373 NO Si es el nodo número N - 1.
374 \layout Description
375
376 SE Si es el nodo número 
377 \begin_inset Formula \( \left( N-1\right) \cdot \left( N-2\right) +1=N^{2}-3\cdot N+3 \)
378 \end_inset 
379
380 .
381 \layout Description
382
383 NE Si es el nodo número 
384 \begin_inset Formula \( \left( N-1\right) ^{2}=N^{2}-2\cdot N+1 \)
385 \end_inset 
386
387 .
388 \layout Description
389
390 O Si el número de nodo pertenece al intervalo 
391 \begin_inset Formula \( \left[ 2;N-1\right]  \)
392 \end_inset 
393
394 .
395 \layout Description
396
397 N Si el número de nodo es múltiplo de N - 1.
398 \layout Description
399
400 S Si el número de nodo menos 1 es múltiplo de N - 1.
401 \layout Description
402
403 E Si el número de nodo pertenece al intervalo 
404 \begin_inset Formula \( \left[ N^{2}-3\cdot N+4;N^{2}-2\cdot N\right]  \)
405 \end_inset 
406
407 .
408 \layout Description
409
410 C El resto de los nodos son centrales.
411 \layout Standard
412
413 Finalmente el método SOR para este caso se reduce a:
414 \begin_inset Formula \[
415 \phi _{i}^{k+1}=\left( 1-\omega \right) \cdot \phi _{i}^{k}+\frac{\omega }{4}\cdot \left( b_{i}+\phi _{i-N+1}^{k+1}+\phi _{i-1}^{k+1}+\phi _{i+1}^{k}+\phi _{i+N-1}^{k}\right) \]
416
417 \end_inset 
418
419
420 \layout Standard
421
422 Siendo necesario sumar sólo algunos términos de 
423 \begin_inset Formula \( \phi  \)
424 \end_inset 
425
426  según el tipo de nodo.
427 \layout Section
428
429 Puntos a), b) y c).
430 \layout Standard
431
432 En los primeros tres puntos del trabajo se propone hallar la solución para
433  N = 4, 8, 16 y 32, primero con 
434 \begin_inset Formula \( R_{TOL}=0.01 \)
435 \end_inset 
436
437  y 
438 \begin_inset Formula \( \omega =1.0 \)
439 \end_inset 
440
441  y luego con incrementos de 
442 \begin_inset Formula \( \Delta \omega =0.05 \)
443 \end_inset 
444
445 .
446 \layout Standard
447
448 A continuación se presentan los resultados de las corridas para 
449 \begin_inset Formula \( \omega =1.0 \)
450 \end_inset 
451
452 , en orden de nodo ascendente de izquierda a derecha y de arriba a abajo.
453 \layout Subsection
454
455
456 \begin_inset LatexCommand \label{sec:resultadosN}
457
458 \end_inset 
459
460 Resultados para distintos N.
461 \layout Subsubsection
462
463 N = 4.
464 \layout LyX-Code
465
466 Iteraciones: 8
467 \layout LyX-Code
468
469 Radio espectral experimental: 0.50
470 \layout LyX-Code
471
472 0.99  0.99  1.00  0.99  0.99  1.00  1.00  1.00 
473 \layout Subsubsection
474
475 N = 8.
476 \layout LyX-Code
477
478 Iteraciones: 19
479 \layout LyX-Code
480
481 Radio espectral experimental: 0.86
482 \layout LyX-Code
483
484 0.98  0.97  0.96  0.96  0.97  0.98  0.99  0.97  0.94 
485 \layout LyX-Code
486
487 0.93  0.93  0.94  0.96  0.98  0.96  0.93  0.92  0.92 
488 \layout LyX-Code
489
490 0.93  0.95  0.97  0.96  0.93  0.92  0.92  0.93  0.95 
491 \layout LyX-Code
492
493 0.97  0.97  0.94  0.93  0.93  0.94  0.96  0.98  0.98 
494 \layout LyX-Code
495
496 0.96  0.95  0.95  0.96  0.97  0.98  0.99  0.98  0.97 
497 \layout LyX-Code
498
499 0.97  0.98  0.98 
500 \layout Subsubsection
501
502 N = 16.
503 \layout LyX-Code
504
505 Iteraciones: 37
506 \layout LyX-Code
507
508 Radio espectral experimental: 0.96
509 \layout LyX-Code
510
511 0.98  0.97  0.95  0.94  0.93  0.92  0.92  0.92  0.92 
512 \layout LyX-Code
513
514 0.92  0.93  0.94  0.96  0.97  0.99  0.97  0.93  0.91 
515 \layout LyX-Code
516
517 0.88  0.86  0.85  0.84  0.84  0.84  0.85  0.87  0.89 
518 \layout LyX-Code
519
520 0.92  0.94  0.97  0.95  0.91  0.86  0.83  0.80  0.78 
521 \layout LyX-Code
522
523 0.77  0.77  0.78  0.79  0.81  0.84  0.88  0.92  0.96 
524 \layout LyX-Code
525
526 0.94  0.88  0.83  0.79  0.75  0.73  0.71  0.71  0.72 
527 \layout LyX-Code
528
529 0.74  0.77  0.80  0.85  0.90  0.95  0.93  0.86  0.80 
530 \layout LyX-Code
531
532 0.75  0.71  0.68  0.67  0.66  0.67  0.70  0.73  0.77 
533 \layout LyX-Code
534
535 0.82  0.88  0.94  0.92  0.85  0.78  0.73  0.68  0.65 
536 \layout LyX-Code
537
538 0.63  0.63  0.64  0.67  0.70  0.75  0.81  0.87  0.93 
539 \layout LyX-Code
540
541 0.92  0.84  0.77  0.71  0.67  0.63  0.62  0.61  0.62 
542 \layout LyX-Code
543
544 0.65  0.69  0.74  0.80  0.86  0.93  0.92  0.84  0.77 
545 \layout LyX-Code
546
547 0.71  0.66  0.63  0.61  0.61  0.62  0.65  0.69  0.74 
548 \layout LyX-Code
549
550 0.80  0.86  0.93  0.92  0.84  0.78  0.72  0.67  0.64 
551 \layout LyX-Code
552
553 0.62  0.62  0.63  0.66  0.70  0.75  0.80  0.87  0.93 
554 \layout LyX-Code
555
556 0.92  0.85  0.79  0.74  0.70  0.67  0.65  0.65  0.66 
557 \layout LyX-Code
558
559 0.68  0.72  0.76  0.82  0.88  0.94  0.93  0.87  0.81 
560 \layout LyX-Code
561
562 0.77  0.73  0.70  0.69  0.69  0.70  0.72  0.75  0.79 
563 \layout LyX-Code
564
565 0.84  0.89  0.95  0.94  0.89  0.84  0.80  0.77  0.75 
566 \layout LyX-Code
567
568 0.74  0.74  0.75  0.76  0.79  0.82  0.86  0.91  0.95 
569 \layout LyX-Code
570
571 0.96  0.92  0.88  0.85  0.82  0.81  0.80  0.80  0.80 
572 \layout LyX-Code
573
574 0.82  0.84  0.86  0.90  0.93  0.96  0.97  0.94  0.92 
575 \layout LyX-Code
576
577 0.90  0.88  0.87  0.86  0.86  0.87  0.88  0.89  0.91 
578 \layout LyX-Code
579
580 0.93  0.95  0.98  0.99  0.97  0.96  0.95  0.94  0.93 
581 \layout LyX-Code
582
583 0.93  0.93  0.93  0.94  0.95  0.95  0.96  0.98 
584 \layout Subsubsection
585
586 N = 32.
587 \layout LyX-Code
588
589 Iteraciones: 44
590 \layout LyX-Code
591
592 Radio espectral experimental: 0.98
593 \layout LyX-Code
594
595 0.98  0.97  0.96  0.94  0.93  0.92  0.91  0.91  0.90 
596 \layout LyX-Code
597
598 0.90  0.89  0.89  0.89  0.88  0.88  0.88  0.88  0.88 
599 \layout LyX-Code
600
601 0.88  0.89  0.89  0.89  0.90  0.90  0.91  0.92  0.93 
602 \layout LyX-Code
603
604 0.94  0.96  0.97  0.99  0.97  0.94  0.91  0.89  0.87 
605 \layout LyX-Code
606
607 0.85  0.83  0.82  0.80  0.80  0.79  0.78  0.78  0.77 
608 \layout LyX-Code
609
610 0.77  0.77  0.77  0.77  0.77  0.78  0.78  0.79  0.80 
611 \layout LyX-Code
612
613 0.81  0.83  0.85  0.87  0.89  0.92  0.94  0.97  0.96 
614 \layout LyX-Code
615
616 0.91  0.87  0.84  0.81  0.78  0.75  0.73  0.71  0.70 
617 \layout LyX-Code
618
619 0.69  0.68  0.67  0.67  0.67  0.66  0.66  0.66  0.67 
620 \layout LyX-Code
621
622 0.67  0.68  0.69  0.71  0.73  0.75  0.77  0.81  0.84 
623 \layout LyX-Code
624
625 0.88  0.92  0.96  0.94  0.89  0.84  0.79  0.75  0.71 
626 \layout LyX-Code
627
628 0.68  0.65  0.63  0.61  0.60  0.59  0.58  0.57  0.57 
629 \layout LyX-Code
630
631 0.57  0.57  0.57  0.57  0.58  0.59  0.60  0.62  0.65 
632 \layout LyX-Code
633
634 0.67  0.71  0.75  0.79  0.84  0.89  0.95  0.93  0.87 
635 \layout LyX-Code
636
637 0.81  0.75  0.70  0.65  0.62  0.58  0.56  0.53  0.52 
638 \layout LyX-Code
639
640 0.50  0.49  0.48  0.48  0.48  0.48  0.48  0.48  0.49 
641 \layout LyX-Code
642
643 0.50  0.52  0.54  0.57  0.61  0.65  0.70  0.75  0.81 
644 \layout LyX-Code
645
646 0.87  0.94  0.92  0.85  0.78  0.71  0.65  0.60  0.56 
647 \layout LyX-Code
648
649 0.52  0.49  0.46  0.44  0.43  0.42  0.41  0.40  0.40 
650 \layout LyX-Code
651
652 0.40  0.40  0.40  0.41  0.43  0.45  0.47  0.51  0.55 
653 \layout LyX-Code
654
655 0.60  0.65  0.71  0.78  0.85  0.93  0.91  0.83  0.75 
656 \layout LyX-Code
657
658 0.68  0.62  0.56  0.51  0.47  0.43  0.40  0.38  0.36 
659 \layout LyX-Code
660
661 0.35  0.34  0.33  0.33  0.33  0.33  0.34  0.35  0.36 
662 \layout LyX-Code
663
664 0.39  0.41  0.45  0.50  0.55  0.61  0.68  0.76  0.84 
665 \layout LyX-Code
666
667 0.92  0.91  0.82  0.73  0.65  0.58  0.52  0.47  0.42 
668 \layout LyX-Code
669
670 0.38  0.35  0.33  0.31  0.29  0.28  0.27  0.27  0.27 
671 \layout LyX-Code
672
673 0.27  0.28  0.29  0.31  0.33  0.36  0.40  0.45  0.51 
674 \layout LyX-Code
675
676 0.58  0.65  0.74  0.82  0.91  0.90  0.80  0.71  0.63 
677 \layout LyX-Code
678
679 0.56  0.49  0.43  0.38  0.34  0.31  0.28  0.26  0.24 
680 \layout LyX-Code
681
682 0.23  0.22  0.22  0.22  0.22  0.23  0.24  0.26  0.29 
683 \layout LyX-Code
684
685 0.32  0.36  0.42  0.48  0.55  0.63  0.72  0.81  0.90 
686 \layout LyX-Code
687
688 0.90  0.80  0.70  0.61  0.53  0.46  0.40  0.35  0.31 
689 \layout LyX-Code
690
691 0.27  0.24  0.22  0.20  0.19  0.18  0.18  0.18  0.18 
692 \layout LyX-Code
693
694 0.19  0.20  0.22  0.25  0.28  0.33  0.39  0.45  0.53 
695 \layout LyX-Code
696
697 0.61  0.70  0.80  0.90  0.89  0.79  0.69  0.60  0.52 
698 \layout LyX-Code
699
700 0.44  0.38  0.33  0.28  0.24  0.21  0.19  0.17  0.16 
701 \layout LyX-Code
702
703 0.15  0.14  0.14  0.15  0.15  0.17  0.19  0.22  0.26 
704 \layout LyX-Code
705
706 0.30  0.36  0.43  0.51  0.60  0.69  0.79  0.90  0.89 
707 \layout LyX-Code
708
709 0.78  0.68  0.59  0.50  0.43  0.36  0.31  0.26  0.22 
710 \layout LyX-Code
711
712 0.19  0.17  0.15  0.13  0.12  0.12  0.12  0.12  0.13 
713 \layout LyX-Code
714
715 0.14  0.16  0.19  0.23  0.28  0.34  0.41  0.49  0.58 
716 \layout LyX-Code
717
718 0.68  0.78  0.89  0.89  0.78  0.67  0.58  0.49  0.42 
719 \layout LyX-Code
720
721 0.35  0.29  0.24  0.20  0.17  0.15  0.13  0.11  0.10 
722 \layout LyX-Code
723
724 0.10  0.10  0.10  0.11  0.12  0.14  0.17  0.21  0.26 
725 \layout LyX-Code
726
727 0.33  0.40  0.48  0.57  0.67  0.78  0.89  0.88  0.77 
728 \layout LyX-Code
729
730 0.67  0.57  0.48  0.41  0.34  0.28  0.23  0.19  0.16 
731 \layout LyX-Code
732
733 0.13  0.11  0.10  0.09  0.08  0.08  0.08  0.09  0.11 
734 \layout LyX-Code
735
736 0.13  0.16  0.20  0.25  0.31  0.39  0.47  0.57  0.67 
737 \layout LyX-Code
738
739 0.78  0.89  0.88  0.77  0.67  0.57  0.48  0.40  0.33 
740 \layout LyX-Code
741
742 0.27  0.22  0.18  0.15  0.12  0.10  0.09  0.08  0.07 
743 \layout LyX-Code
744
745 0.07  0.07  0.08  0.10  0.12  0.15  0.19  0.24  0.31 
746 \layout LyX-Code
747
748 0.38  0.47  0.56  0.66  0.77  0.89  0.88  0.77  0.66 
749 \layout LyX-Code
750
751 0.57  0.48  0.40  0.33  0.27  0.22  0.18  0.14  0.12 
752 \layout LyX-Code
753
754 0.10  0.08  0.07  0.07  0.06  0.07  0.08  0.09  0.11 
755 \layout LyX-Code
756
757 0.15  0.19  0.24  0.30  0.38  0.46  0.56  0.66  0.77 
758 \layout LyX-Code
759
760 0.89  0.88  0.77  0.66  0.57  0.48  0.40  0.33  0.27 
761 \layout LyX-Code
762
763 0.22  0.18  0.14  0.12  0.10  0.08  0.07  0.06  0.06 
764 \layout LyX-Code
765
766 0.07  0.08  0.09  0.11  0.14  0.19  0.24  0.30  0.38 
767 \layout LyX-Code
768
769 0.46  0.56  0.66  0.77  0.89  0.88  0.77  0.66  0.57 
770 \layout LyX-Code
771
772 0.48  0.40  0.33  0.27  0.22  0.18  0.15  0.12  0.10 
773 \layout LyX-Code
774
775 0.08  0.07  0.07  0.07  0.07  0.08  0.09  0.12  0.15 
776 \layout LyX-Code
777
778 0.19  0.24  0.30  0.38  0.46  0.56  0.66  0.77  0.89 
779 \layout LyX-Code
780
781 0.88  0.77  0.67  0.57  0.48  0.40  0.34  0.28  0.23 
782 \layout LyX-Code
783
784 0.19  0.15  0.13  0.11  0.09  0.08  0.08  0.08  0.08 
785 \layout LyX-Code
786
787 0.09  0.10  0.12  0.16  0.20  0.25  0.31  0.39  0.47 
788 \layout LyX-Code
789
790 0.56  0.67  0.78  0.89  0.89  0.78  0.67  0.58  0.49 
791 \layout LyX-Code
792
793 0.41  0.35  0.29  0.24  0.20  0.17  0.14  0.12  0.11 
794 \layout LyX-Code
795
796 0.10  0.09  0.09  0.09  0.10  0.12  0.14  0.17  0.21 
797 \layout LyX-Code
798
799 0.26  0.32  0.40  0.48  0.57  0.67  0.78  0.89  0.89 
800 \layout LyX-Code
801
802 0.78  0.68  0.59  0.50  0.43  0.36  0.31  0.26  0.22 
803 \layout LyX-Code
804
805 0.19  0.16  0.14  0.13  0.12  0.11  0.11  0.12  0.12 
806 \layout LyX-Code
807
808 0.14  0.16  0.19  0.23  0.28  0.34  0.41  0.49  0.58 
809 \layout LyX-Code
810
811 0.68  0.79  0.89  0.89  0.79  0.69  0.60  0.52  0.45 
812 \layout LyX-Code
813
814 0.39  0.33  0.29  0.25  0.22  0.19  0.17  0.16  0.15 
815 \layout LyX-Code
816
817 0.15  0.14  0.15  0.16  0.17  0.19  0.22  0.26  0.31 
818 \layout LyX-Code
819
820 0.37  0.43  0.51  0.60  0.69  0.79  0.90  0.90  0.80 
821 \layout LyX-Code
822
823 0.71  0.62  0.54  0.47  0.41  0.36  0.32  0.28  0.26 
824 \layout LyX-Code
825
826 0.23  0.21  0.20  0.19  0.19  0.19  0.19  0.20  0.21 
827 \layout LyX-Code
828
829 0.23  0.26  0.30  0.34  0.40  0.46  0.54  0.62  0.71 
830 \layout LyX-Code
831
832 0.81  0.90  0.90  0.81  0.73  0.65  0.57  0.51  0.45 
833 \layout LyX-Code
834
835 0.40  0.36  0.33  0.30  0.28  0.26  0.25  0.24  0.24 
836 \layout LyX-Code
837
838 0.24  0.24  0.25  0.26  0.28  0.31  0.34  0.39  0.44 
839 \layout LyX-Code
840
841 0.50  0.57  0.65  0.73  0.82  0.91  0.91  0.83  0.75 
842 \layout LyX-Code
843
844 0.67  0.61  0.55  0.50  0.45  0.42  0.39  0.36  0.34 
845 \layout LyX-Code
846
847 0.33  0.31  0.31  0.30  0.30  0.30  0.31  0.32  0.34 
848 \layout LyX-Code
849
850 0.37  0.40  0.44  0.49  0.54  0.61  0.68  0.75  0.83 
851 \layout LyX-Code
852
853 0.92  0.92  0.85  0.77  0.71  0.65  0.60  0.55  0.51 
854 \layout LyX-Code
855
856 0.48  0.45  0.43  0.41  0.40  0.39  0.38  0.38  0.38 
857 \layout LyX-Code
858
859 0.38  0.39  0.40  0.41  0.43  0.46  0.50  0.54  0.59 
860 \layout LyX-Code
861
862 0.65  0.71  0.78  0.85  0.93  0.93  0.87  0.81  0.75 
863 \layout LyX-Code
864
865 0.70  0.65  0.61  0.58  0.55  0.53  0.51  0.49  0.48 
866 \layout LyX-Code
867
868 0.47  0.47  0.46  0.46  0.46  0.47  0.48  0.49  0.51 
869 \layout LyX-Code
870
871 0.54  0.57  0.61  0.65  0.70  0.75  0.81  0.87  0.94 
872 \layout LyX-Code
873
874 0.94  0.89  0.84  0.79  0.75  0.71  0.68  0.65  0.63 
875 \layout LyX-Code
876
877 0.61  0.60  0.58  0.57  0.57  0.56  0.56  0.56  0.56 
878 \layout LyX-Code
879
880 0.56  0.57  0.58  0.60  0.62  0.65  0.68  0.71  0.75 
881 \layout LyX-Code
882
883 0.80  0.85  0.90  0.95  0.96  0.92  0.88  0.84  0.81 
884 \layout LyX-Code
885
886 0.78  0.76  0.74  0.72  0.70  0.69  0.68  0.67  0.67 
887 \layout LyX-Code
888
889 0.66  0.66  0.66  0.66  0.67  0.67  0.68  0.69  0.71 
890 \layout LyX-Code
891
892 0.73  0.75  0.78  0.81  0.85  0.88  0.92  0.96  0.97 
893 \layout LyX-Code
894
895 0.94  0.92  0.89  0.87  0.85  0.84  0.82  0.81  0.80 
896 \layout LyX-Code
897
898 0.79  0.78  0.78  0.78  0.77  0.77  0.77  0.77  0.78 
899 \layout LyX-Code
900
901 0.78  0.79  0.79  0.81  0.82  0.83  0.85  0.87  0.90 
902 \layout LyX-Code
903
904 0.92  0.95  0.97  0.99  0.97  0.96  0.95  0.94  0.93 
905 \layout LyX-Code
906
907 0.92  0.91  0.90  0.90  0.90  0.89  0.89  0.89  0.89 
908 \layout LyX-Code
909
910 0.89  0.89  0.89  0.89  0.89  0.89  0.90  0.90  0.91 
911 \layout LyX-Code
912
913 0.92  0.93  0.94  0.95  0.96  0.97 
914 \layout Subsection
915
916 Gráficos.
917 \layout Standard
918
919
920 \begin_inset LatexCommand \label{sec:graficos}
921
922 \end_inset 
923
924 En el punto c) se pide realizar gráficos con la evolución de las iteraciones
925  en función de 
926 \begin_inset Formula \( \omega  \)
927 \end_inset 
928
929  con 
930 \begin_inset Formula \( \Delta \omega =0.05 \)
931 \end_inset 
932
933  o menor.
934  Para realizar estos gráficos se tomo un 
935 \begin_inset Formula \( \Delta \omega =0.01 \)
936 \end_inset 
937
938  y se grafica también el radio espectral 
939 \begin_inset Formula \( \rho _{\left( T_{\omega }\right) } \)
940 \end_inset 
941
942  estimado por S (ver sección 
943 \begin_inset LatexCommand \vref{sec:s}
944
945 \end_inset 
946
947 ) para la última iteración.
948 \layout Standard
949 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center 
950
951 \begin_inset Figure size 360 252
952 file d4.eps
953 subcaption d4
954 flags 11
955
956 \end_inset 
957
958
959 \layout Standard
960 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center 
961
962 \begin_inset Figure size 360 252
963 file d8.eps
964 subcaption d8
965 flags 11
966
967 \end_inset 
968
969
970 \layout Standard
971 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center 
972
973 \begin_inset Figure size 360 252
974 file d16.eps
975 subcaption d16
976 flags 11
977
978 \end_inset 
979
980
981 \layout Standard
982 \added_space_top 0.3cm \added_space_bottom 0.3cm \align center 
983
984 \begin_inset Figure size 360 252
985 file d32.eps
986 subcaption d32
987 flags 11
988
989 \end_inset 
990
991
992 \layout Section
993
994 Puntos e), f) y g).
995 \layout Standard
996
997 En estos tres puntos se pide graficar la evolución de R, S (radio espectral
998  calculado experimentalmente) y 
999 \begin_inset Formula \( \phi _{113} \)
1000 \end_inset 
1001
1002  (nodo central) a través del proceso iterativo.
1003  En el gráfico 
1004 \begin_inset LatexCommand \vref{fig:eg}
1005
1006 \end_inset 
1007
1008  se presentan los resultados para N = 8 y 
1009 \begin_inset Formula \( \omega =1.35 \)
1010 \end_inset 
1011
1012  (inferior al 
1013 \begin_inset Formula \( \omega _{optimo} \)
1014 \end_inset 
1015
1016 )
1017 \begin_float fig 
1018 \layout Caption
1019
1020
1021 \begin_inset LatexCommand \label{fig:eg}
1022
1023 \end_inset 
1024
1025 Evolución de R, S y 
1026 \begin_inset Formula \( \phi _{113} \)
1027 \end_inset 
1028
1029  para N = 8 y 
1030 \begin_inset Formula \( \omega =1.85 \)
1031 \end_inset 
1032
1033 .
1034 \layout Standard
1035
1036
1037 \begin_inset Figure size 360 252
1038 file eg.eps
1039 subcaption eg
1040 flags 11
1041
1042 \end_inset 
1043
1044
1045 \end_float 
1046 , y en el gráfico 
1047 \begin_inset LatexCommand \vref{fig:fg}
1048
1049 \end_inset 
1050
1051 , para N = 8 y 
1052 \begin_inset Formula \( \omega =1.85 \)
1053 \end_inset 
1054
1055  (superior al 
1056 \begin_inset Formula \( \omega _{optimo} \)
1057 \end_inset 
1058
1059 )
1060 \begin_float fig 
1061 \layout Caption
1062
1063
1064 \begin_inset LatexCommand \label{fig:fg}
1065
1066 \end_inset 
1067
1068 Evolución de R, S y 
1069 \begin_inset Formula \( \phi _{113} \)
1070 \end_inset 
1071
1072  para N = 8 y 
1073 \begin_inset Formula \( \omega =1.85 \)
1074 \end_inset 
1075
1076 .
1077 \layout Standard
1078
1079
1080 \begin_inset Figure size 360 252
1081 file fg.eps
1082 subcaption fg
1083 flags 11
1084
1085 \end_inset 
1086
1087
1088 \end_float 
1089 .
1090 \layout Section
1091
1092 Conclusiones.
1093 \layout Standard
1094
1095 En la sección 
1096 \begin_inset LatexCommand \vref{sec:resultadosN}
1097
1098 \end_inset 
1099
1100  podemos ver que para tener una noción sobre el orden del error relativo
1101  de truncamiento no siempre podemos observar el 
1102 \begin_inset Formula \( R_{TOL}=0.01 \)
1103 \end_inset 
1104
1105  y tomarlo como cota.
1106  Esta aproximación es válida sólo para N = 4 ya que se puede aplicar sólo
1107  si la norma de la matriz de Gauss-Seidel 
1108 \begin_inset Formula \( \left\Vert T_{GS}\right\Vert \leq \frac{1}{2} \)
1109 \end_inset 
1110
1111 .
1112  Considerando que en este trabajo se utiliza la norma 2 y la matriz es simétrica
1113  
1114 \begin_inset Formula \( \left( T_{GS}^{t}=T_{GS}\right)  \)
1115 \end_inset 
1116
1117  observamos que:
1118 \begin_inset Formula \[
1119 \left\Vert T_{GS}\right\Vert _{2}=\sqrt{\rho _{\left( T^{t}_{GS}\cdot T_{GS}\right) }}=\sqrt{\rho _{\left( T^{2}_{GS}\right) }}=\sqrt{\rho ^{2}_{\left( T_{GS}\right) }}=\left| \rho _{\left( T_{GS}\right) }\right| \]
1120
1121 \end_inset 
1122
1123
1124 \layout Standard
1125
1126 Por lo que la condición para que la aproximación sea válida se transforma
1127  en: 
1128 \begin_inset Formula \( \left| \rho _{\left( T_{GS}\right) }\right| \leq \frac{1}{2} \)
1129 \end_inset 
1130
1131  y para el único N que se cumple es para N = 4.
1132 \layout Standard
1133
1134 En los gráficos de la sección 
1135 \begin_inset LatexCommand \vref{sec:graficos}
1136
1137 \end_inset 
1138
1139  podemos ver como el radio espectral de la matriz para SOR va disminuyendo
1140  a medida que 
1141 \begin_inset Formula \( \omega  \)
1142 \end_inset 
1143
1144  se acerca a 
1145 \begin_inset Formula \( \omega _{optimo} \)
1146 \end_inset 
1147
1148 .
1149  Una vez alcanzado 
1150 \begin_inset Formula \( \omega _{optimo} \)
1151 \end_inset 
1152
1153 , el método para calcular 
1154 \begin_inset Formula \( \rho _{\left( T_{\omega }\right) } \)
1155 \end_inset 
1156
1157  (ver sección 
1158 \begin_inset LatexCommand \vref{sec:s}
1159
1160 \end_inset 
1161
1162 ) deja de ser válido y es por esto que pierde 
1163 \emph on 
1164 estabilidad
1165 \emph default 
1166  y los resultados no pueden ser tenidos en cuenta.
1167 \layout Standard
1168
1169 Finalmente en la gráfico 
1170 \begin_inset LatexCommand \vref{fig:eg}
1171
1172 \end_inset 
1173
1174  podemos ver como evoluciona el orden del error de truncamiento a través
1175  de las iteraciones de forma no sólo monótona sino que prácticamente lineal.
1176  El radio espectral de la matriz calculado experimentalmente también evoluciona
1177  de forma monótona, pero creciendo de forma muy acelerada en las primeras
1178  10 iteraciones y estabilizándose en un valor cercano a 0,9, lo que indicaría
1179  que en cada iteración esta bajando el error en un 10% aproximadamente (el
1180  método converge de forma bastante lenta).
1181  Por último vemos también que el valor del nodo central crece monótonamente
1182  tendiendo a 1, pero llegando siempre a un valor inferior.
1183 \layout Standard
1184
1185 Este comportamiento monótono de las variables R, S y 
1186 \begin_inset Formula \( \phi _{113} \)
1187 \end_inset 
1188
1189  se debe a que 
1190 \begin_inset Formula \( \omega \leq \omega _{optimo} \)
1191 \end_inset 
1192
1193 .
1194 \layout Standard
1195
1196 En el gráfico 
1197 \begin_inset LatexCommand \vref{fig:fg}
1198
1199 \end_inset 
1200
1201 , donde 
1202 \begin_inset Formula \( \omega >\omega _{optimo} \)
1203 \end_inset 
1204
1205  (caso inverso al anterior), se observa un comportamiento mucho más caótico.
1206  El comportamiento de S ya fue explicado.
1207  El nodo central 
1208 \begin_inset Formula \( \phi _{113} \)
1209 \end_inset 
1210
1211  sigue tendiendo a 1 pero superando este valor en varias oportunidades y
1212  de forma para nada monótona.
1213  La variable que menos cambios presenta es el orden del error de truncamiento
1214  que, aunque su comportamiento es mucho menos caótico, tampoco evoluciona
1215  de forma monótona como en el caso de que 
1216 \begin_inset Formula \( \omega \leq \omega _{optimo} \)
1217 \end_inset 
1218
1219 .
1220 \layout Chapter
1221
1222 Segunda Parte.
1223 \layout Section
1224
1225 Introducción.
1226 \layout Standard
1227
1228 En la figura
1229 \begin_float fig 
1230 \layout Caption
1231
1232
1233 \begin_inset LatexCommand \label{fig:mother}
1234
1235 \end_inset 
1236
1237 Esquema de placa madre.
1238 \layout Standard
1239 \align center 
1240
1241 \begin_inset Figure size 216 216
1242 file mother.eps
1243 subcaption mother
1244 flags 11
1245
1246 \end_inset 
1247
1248
1249 \end_float 
1250  
1251 \begin_inset LatexCommand \vref{fig:mother}
1252
1253 \end_inset 
1254
1255  se representa una región de la plaqueta madre de una computadora, los cuadrados
1256  indican procesadores que se encuentran operando a distintas temperaturas.
1257  En el centro falta un procesador y se desea conocer la distribución de
1258  temperaturas en esa zona.
1259  Despreciando las perdidas de calor de la plaqueta, las temperaturas en
1260  cuestión se pueden calcular resolviendo la ecuación de Laplace usando 
1261 \begin_inset Formula \( T_{S} \)
1262 \end_inset 
1263
1264
1265 \begin_inset Formula \( T_{O} \)
1266 \end_inset 
1267
1268
1269 \begin_inset Formula \( T_{N} \)
1270 \end_inset 
1271
1272  y 
1273 \begin_inset Formula \( T_{E} \)
1274 \end_inset 
1275
1276  como condiciones de borde aplicadas en las líneas punteadas.
1277  Tomar N = 8, 
1278 \begin_inset Formula \( R_{TOL}=0.001 \)
1279 \end_inset 
1280
1281  y el 
1282 \begin_inset Formula \( \omega _{optimo} \)
1283 \end_inset 
1284
1285 .
1286 \layout Standard
1287
1288 Cada grupo obtendrá los datos de temperatura en °C descomponiendo la parte
1289  entera del promedio de los N° de padrón de los integrantes del grupo, NPP,
1290  de la siguiente manera:
1291 \begin_inset Formula \[
1292 NPP=a\cdot 10^{4}+b\cdot 10^{3}+c\cdot 10^{2}+d\cdot 10+e\]
1293
1294 \end_inset 
1295
1296
1297 \layout Standard
1298
1299 En mi caso:
1300 \layout Itemize
1301
1302 a = 7
1303 \layout Itemize
1304
1305 b = 7
1306 \layout Itemize
1307
1308 c = 8
1309 \layout Itemize
1310
1311 d = 9
1312 \layout Itemize
1313
1314 e = 1
1315 \layout Standard
1316
1317 Las temperaturas de los bordes se calculan entonces de la siguiente forma:
1318 \layout Itemize
1319
1320
1321 \begin_inset Formula \( T_{1}=T_{S}=a\cdot 10+e=71^{\circ } \)
1322 \end_inset 
1323
1324
1325 \layout Itemize
1326
1327
1328 \begin_inset Formula \( T_{2}=T_{O}=a\cdot 10+d=79^{\circ } \)
1329 \end_inset 
1330
1331
1332 \layout Itemize
1333
1334
1335 \begin_inset Formula \( T_{3}=T_{N}=a\cdot 10+c=78^{\circ } \)
1336 \end_inset 
1337
1338
1339 \layout Itemize
1340
1341
1342 \begin_inset Formula \( T_{4}=T_{E}=a\cdot 10+b=77^{\circ } \)
1343 \end_inset 
1344
1345
1346 \layout Standard
1347
1348 Cada grupo deberá reportar el valor de temperatura en el centro.
1349  En forma opcional se propone graficar las isolíneas (o isobandas) de temperatur
1350 a calculadas.
1351  
1352 \layout Section
1353
1354 Resultado.
1355 \layout Standard
1356
1357 Al correr el programa para N = 8, R = 0.001 y 
1358 \begin_inset Formula \( \omega =\omega _{optimo}=1.44647 \)
1359 \end_inset 
1360
1361  y las condiciones de borde expuestas anteriormente, se obtienen los siguientes
1362  resultado (mostrados gráficamente con los números de nodos ubicados igual
1363  que en la figura 
1364 \begin_inset LatexCommand \vref{fig:grilla}
1365
1366 \end_inset 
1367
1368 ):
1369 \layout LyX-Code
1370
1371
1372 \latex no_latex 
1373 78.336  77.999  77.801  77.680  77.606  77.542  77.412
1374 \layout LyX-Code
1375
1376
1377 \latex no_latex 
1378 78.348  77.858  77.521  77.312  77.201  77.150  77.105
1379 \layout LyX-Code
1380
1381
1382 \latex no_latex 
1383 78.205  77.565  77.113  76.843  76.732  76.750  76.856
1384 \layout LyX-Code
1385
1386
1387 \latex no_latex 
1388 77.928  77.089  76.521  76.211  76.131  76.259  76.569
1389 \layout LyX-Code
1390
1391
1392 \latex no_latex 
1393 77.466  76.359  75.676  75.346  75.319  75.584  76.158 
1394 \layout LyX-Code
1395
1396
1397 \latex no_latex 
1398 76.646  75.239  74.493  74.183  74.212  74.599  75.477
1399 \layout LyX-Code
1400
1401
1402 \latex no_latex 
1403 74.954  73.507  72.908  72.700  72.754  73.124  74.149
1404 \layout Standard
1405
1406 Donde se ve que el nodo central es 
1407 \begin_inset Formula \( \phi _{25}=76.211^{\circ } \)
1408 \end_inset 
1409
1410 .
1411  Considerando que el radio espectral de la matriz en la última iteración
1412  es del órden de 
1413 \begin_inset Formula \( \frac{1}{2}\left( \approx 0.58\right)  \)
1414 \end_inset 
1415
1416  podemos aproximar el órden de la cota del error relativo con 
1417 \begin_inset Formula \( R_{TOL}=0.001 \)
1418 \end_inset 
1419
1420 .
1421  El error absoluto es entonces:
1422 \begin_inset Formula \[
1423 \Delta E=R_{TOL}\cdot \phi _{25}\cong 0.001\cdot 76\cong 0.076\cong 0.1\]
1424
1425 \end_inset 
1426
1427
1428 \layout Standard
1429
1430 De esta forma, la temperatura del nodo central sería 
1431 \begin_inset Formula \( \phi _{25}=76.2^{\circ }\pm 0.1^{\circ } \)
1432 \end_inset 
1433
1434 .
1435 \layout Standard
1436
1437 Puede verse también gráficamente
1438 \begin_float fig 
1439 \layout Caption
1440
1441
1442 \begin_inset LatexCommand \label{fig:isolineas}
1443
1444 \end_inset 
1445
1446 Isolíneas de temperatura.
1447 \layout Standard
1448
1449
1450 \begin_inset Figure size 499 355
1451 file isolineas.ps
1452 subcaption isolineas
1453 angle -90
1454 flags 11
1455
1456 \end_inset 
1457
1458
1459 \end_float 
1460  la distribución de las temperaturas en la figura 
1461 \begin_inset LatexCommand \vref{fig:isolineas}
1462
1463 \end_inset 
1464
1465 .
1466 \layout Chapter
1467
1468 Código Fuente.
1469 \layout Section
1470
1471 Programa Principal (
1472 \family typewriter 
1473 77891.cpp
1474 \family default 
1475 ).
1476 \layout LyX-Code
1477
1478 // vim: set tabstop=4 softtabstop=4 shiftwidth=4 expandtab:
1479 \layout LyX-Code
1480
1481 //
1482 \layout LyX-Code
1483
1484 // Trabajo Práctico I de Análisis Numérico I
1485 \layout LyX-Code
1486
1487 // Este programa resuelve un sistema de ecuaciones lineales ralo
1488 \layout LyX-Code
1489
1490 // resultante de la discretización mediante diferencias finitas
1491 \layout LyX-Code
1492
1493 // de ecuaciones diferenciales.
1494 \layout LyX-Code
1495
1496 // Copyright (C) 2002 Leandro Lucarella <leandro@lucarella.com.ar>
1497 \layout LyX-Code
1498
1499 //
1500 \layout LyX-Code
1501
1502 // Este programa es Software Libre; usted puede redistribuirlo
1503 \layout LyX-Code
1504
1505 // y/o modificarlo bajo los términos de la "GNU General Public
1506 \layout LyX-Code
1507
1508 // License" como lo publica la "FSF Free Software Foundation",
1509 \layout LyX-Code
1510
1511 // o (a su elección) de cualquier versión posterior.
1512 \layout LyX-Code
1513
1514 //
1515 \layout LyX-Code
1516
1517 // Este programa es distribuido con la esperanza de que le será
1518 \layout LyX-Code
1519
1520 // útil, pero SIN NINGUNA GARANTIA; incluso sin la garantía
1521 \layout LyX-Code
1522
1523 // implícita por el MERCADEO o EJERCICIO DE ALGUN PROPOSITO en
1524 \layout LyX-Code
1525
1526 // particular.
1527  Vea la "GNU General Public License" para más
1528 \layout LyX-Code
1529
1530 // detalles.
1531 \layout LyX-Code
1532
1533 //
1534 \layout LyX-Code
1535
1536 // Usted debe haber recibido una copia de la "GNU General Public
1537 \layout LyX-Code
1538
1539 // License" junto con este programa, si no, escriba a la "FSF
1540 \layout LyX-Code
1541
1542 // Free Software Foundation, Inc.", 59 Temple Place - Suite 330,
1543 \layout LyX-Code
1544
1545 // Boston, MA 02111-1307, USA.
1546 \layout LyX-Code
1547
1548 //
1549 \layout LyX-Code
1550
1551 \layout LyX-Code
1552
1553 #include <stdio.h>
1554 \layout LyX-Code
1555
1556 #include <stdlib.h>
1557 \layout LyX-Code
1558
1559 #include <math.h>
1560 \layout LyX-Code
1561
1562 \layout LyX-Code
1563
1564 // Tipos de datos.
1565 \layout LyX-Code
1566
1567 typedef unsigned int Indice;
1568 \layout LyX-Code
1569
1570 typedef float Numero;
1571 \layout LyX-Code
1572
1573 typedef struct {
1574 \layout LyX-Code
1575
1576   Indice N;
1577 \layout LyX-Code
1578
1579   Numero w;
1580 \layout LyX-Code
1581
1582   Numero rtol;
1583 \layout LyX-Code
1584
1585   Numero TS;
1586 \layout LyX-Code
1587
1588   Numero TO;
1589 \layout LyX-Code
1590
1591   Numero TN;
1592 \layout LyX-Code
1593
1594   Numero TE;
1595 \layout LyX-Code
1596
1597   Numero* X;
1598 \layout LyX-Code
1599
1600 } Datos;
1601 \layout LyX-Code
1602
1603 \layout LyX-Code
1604
1605 // Constantes.
1606 \layout LyX-Code
1607
1608 const Numero DEFAULT_W    = 1.0,
1609 \layout LyX-Code
1610
1611              DEFAULT_RTOL = 0.01,
1612 \layout LyX-Code
1613
1614              DEFAULT_T    = 1.0;
1615 \layout LyX-Code
1616
1617 \layout LyX-Code
1618
1619 // Calcula la iteración para un nodo.
1620  Numero procesarNodo( Datos&, Indice );
1621 \layout LyX-Code
1622
1623 \layout LyX-Code
1624
1625 // Calcula la iteración para un nodo dependiendo del tipo de nodo.
1626 \layout LyX-Code
1627
1628 Numero procesarNodo( Datos&, Indice, bool, bool, bool, bool, Numero = 0
1629  );
1630 \layout LyX-Code
1631
1632 \layout LyX-Code
1633
1634 // Calcula la norma 2 de un vector.
1635 \layout LyX-Code
1636
1637 Numero norma2( Numero*, Indice );
1638 \layout LyX-Code
1639
1640 \layout LyX-Code
1641
1642 // Imprime un vector por la salida estándar.
1643 \layout LyX-Code
1644
1645 void imprimirVector( Indice, Numero* );
1646 \layout LyX-Code
1647
1648 \layout LyX-Code
1649
1650 // Imprime un vector por la salida estándar.
1651 \layout LyX-Code
1652
1653 void imprimirVector( Numero*, Indice );
1654 \layout LyX-Code
1655
1656 \layout LyX-Code
1657
1658 // Resuelve el sistema de ecuaciones lineales por el método S.O.R.
1659 \layout LyX-Code
1660
1661 // (o Gasuss-Seidel si w=1).
1662 \layout LyX-Code
1663
1664 void resolver( Datos& );
1665 \layout LyX-Code
1666
1667 \layout LyX-Code
1668
1669 int main( int argc, char* argv[] ) {
1670 \layout LyX-Code
1671
1672 \layout LyX-Code
1673
1674   // Se fija que tenga los argumentos necesarios para correr.
1675 \layout LyX-Code
1676
1677   if ( argc < 2 ) {
1678 \layout LyX-Code
1679
1680     printf( "Faltan argumentos.
1681  Modo de uso:
1682 \backslash 
1683 n" );
1684 \layout LyX-Code
1685
1686     printf( "
1687 \backslash 
1688 t%s N w RTOL TS TO TN TE
1689 \backslash 
1690 n", argv[0] );
1691 \layout LyX-Code
1692
1693     printf( "Desde w en adelante son opcionales.
1694  Los valores por defecto son:
1695 \backslash 
1696 n" );
1697 \layout LyX-Code
1698
1699     printf( "
1700 \backslash 
1701 tw = %f
1702 \backslash 
1703 n", DEFAULT_W );
1704 \layout LyX-Code
1705
1706     printf( "
1707 \backslash 
1708 tRTOL = %f
1709 \backslash 
1710 n", DEFAULT_RTOL );
1711 \layout LyX-Code
1712
1713     printf( "
1714 \backslash 
1715 tTS = TO = TN = TE = %f
1716 \backslash 
1717 n", DEFAULT_T );
1718 \layout LyX-Code
1719
1720     return EXIT_FAILURE;
1721 \layout LyX-Code
1722
1723   }
1724 \layout LyX-Code
1725
1726 \layout LyX-Code
1727
1728   // Se inicializan los datos.
1729 \layout LyX-Code
1730
1731   Datos D;
1732 \layout LyX-Code
1733
1734   D.N = Indice( atol( argv[1] ) );
1735 \layout LyX-Code
1736
1737   if   ( D.N < 3 ) {
1738 \layout LyX-Code
1739
1740     printf( "N Debe ser un entero mayor o igual a 3
1741 \backslash 
1742 n" );
1743 \layout LyX-Code
1744
1745     return EXIT_FAILURE;
1746 \layout LyX-Code
1747
1748   }
1749 \layout LyX-Code
1750
1751   D.w = DEFAULT_W;
1752 \layout LyX-Code
1753
1754   D.rtol = DEFAULT_RTOL;
1755 \layout LyX-Code
1756
1757   D.TS = D.TO = D.TN = D.TE = DEFAULT_T;
1758 \layout LyX-Code
1759
1760 \layout LyX-Code
1761
1762   // Se aloca uno más de lo necesario para usar el rango [1,n]
1763 \layout LyX-Code
1764
1765   D.X = new Numero[Indice(pow(D.N-1,2))+1]; 
1766 \layout LyX-Code
1767
1768 \layout LyX-Code
1769
1770   // Si se pasaron datos como argumento, se los va agregando.
1771 \layout LyX-Code
1772
1773   switch ( argc ) {
1774 \layout LyX-Code
1775
1776     case 8: D.TE = Numero( atof( argv[7] ) );
1777 \layout LyX-Code
1778
1779     case 7: D.TN = Numero( atof( argv[6] ) );
1780 \layout LyX-Code
1781
1782     case 6: D.TO = Numero( atof( argv[5] ) );
1783 \layout LyX-Code
1784
1785     case 5: D.TS = Numero( atof( argv[4] ) );
1786 \layout LyX-Code
1787
1788     case 4: D.rtol = Numero( atof( argv[3] ) );
1789 \layout LyX-Code
1790
1791     case 3: D.w = Numero( atof( argv[2] ) );
1792 \layout LyX-Code
1793
1794   }
1795 \layout LyX-Code
1796
1797 \layout LyX-Code
1798
1799   resolver( D );
1800 \layout LyX-Code
1801
1802   delete D.X;
1803 \layout LyX-Code
1804
1805   return EXIT_SUCCESS;
1806 \layout LyX-Code
1807
1808 }
1809 \layout LyX-Code
1810
1811 \layout LyX-Code
1812
1813 Numero procesarNodo( Datos& D, Indice i ) {
1814 \layout LyX-Code
1815
1816 \layout LyX-Code
1817
1818   Indice N = D.N;
1819 \layout LyX-Code
1820
1821 \layout LyX-Code
1822
1823   // Si es el primero, es SO.
1824 \layout LyX-Code
1825
1826   if ( i == 1 )
1827 \layout LyX-Code
1828
1829     return procesarNodo( D, i, false, false, true, true, D.TS + D.TO );
1830 \layout LyX-Code
1831
1832 \layout LyX-Code
1833
1834   // Si es N - 1 es NO.
1835 \layout LyX-Code
1836
1837   if ( i == ( N - 1 ) )
1838 \layout LyX-Code
1839
1840     return procesarNodo( D, i, false, true, false, true, D.TN + D.TO );
1841 \layout LyX-Code
1842
1843 \layout LyX-Code
1844
1845   // Si es N² - 3N + 3 es SE.
1846 \layout LyX-Code
1847
1848   if ( i == ( N*N - 3*N + 3 ) )
1849 \layout LyX-Code
1850
1851     return procesarNodo( D, i, true, false, true, false, D.TS + D.TE );
1852 \layout LyX-Code
1853
1854 \layout LyX-Code
1855
1856   // Si es N² - 2N + 1 es NE.
1857 \layout LyX-Code
1858
1859   if ( i == ( N*N - 2*N + 1 ) )
1860 \layout LyX-Code
1861
1862     return procesarNodo( D, i, true, true, false, false, D.TN + D.TE );
1863 \layout LyX-Code
1864
1865 \layout LyX-Code
1866
1867   // Si pertenece al intervalo [2;N-1] es O.
1868 \layout LyX-Code
1869
1870   if ( ( 1 < i ) && ( i < ( N - 1 ) ) )
1871 \layout LyX-Code
1872
1873     return procesarNodo( D, i, false, true, true, true, D.TO );
1874 \layout LyX-Code
1875
1876 \layout LyX-Code
1877
1878   // Si pertenece al intervalo [N² - 3N + 3;N² - 2N + 1] es E.
1879 \layout LyX-Code
1880
1881   if ( ( ( N*N - 3*N + 3 ) < i ) && ( i < ( N*N - 2*N + 1 ) ) )
1882 \layout LyX-Code
1883
1884     return procesarNodo( D, i, true, true, true, false, D.TE );
1885 \layout LyX-Code
1886
1887 \layout LyX-Code
1888
1889   // Si i - 1 es múltiplo de N - 1 (y no es NE, SE, NO, SO) es S.
1890 \layout LyX-Code
1891
1892   if ( ( ( i - 1 ) % ( N - 1 ) ) == 0 )
1893 \layout LyX-Code
1894
1895     return procesarNodo( D, i, true, false, true, true, D.TS );
1896 \layout LyX-Code
1897
1898 \layout LyX-Code
1899
1900   // Si i es múltiplo de N - 1 (y no es NE, SE, NO, SO) es N.
1901 \layout LyX-Code
1902
1903   if ( ( i % ( N - 1 ) ) == 0 )
1904 \layout LyX-Code
1905
1906     return procesarNodo( D, i, true, true, false, true, D.TN );
1907 \layout LyX-Code
1908
1909 \layout LyX-Code
1910
1911   return procesarNodo( D, i, true, true, true, true );
1912 \layout LyX-Code
1913
1914 }
1915 \layout LyX-Code
1916
1917 \layout LyX-Code
1918
1919 Numero procesarNodo( Datos& D, Indice i,
1920 \layout LyX-Code
1921
1922                      bool i_n1, bool i_1, bool i1, bool in_1,
1923 \layout LyX-Code
1924
1925                      Numero b ) {
1926 \layout LyX-Code
1927
1928 \layout LyX-Code
1929
1930   Numero x  = 0,
1931 \layout LyX-Code
1932
1933          Xo = D.X[i];
1934 \layout LyX-Code
1935
1936 \layout LyX-Code
1937
1938   // Voy sumando los elementos que corresponden.
1939 \layout LyX-Code
1940
1941   if ( i_n1 )
1942 \layout LyX-Code
1943
1944     x += D.X[i-D.N+1];
1945 \layout LyX-Code
1946
1947   if ( i_1 )
1948 \layout LyX-Code
1949
1950     x += D.X[i-1];
1951 \layout LyX-Code
1952
1953   if ( i1 )
1954 \layout LyX-Code
1955
1956     x += D.X[i+1];
1957 \layout LyX-Code
1958
1959   if ( in_1 )
1960 \layout LyX-Code
1961
1962     x += D.X[i+D.N-1];
1963 \layout LyX-Code
1964
1965 \layout LyX-Code
1966
1967   // Calculo el elemento i.
1968 \layout LyX-Code
1969
1970   D.X[i] = ( 1 - D.w ) * D.X[i] + ( b + x ) * D.w / 4;
1971 \layout LyX-Code
1972
1973 \layout LyX-Code
1974
1975   // Devuelve parte de la sumatoria para calcular la norma 2.
1976 \layout LyX-Code
1977
1978   return pow( D.X[i] - Xo, 2 );
1979 \layout LyX-Code
1980
1981 \layout LyX-Code
1982
1983 }
1984 \layout LyX-Code
1985
1986 \layout LyX-Code
1987
1988 Numero norma2( Numero* X, Indice n ) {
1989 \layout LyX-Code
1990
1991 \layout LyX-Code
1992
1993   Numero sum = 0;
1994 \layout LyX-Code
1995
1996 \layout LyX-Code
1997
1998   for ( Indice i = 1; i <= n; i++ )
1999 \layout LyX-Code
2000
2001     sum += pow( X[i], 2 );
2002 \layout LyX-Code
2003
2004 \layout LyX-Code
2005
2006   return sqrt( sum );
2007 \layout LyX-Code
2008
2009 \layout LyX-Code
2010
2011 }
2012 \layout LyX-Code
2013
2014 \layout LyX-Code
2015
2016 void imprimirVector( Indice n, Numero* X ) {
2017 \layout LyX-Code
2018
2019 \layout LyX-Code
2020
2021   for ( Indice i = 1; i <= n; i++ )
2022 \layout LyX-Code
2023
2024     printf( "%.7e%s", X[i], ( i == n ) ? "
2025 \backslash 
2026 n" : " " );
2027 \layout LyX-Code
2028
2029 \layout LyX-Code
2030
2031 }
2032 \layout LyX-Code
2033
2034 \layout LyX-Code
2035
2036 void resolver( Datos& D ) {
2037 \layout LyX-Code
2038
2039 \layout LyX-Code
2040
2041   Indice ite = 0,
2042 \layout LyX-Code
2043
2044          n   = Indice( pow( D.N - 1, 2) );
2045 \layout LyX-Code
2046
2047 \layout LyX-Code
2048
2049   Numero r    = D.rtol + 1,
2050 \layout LyX-Code
2051
2052          Ek   = 0,
2053 \layout LyX-Code
2054
2055          Ek_1 = 0;
2056 \layout LyX-Code
2057
2058 \layout LyX-Code
2059
2060   // Imprime datos iniciales.
2061 \layout LyX-Code
2062
2063   // Formato de salida:
2064 \layout LyX-Code
2065
2066   // iteración R S <vector X>
2067 \layout LyX-Code
2068
2069   // (si no se puede calcular S, se muestra 0)
2070 \layout LyX-Code
2071
2072   printf( "%d %.2e 0.00000000 ", ite, r );
2073 \layout LyX-Code
2074
2075   imprimirVector( n, D.X );
2076 \layout LyX-Code
2077
2078 \layout LyX-Code
2079
2080   while ( r > D.rtol ) {
2081 \layout LyX-Code
2082
2083 \layout LyX-Code
2084
2085     for ( Indice i = 1; i <= n; i++ )
2086 \layout LyX-Code
2087
2088       Ek += procesarNodo( D, i );
2089 \layout LyX-Code
2090
2091     Ek = sqrt( Ek );
2092 \layout LyX-Code
2093
2094     r = Ek / norma2( D.X, n );
2095 \layout LyX-Code
2096
2097     printf( "%d %.2e %.8f ", ++ite, r, Ek_1 ? ( Ek / Ek_1 ) : 0 );
2098 \layout LyX-Code
2099
2100     imprimirVector( n, D.X ); Ek_1 = Ek; Ek = 0;
2101 \layout LyX-Code
2102
2103 \layout LyX-Code
2104
2105   }
2106 \layout LyX-Code
2107
2108 \layout LyX-Code
2109
2110 }
2111 \layout Section
2112
2113 Utilidades.
2114 \layout Standard
2115
2116 Todas las utilidades listadas aquí son Software Libre; puede redistribuirlas
2117  y/o modificarlas bajo los términos de la "GNU General Public License" como
2118  lo publica la "FSF Free Software Foundation", o (a su elección) de cualquier
2119  versión posterior.
2120 \layout Subsection
2121
2122
2123 \family typewriter 
2124 calc.sh
2125 \layout LyX-Code
2126
2127 #!/bin/sh
2128 \layout LyX-Code
2129
2130 # vim: set tabstop=4 softtabstop=4 shiftwidth=4 expandtab:
2131 \layout LyX-Code
2132
2133 #
2134 \layout LyX-Code
2135
2136 # Trabajo Práctico I de Análisis Numérico I
2137 \layout LyX-Code
2138
2139 # Realiza los cálculos del punto c (y a y b).
2140 \layout LyX-Code
2141
2142 # Copyright (C) 2002 Leandro Lucarella <leandro@lucarella.com.ar>
2143 \layout LyX-Code
2144
2145 #
2146 \layout LyX-Code
2147
2148 \layout LyX-Code
2149
2150 # Calculo soluciones del punto a, b y c.
2151 \layout LyX-Code
2152
2153 for (( n=4; n <= 32; n*=2 )); do
2154 \layout LyX-Code
2155
2156   ./77891 $n | tail -n1 | ./resultado.awk > ca$n.txt
2157 \layout LyX-Code
2158
2159 done
2160 \layout LyX-Code
2161
2162 \layout LyX-Code
2163
2164 # Calculo iteraciones y S en función de w.
2165 \layout LyX-Code
2166
2167 for (( n=4; n <= 32; n*=2 )); do
2168 \layout LyX-Code
2169
2170   echo "Procesando N = $n ..."
2171 \layout LyX-Code
2172
2173   for (( i=0; i < 100; i+=1 )); do
2174 \layout LyX-Code
2175
2176     w=`printf "1.%02d
2177 \backslash 
2178 n" $i`
2179 \layout LyX-Code
2180
2181     echo -n "$w "
2182 \layout LyX-Code
2183
2184     # Iteraciones en función de w.
2185 \layout LyX-Code
2186
2187     ./77891 $n $w | wc -l | awk '{printf "%-4d", $1-1}'
2188 \layout LyX-Code
2189
2190     echo -n " "
2191 \layout LyX-Code
2192
2193     # S en función de w.
2194 \layout LyX-Code
2195
2196     ./77891 $n $w | tail -n1 | awk '{print $3}'
2197 \layout LyX-Code
2198
2199   done > cb$n.txt
2200 \layout LyX-Code
2201
2202 done
2203 \layout LyX-Code
2204
2205 \layout LyX-Code
2206
2207 # Calculo los puntos e-g
2208 \layout LyX-Code
2209
2210 ./77891 16 1.35 0.001 | awk '{print $1 " " log($2) " " $3 " " $116}' 
2211 \backslash 
2212
2213 \layout LyX-Code
2214
2215   > eg.txt
2216 \layout LyX-Code
2217
2218 # Calculo los puntos f-g
2219 \layout LyX-Code
2220
2221 ./77891 16 1.85 0.001 | awk '{print $1 " " log($2) " " $3 " " $116}' 
2222 \backslash 
2223
2224 \layout LyX-Code
2225
2226   > fg.txt
2227 \layout LyX-Code
2228
2229 \layout LyX-Code
2230
2231 # Calculo la Parte II
2232 \layout LyX-Code
2233
2234 ej2="./77891 8 1.446467 0.001 71 79 78 77"
2235 \layout LyX-Code
2236
2237 $ej2 | tail -n1 | ./isolineas.awk > isolineas.txt
2238 \layout LyX-Code
2239
2240 $ej2 | tail -n1 | awk '{ printf "X25 = %.3f ± 0.001
2241 \backslash 
2242 n", $28 }' 
2243 \backslash 
2244
2245 \layout LyX-Code
2246
2247   > parte2.txt
2248 \layout Subsection
2249
2250
2251 \family typewriter 
2252 plot.sh
2253 \layout LyX-Code
2254
2255 #!/bin/sh
2256 \layout LyX-Code
2257
2258 # vim: set tabstop=4 softtabstop=4 shiftwidth=4 expandtab:
2259 \layout LyX-Code
2260
2261 #
2262 \layout LyX-Code
2263
2264 # Trabajo Práctico I de Análisis Numérico I
2265 \layout LyX-Code
2266
2267 # Genera gráficos con los resultados de las corridas utilizando
2268 \layout LyX-Code
2269
2270 # GNU Plot.
2271 \layout LyX-Code
2272
2273 # Copyright (C) 2002 Leandro Lucarella <leandro@lucarella.com.ar>
2274 \layout LyX-Code
2275
2276 #
2277 \layout LyX-Code
2278
2279 \layout LyX-Code
2280
2281 # Genera todos los gráficos del punto d
2282 \layout LyX-Code
2283
2284 for (( n=4; n <= 32; n*=2 )); do
2285 \layout LyX-Code
2286
2287   sed "s/<N>/$n/g" d.gnuplot | gnuplot
2288 \layout LyX-Code
2289
2290 done
2291 \layout LyX-Code
2292
2293 \layout LyX-Code
2294
2295 # Genera gráficos del punto e-g
2296 \layout LyX-Code
2297
2298 sed "s/<A>/e/g" efg.gnuplot | sed "s/<B>/1.35/g" | gnuplot
2299 \layout LyX-Code
2300
2301 \layout LyX-Code
2302
2303 # Genera gráficos del punto f-g
2304 \layout LyX-Code
2305
2306 sed "s/<A>/f/g" efg.gnuplot | sed "s/<B>/1.85/g" | gnuplot
2307 \layout Subsection
2308
2309
2310 \family typewriter 
2311 d.gnuplot
2312 \layout LyX-Code
2313
2314 #!/usr/bin/gnuplot
2315 \layout LyX-Code
2316
2317 # vim: set tabstop=4 softtabstop=4 shiftwidth=4 expandtab:
2318 \layout LyX-Code
2319
2320 #
2321 \layout LyX-Code
2322
2323 # Trabajo Práctico I de Análisis Numérico I
2324 \layout LyX-Code
2325
2326 # Genera gráficos con los resultados de las corridas utilizando
2327 \layout LyX-Code
2328
2329 # GNU Plot.
2330 \layout LyX-Code
2331
2332 # Copyright (C) 2002 Leandro Lucarella <leandro@lucarella.com.ar>
2333 \layout LyX-Code
2334
2335 #
2336 \layout LyX-Code
2337
2338 \layout LyX-Code
2339
2340 # Seteo terminal para que "dibuje" en un PS.
2341 \layout LyX-Code
2342
2343 set term postscript eps enhanced color
2344 \layout LyX-Code
2345
2346 set encoding iso_8859_1
2347 \layout LyX-Code
2348
2349 set output "d<N>.eps"
2350 \layout LyX-Code
2351
2352 \layout LyX-Code
2353
2354 # Seteos generales.
2355 \layout LyX-Code
2356
2357 set title "Variacion de iteraciones y S en funcion de w para N = <N>"
2358 \layout LyX-Code
2359
2360 set key left top
2361 \layout LyX-Code
2362
2363 \layout LyX-Code
2364
2365 # Eje X.
2366 \layout LyX-Code
2367
2368 set xlabel "Factor de sobrerelajacion (w)"
2369 \layout LyX-Code
2370
2371 set mxtics 5
2372 \layout LyX-Code
2373
2374 \layout LyX-Code
2375
2376 # Eje Y.
2377 \layout LyX-Code
2378
2379 set ylabel "Iteraciones"
2380 \layout LyX-Code
2381
2382 set ytics nomirror
2383 \layout LyX-Code
2384
2385 set mytics 5
2386 \layout LyX-Code
2387
2388 \layout LyX-Code
2389
2390 # Eje Y secundario.
2391 \layout LyX-Code
2392
2393 set y2label "Radio espectral (S)"
2394 \layout LyX-Code
2395
2396 set y2range [0:1]
2397 \layout LyX-Code
2398
2399 set y2tics 0, 0.1
2400 \layout LyX-Code
2401
2402 set my2tics 5
2403 \layout LyX-Code
2404
2405 \layout LyX-Code
2406
2407 # Plotea
2408 \layout LyX-Code
2409
2410 plot 'cb<N>.txt' using 1:2 smooth csplines axes x1y1 
2411 \backslash 
2412
2413 \layout LyX-Code
2414
2415        title "Iteraciones" with lines linetype 1, 
2416 \backslash 
2417
2418 \layout LyX-Code
2419
2420      'cb<N>.txt' using 1:3 smooth csplines axes x1y2 
2421 \backslash 
2422
2423 \layout LyX-Code
2424
2425        title "Radio espectral" with lines linetype 3
2426 \layout Subsection
2427
2428
2429 \family typewriter 
2430 efg.gnuplot
2431 \layout LyX-Code
2432
2433 #!/usr/bin/gnuplot
2434 \layout LyX-Code
2435
2436 # vim: set tabstop=4 softtabstop=4 shiftwidth=4 expandtab:
2437 \layout LyX-Code
2438
2439 #
2440 \layout LyX-Code
2441
2442 # Trabajo Práctico I de Análisis Numérico I
2443 \layout LyX-Code
2444
2445 # Genera gráficos con los resultados de las corridas utilizando
2446 \layout LyX-Code
2447
2448 # GNU Plot.
2449 \layout LyX-Code
2450
2451 # Copyright (C) 2002 Leandro Lucarella <leandro@lucarella.com.ar>
2452 \layout LyX-Code
2453
2454 #
2455 \layout LyX-Code
2456
2457 \layout LyX-Code
2458
2459 # Seteo terminal para que "dibuje" en un PS.
2460 \layout LyX-Code
2461
2462 set term postscript eps enhanced color
2463 \layout LyX-Code
2464
2465 set encoding iso_8859_1
2466 \layout LyX-Code
2467
2468 set output "<A>g.eps"
2469 \layout LyX-Code
2470
2471 \layout LyX-Code
2472
2473 # Seteos generales.
2474 \layout LyX-Code
2475
2476 set title "Variacion R y S en funcion de las iteraciones N = 16 y w = <B>"
2477 \layout LyX-Code
2478
2479 set key bottom
2480 \layout LyX-Code
2481
2482 \layout LyX-Code
2483
2484 # Eje X.
2485 \layout LyX-Code
2486
2487 set xlabel "Iteraciones"
2488 \layout LyX-Code
2489
2490 set mxtics 5
2491 \layout LyX-Code
2492
2493 \layout LyX-Code
2494
2495 # Eje Y.
2496 \layout LyX-Code
2497
2498 set ylabel "R (en escala logaritmica)"
2499 \layout LyX-Code
2500
2501 set ytics nomirror
2502 \layout LyX-Code
2503
2504 set mytics 5
2505 \layout LyX-Code
2506
2507 \layout LyX-Code
2508
2509 # Eje Y secundario.
2510 \layout LyX-Code
2511
2512 set y2label "Radio espectral (S) / Valor del nodo central (113)"
2513 \layout LyX-Code
2514
2515 set y2range [0:1.2]
2516 \layout LyX-Code
2517
2518 set y2tics 0, 0.1
2519 \layout LyX-Code
2520
2521 set my2tics 5
2522 \layout LyX-Code
2523
2524 \layout LyX-Code
2525
2526 # Plotea
2527 \layout LyX-Code
2528
2529 plot '<A>g.txt' every ::2 using 1:2 smooth csplines axes x1y1 
2530 \backslash 
2531
2532 \layout LyX-Code
2533
2534        title "ln(R)" with lines linetype 1, 
2535 \backslash 
2536
2537 \layout LyX-Code
2538
2539      '<A>g.txt' every ::2 using 1:3 smooth csplines axes x1y2 
2540 \backslash 
2541
2542 \layout LyX-Code
2543
2544        title "S" with lines linetype 3, 
2545 \backslash 
2546
2547 \layout LyX-Code
2548
2549      '<A>g.txt' every ::2 using 1:4 smooth csplines axes x1y2 
2550 \backslash 
2551
2552 \layout LyX-Code
2553
2554        title "Nodo central (113)" with lines linetype 4
2555 \layout Subsection
2556
2557
2558 \family typewriter 
2559 resultado.awk
2560 \layout LyX-Code
2561
2562 #!/usr/bin/awk -f
2563 \layout LyX-Code
2564
2565 # vim: set tabstop=4 softtabstop=4 shiftwidth=4 expandtab:
2566 \layout LyX-Code
2567
2568 #
2569 \layout LyX-Code
2570
2571 # Trabajo Práctico I de Análisis Numérico I
2572 \layout LyX-Code
2573
2574 # Muestra el resultado de una iteración de forma más agradable.
2575 \layout LyX-Code
2576
2577 # Copyright (C) 2002 Leandro Lucarella <leandro@lucarella.com.ar>
2578 \layout LyX-Code
2579
2580 #
2581 \layout LyX-Code
2582
2583 \layout LyX-Code
2584
2585 {
2586 \layout LyX-Code
2587
2588   print "Iteraciones: " $1
2589 \layout LyX-Code
2590
2591   printf "Radio espectral experimental: %.2f
2592 \backslash 
2593 n", $3
2594 \layout LyX-Code
2595
2596   for ( i = 4; i <= NF; i+=9 ) {
2597 \layout LyX-Code
2598
2599     for ( j = 0; (j < 9) && (i+j < NF); j++ ) {
2600 \layout LyX-Code
2601
2602       printf "%5.2f ", $(i+j)
2603 \layout LyX-Code
2604
2605     }
2606 \layout LyX-Code
2607
2608     printf "
2609 \backslash 
2610 n"
2611 \layout LyX-Code
2612
2613   }
2614 \layout LyX-Code
2615
2616 }
2617 \layout Subsection
2618
2619
2620 \family typewriter 
2621 isolineas.awk
2622 \layout LyX-Code
2623
2624 #!/usr/bin/awk -f
2625 \layout LyX-Code
2626
2627 # vim: set tabstop=4 softtabstop=4 shiftwidth=4 expandtab:
2628 \layout LyX-Code
2629
2630 #
2631 \layout LyX-Code
2632
2633 # Trabajo Práctico I de Análisis Numérico I
2634 \layout LyX-Code
2635
2636 # Muestra el resultado de una iteración de forma más agradable.
2637 \layout LyX-Code
2638
2639 # Copyright (C) 2002 Leandro Lucarella <leandro@lucarella.com.ar>
2640 \layout LyX-Code
2641
2642 #
2643 \layout LyX-Code
2644
2645 \layout LyX-Code
2646
2647 {
2648 \layout LyX-Code
2649
2650   for ( i = 7; i >= 1; i-- ) {
2651 \layout LyX-Code
2652
2653     for ( j = 0; j < 7; j++ ) {
2654 \layout LyX-Code
2655
2656       printf "%7.3f ", $(3+i+j*7)
2657 \layout LyX-Code
2658
2659     }
2660 \layout LyX-Code
2661
2662     printf "
2663 \backslash 
2664 n"
2665 \layout LyX-Code
2666
2667   }
2668 \layout LyX-Code
2669
2670 }
2671 \the_end