Tarea.. Biseccion en matlab

patricia
09 de Marzo del 2010
hola quien me puede ayudar a resolver este programa? gracias...


PRELIMIARES
Es importante que documente sus programas de manera que exista una ayuda en
línea que permita a cualquier persona utilizarlos adecuadamente.
Se le sugiere que repase (usando la ayuda de Matlab o la literatura sugerida) el
uso de las instrucciones function, nargin y nargout, fplot, ezplot, text, textread.
ITRODUCCIO
En un laboratorio de investigación se tiene registrado el desgaste de una serie de
materiales en el tiempo. La información consiste en una medición de un grupo de
características que son eventualmente relacionadas con lo que en ese laboratorio
llaman el Desgaste del Material o DM. Este parámetro (DM) les sirve para decidir
cuáles materiales pueden ser utilizados en la construcción de partes para todo tipo
de medios de transporte, desde patinetas hasta transbordadores espaciales.
Dado que las mediciones son discretas (no se posee una medición continua del
DM a lo largo de toda la escala tiempo), un departamento de especialistas (al cuál
usted será promovido tan pronto como logre completar este trabajo) se encargó de
generar expresiones funcionales que aproximaran (teóricamente con muy poco
error) el DM de cada material de una manera continua. Estas funciones tienen la
característica común de ser estrictamente crecientes en el intervalo de tiempo en
horas [0, 100000], en el que se consideran válidas como aproximación de los DM.
Recientemente un gran fabricante empezó a tener problemas con el acabado de
sus productos y está culpando al proveedor de materia prima de venderle material
viejo. Por su parte el proveedor dice que el material es nuevo y para probarlo ha
hecho mediciones del DM a un gran número de materiales en manos del fabricante
y se los ha enviado a usted para que determine el tiempo transcurrido desde su
creación.
La primera idea que surgió en el laboratorio fue pagar a un tercero para que
hallara las inversas de las funcionales y así calcular fácilmente el tiempo
correspondiente a cada DM medido, pero el departamento de Finanzas dijo que no
había presupuesto ni para comprar un módulo de matemáticas simbólica que le
permitiera a usted mismo automatizar de alguna forma el cálculo de inversas
funcionales.
La segunda idea fue crear las gráficas de cada material y buscar el valor de tiempo
transcurrido manualmente, pero tras mirar el tamaño de la lista de mediciones del
fabricante, llegó a la conclusión de que se iba a quedar ciego antes de terminar.
Alguien propuso que se hiciera mediante prueba y error, es decir, introduciendo
datos de tiempo al azar hasta que se acercaran a la solución, total, era
simplemente tiempo de máquina; desgraciadamente el jefe lo oyó haciendo esa
proposición y el pobre terminó trabajando en otra compañía.
Finalmente, usted se acordó que existe un método muy sencillo para hallar un
punto donde una función continua se anula y se ha dado cuenta que sólo necesita
hacer una modificación muy sencilla para utilizarlo en su búsqueda del tiempo
transcurrido para cada DM medido. El método aparece a continuación:
Método de Bisección.
Dada una función f : R-> R , el método de Bisección halla un punto x* : f(x*) = 0.
Una descripción sencilla de los pasos que sigue es:
1. Dada f(x), tomar dos puntos x1, x2 de su dominio tal que los signos de f(x1)
y f(x2) sean opuestos, un parámetro de tolerancia que llamaremos épsilon,
que será positivo y tan cercano a cero como se desee y un número máximo
de iteraciones maxit.
2. Si |f(x1)| < épsilon o |f(x2)|< épsilon, entonces x1 o x2 es solución
(respectivamente); repórtelo y salga. Si eso no ocurre, siga con el paso 3.
3. Mientras ocurra que |x1-x2| >épsilon o que no se ha excedido el máximo de
iteraciones, vaya al paso siguiente.
4. Hallar x0, donde x0 será el punto medio entre x1 y x2.
5. Si |f(x0)|< épsilon , reporte que x0 es solución y salga.
6. Si el signo de f(x0) es igual al de f(x1) sustituya x1 <- x0 y regrese al paso 2.
7. Si el signo de f(x0) es igual al de f(x2) sustituya x2 <- x0 y regrese al paso 2.
8. Si |x1-x2|< épsilon o se excedió el máximo de iteraciones, reporte que no
se pudo hallar una solución con los parámetros dados y salga.
LABORATORIO
Usted creará una función de Matlab de nombre tiempo que permita aplicar el
método de Bisección (también deberá programar esta función por supuesto) a los
datos de un archivo que contiene dos columnas:
1. Cada componente de la primera columna corresponde a un “string” que
contiene una expresión funcional que por supuesto es la del DM de algún
material.
2. Cada componente de la segunda columna contiene un número que
corresponde al valor de DM medido por el fabricante para ese material.
Su función tomará cada una de estas parejas, calculará el tiempo que corresponde
al valor de DM en la segunda columna y lo reportará mostrando la gráfica de la
expresión funcional con el punto en cuestión remarcado y mostrando las
coordenadas correspondientes, es decir, el tiempo hallado y el valor DM medido.
Finalmente, como usted es muy consciente respecto al consumo de papel y sabe
que eventualmente las gráficas tendrán que ser impresas, decidió que aparecerían
cuatro gráficas por figura.
Información Adicional
La función tiempo tendrá como parámetros de entrada:
1. El nombre del archivo de datos
2. Los parámetros que serán pasados a la función de bisección, es decir:
a. Puntos iniciales t1 y t2.
b. La tolerancia en la respuesta, es decir, el épsilon.
c. El número máximo de iteraciones permitidas maxit antes de
abandonar la búsqueda.
3. Cuando no se halle una solución, simplemente se creará la gráfica de la
funcional correspondiente y esta contendrá un mensaje indicando que el
método falló.
4. La función tendrá parámetros por defecto que pasará a la función de
bisección en el caso de que el usuario no los defina. Esto aplica para todos
los argumentos de entrada excepto para el nombre del archivo de datos.
A fin de que pruebe sus programas, tome los siguientes datos y cree con ellos un
archivo tipo ascii con las características que se describieron en la página anterior:
1. x^4+x^3+2*x^2+10*x 101021000
2. exp(x)+ x^2 + sqrt(x+2) 11486
3. log(x+1) + log(x.^2) 26.5611
4. x + exp(x) 153.4172
5. exp(sqrt(x^2)) 244.6919
6. exp(sqrt(x+22)) 6.4702e+003

Dave30
09 de Marzo del 2010
Hola Patricia,

Igualmente, muy interesante el tema, por si te interesen mis servicios de programación, te dejo mi email: [email protected]

Saludos
Dave