Java - Polinomio en java

   
Vista:

Polinomio en java

Publicado por Carlos (1 intervención) el 17/11/2013 10:37:57
lguien que me ayude como hago para pedir el grado y coeficientes de un polinomio y despues aplicar dos metodos que es derivación en un punto e integración en un intervalo.
Estos dos métodos ya los hice pero para una función específica ahora quiero generalizarlo.

Elaborar un programa que permita realizar la derivación númerica en un punto y la integración numérica en un intervalo sobre una función polinomica. El programa deberá solicitar los datos del polinomio (grado y coeficiente de cada uno de los términos del polinomio) al usuario, así como la opción de aplicar uno de los dos métodos sobre el polinomio, solicitando los datos pertinentes.

El programa deberá estar realizado de acuerdo a la arquitectura Modelo - Controlador vista en clase, con una clase Controladora y una o varias clases para resolver el modelo.

1. Seguir la estructura Modelo - Controlador.

2. Utilizar la herencia o el polimorfismo, así como la encapsulación de datos.

3. Entregar diagrama de clases.

4. Utilizar los métodos de derivación hacia adelante

5. Y de integración por Simpson 1/3.

Ya tengo los métodos de derivación e integración pero para una función en específico alguien me echa una mano

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class Modelo { //Creando la clase Modelo que contiene en este caso los métodos que pertencen al dominio del problema
double funcXAdelante, funcX, funcXAtras, delta, aproxAdelante, aproxAtras, aproxCentral;
public void diferenciaAdelante(){
this.aproxAdelante=((this.funcXAdelante-this.funcX)/(this.delta));
}
public void diferenciaAtras(){
this.aproxAtras=((this.funcX-this.funcXAtras)/(this.delta));
}
public void diferenciaCentral()
{
this.aproxCentral=((this.funcXAdelante-this.funcXAtras)/(2*this.delta));
}
 
}
 
public class Controlador //Creamos la clase Controlador que utilizará a la clase Modelo
{
double x,delta;
public double funcion(double x)
{
double res;
res = Math.pow(x,3)-(8*Math.pow(x,2))+(15*x)+3;
return res;
}
public void obtenDerivadas()
{
Modelo dn = new Modelo();
dn.delta = this.delta;
dn.funcXAdelante = this.funcion(this.x+this.delta);
dn.funcX = this.funcion(this.x);
dn.funcXAtras = this.funcion(this.x-this.delta);
dn.diferenciaAdelante();
dn.diferenciaAtras();
dn.diferenciaCentral();
System.out.println("La derivada en el punto:"+this.x+"\n");
System.out.println("utilizando diferencias hacia "+"adelante: "+dn.aproxAdelante);
System.out.println("utilizando diferencias hacia "+"atras:"+dn.aproxAtras);
System.out.println("utilizando diferencias"+" centrales: "+dn.aproxCentral);
}
 
public static void main (String args[]){
try{
Controlador ect = new Controlador();
ect.x = Double.parseDouble(args[0]);
ect.delta = Double.parseDouble(args[1]);
ect.obtenDerivadas();
}
catch (ArrayIndexOutOfBoundsException aioobe) {
System.out.println("Error!!");
System.out.println("Modo de uso en consola: java Controlador Digitarvalordex valordelatolerancia");
}
}
}

Este es el de Integración

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
public class ModeloIntegracion //Se crea la clase modelo que será la encargada de tener los metodos del dominio del problema de Intergación de Simpson
{
double fx[];
double h, sumaPar, sumaImpar, integral;
int n;
 
public ModeloIntegracion(int partes)
{
this.fx = new double[partes];
this.n = partes;
}
 
public void sumaImpares()
{
for(int i=1;i<(this.n-1);i++)
{
if(i%2==0)
continue;
this.sumaImpar=this.sumaImpar+this.fx[i];
}
}
 
public void sumaPares()
{
for(int i=2;i<(this.n-2);i++)
{
if(i%2!=0)
continue;
this.sumaPar=this.sumaPar+this.fx[i];
}
}
 
public void obtenArea()
{
this.sumaImpares();
this.sumaPares();
this.integral = (this.h/3)*(this.fx[0]+(4*this.sumaImpar)+(2*this.sumaPar)+this.fx[this.n-1]);
}
}
 
public class ControladorIntegracion //Se crea el controlador que tendrá dependencia de los métodos del modelo ya creado
{
double limInf, limSup;
int n;
 
public double f(double x)
{
double res;
res = (3*Math.pow(x,2))-(2*x)-8;
return res;
}
 
public void obtenIntegral()
{
ModeloIntegracion sut = new ModeloIntegracion(this.n);
sut.h = (this.limSup-this.limInf)/(this.n-1);
 
for(int i = 0;i<n;i++)
{
sut.fx[i]=this.f(this.limInf+(i*sut.h));
}
sut.obtenArea();
 
System.out.println("La integral en el intervalo: ("+this.limInf+","+this.limSup+") es \n");
 
System.out.println("Integral= "+sut.integral);
}
 
public static void main(String args[]){
try{/
ControladorIntegracion ecs = new ControladorIntegracion();
ecs.limInf = Double.parseDouble(args[0]);
ecs.limSup = Double.parseDouble(args[1]);
ecs.n = Integer.parseInt(args[2]);
ecs.obtenIntegral();
}
catch (ArrayIndexOutOfBoundsException aioobe) {
System.out.println("ERROR!!");
System.out.println("Modo de uso en consola: java ControladorIntegral limiteinferior limitesuperior numerodepuntos");
}
}
}

Como verán son 4 clases en total porque lo hice en la forma modelo-controlador
Saludos y gracias desde ya, orientenme porfavor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder