Java - Biseccion

 
Vista:
sin imagen de perfil

Biseccion

Publicado por JUAN MARTINEZ (1 intervención) el 12/03/2023 00:49:13
package ui;
import java.util.Scanner;
public class Proyecto{
public static void main(String[] arg){
Scanner reader = new Scanner(System.in);
double a;
double b;
int option=0;
double e=0.0000001;
double c;
int x;
double error=0;
double n;

while(option!=4){
menu();
option = reader.nextInt();


if(option==1){
System.out.println("Ingrese el valor de a, en la funcion: ");
a = reader.nextDouble();
System.out.println("Ingrese el valor de b, en la funcion: ");
b = reader.nextDouble();

n=abs(b-a);
do{
c=(a+b)/2;
System.out.println(c);
if(f1(a)*f1(b)<0){
b=c;
}else{
a=c;
}
error=(abs(b-a)/(2*n));
}while(error>e);

if(c==0){
System.out.println("La raiz no existe");
}else{
System.out.println("El valor de c: "+c);
double result = f1(c);
System.out.println("El resultado es: "+result);
}


}else if(option==2) {
System.out.println("Ingrese el valor de x");
x = reader.nextInt();
double result2 = f2(x);
System.out.println("El resultado es: " + result2);

}else if(option==3) {
System.out.println("Ingrese el valor de a, en la funcion: ");
a = reader.nextDouble();
System.out.println("Ingrese el valor de b, en la funcion: ");
b = reader.nextDouble();

do{
c=(a+b)/2;
if(f3(a)*f3(b)<0){
b=c;
}else{
a=c;
}
}while(f3(c)>e);
double result3 = cose(c);
System.out.println("El resultado es: " + result3);
System.out.println("El valor de c: "+c);

}else if(option==4){
System.out.println("'Salio exitosamente'");

}else{
System.out.println("Funcion no valida");
}
}
}

//funcion del menu de opciones
public static void menu(){
System.out.println("");
System.out.println("Ingrese la funcion a operar: ");
System.out.println("1. y = 2Cos(x^2)");
System.out.println("2. y = 3x^3+7x^2+5");
System.out.println("3. y = xCos(x)");
System.out.println("4. Salir");
}

//metodo funcion 1, coseno x 2.
public static double f1(double x){
double function=2*cose(pow(x,2));
return function;
}

//metodo funcion 2, polinomio
public static double f2(double x){
double function=3*pow(x,3)+7*pow(x,2)+5;
return function;
}

//metodo funcion 3, coseno
public static double f3(double x){
double function=x*cose(x);
return function;
}

//metodo del factorial
public static double factorial(double x) {
double resultfactory = 1;
for (double i = 1; i <= x; i++) {
resultfactory *= i;
}
return resultfactory;
}

//metodo sobre potenciacion de un numero
public static double pow(double x, double n){
double resultpow = 1;
for (int i = 1; i <= n; i++) {
resultpow *= x;
}
return resultpow;
}

//metodo de valor absoluto
public static double abs(double x) {
if (x >= 0) {
return x;
} else {
return -x;
}
}

//metodo definitivo del coseno
public static double cose(double x){
double resultcos = 0;
for (int i = 0; i < 50; i++) {
resultcos += ((pow(-1,i))*pow(x,(2*i))/(factorial((2*i))));
}
return resultcos;
}
}


tengo este codigo, pero no me da el valor exacto del coseno en un intervalo [1,30] que es 1.2533, me da 1.2265, alguien que me diga porque es el error
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

Biseccion

Publicado por Tom (1831 intervenciones) el 12/03/2023 20:05:06
Me parece que 1.2533 no es el coseno de nada ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar