MATEMÁTICA DE PRECISIÓN SIMPLE

69 views
Skip to first unread message

アタラクシア

unread,
Jun 19, 2007, 4:14:21 PM6/19/07
to The MATLAB users
%% MATEMÁTICA DE PRECISIÓN SIMPLE

% 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.

Reply all
Reply to author
Forward
0 new messages