Tuesday, August 29, 2017

5ta Clase Métodos Numéricos: Aritmética de Punto Flotante




 
>> F=@(X) (1-cos(X))./(X.^2);
>> G=@(X) (sin(X).^2/(X.^2.*(1+cos(X))));
>> F(1)

ans =

    0.4597

>> G(1)

ans =

    0.4597

>> F(2)

ans =

    0.3540

>> G(2)

ans =

    0.3540

>> F(3)

ans =

    0.2211

>> G(3)

ans =

    0.2211

>> F(0.00001)

ans =

    0.5000

>> G(0.00001)

ans =

    0.5000

>> F(10^-7)

ans =

    0.4996

>> G(10^-7)

ans =

    0.5000

>> F(10^-8)

ans =

     0

>> G(10^-8)

ans =

    0.5000

>> 

Aritmética de punto flotante (ver apunte)

>> eps

ans =

  2.2204e-016

>> log2(eps)

ans =

   -52

>> realmin

ans =

  2.2251e-308

>> realmax

ans =

  1.7977e+308

>> log2(realmin)

ans =

       -1022

>> log2(realmax)

ans =

        1024






Ejercicios:
Calcular (y explicar)

>> 1+eps/2+eps/2

ans =

     1

>> (1+eps/2)+eps/2

ans =

     1

>> 1+(eps/2+eps/2)

ans =

    1.0000

>> eps/2 + eps/2 + 1

ans =

    1.0000

>> 1+(eps/2+eps/2)-1

ans =

  2.2204e-016

>> 1/realmin

ans =

  4.4942e+307

>> 1/0

ans =

   Inf

>> 1/realmax

ans =

  5.5627e-309

>> 1/inf

ans =

     0

>> 1/0

ans =

   Inf

>> -1/0

ans =

  -Inf

>> 1/-0

ans =

  -Inf

>> -1/-0

ans =

   Inf

>> 0/0

ans =

   NaN

>> 

Monday, August 28, 2017

4ta clase: métodos numéricos



1)
Programar PRO1: un lote de instrucciones donde se recorren los números k del 1 al 10000 y se guardan en un vector V aquellos k tales que K^2 termina en 89


function V=pro1()
i=1;
for k=1:1000
    if rem((k.^2),100)==89
        V(i)=k;
        i=i+1;
    end
end

       

2)
Programar una función prim.m que reciba un numero x y devuelva 1 si x es primo positivo 0 si x es un natural compuesto y -1 si x es <1 o x no es entero
function [y]=prim (x)
if(x<1||round(x)~=x)
    y=-1;
    return;
end
y=0;
if(x>1)
    for k=2:(x-1)
        if(rem(x,k)==0)
            return;
        end
        y=1;
    end
end

Tuesday, August 22, 2017

3ra clase Métodos numéricos: Ejercicios de graficación en 3D











 >> fun=@(t)(t.^2 + sin(t).^2)./exp(t);
>> fun(2)

ans =

    0.6532

>> fun([2 3 -1])

ans =

    0.6532    0.4491    4.6430

>> x=-1:0.1:3;
>> plot(x,fun(x))
>>
>>

 >> x=-3:0.1:3;
>> f=@(x)sqrt((1-(x.^2)/9)*4);
>> plot(x,f(x),x,-f(x),'-b')
>>

(nota: el '-b' es para forzar a que la figura compuesta por x, -f(x) sea azul igual que la compuesta por x, f(x). por default me la dibujaría verde el sistema




>> t=linspace(0,2*pi,100);
>> plot(3*cos(t),2*sin(t))
>>





 >> t=-1:0.1:2;
>> plot3(2*t-1,t.*exp(t/2),sin(t))
>>




 EJERCICIOS:

1)
Graficar una espiral sobre un cilindro de eje z hacia arriba, comenzando en (1,0,0) con 3 espiras subiendo con velocidad 1/2pi

>> z=0:0.1:6*pi;
>> plot3(cos(z),sin(z),z)
>>


2) Una espiral sobre un cono de eje y (con y>0)
de 3 espiras

>> z=0:0.1:6*pi;
>> plot3(z.*sin(z),z,z.*cos(z))
>>

EJERCICIOS:

1)      Graficar una esfera de centro (0,0,0) y radio 3
2)      Graficar un tramo del paraboloide circular de ecuación cartesiana z=x^2 + y^2
a.       En coordenadas cartesianas (x, y, x^2 + y^2) con x E (-2,2) e y E (-1,2)
b.      En coordenadas cilíndricas con z E (0,4)
1)
>> u=linspace(0,2*pi,50);
>> v=-pi/2:0.1:pi/2;
>> [U,V]=meshgrid(u,v);
>> surf(3.*cos(U).*cos(V),3.*sin(U).*cos(V), 3.*sin(V))
>> 




2)
>> x=-2:0.1:2;
>> y=-1:0.1:2;
>> [X,Y]=meshgrid(x,y);
>> surf(X,Y,X.^2 + Y.^2);
>> 

b)
>> t=linspace(0,2*pi,50);
>> s=0:0.1:2;
>> [S,T]=meshgrid(s,t);
>> surf(S.*cos(T),S.*sin(T),S.^2);