R/ El programa se ejecuta de la siguiente manera: python lab9.1 (coeficientes del polinomio) (valor incial) Ej: python lab9.

Documentos relacionados
import math # Importa la libreria math, que permite utilizar operaciones y funciones matematicas

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones.

Introducción a Python. Cecilia Manzino

Tipos de Datos de python (2ª parte):

Estructuras de Control

Estructura de datos y Programación

Estructuras de control

Introducción a la Programación en MATLAB

Nano Taller de Python

Práctica IV: Métodos de Newton-Raphson y de la secante, para encontrar las raíces de una función.

ESTRUCTURAS REPETITIVAS EN PHP

Preliminares. Tipos de variables y Expresiones

El método de la secante, es uno de los métodos que se conocen como abierto. Por qué se llama un método abierto?

ING1310 Introducción a la Computación. Python. Conceptos Básicos. Carlos Reveco

5. ESTRUCTURAS DE REPETICIÓN

E.T.S. Minas: Métodos Matemáticos Soluciones Tema 3: Resolución aproximada de ecuaciones

Ingeniería en Desarrollo de software Cuatrimestre 07. Asignatura: Programación.NET 1. Clave:

INGENIERÍA DE SOFTWARE:

Lenguajes de Programación Programación funcional

He aquí una función que escribe los números naturales menores que otro prefijado y dado, t,

INGENIERIA EN PROCESOS INDUSTRIALES

Estructuras de Repetición

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Estructura repetitiva while

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

Aproximación discreta de mínimos cuadrados con lapack

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

LABORATORIO No. 3 MODELAMIENTO Y ANALISIS DINAMICO DE SISTEMAS ELECTRICOS

ESTRUCTURAS DE REPETICIÓN AREA PROGRAMACIÓN 1

Shell Script Sistemas Operativos III - ITS EMT - CETP

Estructuras de Repetición Repita Mientras

INTRODUCCIÓN A LA MATEMÁTICA DISCRETA PRÁCTICA 1

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

Fundamentos de Programación

Andrés Donaciano Martínez Guillén -.- Fundamentos de programación -.andresmtzgwordpress.com

Universidad Autónoma del Estado de México Facultad de Medicina

Nota:Simule el programa paso a paso en su cuaderno para entender la lógica de ejecución. Clase Lenguaje de programación 1 Ing Eddy ruiz Largaespada.

Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas

Python. Características Básicas

Para verificar que el sistema converge se deberán cumplir con las siguientes condiciones en las formulas con derivadas parciales:

Estructuras Repetitivas

Tema 0 Introducción. Curso de Python Avanzado. Juan Pedro Boĺıvar Puente. Instituto de Astrofísica de Andalucía. Mayo de 2011

Tema 3. Estructuras de Datos

Tutorial de Python orientado a objetos

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

TEMA 4: Estructuras de Control

for(i = 0; i <= 45; i+=5) { x = (i*3.1416)/180; printf( seno(%d) = %f\n,i,seno(x));

Introducción. Visual Basic para Aplicaciones (VBA) en Excel: aspectos elementales

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

En el siguiente ejemplo se declara un registro y luego variables de ese tipo de registro:

PROGRAMACION PARAMETRICA LENGUAJE DE ALTO NIVEL. MILTRONICS CNC MACHINES Control Centurion 7. Ing. Roberto Spicacci

Introducción rápida a la programación (estructurada ) con C++

Manual rápido para evaluación de series en Python

Instructivo. VIDEOS EN: INTRODUCCION

Clase 5: CLI, templates y excepciones

1. Método de bisección

Programación Orientada a Objetos

Práctica 2ª : OPERADORES LÓGICOS Y RELACIONALES. CICLOS Y ESTRUCTURAS DE CONTROL. MÉTODOS DE RESOLUCIÓN DE UNA ECUACIÓN NO LINEAL.

XML. Escuela Técnica Superior de Ingeniería de Telecomunicación Universidad Rey Juan Carlos. Marzo de gsyc-profes (arroba) gsyc.urjc.

Se guardan en archivos con extencion c y los cabezales con extension h

Computadores y Comunicaciones. Práctica de Laboratorio: Diseño de una aplicación basada en el modelo cliente-servidor

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

E.T.S. Minas: Métodos Matemáticos Ejercicios Tema 4 Métodos iterativos para sistemas de ecuaciones

PHP: Lenguaje de programación

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Problema No.7. Elaborar un programa en C++ que lea una temperatura en grados Fahrenheit y muestre su equivalente en grados Celsius, Kelvin y Rankine.

Prácticas: Introducción a la programación en Java. Informática (1º Ingeniería Civil) Curso 2011/2012

Distinguir las diferentes estructuras de repetición utilizadas en problemas con bucles: mientras, repetir mientras, para.

funciones printf scanf

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

Parte 4: Estructuras de Control

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Tipos de Datos en C. Palabras reservadas en C

Introducción a los Computadores (CNM-130) Estructuras de control repetitivas en FreeMat

Estructura repetitiva do while

Clase adicional 7. Análisis numérico en Java. Temas

ESTRUCTURAS CONDICIONALES SIMPLES: ESTRUCTURAS CONDICIONALES DOBLES: ESTRUCTURAS CONDICIONALES ANIDADAS:

Métodos Numéricos (SC 854) Solución de ecuaciones no lineales. 1. Definición del problema: raíces de ecuaciones no lineales

Asumiremos que se dispone de procedimientos para leer y escribir caracteres. Se desarrollan algunas funciones primitivas que nos serán útiles.

Programación Estructurada

último Una función que obtiene la suma de los dígitos de n>0:

PARTE II: Programación en ensamblador

Laboratorio Nº 1 La Descripción Gráfica de la Ecuación Diferencial Ordinaria

CAPACITORES INDUCTORES. Mg. Amancio R. Rojas Flores

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Operadores de comparación

Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE

4.3 Recursión en Scheme

Transcripción:

1. Escriba un programa que permita encontrar raíces de un polinomio de grado n usando el método de Newton (http://en.wikipedia.org/wiki/newton's_method). El programa debe recibir, a través de la línea de comandos, los coeficientes del polinomio y un valor inicial x0. Si el método converge, se deben continuar las iteraciones hasta que la solución se estabilice, al menos hasta el cuarto decimal. Si no converge, el programa debe detenerse luego de un número definido de iteraciones (al menos 20) y notificar al usuario que no se puede encontrar una solución. R/ El programa se ejecuta de la siguiente manera: python lab9.1 (coeficientes del polinomio) (valor incial) Ej: python lab9.1 1 2 3 5 El código que se implementó junto con su documentación es el siguiente: # coding: utf-8 #Se importa sys para terminar el programa cuando se necesite #y leer los argumentos ingresados por la cli del usuario import sys #Se ejecutará el código solo si la cantidad de argumentos #ingresada por cli es mayor a 3, si es menor, se imprime #un error notificando al usuario. if len(sys.argv) < 3: print "Error: cantidad o tipo de valores incorrecto" #Si es mayor ejecutamos el código else: #Se inicializa la lista coeficientes que contendrá #los coeficientes del polinomio de grado n que ingrese #el usuario, empezando por el coeficiente del término de grado n coeficientes = [] #Se inicializa la variable solaprox que es la solución aproximada #que se imprimirá al usuario solaprox = 0 #Se trata de "castear" el valor a un float try: valorinicial = float(sys.argv[1]) #de no ser posible se imprime un error notificando al usuario

#y se termina el programa. except Exception: números" print "Error:\nEl tipo de datos ingresado no es el correcto por favor solo ingrese #Se ingresa a la lista coeficientes los valores ingresados por el usuario #y se tratan de "castear" todos los datos, si es posible los valores se guardan #en la lista. for i in range (2,len(sys.argv)): try: coeficientes.append(float(sys.argv[i])) except Exception: #Si no fue posible se le notifica al usuario un error. print "No ingresó los valores correctos, ingrese números por favor" #Se le da a la variable gradon el valor de la longitud de la lista #coeficientes, esto para facilitar la escritura del código siguiente. gradon = len(coeficientes) #Se crea el método evaluarfuncion el cual se le envia un parámetro #valor1 equivalente al valor inicial ingresado por el usuario o #la nueva solución obtenida a través del método de Newton, para evaluar #el polinomio en este valor. def evaluarfuncion (valor1): #Se inicializa la variable resultado la cual es el resultado del polinomio #ingresado por el usuario evaluada en el parámetro valor1 este valor retornado. resultado = 0 #Se evaluá el polinomio en el valor1 por medio de un for #el cual lee el coeficiente del grado n del polinomio y lo #multiplica por el valor1 elevado al grado de ese coeficiente #del polinomio. Y va sumando estos resultados en la variable resultado. for i in range (0,gradoN): resultado += coeficientes[i]*valor1**(gradon-(i+1)) #Se retorna resultado del polinomio evaluado. return resultado #Se crea el método el método evaluarderivada el cual dervida el polinomio #ingresado por el usuario, recibe un parámetro, el cual es el valor inicial

#ingresado por el usuario o la nueva solución obtenida a través del método #de Newton, para evaluar la derivada del polinomio en este valor. def evaluarderivada (valor1): #Se incializa la lista derivada la cual contendrá los coeficientes de la #derivada del polinomio ingresado por el usuario. derivada = [] #Se inicializa la variable resultado la cual es el resultado de la #derivada evaluada en el parámetro enviado este valor es retornado. resultado = 0 #Se evaluá la derivada del polinomio en el valor1 por medio de un for #el cual lee el coeficiente del grado n de la derivada y lo #multiplica por el valor1 elevado al grado de ese coeficiente #de la derivada. Y va guardando estos resultados en la variable resultado. for i in range (0,gradoN-1): derivada.append(coeficientes[i]*(gradon-(i+1))) derivada[i] = derivada[i]*valor1**(gradon-i-2) resultado += derivada[i] #Se retorna resultado del polinomio evaluado. return resultado #Se crea el método encontrarsol usa el algoritmo del método de Newton #para encontrar una solución aproximada del polinomio ingresado por el usuario, #se ejecutará el algoritmo hasta que el error sea menor a 0.0001 o el número de #iteraciones llegue a 20, este método retorna el valor de solnueva el cual contiene #la solución aproximada. def encontrarsol (): #Se define la variable solnueva la cual es el resultado de la solución aproximada solnueva = 0 #Se define la variable solvieja inicialmente con el valor inicial solvieja = valorinicial #Se define la variable numeroiteraciones para controlar el número de veces #que se ejecutará el bloque de código siguiente. #Se define el error el cual controlada junto con el número de iteraciones cuantas #veces se ejecuta el bloque de código siguiente #Ambas variables funcionan para asegurar si el método converge o no. numeroiteraciones= 0 error = 1

#Se ejecuta el algoritmo de Newton mientras las iteraciones sean menores a 20 o #el error menor a 0.0001 y si y solo si la evaluación en la derivada del parámetro #enviada a la misma distinta de 0, esto para evitar una división entre 0. while (numeroiteraciones < 20 and evaluarderivada(solvieja)!= 0) or (error > 0.0001 and evaluarderivada(solvieja)!= 0): solnueva = solvieja - evaluarfuncion(solvieja)/evaluarderivada(solvieja) solvieja = solnueva error = solvieja - solnueva numeroiteraciones = numeroiteraciones+1 return solnueva #Se determina el valor de la variable solaprox como el valor que retorna el #método encontrarsol() solaprox = encontrarsol() #Si la solución es distinta de 0 se imprime el valor de la misma if solaprox!= 0: print "La solución aproximada es: %6f" %(solaprox) #sino se le indica al usuario que el método no convergió. else: print "No se pudo encontrar la raíz por medio del método" 2. La carga en un capacitor en un circuito RC serie ante un impulso escalón con valor V está descrito por una ecuación diferencial. Escriba un programa que utilice el método de Euler (http://en.wikipedia.org/wiki/euler's_method) para aproximar el voltaje en el capacitor v(t) = C q(t). El programa debe recibir como argumento, a través de la línea de comandos, los valores de C, R y V, el tamaño del paso y el tiempo final. El cálculo debe iniciar en t = 0, asumiendo como condición inicial q(0) = 0. R/ El código junto con su documentación son: #! /usr/bin/python #coding: UTF-8 import sys #Se verifica que la cantidad de argumentos ingresada por el usuario sea igual a 6. if len(sys.argv)!= 6:

print "\nerror: ingresó un número incorrecto de argumentos, debe ingresar 6\n" #Si es igual a 6 se asginan los valores a las variables. R = float(sys.argv[1]) #resitencia C = float(sys.argv[2]) #Capacitancia V = float(sys.argv[3]) #Tensión p = float(sys.argv[4]) #Paso ti = 0 #Tiempo inicial tf = float(sys.argv[5]) #tiempo final qt = 0 #Además se crea el archivo del tipo CSV donde se imprimirán los resultados. archivo = open('resultados', 'w') #Se crea el método derivadacarga que evalúa y retorna el valor de dq a partir de los parámetros enviados def derivadacarga(r, C, V, qt): return (C*V-qt)/(C*R) #Se crea un ciclo que para cuando el tiempo inicial sea igual al final indicado por el usuario #Y guarda los resultado en el archivo indicado. while ti < tf: evaluado = derivadacarga(r, C, V, qt) qt = qt + p * evaluado tensiontiempo = qt * C resultado = '%.4f, %.15f' %(ti,tensiontiempo) ti += p print >> archivo, resultado