• No se han encontrado resultados

Programación y Métodos Numéricos Solución a los ejercicios Enero Junio 2017

N/A
N/A
Protected

Academic year: 2021

Share "Programación y Métodos Numéricos Solución a los ejercicios Enero Junio 2017"

Copied!
17
0
0

Texto completo

(1)

Programación y Métodos Numéricos

Solución a los ejercicios Enero – Junio 2017

EJERCICIO 1

En cada caso, evaluar la expresión dada, realizando las operaciones paso a paso de acuerdo al orden de precedencia de los operadores aritméticos en Scilab.

1 - 2 * 3 / 4 + 5

1 - 6 / 4 + 5

1 - 1.5 + 5

= 4.5

1 / 3 * 3 ^ 3 + 1

1 / 3 * 27 + 1

0.33333 * 27 + 1

9 + 1 = 10

6 * 3 / 2 * 5

18 / 2 * 5

9 * 5

45

(6 * 3) / (2 * 5)

18 / 10

1.8

(2 + 1) * 3 + 4 * (2 ^ 2 - 1)

3 * 3 + 4 * (4 - 1)

3 * 3 + 4 * 3

9 + 12

21

EJERCICIO 2

Determinar si cada una de las expresiones booleanas siguientes da un resultado verdadero (V) o falso (F), considerando que los valores de las variables son w = 3, x = 1, y = 4, z = -2.

x > 1

1 > 1

F

1 >= 1

x >= 1

V

z < x

-2 < 1

V

4 == 3 + 1

y == w + x

V

~(x <> (y - w))

~(1 <> (4 - 3))

~(1 <> 1)

~(F)

V

(2 * x - z) == y

(2 * 1 –(-2)) == 4

(2 + 2) == 4

4 == 4

V

(w > 0) | (z > 0)

(3 > 0) | (-2 > 0)

(V) | (F)

V

(w > 0) & (z > 0)

(3 > 0) & (-2 > 0)

(V) & (F)

F

((x + y) == (w - z)) & (4 * x <= y)

((1 + 4) == (3 – (-2))) & (4 * 1 <= 4)

(5 == 5) & (4 <= 4)

(V) & (V)

V

(2)

EJERCICIO 3 – OPCIONAL

Considérese que p y q son dos variables booleanas. El operador lógico XOR (“o exclusivo”) da como resultado verdadero si p es verdadera o si q es verdadera, pero el resultado es falso si ambos p y q son verdaderos o falsos. ¿Cómo se podría expresar esta operación en Scilab, empleando los operadores booleanos básicos & (AND), | (OR) y ~ (NOT)?

RESPUESTA: (p & ~q) | (~p & q)

EJERCICIO 4

Escribir un programa en Scilab que calcule el área lateral y el área total de un cilindro. El programa debe pedir al usuario los datos de radio y longitud del cilindro. Como valores para la corrida de prueba, tomar 2.7 cm de radio y 12.4 cm de longitud.

CÓDIGO DEL PROGRAMA

// Programación y Métodos Numéricos // Ejercicio 4

// 20-FEB-2017

disp("Cálculo de área lateral y total de un cilindro") r=input("Radio del cilindro (cm)? ");

l=input("Longitud del cilindro (cm)? "); area_lateral=2*%pi*r*l;

area_base=%pi*r^2;

area_total=area_lateral+2*area_base;

disp("El área lateral es " + string(area_lateral) + " cm²") disp("El área total es "+ string(area_total)+ " cm²")

CORRIDA DE PRUEBA

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

Cálculo de área lateral y total de un cilindro Radio del cilindro (cm)? 2.7

Longitud del cilindro (cm)? 12.4

El área lateral es 210.36104 cm²

El área total es 256.16546 cm²

EJERCICIO 5

Escribir un programa en Scilab que calcule el radio de una esfera a partir de su volumen (proporcionado por el usuario). Como valor de prueba, emplear 435 cm³.

CÓDIGO DEL PROGRAMA

// Programación y Métodos Numéricos // Ejercicio 5

// 20-FEB-2017

disp("Cálculo del radio de una esfera a partir de su volumen") V=input("Volumen de la esfera (cm³)? ");

r=((3*V)/(4*%pi))^(1/3);

(3)

CORRIDA DE PRUEBA

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

Cálculo del radio de una esfera a partir de su volumen Volumen de la esfera (cm³)? 435

