Sunteți pe pagina 1din 38

EJERCICIO 1

Escribir un programa en Scilab que calcule el área lateral y el área total de un


cilindro. El programa debe pedir como datos el radio y la longitud del cilindro. Para la
corrida de prueba, usar como datos 2.7 cm de radio y 12.4 cm de longitud.

RESULTADOS: AL=210.36 cm2; AT=256.17 cm2

CÓDIGO DEL PROGRAMA

//David Castro de la Torre


//Programación y Métodos Numéricos
//Ejercicio 1
//18-feb-2019
clear
disp("Calculo de Área Lateral y Total de un cilindro")
r=input("proporcione el radio en centímetros ");
L=input("Proporcione la longitud del cilindro en centímetros ");
Al=(2*%pi)*r*L;
AB=%pi*r^2;
AT=(2*AB)+Al;
disp("El Área Lateral es "+string(Al)+" cm^2")
disp("El Área Total es "+string(AT)+" cm^2")

CORRIDA DE PRUEBA
--> exec("EJERCICIO1.sce.sce");
Calculo de Área Lateral y Total de un cilindro
proporcione el radio en centímetros 2.7
Proporcione la longitud del cilindro en centímetros 12.4

El Área Lateral es 210.36104 cm^2

El Área Total es 256.16546 cm^2

COMENTARIOS

Este fue el primer ejercicio que hicimos por nuestra cuenta, a mí me pareció
relativamente sencillo, ya que era muy similar al ejercicio de ejemplo, en mi caso
corrió el programa hasta el tercer intento, mas que nada por errores al momento de
introducir los comandos, esto debido a que apenas comienzo a familiarizarme con estos
antes mencionados.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 3
La ecuación de estado más sencilla que existe es la ecuación de gas ideal PV = nTR,
donde P es la presión del gas, V es el volumen, n es el número de moles, R es la
constante universal de los gases (8.314 Pa*m3/mol*K) y T es la temperatura absoluta.
Escribir un programa de Scilab que calcule el número de moles de un gas empleando la
ecuación de gas ideal. Para la corrida, tomar P =0.8 atm, V =2m3 y T =25°C.

RESPUESTA: 65.4 mol

CÓDIGO DEL PROGRAMA

//David Castro de la Torre


//Programación y métodos numéricos
//Ejercicio 3
//20-02-19
clear
disp("Calculo de números de moles de un gas mediante la ecuación de gas ideal")
P=input("Presión del gas en atm: ");
p=101325*P;
V=input("Volumen en m^3: ");
T=input("Temperatura en °c: ");
t=T+273.15;
R=8.314;
n=(p*V)/(R*t);
disp("El número de moles es "+string(n)+" mol")

CORRIDA DE PRUEBA
--> exec("ejercicio3.sce");

Calculo de números de moles de un gas mediante la ecuación de gas ideal


Presión del gas en atm: 0.8

Volumen en m^3: 2

Temperatura en °c: 25

El número de moles es 65.40211 mol

COMENTARIOS

Este ejercicio fue hasta el momento el más laborioso de realizar ya que algunas unidades
eran diferentes entre sí como por ejemplo la temperatura que nos pedía introducir grados
centígrados pero dentro de la ecuación se trabaja con grados Kelvin, por lo cual decidí
introducir una variable extra en donde el usuario pudiese introducir los grados
centígrados y dentro de la ecuación esos grados centígrados se viesen reflejados en su
equivalente en Kelvin, el despeje fue relativamente sencillo, solo fue cuestión de
observar bien las unidades con la que este trabaja, este programa lo probé alrededor de
unas cuatro veces, para verificar que las formulas asignadas en las variables
funcionarán bien.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 4 – OPCIONAL
En Termodinámica, se estudia la ecuación de estado de Van der Waals:
𝑎
(𝑃 + ) (𝑣 − 𝑏)=RT
𝑣2

en donde P es la presión (atm), v es el volumen específico (L/mol), T es la temperatura absoluta


(K), R es la constante universal de los gases (0.082057 atm·L/mol·K), y los parámetros a y b se
pueden estimar a partir de los datos del punto crítico empleando las fórmulas:
27𝑅2 𝑇𝐶2 𝑅𝑇𝐶
𝑎= 𝑏=
64𝑃𝐶 8𝑃𝐶

donde Tc es la temperatura crítica (K) y Pc es la presión crítica (atm).

Escribir un programa en Scilab que calcule la presión empleando la ecuación de estado de Van der
Waals. El programa debe solicitar al usuario como datos la temperatura, el volumen específico, la
temperatura crítica y la presión crítica (en las unidades indicadas anteriormente). El programa no
debe pedir el valor de la constante de los gases: éste debe ser incorporado directamente en el
programa.

Emplear los siguientes valores para la corrida de prueba: T = 298 K, v = 0.6 L/mol, Tc = 304.12 K,
Pc = 72.78 atm.

RESULTADO: 33.86 atm.

CÓDIGO DEL PROGRAMA

//David Castro de la Torre


//Programación y Métodos Numéricos
//Ejercicio 4
//21-FEB-2019
clear
disp("Calculo de presión mediante la ecuación de estado de Van der Waals")
disp("Datos")
T=input("Temperatura en K: ");
v=input("Volumen Especifico en L/mol: ");
Tc=input("Temperatura crítica en K: ");
Pc=input("Presión crítica en atm: ");
R=0.082057 ;
a=((27*R^2)*(Tc^2))/(64*Pc);
b=(R*Tc)/(8*Pc);
P=((R*T)/(v-b))-(a/v^2);
disp("Resultado")
disp("La presión es: "+string(P)+" atm")

CORRIDA DE PRUEBA

--> exec("ejercicio4.sce");
Calculo de presión mediante la ecuación de estado de Van der Waals
Datos
Temperatura en K: 298
Volumen Especifico en L/mol: .6
Temperatura crítica en K: 304.12
Presión crítica en atm: 72.78
Resultado
La presión es: 33.862801 atm

COMENTARIOS
Al pricipio me equivoque ya que despeje la ecuación para temperatura en lugar de presión jeje, en
si en este ejercicio no fue tan complicado como parece a simple vista, solo fue cuestión de fijar
bien las variables necesarias con su valor para no tener errores de cálculo, en esta mismo
programa utilice mas “disp.” Uno para los datos y otro para el resultado con el fin de que el
programa tuviese mejor apariencia.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 5

El pH (potencial de hidrógeno) es una manera conveniente de expresar el grado de acidez o alcalinidad de una
solución, y está definido como: pH = −Log10 ⟦H+ ⟧, donde la concentración de iones hidrógeno está expresada en
mol/L. (A) Escribir un programa en Scilab que calcule el pH, cuando se le proporcione como dato la
concentración de iones hidrógeno. Para las corridas de prueba, emplear 5×10−4, 1×10−7 y 2.5×10−9 mol/L. (B,
opcional) Escribir un programa en Scilab que calcule la concentración de iones hidrógeno a partir del valor de
pH. Para las corridas de prueba, emplear pH 5.1 y 10.5.

