-1

私はどの言語でもプログラムを書くのが初めてで、Cで動作すると思われる単純なNewton-Raphsonメソッドを書こうとしています(コンパイルはしていませんが、動作した以前の例から行っているので、これを作成しています仮定)しかし、Javaからメソッドを呼び出す方法が正確にわからないことに気づきました...これらのエラーが発生しています:

NewtRaphEx.java:5: class, interface, or enum expected
double f = (double); 
^
NewtRaphEx.java:6: class, interface, or enum expected
double df = (double); 
^
NewtRaphEx.java:39: class, interface, or enum expected
double f(double x) {
^

f メソッドと df メソッドを間違って呼び出していると思いますか? これは宿題の質問ではなく、単に私自身の練習です!

これまでの私のプログラムは次のとおりです。

/* Newton Raphson Method*/

import Scanner.java.util; 

double f = (double); 
double df = (double); 

public class NewtRaphEx {

    public static void main (String[] args) {

        double xn, e_allow, fn, fnew, eps, dfn, dfnew; 
        int n;
        int nMax = 10000;

        e_allow = 0.001;
        xn = 0.6;

        while (eps <= e_allow || n < nMax) {
            for (n = 0; n <= nMax; n++) {
                fn = f(xn); 
                dfn = df(xn);
                dx = -(fn / dfn); 
                xnew = xn + dx; 
                eps = Math.abs(dx / xn);
                n = n + 1; 
                System.out.println("N" + "\t" + "X" + "\t" + "F(x)" + "\t" + "dF(x)" + "\t" + "delX" + "\t" + "X_new" + "\t" + "Epsilon");
                System.out.println(n + "\t" + xn + "\t" + fn + "\t" + dfn + "\t" + dx + "\t" + xnew + "\t" + eps);
            }
        }
    }
}



// Creating Function f = x - cos(3.5x)

double f(double x) {
    return (x - cos(3.5 * x)) 
}

double df (double x) {
    return (1 + sin(3.5 * x))
}
4

4 に答える 4

1

Java は、多くの点で C/C++ とは異なります。たとえば、(この問題に特に)クラス定義内でほとんどすべてのものが必要であるなどです。

package ...

import ...

public class NewtRaphEx {
   ...
}

したがって、パッケージは名前空間を定義し、インポートはスコープ内にある名前空間を定義し、クラス定義 (.javaファイル名と同じ名前) には他のすべてが含まれます。ファイル内には public クラスを1 つしか持てないことに注意してください.java(Java はこのように制限されています)。

上記のあなたの質問を考えると、良い出発点はすべてをmain()メソッド内に置くことだと思います(mainCプログラムに似ています)。

public class NewtRaphEx {
   public static void main(String[] args) {
       // put your code here...
   }
}
于 2014-02-13T15:09:24.290 に答える
0

最後の回答で申し訳ありません(よく読んでいませんでした)。

2 つの問題があります。

(1) d と df は関数/メソッドであり、変数ではありません。次に、関数/メソッドがファイルの下部で宣言されているため、上部の宣言を安全に削除できます。

//Delete this
double f = (double);
double df = (double); 

(2) 静的関数 (main) 内でメンバー関数 (f および df) を呼び出そうとしています。それはうまくいきません。次に、これらの関数を静的として宣言し、クラス内に移動する必要があります。

 static double f(double x) {
        return (x - cos(3.5 * x)) 
    }

    static double df (double x) {
        return (1 + sin(3.5 * x))
    }
}
于 2014-02-13T15:19:03.850 に答える