El radio de la esfera es 4.7003863 cm

EJERCICIO 6

Cada uno de los siguientes fragmentos de código Scilab tiene al menos un error. Señalar los errores y explicar la razón por la cual es un error.

CÓDIGO EXPLICACIÓN DE LOS ERRORES

exec"(MiPrograma.sce)"; Las comillas deben encerrar el nombre del archivo (porque es un texto) y eso debe ir dentro del paréntesis.

lado=5;

volumen=Lad0^3; Los nombres de variables distinguen entre mayúsculas y minúsculas, por lo que lado y Lado son dos variables

diferentes. Además, en la segunda instrucción, se usó cero en vez de la “o” minúscula.

disp(Este programa calcula la velocidad) El texto en la instrucción disp debe estar encerrado entre comillas.

// El lado de un cubo se calcula como // la raíz cúbica de su volumen

lado=volumen^1/3

De acuerdo al orden de ejecución de los operadores, la exponenciación se realiza antes que la división, por lo que el volumen se está elevando a la potencia uno, y luego se está dividiendo entre tres. Lo correcto es encerrar el exponente entre paréntesis: volumen^(1/3)

input("Distancia en metros "); No se está asignando el resultado de la instrucción input en ninguna variable, debería ser algo como

d = input(…

perimetro=2%pi*radio La multiplicación siempre se debe indicar con el operador

* por lo que debería ser 2*%pi*radio

área_triángulo = base*altura/2; Un nombre de variable no puede incluir letras acentuadas.

energia potencial=masa*gravedad*altura; Un nombre de variable no puede contener espacios en blanco.

perimetro = %PI*diametro No puede ser con mayúsculas porque la constante predefinida π es %pi.

(4)

CÓDIGO EXPLICACIÓN DE LOS ERRORES

Juan Pérez

Programación y Métodos Numéricos Cálculo del tiempo de caída libre h=input(“Altura de caída en metros?”); g=9.81;

t=(2h/g)**0.5;

disp("El tiempo es " + string(t) + " s")

Las tres primeras líneas deben comenzar con // porque son comentarios.

En el texto de la instrucción input, se usaron comillas tipográficas (“”) en vez de comillas rectas ("").

En la fórmula para calcular el tiempo, la multiplicación debe indicarse con * por lo que debe ser 2*h/g.

EJERCICIO 7 - OPCIONAL

En Termodinámica, se estudia la ecuación de estado de Van der Waals:

(

)

2 a P v b RT v+ =    

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:

2 2 27 64 c c R T a P = 8 c c RT b P = 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. CÓDIGO DEL PROGRAMA

// Programación y Métodos Numéricos // Ejercicio 7

// 24-FEB-2017

disp("Cálculo de la presión con la ecuación de Van der Waals") // Valor de la constante de los gases (atm·L/mol·K)

R=0.082057; // Datos

T=input("Temperatura (K)? ");

v=input("Volumen específico (L/mol)? "); Tc=input("Temperatura crítica (K)? "); Pc=input("Presión crítica (atm)? ");

// Cálculo de los parámetros de Van der Waals a=(27*R^2*Tc^2)/(64*Pc);

b=(R*Tc)/(8*Pc);

(5)

P=(R*T)/(v-b)-a/v^2;

disp("La presión es " + string(P) + " atm")

CORRIDA DE PRUEBA

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

Cálculo de la presión con la ecuación de Van der Waals Temperatura (K)? 298

Volumen específico (L/mol)? 0.6 Temperatura crítica (K)? 304.12 Presión crítica (atm)? 72.78

La presión es 33.862801 atm

EJERCICIO 8

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 entonces aplicando la ley del coseno:

c= a2+b22 cosγab

Luego, uno de los ángulos se obtiene también de la ley del coseno: α arccos 2 2 2 2 b c a bc  + −  =  

Finalmente, el tercer ángulo se obtiene por diferencia, dado que α β γ 180+ + = °. Para la corrida de prueba, emplear los valores a = 3.20, b = 9.55 y γ = 85°.

CÓDIGO DEL PROGRAMA

// Programación y Métodos Numéricos // Ejercicio 8

// 1º-MAR-2017

disp("Resolución de triángulo") // Datos

a=input("Longitud del lado a? "); b=input("Longitud del lado b? "); ang_gamma=input("Ángulo gamma? "); // Cálculos

c=sqrt(a^2+b^2-2*a*b*cosd(ang_gamma)); ang_alfa=acosd((b^2+c^2-a^2)/(2*b*c)); ang_beta = 180-ang_alfa-ang_gamma;

disp("Longitud del lado c = " + string(c)) disp("Ángulo alfa = " + string(ang_alfa)) disp("Ángulo beta = " + string(ang_beta))

a

b

c

γ

(6)

CORRIDA DE PRUEBA

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

Resolución de triángulo Longitud del lado a? 3.20 Longitud del lado b? 9.55 Ángulo gamma? 85

Longitud del lado c = 9.8038534

Ángulo alfa = 18.975282

Ángulo beta = 76.024718

EJERCICIO 9

Adaptado de Gilat (2006), “Matlab: una introducción con ejemplos prácticos”, Editorial Reverté.

La serie de Leibniz es la sumatoria:

( )

0 1 2 1 n m n= n − +

que converge al valor de π /4 cuando m 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 m dado por el usuario. Correr el programa para

m = 10 y para m = 500. Comparar estos resultados con el valor verdadero de π /4 (0.78539816…)

CÓDIGO DEL PROGRAMA

// Programación y Métodos Numéricos // Ejercicio 9 // 6-MAR-2017 disp("Serie de Leibniz") m=input("m? "); suma=0; for n=0:m suma=suma+(-1)^n/(2*n+1); end disp("Sumatoria = " + string(suma)) CORRIDA DE PRUEBA -->exec("Ejercicio9.sce"); Serie de Leibniz m? 10 Sumatoria = 0.8080790 -->exec("Ejercicio9.sce"); Serie de Leibniz m? 500 Sumatoria = 0.7858972

(7)

EJERCICIO 10

Considérese un tanque vertical 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 conociendo el nivel mediante la siguiente función definida por partes:

(

)

(

)

si si 2 1 3 3 2 2 3 π 3 π π h r h h r V r r h r h r  − <  =  + − ≥ 

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 en Scilab 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 deben asignarse a variables directamente en el código, no ser pedidos al usuario). El programa debe pedir el nivel del líquido en metros, y reportar el volumen en litros. El programa debe responder un mensaje de error si se le da un nivel negativo o mayor que 1.8 metros. Reportar las corridas de prueba para los siguientes valores de h: 0.3 m, 1.5 m, 2.1 m y −1 m.

