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.cpptest_polinomio.cbp
==>polinomio.h + polinomio.cpp +
test_polinomio.cpppolinomio 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>.
|
|
|