2011-11-19 3 views
0

J'ai cette équation que je veux résoudre avec une application Java.Java: équations simultanées

Il ressemble à ceci

y*n-1 = y*n-2 + 1035 + [(n-1)^2 + (n-3)] * y 
y*n = y*n-1 + (n^2 * y) 

Ainsi, l'utilisateur doit d'entrée N et l'application Java doit calculer combien Y est. Est-ce que c'est en quelque sorte possible de faire et si oui, comment? Merci d'avance, Michael.

EDIT:

Merci à mprabhat, il ressemble à ce moment, mais je fais encore mal en quelque sorte ..

public class equation 
    { 


private static double solveFirstEquation(double n){ 
    double y =0; 
    if(n > 0) { 
     y = ((n -1) + Math.pow(n , 2))/ n; 
    } 
    return y; 
} 

private static double solveSecondEquation(double n){ 
    double y = 0; 
    if(n > 1) { 
     y = ((n-2)+ (Math.pow(n-1, 2) + n-3) + 1035)/(n-1); 
    } 
    return y; 


} 
public static void main(String args[]) 
{ 
System.out.println("How much is n?"); 
int n = 0; 
n = Keyboard.readInt(); 
} 
    } 

J'ai essayé de mettre les « cordes principales vides args » dans le haut mais cela ne me laisserait pas courir l'application.

+1

il est possible, vous devriez essayer de les revenir pour les questions – thumbmunkeys

+0

ce qui est clavier ici? Est-ce votre propre classe? Ou essayez-vous de lire depuis la console? – mprabhat

+0

@MocialovBoris, ah, vous n'étiez pas sûr de la différence entre '[' et '('.) Mentionner spécifiquement thatt serait beaucoup plus clair que de dire que quelque chose "semble ambigu", vous n'êtes pas d'accord? Maintenant, retirez votre (s) commentaire (s) en toute sécurité car il n'est plus _ambiguous_ pour vous. :) –

Répondre

1

Quelque chose comme ceci:

import java.util.Scanner; 

public class TestEquation { 

private static double solveFirstEquation(double n) { 
    double y = 0; 
    if (n > 0) { 
     y = ((n - 1) + Math.pow(n, 2))/n; 
    } 
    return y; 
} 

private static double solveSecondEquation(double n) { 
    double y = 0; 
    if (n > 1) { 
     y = ((n - 2) + (Math.pow(n - 1, 2) + n - 3) + 1035)/(n - 1); 
    } 
    return y; 

} 
public static void main(String args[]) { 
    System.out.println("How much is n?"); 
    double n = 0; 
    Scanner scanner = new Scanner(System.in); 
    n = scanner.nextDouble(); 
    System.out.println(solveFirstEquation(n)); 
    System.out.println(solveSecondEquation(n)); 
} 

}

+0

Merci beaucoup pour votre aide, mais j'ai quelques problèmes pour le faire fonctionner correctement, s'il vous plaît jetez un coup d'œil au post principal. Je vais éditer avec mon code complet. – Michael

+0

ok, j'ai placé la classe avec la méthode principale – mprabhat

+0

Hmm l'équation doit être incorrecte quelque part. A la main je reçois (n = 3) y = 460 – Michael

0

Si vous voulez résoudre cette équation particulière La première consiste à convertir l'équation à y= forme

/* 
* y*n-1 = y*n-2 + 1035 + [(n-1)^2 + (n-3)] * y 
* y = -1034 /(n^2-n-2) 
*/ 
public static double eq1(double n){ 
    double m =n*n-n-2; 
    return -1034 /m; 
} 

/* 
* y*n = y*n-1 + (n^2 * y) 
* y = 1/n^2 
*/ 
public static double eq2(double n){ 
    return 1/(n*n); 
} 

Manière d'amusement est d'utiliser wolframalpha!

1

Remplacez votre main avec quelque chose comme

public static void main(String args[]) 
{ 
    System.out.println("How much is n?"); 
    try 
    { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     int n = Integer.parseInt(br.readLine()); 
     System.out.print("First equation: "); 
     System.out.println(solveFirstEquation(n)); 
     System.out.print("Second equation: "); 
     System.out.println(solveSecondEquation(n)); 

    } 
    catch (IOException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
+0

Eh bien, je ne peux pas exécuter "BufferedReader" et "InputStreamReader". Ai-je besoin d'ajouter quelque chose en haut du code comme une bibliothèque? – Michael

+0

Vous devez importer BufferedReader et InputStreamReader comme import java.io.BufferedReader; import java.io.InputStreamReader; – mprabhat

Questions connexes