CÓDIGO DEL PROGRAMA

// Programación y Métodos Numéricos // Ejercicio 10

// 6-MAR-2017

disp("Volumen en un tanque cilíndrico con fondo hemisférico") // Tamaño del tanque: 0.9 m de diámetro y 1.8 m de altura r=0.45;

hmax=1.8;

h=input("Nivel en el tanque (m)? "); if h<0 then

disp("El nivel no puede ser un número negativo") elseif h>hmax then

disp("El nivel no puede exceder de 1.8 metros") elseif h<r then

V = (1/3)*%pi*h^2*(3*r-h);

// El volumen está en metros cúbicos,

// para convertir a litros se multiplica por 1000 disp("El volumen es " + string(V*1000) + " L") else

V = (2/3)*%pi*r^3+%pi*r^2*(h-r); // El volumen está en metros cúbicos,

// para convertir a litros se multiplica por 1000 disp("El volumen es " + string(V*1000) + " L") end

CORRIDA DE PRUEBA

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

Volumen en un tanque cilíndrico con fondo hemisférico Nivel en el tanque (m)? 0.3

El volumen es 98.960169 L

(8)

Volumen en un tanque cilíndrico con fondo hemisférico Nivel en el tanque (m)? 1.5 El volumen es 858.83289 L -->exec("Ejercicio10.sce");

Volumen en un tanque cilíndrico con fondo hemisférico Nivel en el tanque (m)? 2.1

El nivel no puede exceder de 1.8 metros

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

Volumen en un tanque cilíndrico con fondo hemisférico Nivel en el tanque (m)? -1

El nivel no puede ser un número negativo

EJERCICIO 11

Escribir un programa en Scilab que realice conversiones de temperaturas. El programa debe, en primera instancia, preguntar al usuario que especifique, usando una letra entre comillas, en qué unidades está el dato de temperatura. Luego debe preguntar el valor de la temperatura, y usar una estructura select para efectuar los cálculos de las temperaturas en las otras tres escalas, según la escala del dato. Finalmente, el programa debe mostrar los resultados de la conversión, en las cuatro escalas de temperatura. Se muestra a continuación una corrida de ejemplo:

