% Se darán algunos ejemplos del funcionamiento aritmético y álgebra
lineal
% con datos de precisión simple. También se mostrará un ejemplo de M-
File
% en donde los resultados son computados apropiadamente en precisión
simple
% o doble dependiendo de la entrada.
%% Creando un Dato de Precisión Doble
% Vamos primero a crear algunos datos, los cuales tienen doble
precisión
% por defecto.
Ad = [1 2 0; 2 5 -1; 4 10 -1]
%% Convertir a Precisión Simple
% Podemos convertir datos a simple precisión con la función single
A = single(Ad); % o A = cast(Ad, 'single');
%% Creando Ceros y Unos de Precisión Simple
% También podemos crear ceros y unos de precisión simple con sus
respectivas
% funciones.
n=1000;
Z=zeros(n,1,'single');
O=ones(n,1,'single');
% Vamos a observar las variables en el workspace
whos A Ad O Z n
% Podemos observar que algunas de las variables son de tipo simple y
que
% la variable A (La versión simple de Ad)toma la mitad del número de
bytes
% de memoria para ser almacenada dado que los simples requieren solo
cuatro
% bytes (32 bits), en tanto que los dobles requieren 8 bytes (64 bits)
%% Aritmética y álgebra lineal
% Podemos ejecutar aritmética estándar y algebra lineal sobre simples
B = A' % Matriz transpuesta
whos B
% Podemos ver el resultado de esta operación. B, es un simple
%%
C = A * B % Multiplicación de Matrices
%%
C = A .* B % Aritmética Elementwise
%%
X = inv(A) % Matriz inversa
%%
I = inv(A) * A % Confirma que el resultado es la matriz identidad
%%
I = A / A % Una mejor forma de hacer la división entre matrices que
inv
%%
E = eig(A) % Eigenvalores
%%
F = fft(A(:,1)) % FFT
%%
S = svd(A) % Descomposición del valor singular
%%
P = round(poly(A)) % El polinomio característico de una matriz
%%
R = roots(P) % Raíces de un polinomio
%%
Q = conv(P,P) % Convolver dos vectores
R = conv(P,Q)
%%
stem(R); % Diagramar el resultado
%% Un Programa que Trabaja para Cualquier Simple o Doble Precisión
% Ahora vamos a mirar un función para computar bastantes términos en
la
% secuencia de Fibonacci de modo que el radio es menor que la máquina
% correcta epsilon (eps) para datos de tipo single o double.
% Cuántos términos se necesitan para obtener resultados de precisión
% simple?
fibodemo('single')
% Cuantos términos se necesitan para obtener resultados de precisión
Doble?
fibodemo('double')
% Ahora vamos a observar al código trabajando.
type fibodemo
% Nótese que inicializamos varias de nuestras variables, |fcurrent|,
% |fnext|, y |goldenMean|, con valores que son dependientes del tipo
de
% dato de entrada, y la tolerancia |tol| depende de ese tipo también.
La
% precisión simple requiere que calculemos menos términos que en el
cálculo
% en doble precisión equivalente.