\documentclass[11pt,twoside,a4paper,spanish]{article}
\usepackage[T1]{fontenc}
\usepackage{a4wide}
\usepackage{calc}
\usepackage[latin1]{inputenc}
\usepackage{isolatin1}
\usepackage{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
% ---------------------------
\setlength{\textheight}{\topmargin+\headheight+\headsep+\textheight}
\setlength{\topmargin}{0pt}
\setlength{\headheight}{0pt}
\setlength{\headsep}{0pt}
\setlength{\parindent}{0pt}
\setlength{\parskip}{1 ex plus 0.5 ex minus 0.2 ex}
\newcommand{\vect}[1]{\mathbf{#1}}    % Notación vectorial negrita
\newcommand{\for}[1]{\mathsf{#1}}
% ------------------------------
\begin{document}
\begin{center}\textbf{COMPUTACIÓN 2003 -- ASTRONOMÍA}\end{center}
\begin{center}\textbf{PRACTICA 3}\end{center}
\bigskip

\begin{enumerate}
\item Rehacer el ejercicio 5 de la Práctica 2, utilizando
arreglos (\texttt{DIMENSION}).  Comparar ambas formas y explicar cuál es
la más conveniente.



\item Sea un vector $\vect{A}$ con $N$ elementos.

a) Escribir un programa que calcule:

$\bullet$ $SUM=A_1^2+A_2^2+\dots+A_N^2$

$\bullet$ $PROD=(1-0.01A_1)(1-0.01A_2)\dots(1-0.01A_N)$

Imprimir los resultados en un archivo de salida, con formato.

b) Realizar lo anterior en doble precisión y comente los resultados.


\item El vector $\vect{B}$ est\'a compuesto de $M$ elementos. Escribir un programa que encuentre el
lugar $J$, tal que $\vect{B}(J)$ tenga el mayor valor absoluto de los
valores de $\vect{B}$.

\item Una matriz $A^{m\times n}$ es entrada por teclado. 

(i) encontrar $J$, tal que $A(J)$ contenga el mayor valor absoluto de la 
primera columna; 

(ii) intercambiar la primera fila con la fila $J$.

\item Una matriz $KA(N,N)$ est\'a en la memoria (generarla con
    la sentencia \texttt{DATA}). Escribir un programa que imprima los elementos de $KA$ por
encima de la diagonal, es decir, los elementos $KA(I,J)$ para los
cuales $I<J$.

\item Los datos observacionales $f_1$, $f_2$, ..., $f_n$,
necesitan ser suavizados. Una técnica sencilla es aplicar:
\begin{displaymath}
f_i=\frac{f_{i-1}+f_i+f_{i+1}}{3}
\end{displaymath}

a todos los datos, menos al primero y al último, que por
simplicidad, no los modificamos. Hacer un programa que implemente
esta técnica y generalizarlo para un suavizado de orden $N$.
Imprimir los viejos y los nuevos datos. Graficar.



\item Realizar un programa que multiplique dos matrices $A$ y $B$, las cuales,
al igual que sus dimensiones puedan ser entradas por teclado.


\item Se desea encontrar la solución al siguiente sistema de ecuaciones:

\begin{displaymath}
\begin{array}{lclclclclcl}
a_{11}x_1 &   &           & & & & & & & = & b_1 \\
a_{21}x_1 & + & a_{22}x_2 & & & & & & & = & b_2 \\
\ldots    & & \ldots    &   & \ldots    &   & \dots  &   & \dots & & \dots \\
a_{n1}x_1 & + & a_{n2}x_2 & + & a_{n3}x_3 & + & \ldots & + & a_{nn}x_n & =
& b_n
\end{array}
\end{displaymath}

Escribir un programa para resolver este sistema suponiendo que los
coeficientes $a_{ij}$ están contenidas en una matriz de $n \times n$, 
que contendrá ceros en los elementos ausentes. 
Como sistema de prueba se puede utilizar:
\begin{displaymath}
\begin{pmatrix}
-5 &    &   & \\
-1 & -2 &   &  \\
-1 &  3 & 2 &  \\
 4 &  2 & 3 & -1 \\
\end{pmatrix} 
\begin{pmatrix}
x_1 \\ x_2 \\ x_3 \\ x_4
\end{pmatrix}
=
\begin{pmatrix}
-15 \\ -7 \\ 5 \\ 10
\end{pmatrix}
\end{displaymath}
cuya soluci\'on es: $x_1 = 3.0, \,
                     x_2 = 2.0 ,\,
                     x_3 = 1.0 ,\,
                     x_4 = 9.0 $.

\item Realizar un programa para demostrar si una matriz $A$ es normal, es
decir, si $A . A^t = A^t . A$. 

\item Realizar un programa para guardar una matriz fila por
fila en un arreglo unidimensional (vector), de acuerdo a lo siguiente.

Sea $\vect{A} = (a_{ij})$ una matriz $(n \times m)$ (esto es, de $n$
filas y $m$ columnas),
\begin{displaymath}
  \begin{pmatrix}
    a_{11} & a_{12} & \dots & a_{1m} \\
    a_{21} & a_{22} & \dots & a_{2m} \\
    \dots  & \dots  & \dots & \dots  \\
    a_{n1} & a_{n2} & \dots & a_{nm} 
  \end{pmatrix}
\end{displaymath}
entonces los elementos de $\vect{A}$ son guardados en el arreglo
unidimensional ${A}$ de tamaño ${N}*{M}$ fila por
fila:
\begin{verbatim}

    A(1)   = a(11) 
    A(2)   = a(12)
    ..............
    A(M)   = a(1m) 
    A(M+1) = a(21)
    A(M+2) = a(22) 
    ..............
    A(2*M) = a(2m) 
    ..............
    A(N*M) = a(nm)
\end{verbatim}
Así, si los índices de un elemento $a_{ij}$ son representados por las
variables $\for{FORTRAN}$ $\for{I}$ y $\for{J}$, el índice $\for{K}$
del correspondiente elemento del arreglo unidimensional $\for{A}$ está
dado por
\begin{displaymath}
  \for{K=(I-1)*M + J}
\end{displaymath}

\item Utilizando lo anterior, construir un programa para que multiplique 
las  matrices $(n\times l)$ $\for{A}$ y  $(l\times m)$
  $\for{B}$, previamente vectorizadas, y coloque la matriz producto 
$(n\times m)$ en $\for{R}$.

\end{enumerate}
\end{document}