Conversiones de temperatura.

En qué unidades está su dato (C/F/K/R)? "C" Cuál es el valor de la temperatura? 25 25.00 °C = 77.00 °F = 298.15 K = 536.67 R

Realizar cuatro corridas de prueba, empleando los siguientes datos: 37 °C, −40 °F, 300 K y 500 R.

CÓDIGO DEL PROGRAMA

// Programación y Métodos Numéricos // Ejercicio 11

// 9-MAR-2017

disp("Conversiones de temperatura.")

disp("Especifique (entre comillas) en qué unidades está su dato") unidades=input("(C/F/K/R)? ");

dato=input("Cuál es el valor de la temperatura? "); select unidades case "C" then TC=dato; TF=1.8*TC+32; TK=TC+273.15; TR=1.8*TK; case "F" then TF=dato; TC=(TF-32)/1.8; TK=TC+273.15; TR=1.8*TK; case "K" then TK=dato; TC=TK-273.15; TF=1.8*TC+32; TR=1.8*TK;

(9)

case "R" then TR=dato; TK=TR/1.8; TC=TK-273.15; TF=1.8*TC+32; end mprintf("%6.2f °C = %6.2f °F = %6.2f K = %6.2f R\n",TC,TF,TK,TR) CORRIDA DE PRUEBA -->exec("Ejercicio11.sce"); Conversiones de temperatura.

Especifique (entre comillas) en qué unidades está su dato (C/F/K/R)? "C"

Cuál es el valor de la temperatura? 37 37.00 °C = 98.60 °F = 310.15 K = 558.27 R -->exec("Ejercicio11.sce"); Conversiones de temperatura.

Especifique (entre comillas) en qué unidades está su dato (C/F/K/R)? "F"

Cuál es el valor de la temperatura? -40 -40.00 °C = -40.00 °F = 233.15 K = 419.67 R -->exec("Ejercicio11.sce"); Conversiones de temperatura.

Especifique (entre comillas) en qué unidades está su dato (C/F/K/R)? "K"

Cuál es el valor de la temperatura? 300 26.85 °C = 80.33 °F = 300.00 K = 540.00 R -->exec("Ejercicio11.sce"); Conversiones de temperatura.

Especifique (entre comillas) en qué unidades está su dato (C/F/K/R)? "R"

Cuál es el valor de la temperatura? 500 4.63 °C = 40.33 °F = 277.78 K = 500.00 R

EJERCICIO 12

Empleando comandos de Scilab (no introducir únicamente los números), generar las siguientes matrices:

1 0 0 0 0 0 4 0 0 0 0 0 9 0 0 0 0 0 16 0 0 0 0 0 25 A         =         0 2 0 0 0 8 0 4 0 0 0 6 0 6 0 0 0 4 0 8 0 0 0 2 0 B         =         2 1 0 0 0 0 1 2 1 0 0 0 0 1 2 1 0 0 0 0 1 2 1 0 0 0 0 1 2 1 0 0 0 0 1 2 C −        − −  =         −    

(10)

0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 D       = − −    − − −   0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 1 1 0 0 E         =         0 0 0 0 0 0 1 1 1 0 0 1 2 1 0 0 1 1 1 0 0 0 0 0 0 F         =        

G = una matriz de 5×5 de números aleatorios, pero con ceros en la diagonal principal.

RESPUESTA -->A=diag(1:5).^2 A = 1. 0. 0. 0. 0. 0. 4. 0. 0. 0. 0. 0. 9. 0. 0. 0. 0. 0. 16. 0. 0. 0. 0. 0. 25. -->B=diag(2:2:8,1)+diag(8:-2:2,-1) B = 0. 2. 0. 0. 0. 8. 0. 4. 0. 0. 0. 6. 0. 6. 0. 0. 0. 4. 0. 8. 0. 0. 0. 2. 0. -->C=2*diag(ones(6,1))-diag(ones(5,1),1)-diag(ones(5,1),-1) C = 2. - 1. 0. 0. 0. 0. - 1. 2. - 1. 0. 0. 0. 0. - 1. 2. - 1. 0. 0. 0. 0. - 1. 2. - 1. 0. 0. 0. 0. - 1. 2. - 1. 0. 0. 0. 0. - 1. 2. -->D=triu(ones(4,4))-tril(ones(4,4)) D = 0. 1. 1. 1. - 1. 0. 1. 1. - 1. - 1. 0. 1. - 1. - 1. - 1. 0. -->E=ones(5,5); -->E(2,:)=zeros(1,5); -->E(:,1)=zeros(5,1); -->E(4:5,4:5)=zeros(2,2); -->E E = 0. 1. 1. 1. 1.

