Boas pessoal…
tenho o codigo abaixo, o objectivo é deste codigo é que dada uma parabola ele me calcula os n+1 pontos no intervalo de x1=limite inferior e x2=limite superior e me devolva um vector com os n+1 pontos calculados…
as contas estao feitas …mas ao testar…n sei k se passa o cara nem seker entra no while…
o metodo plot é onde esta o problema…
package poo;
public class Parabola {
private double a;
private double b;
private double c;
public Parabola(double a, double b, double c) {
assert a != 0;
this.a = a;
this.b = b;
this.c = c;
}
Parabola(double a) {
assert a != 0;
this.a = a;
}
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
public double getB() {
return b;
}
public void setB(double b) {
this.b = b;
}
public double getC() {
return c;
}
public void setC(double c) {
this.c = c;
}
public double coefficient(int aux) {
double xptzebra = 0;
assert (aux >= 0);
if (aux > 2) {
return 0;
} else if (aux == 2) {
xptzebra = a;
}
if (aux == 1) {
xptzebra = b;
} else if (aux == 0) {
xptzebra = c;
}
return xptzebra;
}
public double value(double aux) {
return (aux * (a * aux + b)) + c;
}
public int countZeros() {
double delta = 0;
assert (delta >= 0);
delta = b * b - 4 * a * c;
if (delta == 0) {
return 1; //System.out.println("A funcã0 tem apenas um Zero");
} else if (delta > 0) {
//System.out.println("A funcã0 tem dois um Zero");
return 2;
} else
return 3;
}
public double[] zeros() {
double[] xpto = new double[2];
// assert (delta >= 0);
double x1;
double x2;
double delta = b * b - 4 * a * c;
if (delta == 0) {
xpto[0] = x1 = -b / (2 * a);
xpto[1] = x2 = -b / (2 * a);
}
else if (delta > 0) {
x1 = (-b + Math.sqrt(delta)) / (2 * a);
x2 = (-b - Math.sqrt(delta)) / (2 * a);
if (x1 > x2) {
xpto[0] = x2;
xpto[1] = x1;
} else if (x1 < x2) {
xpto[1] = x2;
xpto[0] = x1;
}
}
else if (delta < 0) {
xpto = null;
}
return xpto;
}
public double devivate(double xpto) {
return 2 * a * xpto + b;
}
public double Integral(double x1, double x2) {
return (a * Math.pow(x2, 3.0)) / 3
+ (b * Math.pow(x2, 2.0)) / 2
+ c* x2
-
(a * Math.pow(x1, 3.0) / 3
+ (b * Math.pow(x1, 2.0)) / 2
+ c * x1);
}
public Point[] plot(double Limit_inferior, double Limit_superior, int n) {
Point [] xp=new Point [n];
Parabola X=new Parabola(this.a, this.b, this.c);
double inter_iguais=(Limit_superior-Limit_inferior)/n;
while(Limit_inferior<Limit_superior){
//int i=(int) inter_iguais;
xp[0]=new Point(0, X.value(0));
for(int j=1; j<xp.length; j++){
xp[j]=new Point(inter_iguais, X.value(inter_iguais));
inter_iguais++;
}
}
return xp;
}
a main do codigo…
[code]
package poo;
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
task_D();
}
public static void task_D() {
Scanner in = new Scanner(System.in);
String aux;
String aux_b;
Point[] xpcabra;
String[] xp;
String []xpto;
double a, b, c, l_inf, l_sup;
int n_interv;
aux = in.nextLine();
xp = aux.split(" ");
while(in.hasNextLine()){
a = Double.parseDouble(xp[0]);
b = Double.parseDouble(xp[1]);
c = Double.parseDouble(xp[2]);
Parabola p = new Parabola(a, b, c);
aux_b = in.nextLine();
xpto = aux_b.split(" ");
l_inf = Double.parseDouble(xpto[0]);
l_sup = Double.parseDouble(xpto[1]);
n_interv = Integer.parseInt(xpto[2]);
xpcabra = p.plot(l_inf, l_sup, n_interv);
for (int i =0; i<xpcabra.length; i++){
System.out.printf("%.2f ",xpcabra[i]);
}
System.out.println();
}
}
}[/code]
aguardo ajuda…
valeu pessoal