Autor
|
Tema: programa java (Leído 7,528 veces)
|
Hiras
Desconectado
Mensajes: 2
|
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
Mensajes: 76
Viking Metal
|
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
Mensajes: 2
|
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
Mensajes: 76
Viking Metal
|
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!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
programa de Java
Java
|
belerofonte
|
1
|
3,071
|
17 Marzo 2005, 09:18 am
por Ambolius
|
|
|
Programa java
Java
|
JUSEMS
|
1
|
2,603
|
12 Junio 2005, 15:48 pm
por Ragnarok
|
|
|
Ayuda Programa Java
Java
|
supersergio88
|
2
|
3,206
|
1 Junio 2011, 00:45 am
por Littlehorse
|
|
|
AYUDA CON PROGRAMA EN JAVA
Java
|
RADIACTIVO
|
4
|
3,036
|
19 Octubre 2012, 17:01 pm
por RADIACTIVO
|
|
|
Duda con programa java
Java
|
Gm3z
|
1
|
3,191
|
4 Diciembre 2012, 14:00 pm
por Gm3z
|
|