RESULTADO: (A) 3.3, 7, 8.6; (B) 7.94×10−6, 3.16×10−11 mol/L

CÓDIGO DEL PROGRAMA

//David Castro de la Torre


//Programación y Métodos Numéricos
//Ejercicio 5
//26-FEB-2019
clear
disp("Calculo de pH a partir de la concentración de iones H")
disp("Datos")
cH1=input("Concentración A de Iones Hidrógenos en mol/L: ");
cH2=input("Concentración B de Iones Hidrógenos en mol/L: ");
cH3=input("Concentración C de Iones Hidrógenos en mol/L: ");
pH1=-log10(cH1);
pH2=-log10(cH2);
pH3=-log10(cH3);
disp("Resultados")
disp("El pH A es: "+string(pH1)+" pH")
disp("El pH B es: "+string(pH2)+" pH")
disp("El pH C es: "+string(pH3)+" pH")
disp("Calculo de concentración de iones H a partir del pH")
disp("Datos")
PH1=input("Valor de PH A: ");
PH2=input("Valor de PH B: ");
CH1=(10^(-PH1));
CH2=(10^(-PH2));
disp("Resultados")
disp("La concentración de iones H A es: "+string(CH1)+" mol/L")
disp("La concentración de iones H B es: "+string(CH2)+" mol/L")

CORRIDA DE PRUEBA

-->exec("ejercicio5.sce");
Calculo de pH a partir de la concentración de iones H
Datos
Concentración A de Iones Hidrógenos en mol/L: 5e-4
Concentración B de Iones Hidrógenos en mol/L: 1e-7
Concentración C de Iones Hidrógenos en mol/L: 2.5e-9
Resultados
El pH A es: 3.30103 pH
El pH B es: 7 pH
El pH C es: 8.60206 pH
Calculo de concentración de iones H a partir del pH
Datos
Valor de PH A: 5.1
Valor de PH B: 10.5
Resultados
La concentración de iones H A es: 0.0000079 mol/L
La concentración de iones H B es: 3.162D-11 mol/L

COMENTARIOS

Este programa lo realice de forma en el cual se obtenga más de un solo resultado por ejecución, por lo cual
estoy seguro que es más largo y hasta cierto punto más rebuscado al de la mayoría de mis compañeros, utilice
los disp. De tal forma que separara el programa en dos partes; la primera en cálculo de pH y la segunda en
concentración de iones H, el despeje de la fórmula para obtener iones hidrógenos fue muy complicada a mi
parecer, pero al final se obtuvo.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 6
Desarrollar un programa en Scilab para uno de los casos de resolución de triángulos:
cuando se conoce la longitud de dos lados A y B, así como el ángulo γ entre ellos.
El tercer lado se puede encontrar aplicando la ley del coseno:

𝐶 = √𝐴2 + 𝐵2 − 2𝐴𝐵𝑐𝑜𝑠Υ

Después, uno de los ángulos se obtiene también de la ley del


coseno:

𝑩𝟐 + 𝑪𝟐 − 𝑨𝟐
𝜶 = 𝒂𝒓𝒄𝒄𝒐𝒔
𝟐𝑩𝑪

Finalmente, el tercer ángulo se obtiene por diferencia, puesto que αβγ ++= ° 180 . Para
la corrida de prueba, emplear los valores A = 3.20, B = 9.55 y γ = 85°.
RESULTADOS: C = 9.80, α = 18.98°, β = 76.02°.
CÓDIGO DEL PROGRAMA
//David Castro de la Torre
//Programacion y Metodos Numericos
//Ejercicio 6
//26-FEB-2019
clear
disp("Resolución de triangulos: cuado se conoce lados A y B, y angulo Gama")
disp("Datos")
A=input("lado A es igual a unidades: ");
B=input("lado B es igual a unidades: ");
y=input("Angulo y es igual a °: ");
C=(A^(2)+B^(2)-(2*A*B)*(cosd(y)))^(1/2);
u=(B^(2)+C^(2)-A^(2))/(2*B*C);
a=acosd(u);
b=180-a-y;
disp("Resultados")
disp("el lado C es igual a: "+string(C)+" u")
disp("el angulo a es igual a: "+string(a)+"°")
disp("el angulo b es igual a: "+string(b)+"°")

CORRIDA DE PRUEBA
--> exec("ejercicio6.sce");
Resolución de triangulos: cuado se conoce lados A y B, y angulo Gama
Datos
lado A es igual a unidades: 3.20
lado B es igual a unidades: 9.55
Angulo y es igual a °: 85
Resultados
el lado C es igual a: 9.8038534 u
el angulo a es igual a: 18.975282°
el angulo b es igual a: 76.024718°
COMENTARIOS
Este ejercicio fue de los más sencillos ya que las formulas requeridas para obtener cada resultado
ya venían incluidas en el problema por lo cual no es necesario despejar ni nada, el único
inconveniente que tuve fue que no tenía la hoja con algunas funciones de predefinidas de scilab
por lo que no sabía como escribir “acos”, además de que este problema lo hice en mi casa por mi
cuenta, por lo mismo lo repetí muchas veces hasta que por pura suerte descubrir como introducir el
comando “acos”.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 7
Escribir un programa en Scilab que convierta una temperatura dada de °C a K. El programa debe
calcular la temperatura y mostrar el resultado solo si la temperatura es mayor o igual a -
273.15°C, en caso contrario debe mostrar una advertencia al usuario. Para las corridas de prueba,
usar 100°C, -76°C, y -300°C
CÓDIGO DEL PROGRAMA

//David Castro de la Torre


//Programacion y Metodos numericos
//04/MAR/2019
//Ejercicio 7
clear
T=input("temperatura en °C: ");
if T >= -273.15 then
TK= T+275.15;
disp("La temperatura es " + string(TK)+" K")
else
disp("La temperatura es erronea")
end

CORRIDA DE PRUEBA

--> exec("ejercicio7.sce");
temperatura en °C: 100
La temperatura es 375.15 K
--> exec("ejercicio7.sce");
temperatura en °C: -76
La temperatura es 199.15 K
--> exec("ejercicio7.sce");
temperatura en °C: -300
La temperatura es errónea

COMENTARIOS

Este fue el primer ejercicio de la unidad 2, aunque no fue difícil requerí la ayuda del
profesor ya que se empleó un nuevo comando llamado “if”, para entender como se utilizaba
la manera correcta de emplearlo al problema del ejercicio.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 8
Escribir un programa en Scilab que genere un número entero aleatorio entre 1 y 5. El
programa debe luego pedir al usuario que adivine el número, y mostrar una respuesta
apropiada dependiendo de si el usuario adivinó o no. Como corridas de prueba, incluir
una en la que sí se haya adivinado y una en la que no.

