gpt4 book ai didi

Java程序以10^-6精度确定嵌套根式常量的值

转载 作者:行者123 更新时间:2023-11-30 07:01:57 30 4
gpt4 key购买 nike

嵌套根式常量定义为:

nested radical constant

我正在编写一个 Java 程序来计算 10^-6 精度的嵌套根式常量的值,并打印达到该精度所需的迭代次数。这是我的代码:

public class nested_radical {

public nested_radical() {
int n = 1;

while ((loop(n) - loop(n - 1)) > 10e-6) {
n++;
}
System.out.println("value of given expression = " + loop(n));
System.out.println("Iterations required = " + n);
}

public double loop(int n) {
double sum = 0;
while (n > 0) {
sum = Math.sqrt(sum + n--);
}
return (sum);
}


public static void main(String[] args) {
new nested_radical();
}

}

这段代码完成了它应该做的事情,但是速度很慢。我应该做什么来优化这个程序?有人可以建议另一种可能的方法来实现这个程序吗?

我也想在 MATLAB 中编写类似的程序。如果有人也能将此程序翻译成 MATLAB,那就太好了。

最佳答案

我对此代码进行了一些更改,现在它存储 loop(n - 1) 的值,而不是每次都计算它。现在这个程序看起来比以前优化了很多。

public class nested_radical {

public nested_radical() {
int n = 1;
double x = 0, y = 0, p = 1;
while ( p > 10e-6) {
y=x; /*stored the value of loop(n - 1) instead of recomputing*/
x = loop(n);
p = x - y;
n++;
}
System.out.println("value of given expression = " + x);
System.out.println("Iterations required = " + n);
}

public double loop(int n) {
double sum = 0;
while (n > 0) {
sum = Math.sqrt(sum + n--);
}
return (sum);
}


public static void main(String[] args) {
new nested_radical();
}

}

我还在 MATLAB 中成功翻译了这段代码。下面是 MATLAB 的代码:

n = 1;
x = 0;
p = 1;
while(p > 10e-6)
y = x;
sum = 0;
m=n;
while (m > 0)
sum = sqrt(sum + m);
m = m - 1;
end
x = sum;
p = (x-y);
n = n + 1;
end
fprintf('Value of given expression: %.16f\n', x);
fprintf('Iterations required: %d\n', n);

关于Java程序以10^-6精度确定嵌套根式常量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40770987/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com