elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  programa java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: programa java  (Leído 7,528 veces)
Hiras

Desconectado Desconectado

Mensajes: 2


Ver Perfil
programa java
« en: 23 Mayo 2011, 23:52 pm »

hola a todos!
veréis se me resiste un ejercicio, y no sé ni por dónde pillarlo
trabajo en netbeans y se supone que debo ser capaz de resolverlo con selectivas e iterativas...pero no soy capaz de meterle mano :S

agradecería cualquier tipo de ayuda/consejo, gracias de antemano!!


Supongamos una ecuación f(x)=0, con raíz única en el intervalo (a, b). Obteniendo el punto medio del intervalo, m=(a+b)/2, pueden darse tres casos:
- Si f(m)=0 entonces m es la raíz.
- Si f(a) y f(m) tienen signos contrarios, como en la figura, la raíz está en el intervalo (a, m).
- Si no se cumple la condición anterior, la raíz estaría en el intervalo (m, b).
En los dos últimos casos se puede repetir el proceso para el nuevo intervalo, cada vez más pequeño.
Teniendo esto en cuenta, realizar un programa para obtener una aproximación a la raíz de la ecuación trascendente x-cos(x)=0 en el intervalo (0, π/2). El algoritmo finalizará cuando se encuentre un valor de m tal que |x-cos(x)|<ε o el número de iteraciones realizadas supere un determinado valor.


En línea

dakomt

Desconectado Desconectado

Mensajes: 76


Viking Metal


Ver Perfil
Re: programa java
« Respuesta #1 en: 29 Mayo 2011, 17:38 pm »

Consejos:

1. Create una funcion que te calcula el valor de f(x)...

  real f (real x){
    retorna x - cos(x);
  }
   
2. Opcional: create otra funcion para comprobar la condicion de parada
  booleano stop (real epsilon, real x){
     retorna f(x) < epsilon;
  }


3. El código principal de tu programa incluirá un bucle cuya condición de parada dependerá de la función anterior y donde solo tendrás que ir haciendo lso cálculos que especificas en los puntos ayudándote de la primera función f y unas cuantas variables para ir guardando los valores de a , b y m.

 



En línea

Hiras

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: programa java
« Respuesta #2 en: 3 Junio 2011, 12:49 pm »

gracias por la respuesta

te comento: return me suena de algo a recursividad, y no lo hemos dado en clase, por tanto no sé si me conviene utilizarlo para resolverlo

por otro lado he montado un código pero, evidentemente, no me entra en el bucle que deseo y la verdad no encuentro manera de solucionarlo

import java.util.*;
public class p6ej2 {

    public static void main(String[] args) {
        // Declaro variables
        double m,f1,f2,f3,E,pi,b,a;
        int i,nIt;

        //Se crea el objeto 'teclado' de clase Scanner
        Scanner teclado = new Scanner(System.in);

        //Se invoca al método println() del objeto System.out para
        //mostrar en pantalla un mensaje informativo sobre el programa
        System.out.println ("Raíz de la ecuación trascendenteal"
                + "x-cos(x)");

        //Pido al usuario que introduzca desde teclado el número máximo
        //de iteraciones a realizar y el error
        System.out.println("Introducir número máximo de iteraciones:");
        nIt = teclado.nextInt();
        System.out.println ("Introducir error:");
        E = teclado.nextDouble();

        //Inicializo
            a = 0;
            pi = 3.1416;
            b = pi/2;
            i = 0;
            m = (a+b)/2;
            f1 = m - Math.cos (m);

        //Estructura para resolver el problema
        while ((i< nIt) && (Math.abs(f1)>E)){

            f2 = a - Math.cos (a);
            f3 = b - Math.cos (b);

            if((f1>0 && f2<0)||(f2>0 && f1<0)) {
                //La raíz se encuentra en (a,m)
                b = m;
            }else {
                //La raíz se encuentra en (m,b)
                a = m;
            }
            i = i +1;
        }

            //Escribo la aproximación a la raíz de x-cos(x)
            System.out.println("La aproximación a la raíz de x-cos(x) es:"
                    + m);
            }

        }

simplemente se me queda en la primera aproximación..
En línea

dakomt

Desconectado Desconectado

Mensajes: 76


Viking Metal


Ver Perfil
Re: programa java
« Respuesta #3 en: 4 Junio 2011, 05:32 am »

el retorna que te puse anteriormente o return no tiene que ver con la recursividad.. es sólo la instrucción para devolver el resultado de una función pero bueno ya lo veras en clase a su debido tiempo  ;)


El problema que tienes ahora está dentro del bucle en el "if".... te faltan 2 detalles... uno tiene que ver con f3  y otro con f1 ... el primero tienes que usarlo en las comprobaciones y el segundo tienes que actualizarlo en consecuencia.

Animo que ya casi lo tienes!  ;D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
programa de Java
Java
belerofonte 1 3,071 Último mensaje 17 Marzo 2005, 09:18 am
por Ambolius
Programa java
Java
JUSEMS 1 2,603 Último mensaje 12 Junio 2005, 15:48 pm
por Ragnarok
Ayuda Programa Java
Java
supersergio88 2 3,206 Último mensaje 1 Junio 2011, 00:45 am
por Littlehorse
AYUDA CON PROGRAMA EN JAVA
Java
RADIACTIVO 4 3,036 Último mensaje 19 Octubre 2012, 17:01 pm
por RADIACTIVO
Duda con programa java
Java
Gm3z 1 3,191 Último mensaje 4 Diciembre 2012, 14:00 pm
por Gm3z
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines