2017-04-19 15 views
2

ニュートンラプソン法のデータは、きちんとした配列の二次方程式だけのために表にしたいと思っていました。私がやりにくいのは、配列内の変数を割り当てることです。前のxn1の値を後続の行のxnの値に割り当て、配列に二重の値を割り当てます。ニュートンのRaphsonsメソッドJava

たとえば、(私のコードでは)(n、xn、fxn、dfxn、xn1)などの変数があります。私はこれらの変数の値をそれぞれのヘッダーの下に以下のイメージのように割り当てたいと思っていました。 [画像]で

enter image description here

、最初の行のXN + 1の値は、2行目のXN値となります。私はそれをするのに苦労している。私はfor loopの最後にxn = xn1をしようとしましたが、それはうまくいかないようです。

最後に、変数の値をdouble array[][]に割り当てようとするたびに、double cannot be converted to double[]というエラーが表示されます。

コード:このとして

import java.util.Scanner; 
import java.lang.Math; 
import java.util.Formatter; 

public class Newton { 
    static double a, b, c; 
    static double n = 1; 
    static double xn; 
    static double fxn; 
    static double dfxn; 
    static double xn1; 

    public static void main(String args[]) { 
     Scanner s = new Scanner(System.in); 
     System.out.println("Enter a"); 
     double a = s.nextDouble(); 
     System.out.println("Enter b"); 
     double b = s.nextDouble(); 
     System.out.println("Enter c"); 
     double c = s.nextDouble(); 
     System.out.println("Enter The value you want to start with"); 
     double xn = s.nextDouble(); 
     fxn = a * Math.pow(xn, 2) + b * xn + c; 
     dfxn = 2 * a * xn + b; 
     xn1 = xn - (fxn/dfxn); 
     double array[][] = { n, xn, fxn, dfxn, xn + 1 }; 
     System.out.println(); 
     System.out.println("n\t" + "Xn\t" + "fXn\t" + "dfXn\t" + "Xn+1"); 
     array(array); 
    } 

    public static void array(int x[][]) { 
     for (int row = 0; row < x.length; row++) { 
      for (int column = 0; column < x[row].length; column++) { 
       System.out.print(x[row][column] + "\t"); 
      } 
      System.out.println(); 
     } 
    } 
} 

答えて

1

xn+1であるので、ここで

double[][] array = new double[][]{ 
      { n, xn, fxn, dfxn, xn+1} 
     }; 

double array[][] = {n, xn, fxn, dfxn, xn+1};

それが2Dアレイであるので、異なる次いで、他の配列に初期化されます操作には、それを配列に割り当てるために括弧でくくってください:

double[][] array = new double[][]{ 
      { n, xn, fxn, dfxn, (xn+1)} 
     }; 

また、array(array);を呼び出すと、doubleの配列をintメソッドに渡そうとしています。メソッドのコンストラクタを変更してみてください:リソースを防ぐために

public static void array(double[][] array){ 
    //... 
} 

最後に、あなたがあなたのarrayメソッドを呼び出す前に、あなたのscannerを閉じる必要がを漏らす:s.close();

1

私が発見されたエラー/ミスあなたのコード

  1. はを倍にする代わりにダブルス
    の配列を仮調印されています
    それは、あなたは決して近いSTRAM s代わりにあなたが方法array
    のためのメソッドのシグネチャを変更する必要がありますdouble array[][] = { { n, xn, fxn, dfxn, xn + 1 } };

  2. public static void array(int x[][]) {
    使用public static void array(double x[][]) {

  3. でなければなりません。
    メインメソッドの最後にs.close()を追加します。

関連する問題