CÓDIGO DEL PROGRAMA


//David Castro de la Torre
//Programación y Métodos Numéricos
//05-marzo-2019
//Ejercicio 8
clear
y=int(5*rand())+1;
disp("Intenta Adivinar el numero entre el 1 y el 5")
x=input("Introduce un numero: ");
if x==y then
disp("acertaste")
else
disp("¡Tronco!")
end
disp("el número es: " +string(y)+" ")

CORRIDA DE PRUEBA

--> exec("ejercicio8.sce");
Intenta Adivinar el numero entre el 1 y el 5
Introduce un numero: 1
¡Tronco!
el número es: 2
--> exec("ejercicio8.sce");
Intenta Adivinar el numero entre el 1 y el 5
Introduce un numero: 1
acertaste
el número es: 1

COMENTARIOS

En este ejercicio vimos el uso del “if”, y aparte el uso del “else” que en este caso se
usa para que la computadora haga una decisión que en este caso fue si el número que
introducimos entre el 1 y el 5 es igual al que nos dio aleatoriamente el programa nos
apareciera felicidades y si no nos apareciera te has equivocado.
El ejercicio estuvo sencillo ya que solo solicitamos un valor al usuario y usamos otro
código que fue el int para escoger un numero al azar y la formula que utilizamos fue ==
que significa es igual a.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 9
Emplear un ciclo for para obtener la suma de los cubos de los primeros n números
naturales (enteros positivos). Como corrida de prueba, tomar n = 21.
RESULTADO: 53361.
CÓDIGO DEL PROGRAMA
//David Castro de la Torre
//Programación y Métodos numéricos
//07/MAR/2019
//Ejercicio 9
clear
disp("Suma de cubos")
n=input("introduzca el valor n: ");
x= 0;
for y = 1:n
x= x+y^3;
end
disp("La suma es: "+string(x)+" ")

CORRIDA DE PRUEBA

--> exec("ejercicio9.sce");
Suma de cubos
introduzca el valor n: 21
La suma es: 53361

COMENTARIOS
En si no hubo complicaciones ya que el ciclo hace todo por su cuenta, además de que al
ser cubo se tiene implícito el ^3 en la ecuación.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 10
La factorial de un número entero es el producto de todos los enteros positivos desde 1
hasta ese número. Escribir un programa en Scilab que calcule n! empleando un ciclo for,
de acuerdo al valor de n indicado por el usuario. Probar el programa con n = 3, n = 9 y
n = 13.
RESULTADOS: 6, 362880, 6.227×10⁹.
CÓDIGO DEL PROGRAMA

//David Castro de la Torre


//Programación y métodos numéricos
//11-marzo-2019
//Ejercicio 10
clear
n=input("Introduce el valor n: ");
x= 1;
for y = 1:n
x= x*y;
end
disp("La suma es: "+string(x)+" ")

CORRIDA DE PRUEBA

--> exec("ejercicio10.sce");
Introduce el valor n: 3
La suma es: 6

--> exec("ejercicio10.sce");
Introduce el valor n: 9
La suma es: 362880

--> exec("ejercicio10.sce");
Introduce el valor n: 13
La suma es: 6.227D+09

COMENTARIOS

Lo único complicado/tedioso es el descifrar como representar una factorial, ya fuera de


eso el ejercicio resulta ser muy sencillo.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 11
Adaptado de Gilat (2006), “Matlab: una introducción con ejemplos prácticos”, Editorial Reverté.
El número π es una constante matemática irracional con un número infinito de dígitos, que no puede
obtenerse como la división de dos números naturales. Sin embargo, puede estimarse a partir de la
serie de Leibniz:
𝑁
(−1)𝑛
4∑
2𝑛 + 1
𝑛=0

que converge al valor de π cuando N es un número muy grande. Escribir un programa en Scilab que
emplee un ciclo for para calcular el valor de la sumatoria de acuerdo al valor de N dado por el
usuario. Usar el programa para estimar π para cada uno de los valores indicados de N y registrar
los resultados en la tabla siguiente

N= 5 10 100 1000 1000000

resultado 2.9760462 3.2323158 3.1514934 3.1425917 3.1415937

CÓDIGO DEL PROGRAMA

//David Castro de la Torre


//Programación y Métodos numéricos
//07/MAR/2019
//Ejercicio 9
clear
N=input("Introduce el valor: ");
x=0;
for y = 0:N
x= x+((-1)^y/(2*y+1));
end
disp("La suma es: "+string(4*x)+" ")

CORRIDA DE PRUEBA

--> exec("ejercicio11.sce");
Introduce el valor: 5
La suma es: 2.9760462

--> exec("ejercicio11.sce");
Introduce el valor: 10
La suma es: 3.2323158

--> exec("ejercicio11.sce");
Introduce el valor: 100
La suma es: 3.1514934

--> exec("ejercicio11.sce");
Introduce el valor: 1000
La suma es: 3.1425917

--> exec("ejercicio11.sce");
Introduce el valor: 1000000
La suma es: 3.1415937

COMENTARIOS
Es curioso ver como más grande es la cantidad mas se aproxima al valor real de pi, el ejercicio
fue laborioso más que nada por la sumatoria, fuera de eso es un ejercicio al nivel de los
anteriores.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 12 – OPCIONAL
La matriz de Hilbert H es una matriz cuadrada de n n × cuyos elementos están dados por:
1
𝐻𝑖𝑗 =
𝑖+𝑗−1
Donde i es el número de renglón y j es el número de columna. Escribir un programa en
Scilab que use ciclos for anidados (un ciclo dentro de otro ciclo) para generar la
matriz de Hilbert de acuerdo al valor de n proporcionado por el usuario. Como corrida de
prueba, generar la matriz de Hilbert para n = 4.
1 1 1
1 3 4
2
1 1 1 1
2 3 4 5
RESULTADO: 1 1 1 1
3 4 5 6
1 1 1 1
[4 5 6 7]

CÓDIGO DEL PROGRAMA


//David Castro de la Torre
//Programación y Métodos numéricos
//13/MAR/2019
//Ejercicio 12
clear
n=input("introduzca valor: ");
H=zeros(n,n);
for i=[1:n]
for j=[1:n]
H(i,j)= 1/(i+j-1);
end
end
disp("La matriz es: ")
H

CORRIDA DE PRUEBA

--> exec("ejercicio12.sce");
introduzca valor: 4
La matriz es:
H =
1. 0.5 0.3333333 0.25
0.5 0.3333333 0.25 0.2
0.3333333 0.25 0.2 0.1666667
0.25 0.2 0.1666667 0.1428571

COMENTARIOS

En este Ejercicio se emplearon comandados que vienen dentro de la diapositivas, como el


zeros, en si no es complicado el ejercicio en mi caso solo fue al último que por el
comportamiento que tiene Scilab la variable H, se tiene que poner en un reglón aparte.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 13

El dodecahedro regular es un sólido geométrico formado por 12


pentágonos regulares idénticos. Es uno de los cinco sólidos
pitagóricos, los otros siendo el tetrahedro (formado por
4 triángulos), el cubo (6 cuadrados), el octahedro (8 triángulos) y
el icosaedro (20 triángulos). Estos sólidos han sido estudiados
ampliamente desde los tiempos de los antiguos griegos. Platón
afirmaba que los cuatro elementos (tierra, agua, fuego y aire)
estaban formados por cuatro de estos sólidos. El dodecahedro fue un
caso especial: trataron de mantenerlo en secreto porque creían que
era el constituyente del éter (el quinto elemento) del cual estaban
formados los cielos.

Si R es el radio de una esfera, el volumen del dodecahedro inscrito (es decir, que sólo
toca a la esfera con sus vértices) está dado por:
(15+7√5)𝐿3 4𝑅
𝑉= donde el lado de los pentágonos está dado por 𝐿 =
4 (1+√5)√3

Escribir una función en Scilab que calcule el volumen de un dodecahedro usando como
dato el radio de la esfera en la que está inscrito, y usarla en un programa para
calcular el volumen del dodecahedro inscrito en una esfera de 15 cm de diámetro.

RESULTADO: 1174.99 cm³

CÓDIGO DEL PROGRAMA


//David Castro de la Torre
//Programación y Métodos Numéricos
//Ejercicio 13
//19-mar-2019
clear
disp("Volumen de un dodecahedro")
function V=VolDodecahedro(r)
L=(4*r)/((1+5^(1/2))*3^(1/2))
V=((15+7*5^(1/2))*L^3)/4;
endfunction
radio=input("Introduzca el Radio: ");
volumen=VolDodecahedro(radio);
disp("El volumen es "+string(volumen)+" cm^3")

CORRIDA DE PRUEBA

--> exec("ejercicio13.sce");
Volumen de un dodecahedro
Introduzca el Radio: 7.5
El volumen es 1174.991 cm^3

COMENTARIOS

Este ejercicio fue de los más sencillos en cuestión de generar las formulas
prácticamente porque ya vienen explicadas y desarrolladas en el mismo ejercicio a
realizar, lo que me complico un poco fue el cómo utilizar el comando Función

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 15

Se tiene un tanque vertical de altura total H, de forma


cilíndrica con fondo hemisférico, que se llena parcialmente con
un líquido. El volumen de líquido en el tanque se puede calcular
mediante la siguiente función definida por partes:

donde r es el radio del tanque en metros, h es el nivel (o


altura) del líquido medido desde el fondo del tanque, también en
metros, y V es el volumen de líquido en metros cúbicos.
Escribir un programa para calcular el volumen de líquido en un tanque de 0.9 m de
diámetro y 1.8 m de altura total (estos dos datos pueden incorporarse en el código del
programa). El volumen debe calcularse en una función. El programa debe pedir el nivel
del líquido en metros, y responder con un mensaje de error si se le da un nivel negativo
o mayor que la altura total. El volumen debe reportarse en litros. Usar para las
corridas de prueba los siguientes valores de h: (A) 0.3 m, (B) 1.5 m, (C) 2.1 m y (D) −1
m.
RESPUESTA: (A) 98.96 L, (B) 858.83 L
CÓDIGO DEL PROGRAMA
//David Castro de la Torre
//Programación y Métodos numéricos
//Ejercicio 15
clear
function V=Volumen(r, h)
if h<r then
V=(1/3)*%pi*h^2*(3*r-h);
else
V=(2/3)*%pi*r^3+%pi*r^2*(h-r);
end
endfunction
disp("Volumen en un tanque cilíndrico con fondo hemisférico")
r=0.45;
H=1.8;
h=input("Nivel en el tanque en metros: ");
if (h>=0)&(h<=H) then
V=Volumen(r,h);
disp("El volumen es " + string(V*1000) + " L")
elseif h<0 then
disp("El nivel no puede ser un número negativo")
elseif h>H then
disp("El nivel no se puede exceder de la altura total")
end

CORRIDA DE PRUEBA
--> exec("ejercicio15.sce");

Volumen en un tanque cilíndrico con fondo hemisférico


Nivel en el tanque en metros: .3

El volumen es 98.960169 L

--> exec("ejercicio15.sce");
DAVID CASTRO DE LA TORRE
Programación y Métodos Numéricos
Volumen en un tanque cilíndrico con fondo hemisférico
Nivel en el tanque en metros: 1.5

El volumen es 858.83289 L

--> exec("ejercicio15.sce");

Volumen en un tanque cilíndrico con fondo hemisférico


Nivel en el tanque en metros: 2.1

El nivel no se puede exceder de la altura total

--> exec("ejercicio15.sce");

Volumen en un tanque cilíndrico con fondo hemisférico


Nivel en el tanque en metros: -1

El nivel no puede ser un número negativo

COMENTARIOS
En este ejercicio batalle un poco ya que aún no estoy acostumbrado a emplear el comando
function, solo en ese caso ya que lo demás es mas sencillo, ya que la formula nos indica
lo que se debe hacer, así que sin líos.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 16 – OPCIONAL
En tres dimensiones, la distancia entre un punto P de coordenadas ( Px,P y,Pz)y un punto Q
de coordenadas ( Q x,Qy,Q z )está dada por:

Escribir una función en Scilab que calcule la distancia entre dos puntos, a partir de
dos vectores P y Q que contengan las coordenadas de los puntos. Es decir, el encabezado
de la función debe ser:

function d=distancia(P,Q)

El área de un triángulo se puede calcular a partir de las longitudes de los lados a, b y c


mediante la fórmula:

A su vez, el lado del triángulo es la distancia que hay entre los vértices del
triángulo, V1, V2 y V3
Escribir un programa en Scilab que calcule el área de un triángulo, dadas las
coordenadas tridimensionales de sus vértices. Las distancias entre los vértices deben
calcularse usando la función definida en el inciso (A). Para la corrida de prueba,
usar los puntos (1.5, 4, 3.5), (6.5, 9.5, 5) y (8, 1.5, 0.5).
RESULTADO: 27.853.
CODIGO DEL PROGRAMA
//David Castro de la Torre
//Programación y Métodos numéricos
//Ejercicio 16
clear
function d=distancia(P, Q)
d=sqrt((P(1)-Q(1))^2+(P(2)-Q(2))^2+(P(3)-Q(3))^2);
endfunction
disp("Área de un triángulo en 3D")
V1=[0,0,0];
V2=[0,0,0];
V3=[0,0,0];
disp("Introduzca las coordenadas del vértice 1:")
V1(1)=input("X1 = ");
V1(2)=input("Y1 = ");
V1(3)=input("Z1 = ");
disp("Introduzca las coordenadas del vertice 2:")
V2(1)=input("X2 = ");
V2(2)=input("Y2 = ");
V2(3)=input("Z2 = ");
disp("Introduzca las coordenadas del vertice 3:")
V3(1)=input("X3 = ");
V3(2)=input("Y3 = ");
V3(3)=input("Z3 = ");
a=distancia(V1,V2);
b=distancia(V2,V3);
c=distancia(V1,V3);
s=(a+b+c)/2;
A=sqrt(s*(s-a)*(s-b)*(s-c));
disp("El área es: "+string(A))

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
CORRIDA DE PRUEBA
--> exec("ejercicio16.sce");

Área de un triángulo en 3D
Introduzca las coordenadas del vértice 1:
X1 = 1.5
Y1 = 4
Z1 = 3.5

Introduzca las coordenadas del vertice 2:


X2 = 6.5
Y2 = 9.5
Z2 = 5

Introduzca las coordenadas del vertice 3:


X3 = 8
Y3 = 1.5
Z3 = .5
El área es: 27.85313

COMENTARIOS
Cuando corri este programa la primera vez, me marcaba un error ya que en la funtion emplee P, Q en
mayúsculas y cuando hice la variable d= d=sqrt((P(1)-Q(1))^2+(P(2)-Q(2))^2+(P(3)-Q(3))^2);
puse la p en minúscula, solo ese fue el error que cometi, después de corregir el
programa funciono bien.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 17
Empleando Scilab, generar la gráfica de la función y = 5x4 - 10x3 + 6.75x2 - 1.7x + 0.112,
para 0 ≤ x ≥ 1.
SUGERENCIA: Definir x usando linspace y calcular y empleando operaciones elemento por
elemento.
CÓDIGO DEL PROGRAMA
//David Castro de la Torre
//Programación y Métodos numéricos
//Ejercicio 17
X=linspace(0,1,50);
Y=5*X^4-10*X^3+6.75*X^2-1.7*X+.112;
plot(X,Y,"r--")
title("Gráfica de un polinomio")
xlabel("x")
ylabel("y")

GRÁFICA

COMENTARIOS

Prácticamente este ejercicio fue realizado por el profe en el salón, se me hizo


interesante como al momento de poner ciertas letras o signos en el comando plot, cambia
la apariencia de la grafica

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 18 – OPCIONAL
Generar en Scilab la gráfica de y = x( x2 - 1)2 en el intervalo [-1.4,1.4]

CÓDIGO DEL PROGRAMA

//David Castro de la Torre


//Programación y Métodos numéricos
//Ejercicio 18
X=linspace(-1.4,1.4);
Y=X.*(X.^2-1)^2;
plot(X,Y,"yp")
title("Gráfica de una función")
xlabel("x")
ylabel("y")

GRAFICA

COMENTARIOS

Prácticamente este ejercicio fue realizado por el profe en el salón, se me hizo


interesante como al momento de poner ciertas letras o signos en el comando plot, cambia
la apariencia de la grafica

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 19
La función diente de sierra es una función periódica que se puede definir en el intervalo
[−1,1] como:

f(x) = x para -1≤x≤1


periódica con periodo p = 2

Para esta función, la N -ésima


suma parcial de su serie de
Fourier es la serie finita:

Escribir un programa en Scilab que genere la gráfica de esta suma parcial dado el valor
de N. Usarlo para generar las gráficas correspondientes a los siguientes valores de N: 1,
3, 9 y 21. Para el eje horizontal de la gráfica, abarcar el intervalo [−3 3, ] con al
menos 500 puntos. OPCIONAL Ⓔ: Deducir la serie de Fourier de la función diente de sierra
usada en este ejercicio.
CÓDIGO DEL PROGRAMA
//David Castro de la Torre
//Programación y Métodos numéricos
//Ejercicio 19
clear
disp("Serie de Fourier")
N=input("Introduzca el numero de terminos: ");
X=linspace(-4,4,500);
suma=zeros(X);
for n=1:N;
suma=suma+((-1)^n*sin(n*%pi*X))/n;
end
clf
Y= (-2/%pi)*suma;
plot(X,Y,"yp")
title("Serie de Fourier (N="+string(N)+")")

GRAFICAS

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
COMENTARIOS

Es interesante como se puede mezclar el uso de comandos y graficas, se puede decir que
este programa es la unión de dos métodos que ya se habían empleado anteriormente, por lo
cual no fue tan complicado

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 20

La serie de Taylor para ex, evaluada alrededor del origen, es:

Escribir un programa en Scilab para calcular el valor de la serie para x = 1.55 empleando el número
de términos de la serie indicados a continuación, y calcular el error verdadero y el error relativo
porcentual, tomando en cuenta que el valor verdadero de e1.55 es 4.7114701826.

Como evidencia, entregar el programa, la corrida de prueba para un solo valor, y la tabla
completada. En sus comentarios, indicar claramente a qué conclusión se puede llegar respecto a los
errores cuando se toman más términos en la serie.

CÓDIGO DEL PROGRAMA

//David Castro de la Torre


//Programacion y metodos numericos
//02-Abril-2019
//Ejercicio 20
clear
disp("Serie de Taylor para e^x")
x=1.55;
N=input("N: ");
suma=0;
for n=0:N-1
suma=suma+(x)^n/(factorial(n));
end
e= 4.7114701826;
A= e-suma;
Er=((e-suma)/e)*100;
disp("La Sumatoria es: "+string(suma)+" ")
disp("El error verdadero es: "+string(A)+" ")
disp("El error relativo porcentual es: "+string(Er)+" ")

CORRIDA DE PRUEBA
--> exec("ejercicio20.sce");
Serie de Taylor para e^x
N: 9
La Sumatoria es: 4.7113023
El error verdadero es: 0.0001679
El error relativo porcentual es: 0.0035642

error relativo
términos valor calculado error verdadero
porcentual
1 1 3.7114702 78.775%
2 2.55 2.1614702 45.876%
3 3.75125 0.9602202 20.380479%
4 4.3718958 0.3395743 7.2073968%
5 4.6123961 0.0990741 2.1028275%
6 4.6869512 0.024519 0.520411%
7 4.7062112 0.0052589 0.1116201%
8 4.710476 0.0009942 0.0211021%
9 4.7113023 0.0001679 0.0035642%
COMENTARIOS:

Cuando hice este programa la primera vez solo obtenía el valor calculado, y el error
verdadero y porcentual tuve que hacerlos manualmente, hasta que note que sería mucho más
rápido si empleaba las formulas directamente en el programa por lo que ahora obtengo los
tres valores que necesito para llenar la tabla.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 21

