java - 如何在java中计算2 n次的近似自然对数?
问题描述
如果这听起来不太好,请原谅我,我的英语不是最好的。到目前为止,我的代码是这样的:即使我知道我做错了很多。我知道这是错误的,但我不知道从哪里开始或如何更改标志。起初我这样做的想法是我们需要找到不同数字的 ln,但后来才知道它是输入 n。编辑:我相信我知道我做错了什么主要部分。我尽我所能解决了这个问题。我现在有点卡住了,因为我正在脑中发挥逻辑,我相信它应该可以工作。相反,它打印出来的只是 1.0 1.0 1.0 1.0 1.0
谁能帮忙指出我做错了什么?
公共类 aprox_log {
static double findLog (int n)
{
double ln = 1;
for (int i = 1; i <= n; i++)
{
for (int k = 0; i <= n; k++) {
if ((k%2) == 0)
ln = ln - (1/i);
ln = ln + (1/i);
}
}
return 1 - ln;
}
public static void main(String[] args) {
//These lines print the results of test inputs.
System.out.println(findLog(2)); //~0.69314718056
System.out.println(findLog(5)); //~1.60943791243
System.out.println(findLog(10)); //~2.30258509299
System.out.println(findLog(9)); //~2.19722457734
System.out.println(findLog(1)); //0
}
}
新代码:
public class aprox_log {
static double findLn (int n)
{
double ln = 0;
for (int i = 1; i <= n; i++)
{
if (i%2 == 0)
ln = ln - (1/i);
ln = ln + (1/i);
}
return ln;
public static void main(String[] args) {
//These lines print the results of test inputs.
System.out.println(findLn(2)); //0.5
System.out.println(findLn(5)); //0.783333333
System.out.println(findLn(10)); //0.64563492063
System.out.println(findLn(9)); //0.74563492063
System.out.println(findLn(1)); //1
}
}
`
解决方案
要找到具有项的交替调和级数之和n
,只需遍历从 1 到 的整数n
。然后,如果是奇数,则加上当前数的倒数,如果是偶数,则减去倒数。
static double findLog(int n){
double res = 0;
for(int i = 1; i <= n; i++) res += 1d / (i % 2 == 0 ? -i: i);
return res;
}
推荐阅读
- excel - 如何通过列的数值定义范围?
- python - 升级到 Grakn 核心和 python API 1.8.1 使几个 Type 方法失败 - 如何修复它?
- javascript - 如何处理从 Node Express 重定向到 React 客户端的身份验证(react-router-dom 和 useContext)
- php - 连接失败:SQLSTATE [HY000] [2002] 尝试通过 Docker 连接 MySQL 时连接被拒绝
- javascript - 对象键值切换的Javascript数组
- android - 导航组件 - BottomNavigationView - 返回时不要保留 startDestination 片段
- azure - 从 VPN SETTINGS 工作但不是 RASPHONE - 自定义脚本(更新您的路由表)失败 (8007026f)
- mysql - MySQL says "Unexpected Identifier" and "missing /"
- python - Creating a percentage column based on the values in a column in python
- httprequest - Why does an HTTP request to google images return the image as gstatic