DEBER1 Altamirano Ariel 2752
DEBER1 Altamirano Ariel 2752
DEBER1 Altamirano Ariel 2752
CIENCIAS EXACTAS
DEBER Nro. 1
Tutor
ING. PATRICIO PUGARIN
Estudiante
ARIEL ALTAMIRANO
Deber Nro. 1
Programación Matlab, Ecuaciones no Lineales.
Código en Matlab
%% Realizar un programa en Matlab que permita
visualizar un círculo de radio 6,5 y centro 3.
close all;
clear all;
t=0:pi/30:2*pi;
R=6.5; % Variable R para modificar el valor del radio
cx=3; %variables para definir el centro del circulo
cy=0; %centro C(3,0)
x=R*(cos(t))+cx;
y=R*(sin(t))+cy;
plot(x,y,'r')
line(xlim,[0 0],'color','b');
line([0 0],ylim,'color','b');
grid on
axis square
axis([-4 10 -7 7])
title('Circulo')
1
Métodos Numéricos Primer Parcial
2. Graficar la siguiente función y sus derivadas, en un solo gráfico de manera
superpuesta, aplicando el comando “if”.
𝑒 −𝑥 𝑠𝑖 ∶ 𝑥 < −1
𝑓(𝑥) = { |𝑥| 𝑠𝑖 ∶ −1 < 𝑥 < 1
𝑥2 + 1 𝑠𝑖 ∶ 𝑥>1
Código en Matlab
%% Graficar la siguiente función y sus derivadas, en
un solo gráfico de manera superpuesta, aplicando el
comando “if”.
close all;
clear all;
x=-100:0.01:100;
f =(x<-1).*exp(-x)+((-1<x )&(x <1 ) ).* abs ( x )+(x
>1 ).*( x.^2+1 );
plot ( x ,f, 'b') ;
axis([-2 2 -5 5]);
grid on ;
hold on ;
d=(x<-1).*(-exp(-x))+((-
1<x)&(x<1)).*(1)+(x>1).*(2.*x);
plot(x,d,'k') ;
title('(azul) función paramétrica; (negro) derivada');
2
Métodos Numéricos Primer Parcial
2 2
3. Represente gráficamente la función 𝑓(𝑥1 , 𝑥2 ) = 𝑥1 ∙ 𝑒 −𝑥1 −𝑥2 en el mallado
[−2,2]𝑥[−2,2].
Código en Matlab
%% Represente gráficamente la función f(x1,x2) en el
mallado [-2,2]x[-2,2].
close all;
clear all;
hold on
ezplot('x.*exp(-x.^2-y.^2)',[-2,2,-2,2])
hold off
title('Función f(x1,x2)');
grid on
3
Métodos Numéricos Primer Parcial
funcionamiento. Además, el programa siempre esperara información hasta que
se pulse la tecla s.
Código en Matlab
while true % permite volver al punto inicial
disp('Conversión de temperatura');
disp('Seleccione la escala a la que desea tranformar');
disp ( '"a" Celsius a Farenheit ' );
disp ( '"b" Celsius a Kelvin ' );
disp ( '"c" Celsius a Rankine ' );
disp ( '"s" Salir ' );
ops = input('Elija una opcion: ','s');
switch ops
case 'a'
while true
disp('Escala Celsius a Escala Farenheit')
C=input('Ingresar el valor en grados Celsius o "s" para salir: ','s');
if C=='s'
disp('Salio con exito del programa');
break;
else
f=eval(C);
F=(f*(9/5))+32;
disp('el valor en escala Farenheit es =');
disp(F);
end
end
case 'b'
while true
disp('Escala Celsius a Escala Kelvin')
C=input('Ingresar el valor en grados Celsius o "s" para salir: ','s');
if C=='s'
disp('Salio con exito del programa');
break;
else
k=eval(C);
K=k+273.15;
disp('el valor en escala Kelvin es = ');
disp(K);
end
end
case 'c'
while true
disp('Escala Celsius a Escala Rankine')
C=input('Ingresar el valor en grados Celsius o "s" para salir: ','s');
if C=='s'
disp('Salió con éxito del programa');
break;
else
r=eval(C);
R=r*(8/10);
disp('el valor en escala Rankine es = ');
disp(R);
end
end
case 's'
disp('Salió con éxito del programa');
break;
otherwise
disp('Ingrese una opción válida');
end
end
4
Métodos Numéricos Primer Parcial
Ejecución del Programa
metodos_1_4
Conversión de temperatura
Seleccione la escala a la que desea tranformar
"a" Celsius a Farenheit
"b" Celsius a Kelvin
"c" Celsius a Rankine
"s" Salir
Elija una opcion: a
Escala Celsius a Escala Farenheit
Ingresar el valor en grados Celsius o "s" para salir: 250
el valor en escala Farenheit es =
482
Escala Celsius a Escala Farenheit
Ingresar el valor en grados Celsius o "s" para salir: s
Salio con exito del programa
Conversión de temperatura
Seleccione la escala a la que desea tranformar
"a" Celsius a Farenheit
"b" Celsius a Kelvin
"c" Celsius a Rankine
"s" Salir
Elija una opcion: b
Escala Celsius a Escala Kelvin
Ingresar el valor en grados Celsius o "s" para salir: 22
el valor en escala Kelvin es =
295.1500
Escala Celsius a Escala Kelvin
Ingresar el valor en grados Celsius o "s" para salir: s
Salio con exito del programa
Conversión de temperatura
Seleccione la escala a la que desea tranformar
"a" Celsius a Farenheit
"b" Celsius a Kelvin
"c" Celsius a Rankine
"s" Salir
Elija una opcion: s
Salió con éxito del programa
5
Métodos Numéricos Primer Parcial
5. Crear una función m.file con la que se puede graficar la función paramentaría
siguiente:
𝑅+𝑟
𝑥(𝑡) = (𝑅 + 𝑟) ∙ 𝑐𝑜𝑠(𝑡) − 𝑟 ∙ 𝑐𝑜𝑠 ( ∙ 𝑡)
𝑧(𝑡) = { 𝑟
𝑅+𝑟
𝑦(𝑡) = (𝑅 + 𝑟) ∙ 𝑠𝑒𝑛(𝑡) − 𝑟 ∙ 𝑠𝑒𝑛 ( ∙ 𝑡)
𝑟
Los parámetros de entrada deben ser R, r, a, b y el numero n de puntos. 𝑡 ∈ [𝑎, 𝑏]
y 𝑎, 𝑏 ∈ 𝑅.
Código en Matlab
%% Ingresar los valores de R,r,a,b,n
close all;
clear all;
function metodos_1_5(R,r,a,b,n)
t=linspace(a,b,n)
x=(R+r)*cos(t)-r*cos(((R+r)/r)*t);
y=(R+r)*sin(t)-r*sin(((R+r)/r)*t);
plot(x,y)
grid on
end
6
Métodos Numéricos Primer Parcial
Código en Matlab
%% Represente en Matlab la superficie 3D dada por la función
close all;
clear all;
syms a b;
X=[a ; b];
u=transpose ([10 10]);
m=[3 -1;-1 4];
f=inline((exp(-(1/2)*((X-u)')*(m^(-1))*(X-
u)))/((2*pi)*sqrt(det(m))));
x=0:0.3:20;
y=0:0.3:20;
for a=1:length(x)
for b=1:length(x)
z(a,b)=f(x(a),y(b));
end
end
surf(x,y,z,'EdgeColor','none')
colormap(spring);
title('Superficie 3D de la función f' );
colormap(summer);
xlabel ('Eje X');
ylabel ('Eje Y');
zlabel ('Eje Z');
7
Métodos Numéricos Primer Parcial
Ejecución del Programa
7. Realizar una función tal que ingresado un numero N, se impriman por pantalla
todos los números primos de 1 hasta N.
Ej: Ingreso el número 13 y se imprimen por pantalla: 1, 3, 5, 7, 11, 13.
Código en Matlab
%% Realizar una función tal que ingresado un numero N, se
impriman por pantalla todos los números primos de 1 hasta N
close all;
clear all;
N=input('Ingresar un número que será límite para la serie de
números primos: ');
n1=1;
n2=2;
while n2<=N
if n2>=n1
n1=n1+1;
if (mod(n2,n1)==0)&&(n2~=n1)
n2=n2+1;
n1=1;
end
if (mod(n2,n1)==0)&&(n2==n1)
disp(n2);
n2=n2+1;
n1=1;
end
end
end
8
Métodos Numéricos Primer Parcial
Ejecución del Programa
>> metodos_1_7
Ingresar un número que será límite para la serie de números primos: 22
2
3
5
7
11
13
17
19
8. En cada uno de los casos siguientes, halle el error absoluto Ez y el error relativo
Rz y determine el número de cifras significativas de la aproximación.
a) 𝑥 = 2,71828282 , 𝑥̂ = 2,7182
b) 𝑦 = 98350 , 𝑦̂ = 98000
c) 𝑧 = 0,000068 , 𝑧̂ = 0,00006
Código en Matlab
%% En cada uno de los casos siguientes, halle el error
absoluto Ez y el error relativo Rz y determine el número de
cifras significativas de la aproximación
close all;
clear all;
format long
x1=2.71828182;
x2=2.7182;
y1=98350;
y2=98000;
z1=0.000068;
z2=0.00006;
disp('Primer caso "a"');
Ex=abs(x1-x2); %Ex, error absoluto
Rx=abs((x1-x2)/x1); % Rx error relativo
CSx=floor(-(log(2*Rx)/log(10)));
fprintf('\n Error absoluto literal a = %d \n',Ex);
fprintf('Error Relativo literal a = %d \n ',Rx);
fprintf('Cifras significativas de x = %d \n\n',CSx);
disp('Segundo caso "b"');
Ey=abs(y1-y2);%Ey, error absoluto
Ry=abs((y1-y2)/y1);% Ry error relativo
CSy=floor(-(log(2*Ry)/log(10)));
fprintf('\n Error absoluto literal b = %d \n',Ey);
fprintf('Error Relativo literal b = %d \n',Ry);
fprintf('Cifras significativas de y = %d \n\n',CSy);
disp('Tercer caso "c"');
Ez=abs(z1-z2);%Ez, error absoluto
Rz=abs((z1-z2)/z1);% Rz error relativo
CSz=floor(-(log(2*Rz)/log(10)));
fprintf('\n Error absoluto literal c = %d \n',Ez);
fprintf('Error Relativo literal c = %d \n',Rz);
fprintf('Cifras significativas de z = %d \n',CSz);
9
Métodos Numéricos Primer Parcial
Ejecución del Programa
>> metodos_1_8
Primer caso "a"
10
Métodos Numéricos Primer Parcial
1 ℎ3 ℎ5 ℎ4 ℎ6 ℎ5
∙ 𝑠𝑒𝑛(ℎ) = ℎ − + + 𝑂(ℎ6 ) + ℎ2 − + + ℎ ∙ 𝑂(ℎ6 ) + ℎ3 −
1−ℎ 3! 5! 3! 5! 3!
ℎ7 ℎ6 ℎ8
+ + ℎ2 ∙ 𝑂(ℎ6 ) + ℎ4 − + + ℎ3 ∙ 𝑂(ℎ6 ) + ℎ ∙ 𝑂(ℎ4 )
5! 3! 5!
ℎ3 ℎ5
∙ 𝑂(ℎ4 ) + ∙ 𝑂(ℎ4 ) + 𝑂(ℎ6 ) ∙ 𝑂(ℎ4 )
−
3! 5!
𝟏 𝟓
∙ 𝒔𝒆𝒏(𝒉) = 𝒉 + 𝒉𝟐 + 𝒉𝟑 + 𝑶(𝒉𝟒 )
𝟏−𝒉 𝟑!
10. Encuentre una aproximación polinomial para 𝑓(𝑥) = 𝑒 𝑥 𝑠𝑒𝑛(𝑥), con orden de
aproximación 𝑂(𝑥 4 ) y calcular la función ℎ = 𝑓𝑔; siendo 𝑔(𝑥) = 𝑥 + 𝑥 2 +
𝑂(𝑥 3 ).
• Aproximación para f(x)
𝑥2 𝑥3
𝑒𝑥 = 1 + 𝑥 + + + 𝑂(𝑥 4 )
2! 3!
𝑥3
𝑠𝑒𝑛(𝑥) = 𝑥 − + 𝑂(𝑥 4 )
3!
𝑥3 𝑥4 𝑥3 𝑥5 𝑥4 𝑥6
𝑒 𝑥 ∙ 𝑠𝑒𝑛(𝑥) = 𝑥 − + 𝑥2 − + − + − + 𝑂(𝑥 4 )
3! 3! 2! 3! ∙ 2! 3! 3! ∙ 3!
𝟐!
𝒆𝒙 ∙ 𝒔𝒆𝒏(𝒙) = 𝒙 + 𝒙𝟐 + 𝒙𝟑 + 𝑶(𝒙𝟒 )
𝟑!
• Calcular h(x)=f(g(x))
2! 3
𝑓(𝑥) = 𝑥 + 𝑥 2 + 𝑥 + 𝑂(𝑥 4 )
3!
𝑔(𝑥) = 𝑥 + 𝑥 2 + 𝑂(𝑥 3 )
2 2! 3
𝑓(𝑔(𝑥)) = 𝑥 + 𝑥 2 + 𝑂(𝑥 3 ) + (𝑥 + 𝑥 2 + 𝑂(𝑥 3 )) + (𝑥 + 𝑥 2 + 𝑂(𝑥 3 ))
3!
4
+ 𝑂 ((𝑥 + 𝑥 2 + 𝑂(𝑥 3 )) )
2! 3
𝑓(𝑔(𝑥)) = 𝑥 + 𝑥 2 + 𝑂(𝑥 3 ) + 𝑥 2 + 2𝑥 3 + (𝑥 + 4𝑥 4 + 3𝑥 5 )
3!
4
+ 𝑂 ((𝑥 + 𝑥 2 + 𝑂(𝑥 3 )) )
11
Métodos Numéricos Primer Parcial
11. Encuentre una raíz positiva, con los métodos de la bisección y newton, a mano y
con calculadora, de la ecuación
2
𝑥 2 − 4𝑥 ∙ 𝑠𝑒𝑛(𝑥) + (2 ∙ 𝑠𝑒𝑛(𝑥)) = 0;
que sea exacta hasta la segunda cifra significativa, solo con el empleo de una
calculadora.
• Método de Newton Raphson
2
𝑓(𝑥) = 𝑥2 − 4𝑥 ∙ 𝑠𝑒𝑛(𝑥) + (2 ∙ 𝑠𝑒𝑛(𝑥))
𝑓 ′ (𝑥) = 2𝑥 − 4 ∙ 𝑠𝑒𝑛(𝑥) − 4𝑥 ∙ 𝑐𝑜𝑠(𝑥) + 4 ∙ 𝑠𝑒𝑛(𝑥) ∙ cos (𝑥)
• 1ra Iteración x0 = 1,9
𝑓(x0 ) 𝑓(1,9)
x1 = x0 + = 1,9 + = 1,8999
𝑓′(x0 ) 𝑓′(1,9)
𝑓(1,8999)
x2 = 1,8999 +
𝑓′(1,8999)
• 3ra Iteración x2
𝑓(2,31939)
x3 = 2,31939 + = 1,8997
𝑓′(2,31939)
𝑓(1,8997)
x4 = 1,8997 + = 1,8996
𝑓′(1,8997)
𝑓(1,8996)
x5 = 1,8996 + = 1,8996
𝑓′(1,8996)
12
Métodos Numéricos Primer Parcial
Código en Matlab
%% Con los programas: método de la bisección, newton y
método de la secante, encuentre una raíz
close all;
clear all;
fx=@(x)(x-tan(x));
dx=@(x)(1-(sec(x))^2);
format short;
disp ('Método de la Bisección');
fprintf('No es posible obtener una raíz por este método
\n\n');
disp('Método de Newton Raphson');
x=1;
x1=x-fx(x)/dx(x);
while abs(x1-x)>0.000001
x=x1;
x1=x-fx(x)/dx(x);
end
fprintf('La raíz obtenida es = %d \n\n',x);
disp('Método de la Secante');
x2=1;
x3=2;
while abs (x3-x2)>0.000001
x4=x3-(fx(x3)*(x3-x2))/(fx(x3)-fx(x2));
x2=x3;
x3=x4;
end
fprintf('La raíz obtenida es = %d \n\n',x3);
Método de la Secante
La raíz obtenida es = 2.577687e-06
• Comparaciones
13
Métodos Numéricos Primer Parcial
13. Encontrar mediante el método de newton las raíces de la ecuación:
√3 ∙ 𝑠𝑒𝑛(𝑥) = cos (𝑥)
Código en Matlab
%% Encontrar mediante el método de newton las raíces de la
ecuación:
close all;
clear all;
x0=3.1;
iter=1;
fx=@(x)(sqrt(3)*sin(x)-cos(x));
dfx=@(x)(sqrt(3)*cos(x)+sin(x));
x1=x0-(fx(x0)/dfx(x0));
while abs(x1-x0)>0.000001
x0=x1;
x1=x0-(fx(x0)/dfx(x0));
iter=iter+1;
end
disp('Método de Newton Raphson');
fprintf('\nLa raíz obtenida es = %d\n',x1);
fprintf('Numero de iteraciones realizadas = %d\n',iter);
14. Un objeto está situado en un plano cuya pendiente varía a una tasa constante ω.
La posición del objeto, al instante t, está dada por la fórmula
𝑔
𝑠(𝑡, 𝜔) = [𝑠𝑒𝑛ℎ(𝜔𝑡) − 𝑠𝑒𝑛(𝜔𝑡)],
2𝜔 2
donde 𝑔 = 9,8𝑚/𝑠 2 es la aceleración de la gravedad. Asumiendo que el objeto
se ha desplazado 1 metro en 1 segundo, calcule el valor de ω, usando el método
de la bisección, con una tolerancia de 10−5 . ¿Cuántas iteraciones se requieren
para alcanzar la tolerancia indicada?
14
Métodos Numéricos Primer Parcial
Código en Matlab
%% Cuántas iteraciones se requieren para alcanzar la
tolerancia indicada
close all;
clear all;
a=0.5; % se elige un intervalo de [0.5 , 1.4] para este caso
b=1.4;
g=9.8;
tol=10^(-5);
iter=1;
% con desplazamiento s=1 en tiempo t=1, se tiene
%1=(g/(2*w^2))*(sinh(w)-sin(w)
f=@(w)(g/(2*w^2))*(sinh(w)-sin(w))-1;
while abs(b-a)>tol
if f(a)*f(b)<0
c=(a+b)/2;
if f(a)*f(c)<0
b=c;
else
a=c;
end
iter=iter+1;
end
end
disp('Método de la Bisección');
disp('El valor de w es = ');
disp(c);
fprintf('Numero de iteraciones realizadas = %d\n',iter);
15. Las frecuencias de vibración natural de una viga uniforme que está sujeta en un
extremo, es la solución de la ecuación cos(𝑥) ∙ cosh(𝑥) + 1 = 0; siendo: 𝑥 =
𝜌𝜔2 𝐿/𝐸𝐼, 𝐿 longitud de la viga (m.), 𝜔, frecuencia(s-1), EI, rigidez ante la flexión
y 𝜌 densidad del material de la viga (Kg/m3).
Determine valores aproximados de las tres raíces positivas más bajas utilizando
el método de la bisección.
15
Métodos Numéricos Primer Parcial
Código en Matlab
close all;
clear all;
function r=metodos_1_15(a,b,f)
fx=inline(f);
while abs(b-a)>0.00001
if(fx(a)*fx(b)<0)
x1=(a+b)/2;
if (fx(a)*f(x1)<0)
b=x1;
else
a=x1;
end
else
disp('La función evaluada en este punto es diferente
de 0');
disp('Por lo tanto no existe una raíz');
return
end
end
disp('La raíz obtenida es = ');
disp(x1);
end
16
Métodos Numéricos Primer Parcial
Código en Matlab
%% Calcule el volumen de gas utilizando la ecuación de estado
de Van der Waals para un gas no ideal
close all;
clear all;
% variables especificadas en el enunciado.
r=0.08314;
t=215;
p=70;
a=1.463;
b=0.0394;
%primer punto
x0=0.3;
f=@(x)((p+a./((x).^2)).*(x-b)-r.*t);
fd=@(x)(1463/(1000*x.^2)-(1463.*(x-197/5000))/(500.*x.^3)+70);
x1=x0-f(x0)/fd(x0);
while abs(x1-x0)>10^(-5)
x0=x1;
x1=x0-f(x0)/fd(x0);
end
disp('Método de Newton Raphson');
disp('El valor de la aproximación es =');
disp(x1);
17