(11)

0. 0. 0. 0. 0. 0. 1. 1. 1. 1. 0. 1. 1. 0. 0. 0. 1. 1. 0. 0. -->F=zeros(5,5); -->F(2:4,2:4)=ones(3,3); -->F(3,3)=2; -->F F = 0. 0. 0. 0. 0. 0. 1. 1. 1. 0. 0. 1. 2. 1. 0. 0. 1. 1. 1. 0. 0. 0. 0. 0. 0. -->G=rand(5,5); -->G=G-diag(diag(G)) G = 0. 0.6283918 0.5608486 0.2320748 0.3076091 0.7560439 0. 0.6623569 0.2312237 0.9329616 0.0002211 0.6857310 0. 0.2164633 0.2146008 0.3303271 0.8782165 0.1985144 0. 0.312642 0.6653811 0.0683740 0.5442573 0.6525135 0. EJERCICIO 13

La fuerza de arrastre ejercida por un fluido en movimiento alrededor de una esfera está dada por: 2

1

D

F= v AC

donde CD es el coeficiente de arrastre que es función del número de Reynolds, Re ρ

μ vD

= .

Se han desarrollado muchas correlaciones para el coeficiente de arrastre, una de las cuales es: 0.5 24 6 0.4 Re 1 Re D C = + + +

Escribir una función en Scilab que calcule CD en función de Re, y usarla en un programa que calcule la fuerza de

arrastre sobre una esfera, empleando como datos proporcionados por el usuario la densidad, velocidad y viscosidad del fluido, y el diámetro de la esfera. Emplear luego ese programa para calcular la fuerza de arrastre ejercida sobre un balón de futbol de 22 cm de diámetro, en un dia airoso en la ciudad de Durango, con una velocidad del viento de 50 km/h. Tomar la densidad del aire como 0.95 kg/m³, y su viscosidad como 1.8×10−5 kg/m·s.

ARCHIVO CON LA FUNCIÓN (CoeficienteArrastre.sce) // Programación y Métodos Numéricos // Ejercicio 13 - Archivo con la función // 29-MAR-2017

function x=CoefArrastre(Re)

(12)

// función del número de Reynolds Re x=24/Re+6/(1+Re^0.5)+0.4

endfunction

CÓDIGO DEL PROGRAMA

// Programación y Métodos Numéricos // Ejercicio 13

// 29-MAR-2017

disp("Cálculo de la fuerza de arrastre sobre una esfera") // Cargar el archivo donde está la función que calcula // el coeficiente de arrastre

exec("CoeficienteArrastre.sce"); // Obtener los datos

D=input("Diámetro de la esfera (m) ? "); v=input("Velocidad del aire (m/s) ? "); dens=input("Densidad del aire (kg/m^3) ? "); visc=input("Viscosidad del aire (kg/m.s) ? "); // Número de Reynolds y coeficiente de arrastre Re=dens*v*D/visc;

CD=CoefArrastre(Re);

// Área de sección transversal A=%pi*D^2/4;

// Calcular fuerza de arrastre F=0.5*dens*v^2*A*CD;

// Reportar resultado

disp("La fuerza de arrastre es " + string(F) + " N")

CORRIDA DE PRUEBA

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

Cálculo de la fuerza de arrastre sobre una esfera Diámetro de la esfera (m) ? 0.22

Velocidad del aire (m/s) ? 50*(1000/3600) Densidad del aire (kg/m^3) ? 0.95

Viscosidad del aire (kg/m.s) ? 1.8e-5

La fuerza de arrastre es 1.4456633 N

EJERCICIO 14

Escribir un grupo de funciones en Scilab que realicen las siguientes operaciones elementales por renglones en una matriz: (A) multiplicar un renglón por una constante, (B) intercambiar dos renglones, (C) multiplicar un renglón por una constante y sumarlo a otro renglón. Emplear estas funciones directamente en la consola de Scilab para resolver el siguiente sistema de ecuaciones:

(13)

1 2 3 1 2 3 2 3 4 2 14 6 5 7 3 2 2 x x x x x x x x + + = + + = − + =

ARCHIVO CON LAS FUNCIONES (OperacionesMatrices.sce) // Programación y Métodos Numéricos

// Ejercicio 14 - archivo OperacionesMatrices.sce

// Funciones que implementan operaciones elementales de // matrices por renglones y columnas

// 4-ABR-2017

function resp=RenglonPorConstante(M,r,a)

// Multiplica un renglón de una matriz por una constante // Parámetros de entrada:

// M es la matriz

// r el número de renglón

// a es la constante por la que se va a multiplicar // resp es la matriz transformada

// Copiar la matriz a resp resp=M

// Modificar el renglón r resp(r,:)=a*M(r,:)

endfunction

function resp=IntercambiarRenglones(M,r1,r2) // Intercambia dos renglones de una matriz // Parámetros de entrada:

// M es la matriz

// r1 y r2 son los dos renglones que se intercambiarán // resp es la matriz transformada

// Copiar la matriz a resp resp=M

// Copiar los renglones intercambiados resp(r1,:)=M(r2,:)

resp(r2,:)=M(r1,:) endfunction

function resp=SumarMultiploRenglon(M,r1,r2,a)

// Suma el múltiplo de un renglón de una matriz por una constante // Parámetros de entrada:

// M es la matriz

// r1 es el renglón que se modificará

// r2 es el renglón que se multiplicará por a y se sumará a r1 // resp es la matriz transformada

// Copiar la matriz a resp resp=M

// Copiar los renglones intercambiados resp(r1,:)=M(r1,:)+a*M(r2,:) endfunction CORRIDA DE PRUEBA -->exec("OperacionesMatrices.sce"); -->A=[4 1 2;6 5 1;0 3 2]

(14)

A = 4. 1. 2. 6. 5. 1. 0. 3. 2. -->b=[14;-7;2] b = 14. - 7. 2. -->E=[A b] E = 4. 1. 2. 14. 6. 5. 1. - 7. 0. 3. 2. 2. -->E=RenglonPorConstante(E,1,1/4) E = 1. 0.25 0.5 3.5 6. 5. 1. - 7. 0. 3. 2. 2. -->E=SumarMultiploRenglon(E,2,1,-6) E = 1. 0.25 0.5 3.5 0. 3.5 - 2. - 28. 0. 3. 2. 2. -->E=RenglonPorConstante(E,2,1/3.5) E = 1. 0.25 0.5 3.5 0. 1. - 0.5714286 - 8. 0. 3. 2. 2. -->E=SumarMultiploRenglon(E,1,2,-0.25) E = 1. 0. 0.6428571 5.5 0. 1. - 0.5714286 - 8. 0. 3. 2. 2. -->E=SumarMultiploRenglon(E,3,2,-3) E = 1. 0. 0.6428571 5.5 0. 1. - 0.5714286 - 8. 0. 0. 3.7142857 26. -->E=RenglonPorConstante(E,3,1/E(3,3)) E = 1. 0. 0.6428571 5.5 0. 1. - 0.5714286 - 8.

(15)

0. 0. 1. 7. -->E=SumarMultiploRenglon(E,1,3,-E(1,3)) E = 1. 0. 0. 1. 0. 1. - 0.5714286 - 8. 0. 0. 1. 7. -->E=SumarMultiploRenglon(E,2,3,-E(2,3)) E = 1. 0. 0. 1. 0. 1. 0. - 4. 0. 0. 1. 7. -->x=E(:,$) x = 1. - 4. 7. EJERCICIO 15

Escribir un programa en Scilab que resuelva un sistema de ecuaciones lineales por eliminación de Gauss-Jordan, empleando las funciones del ejercicio anterior. El progama debe de asumir que existen las variables A y b, de las dimensiones correctas, antes de su ejecución. Como corrida de prueba, resolver el siguiente sistema de ecuaciones:

0.7071068 1 0 0 0 0 0 0 0 0 0.7071068 0 0 0 0 0 0 1 0 0 0.7071068 0 1 0.5 0 0 0 0 0 0 0.7071068 0 0 0.8660254 0 0 0 0 0 0 0 0 1 0 0.5 0.7071068 0 0 0 0 0 0 0 0 0.8660254 0.7071068 0 0 0 0 0 0 0 0 0.5 0 1 0 1 0 0 0 0 0 0.8660254 0 0 0 0 1 0 1 0 0.5 0 0.7071068 1 0 0 0 0 0 0 0.866025 − − − − − − − − − − − 0 0 0 300 500 0 0 0 0 4 0 0.7071068 0 0 0 0 100 AB AE BC BE CD CE DE y x y T T T T T T T A D D                                               =                                               

CÓDIGO DEL PROGRAMA

// Programación y Métodos Numéricos // Ejercicio 15

// 25-ABR-2017

// Solución de un sistema de ecuaciones // por eliminación de Gauss-Jordan

// La matriz A y el vector columna b deben // existir y ser de las dimensiones correctas // antes de ejecutar este programa

// Cargar el archivo con las funciones para matrices exec("OperacionesMatrices.sce");

(16)

// Formar la matriz extendida E E=[A b];

// Determinar el tamaño del sistema a partir // del tamaño del vector b

n=size(b,"r"); for i=1:n

// Para cada renglón, primero hacer 1 en la columna correspondiente E=RenglonPorConstante(E,i,1/E(i,i));

// luego hacer ceros en todos los otros renglones en esa columna for j=1:n if j<>i then E=SumarMultiploRenglon(E,j,i,-E(j,i)); end end end // Guardar el resultado en x x=E(:,$); CORRIDA DE PRUEBA -->load("Armadura.sod"); -->A A = column 1 to 8 0.7071068 1. 0. 0. 0. 0. 0. 0. 0.7071068 0. 0. 0. 0. 0. 0. 1. - 0.7071068 0. 1. 0.5 0. 0. 0. 0. - 0.7071068 0. 0. - 0.8660254 0. 0. 0. 0. 0. 0. - 1. 0. 0.5 - 0.7071068 0. 0. 0. 0. 0. 0. - 0.8660254 - 0.7071068 0. 0. 0. 0. 0. 0. - 0.5 0. - 1. 0. 0. 0. 0. 0. 0.8660254 0. 0. 0. 0. - 1. 0. - 0.5 0. 0.7071068 1. 0. 0. 0. 0. 0.8660254 0. 0.7071068 0. 0. column 9 to 10 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 1. 0. 0. 0. 0.

(17)

-->b b = 0. 0. 0. 300. 500. 0. 0. 0. 0. 100. -->exec("Ejercicio15.sce"); -->x x = - 584.63229 413.39746 - 478.86751 130.94011 15.470054 - 18.946869 492.26497 413.39746 500. - 13.39746 EJERCICIO 16

Usando la serie de Taylor para ex, calcular el valor de e1.55 empleando el número de términos indicados en la tabla. Calcular también el error absoluto y el error relativo, tomando como valor verdadero e1.55=4.7114701834.

número de términos valor calculado error absoluto error relativo

1 1 −3.711470183 −0.787752026 2 2.55 −2.161470183 −0.458767666 3 3.75125 −0.960220183 −0.203804788 4 4.371895833 −0.339574350 −0.072073967 5 4.612396094 −0.099074089 −0.021028274 6 4.686951174 −0.024519008 −5.204109963×10−³ 7 4.706211237 −5.258946399×10−³ −1.116200717×10³

Referencias

Documento similar

Debido al riesgo de producir malformaciones congénitas graves, en la Unión Europea se han establecido una serie de requisitos para su prescripción y dispensación con un Plan

Como medida de precaución, puesto que talidomida se encuentra en el semen, todos los pacientes varones deben usar preservativos durante el tratamiento, durante la interrupción

Abstract: This paper reviews the dialogue and controversies between the paratexts of a corpus of collections of short novels –and romances– publi- shed from 1624 to 1637:

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

Después de una descripción muy rápida de la optimización así como los problemas en los sistemas de fabricación, se presenta la integración de dos herramientas existentes

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

Por PEDRO A. EUROPEIZACIÓN DEL DERECHO PRIVADO. Re- laciones entre el Derecho privado y el ordenamiento comunitario. Ca- racterización del Derecho privado comunitario. A) Mecanismos

La conclusi´ on fue que para un n´ umero peque˜ no de par´ ametros (del orden de la decena), el m´ etodo simplex es hasta 4 veces m´ as r´ apido, obteniendo unos valores del m´