Considere la función:

Se puede demostrar con facilidad que esta función debería tener el valor de 1 para
cualquier valor de x. Sin embargo, debido al error de redondeo en la computadora, esto no
siempre es cierto. Para cada valor de x de la tabla, calcular el valor de f(x) empleando
Scilab y calcular el error relativo porcentual para llenar la tabla. ¿A qué conclusión se
llega respecto al error conforme x se vuelve un valor cada vez más pequeño?

X Valor Calculado Error Porcentual


100 1 0
10-2 1 8.882D-14
10-4 1 1.101D-11
10-6 1 8.227D-0
10-8 1 0.0000006
10-10 1.0000001 0.0000083
10-12 1.0000889 0.0088901
10-14 0.9992007 0.0799278
10-16 0 100
10-18 0 100

CÓDIGO DEL PROGRAMA

//David Castro de la Torre


//Programación y Métodos Numéricos
//03-Abril-2019
//Ejercicio 21
clear
disp("valor calculado y su error relativo porcentual")
x=input("Introduzca valor de x: ");
y=((x+1)-1)/x ;
disp("El valor es: "+string(y)+" ")
E=((1-y)/1)*100;
disp("El Error Relativo Porcentual es: "+string(E)+" ")

Comentarios:
Se concluye que cuando X es mas pequeño el error porcentual es mas grande,
además de que si el valor de X es demasiado pequeño Scilab no puede trabajar
con ese valor.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 22

CÓDIGO DEL PROGRAMA

//David Castro de la Torre


//Programación y métodos Numéricos
// Método de bisección para resolver f(x)=0
function y=f(x)
y=80*exp(-2*x)+20*exp(-0.4*x)-10;
endfunction
maxiter=500;
tol=1e-5;
disp("Método de bisección");
disp("Intervalo de búsqueda [xA,xB]?");
xA=input("xA = ");
xB=input("xB = ");
fA=f(xA);
fB=f(xB);
if fA==0 then
disp("Solución encontrada en el extremo x="+string(xA))
abort
end
if fB==0 then
disp("Solución encontrada en el extremo x="+string(xB))
abort
end
if (fA*fB)>0 then
disp("No parece haber una raíz entre xA y xB");
disp("f(xA) y f(xB) tienen el mismo signo");
abort
end
if abs(fA)<abs(fB) then
xant=xA;
else
xant=xB;
end
iter=0;
while iter<maxiter
iter=iter+1;
xC=(xA+xB)/2;
fC=f(xC);
if fC==0 then
disp("La solución es x=" + string(xC));
disp(string(iter) + " iteraciones necesarias");
abort
end
if (fA*fC)<0 then
xB=xC;
fB=fC;
elseif (fB*fC)<0 then
xA=xC;
fA=fC;
else
disp("No se pudo encontrar la solución")
disp("Tal vez la funcion no sea continua o")

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
disp("el intervalo contiene más de una solución")
abort
end
e=abs((xC-xant)/xC);
if e<tol then
disp("La solución es " + string(xC)+" dias");
disp(string(iter) + " iteraciones necesarias");
disp("Error relativo aproximado: "+string(e*100)+"%")
abort
end
xant=xC;
end
disp("Alcanzado número máximo de iteraciones: " + string(maxiter))
disp("Aproximación de la solución x=" + string(xC))
disp("Error aproximado = " + string(e*100)+"%")

CORRIDA DE PRUEBA

--> exec("ejercicio22.sce");
Método de bisección
Intervalo de búsqueda [xA,xB]?
xA = 0
xB = 10
La solución es 2.0720482 dias
19 iteraciones necesarias
Error relativo aproximado: 0.0009205%

COMENTARIOS:

Este ejercicio resultó sencillo gracias a la explicación que se antecede a la clase y por la ayuda
del programa en la página del curso, debido a que la realización de ese programa es algo complejo.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 23

Repetir el ejercicio anterior empleando el método de Newton-Raphson, tomando como valor


inicial X0=1

CÓDIGO DEL PROGRAMA

//David Castro de la Torre


//Programación y Métodos numéricos
//Método de Newton-Raphson para resolver f(x)=0
disp("Método de Newton-Raphson");
clear
function y=f(x)
y=80*exp(-2*x)+20*exp(-0.4*x)-10;
endfunction
function yprima=fprima(x)
yprima=-8*exp((-2*x)/5)-160*exp(-2*x);
endfunction
maxiter=500;
tol=1e-6;
disp("Proporcione el valor inicial:");
x=input("x0 = ");
iter=0;
while iter<maxiter
iter=iter+1;
xn=x-f(x)/fprima(x);
e=abs((xn-x)/x)*100;
if e<tol then
disp("La solución es x=" + string(xn));
disp(string(iter) + " iteraciones necesarias");
abort
end
x=xn;
end
disp("Alcanzado número máximo de iteraciones: " + string(maxiter));
disp("Aproximación de la solución x= " + string(xn));
disp("Error aproximado = " + string(e));

CORRIDA DE PRUEBA

--> exec("ejercicio23.sce");
Método de Newton-Raphson
Proporcione el valor inicial:
x0 = 1
La solución es x=2.0720332
6 iteraciones necesarias

COMENTARIOS:

Este programa es algo más complejo que el anterior ya que este se trabaja con derivadas
además de las funciones.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 24 - OPCIONAL

Empleando Excel, resolver la ecuación 𝑥𝐶𝑜𝑠(2𝑥) + 0.1 = 0mediante iteración de punto fijo,
tomando como valor inicial x0 = 0.

RESULTADO: 0.844727948

COMENTARIOS
Este ejercicio estuvo realmente sencillo más que nada porque se realizó bajo las
instrucciones del profesor.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 26

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
CÓDIGO DEL PROGRAMA
//David Castro de la Torre
//Programacion y metodos Numericos
//08-05-2019
//ejercicio 26
clear
a=zeros(10,10);
a(1,1)=cosd(45);
a(1,2)=1;
a(2,1)=sind(45);
a(2,8)=1;
a(3,1)=-cosd(45);
a(3,3)=1;
a(3,4)=cosd(60);
a(4,1)=-sind(45);
a(4,4)=-sind(60);
a(5,3)=-1;
a(5,5)=cosd(60);
a(5,6)=-cosd(45);
a(6,5)=-sind(60);
a(6,6)=-sind(45);
a(7,5)=-cosd(60);
a(7,7)=-1;
a(7,9)=1;
a(8,5)=sind(60);
a(8,10)=1;
a(9,2)=-1;
a(9,4)=-cosd(60);
a(9,6)=cosd(45);
a(9,7)=1;
a(10,4)=sind(60);
a(10,6)=sind(45);
b=zeros(10,1);
b(4)=300;
b(5)=500;
b(10)=100;
x=a\b

CORRIDA DE PRUEBA
--> exec("ejercicio26.sce");
x =
-584.63229
413.39746
-478.86751
130.94011
15.470054
-18.946869
492.26497
413.39746
500.
-13.39746

COMENTARIOS:
Este programa no era tan complicado lo único que si se tenía que tener bastante cuidado a
la hora de introducir los valores dentro de la matriz que le correspondía, ya que con un
valor erróneo se podía alterar todo el resultado.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 28

La tabla muestra la viscosidad de soluciones de sacarosa al 20%. Empleando interpolacion polinomial


de Langrage, estimar el valor de la viscosidad a 25°C.

Temperatura (°C) Viscosidad (cP)


0 14.82
10 9.83
20 6.22
35 3.78

RESULTADO: 4.988 cP

CÓDIGO DEL PROGRAMA


//David Castro de la Torre
//Programacion y Metodos numericos
//Ejercicio 28
//17-Mayo-2019
disp("Interpolación polinomial de Lagrange");
n=input("Número de datos: n=");
x=zeros(n,1);
y=zeros(x);
L=zeros(x);
disp ("Introduzca los datos:");
for i=1:n
x(i)=input("x"+string(i)+"=");
y(i)=input("y"+string(i)+"=");
end
xint=input("Valor para interpolar: x=");
for i=1:n
L(i)=1;
for j=1:n
if j<>i then
L(i)=L(i)*(xint-x(j))/(x(i)-x(j));
end
end
end
suma=0;
for i=1:n
suma=suma+L(i)*y(i);
end
disp("y = " + string(suma));

CORRIDA DE PRUEBA
--> exec("ejercicio28.sce");
Interpolación polinomial de Lagrange
Número de datos: n=4
Introduzca los datos:
x1=0
y1=14.82
x2=10
y2=9.83
x3=20
y3=6.22
x4=35
y4=3.78
Valor para interpolar: x=25
y = 4.9878571

COMENTARIOS:
Al principio había decidido dejarle las notas, pero a veces se las quitaba y se las ponía, lo que
me generaba que tuviese errores a la hora de correr el programa, opte por no dejarle notas y
finalmente corrió bien

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 27

CÓDIGO DEL PROGRAMA

//David Castro de la Torre


//Programación y Métodos numéricos
//Ejercicio 27
//16-Mayo-2019
clear
disp("Interpolación lineal")
disp("X: Corresponde a la temperatura")
disp("Y: Corresponde a la entalpia")
X=input("Ingrese el valor de X: ");
X1=input("Ingrese el valor de X1: ");
X2=input("Ingrese el valor de X2: ");
Y1=input("Ingrese el valor de Y1: ");
Y2=input("Ingrese el valor de Y2: ");
Y=Y1+((Y2-Y1)*(X-X1)/(X2-X1));
disp("El valor de Y es "+string(Y))

CORRIDA DE PRUEBA

--> exec("ejercicio27.sce");
Interpolación lineal
X: Corresponde a la temperatura
Y: Corresponde a la entalpia
Ingrese el valor de X: 80
Ingrese el valor de X1: 50
Ingrese el valor de X2: 100
Ingrese el valor de Y1: 209.34
Ingrese el valor de Y2: 419.17
El valor de Y es 335.238

COMENTARIOS
Este tipo de programa resulta ser muy útil en algunas materias como lo son estadística,
termodinámica, ya que hay se emplean bastante, el programa fue fácil de realizar ya que
solo constaba de pedir datos y en una variable guardar la ecuación necesaria.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 29

CÓDIGO DEL PROGRAMA


//David Castro de la Torre
//Programacion y Metodos Numericos
//Ejercicio 29
//20-Mayo-2019
clear
disp("Regresion lineal simple")
sumax=0;
sumay=0;
Sxy=0;
Syy=0;
Sxx=0;
// Pedir datos
N=input("Número de datos? n=");
x=zeros(N,1);
y=zeros(x);
L=zeros(x);
disp ("Introduzca los datos:");
for i=1:N
x(i)=input("x"+string(i)+"=");
y(i)=input("y"+string(i)+"=");
end
for i=1:N
sumax=sumax+x(i);
sumay=sumay+y(i);
end
Xmedia=sumax/N;
Ymedia=sumay/N;
for i=1:N
Sxy=Sxy+(x(i)-Xmedia)*(y(i)-Ymedia);
Syy=Syy+((y(i)-Ymedia)^2);
Sxx=Sxx+((x(i)-Xmedia)^2);
end
m=(Sxy/Sxx)
b=Ymedia-m*Xmedia
R2=(Sxy^2/(Sxx*Syy))

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
CORRIDA DE PRUEBA

--> exec("ejercicio29.sce");
Regresion lineal simple
Número de datos? n=10
Introduzca los datos:
x1=27
y1=57
x2=45
y2=64
x3=41
y3=80
x4=19
y4=46
x5=35
y5=62
x6=39
y6=72
x7=19
y7=52
x8=49
y8=77
x9=15
y9=57
x10=31
y10=68
m =
0.764
b =
39.052
R2 =
0.6802984

COMENTARIOS

Este ejercicio no fue muy complicado ya que contábamos con formulas


proporcionadas por el profesor, además que a estas alturas ya se lleva con
relativa facilidad los ciclos, personalmente considero que este programa es
bastante útil ya que queda disponible no solo para TIEMPO y EFICIENCIA sino
también para cualquier otro valor.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 30

Aproximación de orden O(h) Aproximación de orden O(h2)


Valor calculado Valor calculado
Error relativo % Error relativo %
de f´ de f´
h = 0.1 0.1362345 77.653832% 0.0906770 18.245438%

h = 0.01 0.0832264 8.5296382% 0.0768094 0.1617844%

h = 0.001 0.0773450 0.8601367% 0.0766866 0.0015800%

h = 0.0001 0.0767514 0.0860804% 0.0766854 0.0000108%

CODIGO DEL PROGRAMA


clear
function y=f(X)
y=(X*exp^(-2*X))*(cos(3*X));
endfunction
h=input("Introduce el valor: ");
X0=1;
X1=X0+h;
X2=X1+h;
Vv=0.07668537;
Fx0=f(X0);
Fx1=f(X1);
Fx2=f(X2);
Oh=((Fx0-Fx1)/h);
Er1=abs(((Vv-Oh)/Vv)*100);
Oh2=((3*Fx0)-(4*Fx1)+Fx2)/(2*h);
Er2=abs(((Vv-Oh2)/Vv)*100);
disp("APROXIMACION DE ORDEN Oh")
disp("Valor calculado de la derivada es "+string(Oh))
disp("El error relativo porcentual es "+string(Er1)+"%")
disp("APROXIMACION DE ORDEN Oh**2")
disp("Valor calculado de la derivada es "+string(Oh2))
disp("El error relativo porcentual es "+string(Er2)+"%")

CORRIDA DE PRUEBA
--> exec("ejercicio30.sce");
Introduce el valor: 0.1
APROXIMACION DE ORDEN Oh
Valor calculado de la derivada es 0.1346844
El error relativo porcentual es 75.632482%
APROXIMACION DE ORDEN Oh**2
Valor calculado de la derivada es 0.1368534
El error relativo porcentual es 78.460945%
DAVID CASTRO DE LA TORRE
Programación y Métodos Numéricos
--> exec("ejercicio30.sce");
Introduce el valor: 0.01
APROXIMACION DE ORDEN Oh
Valor calculado de la derivada es 0.1355099
El error relativo porcentual es 76.708903%
APROXIMACION DE ORDEN Oh**2
Valor calculado de la derivada es 0.1355382
El error relativo porcentual es 76.745829%
-> exec("Ejercicio30.sce");
Introduce el valor: 0.001
APROXIMACION DE ORDEN Oh
Valor calculado de la derivada es 0.1355204
El error relativo porcentual es 76.72262%
APROXIMACION DE ORDEN Oh**2
Valor calculado de la derivada es 0.1355209
El error relativo porcentual es 76.723214%
--> exec("Ejercicio30.sce");
Introduce el valor: 0.0001
APROXIMACION DE ORDEN Oh
Valor calculado de la derivada es 0.1355207
El error relativo porcentual es 76.722954%
APROXIMACION DE ORDEN Oh**2
Valor calculado de la derivada es 0.1355207
El error relativo porcentual es 76.722982%

COMENTARIOS
Pensé que los valores de la aproximación de Orden Oh tendrían mayor diferencia a
la aproximación de Orden Oh^2, ya que muchas veces solo son diferentes unos de
otros por decimales muy pequeños

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 31

CÓDIGO DEL PROGRAMA

//David Castro de la Torre


//Programacion y Metodos Numericos
//Ejercicio 31
//29-Mayo-2019
clear
n=input("Introduce el número de datos: ");
x=zeros(n,1);
f=zeros(x);
for i=1:n
x(i)=input("x"+string(i)+"=");
f(i)=input("f"+string(i)+"=");
end
A=0;
for y=1:n-1
A=A+((x(y+1)-x(y))*((f(y)+f(y+1))/2));
end
disp("La entalpia es "+string(A))

CORRIDA DE PRUEBA
--> exec("ejercicio31.sce");
Introduce el número de datos: 5
x1=0
f1=.580
x2=10
f2=.575
x3=20
f3=.591
x4=40
f4=.615
x5=60
f5=.638
La entalpia es 36.195

COMENTARIOS
Este ejercicio fue muy sencillo ya que anteriormente ya se habían realizado programas que
empleaban formulas y situaciones similares.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 32

Tamaño de paso Valor final (y en t = 7) Error relativo porcentual

H = 1 0.9999986 0.8205402

H = 0.5 0.9966569 0.4836248

H = 0.25 0.9942918 0.245177

H = 0.1 0.992834 0.0981991

CODIGO DEL PROGRAMA

//David Castro de la Torre


//Programacion y Metodos Numericos
//Ejercicio 32
//04-Junio-2019
clear
function yprima=f(t, y)
yprima= y*(1-y);
endfunction
disp("Método de Euler")
disp("Proporcione el punto inicial:")
t0=input("t0=");
y0=input("y0=");
disp("Proporcione el valor final de t:")
tf=input("tf=");
disp("Proporcione el valor del paso")
h=input("h=");
N=(tf-t0)/h;
t=linspace(t0,tf,N+1);
y=zeros(t);
y(1)=y0;
for i=2:N+1
y(i)=y(i-1)+h*f(t(i-1),y(i-1));
end
disp("Valor final yf=" + string(y($)))
clf
plot(t,y,"o");
ERP=abs((0.99186-y($))/0.99186)*100;
disp("El error relativo porcentual es: " +string(ERP) )

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
CORRIDA DE PRUEBA

--> exec("ejercicio32.sce");
Método de Euler
Proporcione el punto inicial:
t0=0
y0=.1
Proporcione el valor final de t:
tf=7
Proporcione el valor del paso
h=1
Valor final yf=0.9999986
El error relativo porcentual es: 0.8205402

--> exec("ejercicio32.sce");
Método de Euler
Proporcione el punto inicial:
t0=0
y0=0.1
Proporcione el valor final de t:
tf=7
Proporcione el valor del paso
h=0.5
Valor final yf=0.9966569
El error relativo porcentual es: 0.4836248

--> exec("Ejercicio32.sce");
Método de Euler
Proporcione el punto inicial:
t0=0
y0=0.1
Proporcione el valor final de t:
tf=7
Proporcione el valor del paso
h=0.25
Valor final yf=0.9942918
El error relativo porcentual es: 0.245177

--> exec("Ejercicio32.sce");
Método de Euler
Proporcione el punto inicial:
t0=0
y0=0.1
Proporcione el valor final de t:
tf=7
Proporcione el valor del paso
h=0.1
Valor final yf=0.992834
El error relativo porcentual es: 0.0981991

COMENTARIOS
Este programa se basó en el método de Euler, agregándole al final la formula del
error relativo porcentual.

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos
EJERCICIO 14
Escribir un programa en Scilab que defina una función para calcular el volumen de un
cascarón esférico de radio interno R1 y radio externo R2. Como corrida de prueba,
determinar el volumen de un cascarón esférico de 7 cm de diámetro externo y 4 cm de
diámetro interno.
SUGERENCIA: Definir primero una función para el volumen de una esfera y usarla en la
función para el volumen del cascarón esférico.
RESULTADO: 146.08 cm³
CÓDIGO DEL PROGRAMA
//David Castro de la Esfera
//Ejercicio 14
//Programacion y Metodos Numericos
//20-Mar-2019
clear
function V=VolEsfera(r)
V=(4/3)*%pi*r^3
endfunction
function V=Volcasca(r1, r2)
V=VolEsfera(r2)-VolEsfera(r1)
endfunction
r2=input("Radio del cascaron externo: ");
r1=input("Radio del cascaron interno: ");
volumen=Volcasca(r1,r2);
disp("El volumen es "+string(volumen)+" cm^3")

CORRIDA DE PRUEBA
--> exec("ejercicio14.sce");
Radio del cascaron externo: 3.5
Radio del cascaron interno: 2
El volumen es 146.08406 cm^3

COMENTARIOS
Este ejercicio fue sencillo ya que con las indicaciones del profesor se pudo determinar
una function de forma adecuada, además que las fórmulas para el volumen son sencillas y
fácil de trasladar a una variable de Scilab

DAVID CASTRO DE LA TORRE


Programación y Métodos Numéricos

S-ar putea să vă placă și