0

我正在寻找在Java中为线性代数解决方案合并某种数值求解的实现,如下所示:

5x + 4 = 2x + 3

理想情况下,我希望尽可能少地解析,并避免使用传统的“人类”解决方案方法(即组合类似的术语等)。我一直在研究牛顿法并插入 x 的值来近似解决方案。

我很难让它工作。

有谁知道最好的通用方法,以及应该如何在代码中完成(最好是 Java)?

额外的

在 Netwon 方法中,您进行迭代直到近似值达到可接受的精度。公式如下所示:

x1 = x0 - (f(x0) / (f'(x0))

其中 x1 是迭代中 x 的下一个值,而 x0 是当前值(或者如果在第一次迭代时开始猜测)。

f素数是什么?假设 f(x0) 是您当前 x 估计的函数,那么 f'(x0) 代表什么表达式?

澄清

这仍然是一个如何编程这个数学评估的问题,而不仅仅是如何做数学。

4

2 回答 2

1

f'(x0) 是在 x0 处计算的 f 的导数。您可以通过评估来计算 f' 的近似值:

f'(x0) ~ (f(x0+epsilon) - f(x0))/epsilon

对于一个适当的小值epsilon(因为f是线性的,任何合理的值epsilon都会给出基本相同的结果;对于更一般的函数f,选择epsilon要使用的商品的微妙之处完全太微妙了,无法在 SO 帖子中讨论——注册上-师本科数值分析课程)。

但是,由于您要避免“人为”方法,我应该指出,对于线性方程组的特定情况,牛顿法总是在一次迭代中收敛,实际上本质上等同于通常的代数求解技术。

为了说明这一点,请考虑您的示例。要使用牛顿法,需要对方程进行变换,使其看起来像 f(x) = 0:

5x + 4 = 2x + 3
5x + 4 - (2x + 3) = 0

所以f(x) = 5x + 4 - (2x + 3)。的导数f(x)f'(x) = 5 - 2 = 3。如果我们从一个初始的猜测开始x0 = 0,那么牛顿的方法会给我们:

x1 = x0 - f(x0)/f'(x0)
   = 0 - (5*0 + 4 - (2*0 + 3))/3
   = 0 - (4-3)/3
   = -1/3

这实际上与人类求解方程所使用的操作完全相同,只是经过了巧妙的伪装。取导数隔离x项 ( 5x - 2x = 3x),并在零处求值隔离没有x( 4-3 = 1) 的项。然后我们将常数系数除以线性系数并取反得到x

于 2013-01-03T21:39:15.780 回答
0

假设您不想使用一些新算法或重写旧算法,您可以使用equation solver

于 2013-01-03T21:29:02.037 回答