java - 用java求解一个复杂的代数公式
问题描述
我正在尝试使用 Java 在以下等式中求解 y:
为了可见性,我将分子和分母分成单独的变量。我需要x = -3
通过x = 4
以0.5
.
for(double x = -3; x <= 4; x += .5)
{
// Now we compute the formula for all values in between -3 and 4 in increments of 0.5
double top = ( 9 * Math.pow(x, 3) ) - ( 27 * Math.pow(x, 2) ) - ( (4 * x) + 12 );
double bottom = ( Math.pow(( 3 * Math.pow(x, 2) + 1 ) , 1/2) + Math.abs( 5 - (Math.pow(x, 4)) ) );
double y = top / bottom;
System.out.print("X = " + x + "\t Y = " + y);
}
我得到的值不符合预期。
X = -3.0 Y = -6.311688311688312
X = -2.5 Y = -8.880570409982175
X = -2.0 Y = -15.333333333333334
X = -1.5 Y = -91.41176470588235
X = -1.0 Y = -8.8
X = -0.5 Y = -3.0105263157894737
X = 0.0 Y = -2.0
X = 0.5 Y = -3.305263157894737
X = 1.0 Y = -6.8
X = 1.5 Y = -45.529411764705884
X = 2.0 Y = -4.666666666666667
X = 2.5 Y = -1.429590017825312
X = 3.0 Y = -0.3116883116883117
X = 3.5 Y = 0.19940094137783482
X = 4.0 Y = 0.4603174603174603
使用在线工具计算 X = 0 并得到 2 而不是 -2。我做数学的方式有问题吗?
解决方案
您在实现表达式时犯了一个错误。
... - ( (4 * x) + 12 )
应该
... - (4 * x) + 12
或者在完整的表达式中:
double top = ( 9 * Math.pow(x, 3) ) - ( 27 * Math.pow(x, 2) ) - (4 * x) + 12;
正如@JacobG所指出的:
1/2
计算结果为 0,因为它是整数除法。如果您评估 for ,这没有任何区别x = 0
。这可以使用来纠正0.5
。
推荐阅读
- python - 解析可选的 Python 参数
- r - 如何在 R 中呈现 k-mean 的结果?
- php - 如何在php中使用if条件分配和检索数组中的值
- python - 如何修复 PyTorch TabNetRegressor 错误 1140?
- c# - 需要帮助在 C# 中重构 MongoDB 查询。我可以将 BsonDocument“转换”为 IMongoQuery 吗?
- r - 从 Pine 到 R 上下摆动
- javascript - 当我用 Next.js 加载 Stripe 并构建它时,会发生错误
- python - ndarray的矩阵乘法
- javascript - 将现场播放音频的声音加载到 p5js
- dll - TeamCity 使用 MSBUILD 创建 exe AND dll 输出,但在不同的地方?