Universidad de Costa Rica
|
|
Use el método de
Newton Raphson para encontrar un cero de un polinomio, esto
es, un valor "x
" que tiene la propiedad de que
"P(x)==0
". Por ejemplo, al evaluar el polinomio
"P(x)==x^2-2x+1
" en el valor "x==1
" el
resultado obtenido es
"1^2-2*1+1==0
" por lo que "1
" es una
raíz del polinomio.
polinomio grado x^3 + 2x^2 3 0 1 2 3 4 5 Max_Degree +-----+-----+-----+-----+-----+-----+ ... +-----+-----+-----+ | 0.0 | 0.0 | 2.0 | 1.0 | @$? | !~/ | ... | @*? | ^\* | ??? | +-----+-----+-----+-----+-----+-----+ ... +-----+-----+-----+ m_coef[] ^ | m_degree == 3 -------+ |
Para
implementar
su programa, construya su clase
polinomio usando un vector de hasta
"MaxGrado==1001
" valores de punto flotante que
representen un polinomio de grado n<=MaxGrado
(este diagrama es el
modelo de la clase).
Recuerde incluir en las
a las
especificaciones de cada
método los datos de prueba
BUnit
.
BUnit
?BUnit
está explicado
cómo hacerlo
usando los siguientes comandos
Doxygen:
/** "P+Q". Calcula y retorna la suma \c "P+Q". \dontinclude test_polinomio.cpp \skipline test::suma() \until }} \see test_polinomio::test_suma() */ polinomio operator+( const polinomio& P, const polinomio& Q) { polinomio res = P; res += Q; return res; } |
BUnit.h
: Un módulo simple para aprender prueba unitaria de programas en C++,
X Simposio Internacional de Informática Educativa
(SIIE'08)
realizado del 1 al 3 de octubre 2008, Salamanca, España,
I.S.B.N.: 978-84-7800-312-9, pp425-430, octubre 2008.
http://www.di-mare.com/adolfo/p/BUnit.htm
polinomio
hay que usar 2 archivos: en "polinomio.h
"
están las declaraciones de la clase y en
"polinomio.cpp
" se ponen las implementaciones de los
métodos. El tercer archivo es el programa principal
"ceropoly.cpp
", en donde está la
función
"main(argc,argv)
"
que es la que el inicio del programa. Finalmente, el cuarto
archivo que hay que implementar es
"test_polinomio.cpp
", que es el módulo en
donde están los datos de prueba BUnit
que
sirven para complementar con ejemplos de uso las especificaciones
de los métodos y funciones de la clase
"polinomio
".
test_polinomio.cpp
"
también está el método "main(argc,argv)
"?ceropoly.cpp
" como
"test_polinomio.cpp
" contiene la
función "main(argc,argv)
" (que no es un
método, contrario a lo que ocurre en Java). Es cierto
que tenés que implementar 2 programas y por eso
también necesitarás crear 2 proyectos
Code::Blocks:
ceropoly.cbp
==> polinomio.h
+
polinomio.cpp
+ ceropoly.cpp
test_polinomio.cbp
==>polinomio.h
+ polinomio.cpp
+
test_polinomio.cpp
polinomio
o puede implementar solo los métodos que
necesito?polinomio
que necesités.
f'(x[n])
en la
fórmula
x[n+1] = x[n] - ( f(x[n]) / f'(x[n]) )
?
f'(x)
es la
derivada matemática de la función
f(x)
. Podés incluir un método en la
clase polinomio
que calcule el polinomio derivado:
/// Calcula y retorna en \c drv la derivada del polinomio \c *this. void polinomio::derivar( polinomio& drv ) const;
Entregue su tarea por correo electrónico, como lo hizo anteriormente.
Tiempo de entrega: | 1 semana | |
Modalidad: | En parejas |
Adolfo Di Mare <adolfo@di-mare.com>.
|