我知道下面的代码有点粗糙,我只需要在清理之前让它工作。我正在研究newton raphson的方法,只要条件通过就会重复。这是我到目前为止所拥有的
import java.util.Scanner;
import static java.lang.System.out;
import static java.lang.System.in;
public class NewtonRaphson {
public static float intervalfunctions(float b){
return ((b*b*b)-3*b+1);
}
public static float differentiatedfunctions(float b) {
return (3*(b*b)-3);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner myScanner = new Scanner(in);
out.println("PROGRAMME TO SOLVE NEWTON'S SCHEME");
float E, Z, F, D, G,FF,fa,fb,b,fx,ffx,x1;
float x[] = new float[10];
out.println("Enter the accauracy required");
E = myScanner.nextFloat();
out.println("Enter the first Interval");
D = myScanner.nextFloat();
out.println("Enter the final interval");
G = myScanner.nextFloat();
fa = intervalfunctions(D);
fb = intervalfunctions(G);
if ((fa * fb)<0) {
out.println("The Solution exists between the given interval");
x[0] = (D+G)/2;
fx = intervalfunctions(x[0]);
ffx = differentiatedfunctions(x[0]);
x[1] = x[0] - (fx/ffx);
out.println("x[1] is ");
out.print(x[1]);
}
现在我需要一种方法loop x
以及x0
更改为x1
和x1
至x2
的下一个值的差异化函数容错10^-2
。我知道我肯定需要一个while loop
,也许还需要一个for loop
,但我需要一种方法来遍历我的x array
..我无法为(x[1++])
执行此操作。我还需要一种方法来为x
的每个新值循环我的方法。
答案 0 :(得分:0)
我不能说我正在追踪你想要计算的东西,但是如果我理解你的解释,你需要一个类似于此的循环:
x[0] = (D+G)/2;
fx = intervalfunctions(x[0]);
ffx = differentiatedfunctions(x[0]);
for (int i = 1; i < 10; i++) {
x[i] = x[i-1] - (fx/ffx);
fx = intervalfunctions(x[i]);
ffx = differentiatedfunctions(x[i]);
}