首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java进行数值求解

用Java进行数值求解
EN

Stack Overflow用户
提问于 2013-01-03 21:25:36
回答 2查看 1.6K关注 0票数 0

我希望在Java中结合一些线性代数解的数值求解的实现,如下所示:

5x +4= 2x +3

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

不过,我很难让它起作用。

有谁知道这样做的最佳一般方法,以及应该如何用代码(最好是Java)来完成?

附加

在Netwon的方法中,迭代直到近似达到可接受的精度为止。公式如下:

x1 = x0 - (f(x0) / (f‘(X0)

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

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

澄清

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-03 21:39:15

f'( x0 )是f在x0上求出的导数。通过计算,可以计算f‘的近似值:

代码语言:javascript
复制
f'(x0) ~ (f(x0+epsilon) - f(x0))/epsilon

对于一个合适的微小值epsilon (因为f是线性的,epsilon的任何合理值都会给出本质上相同的结果;对于更一般的函数,选择一个好的epsilon使用的微妙性完全是非常微妙的,无法在高级学系本科数值分析课程的入学后讨论)。

然而,既然你想避免“人”方法,我应该指出,对于线性方程组的具体情况,牛顿方法总是在一次迭代中收敛,实际上实质上等同于通常的代数解技术。

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

代码语言:javascript
复制
5x + 4 = 2x + 3
5x + 4 - (2x + 3) = 0

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

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2013-01-03 21:29:02

假设您不想使用一些新算法或重写旧算法,则可以使用方程求解器

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14147512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档