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

適切に小さい値の場合epsilonf線形であるため、の妥当な値はepsilon基本的に同じ結果になります。より一般的な関数fの場合、使用する良いepsilonものを選択する微妙さは、SOポストで説明するには完全に微妙すぎます-アッパーに登録します-学部数値解析コース)。

ただし、「人間」の方法は避けたいので、線形方程式の特定のケースでは、ニュートン法は常に1回の反復で収束し、実際には通常の代数的解法の手法と本質的に同等です。

これを説明するために、あなたの例を考えてみましょう。ニュートン法を使用するには、f(x)=0のように方程式を変換する必要があります。

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

So f(x) = 5x + 4 - (2x + 3). The derivative of f(x) is f'(x) = 5 - 2 = 3. If we start with an initial guess x0 = 0, then Newton's method gives us:

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

This is actually exactly the same operations that a human would use to solve the equation, somewhat subtly disguised. Taking the derivative isolated the x terms (5x - 2x = 3x), and evaluating at zero isolated the terms without an x (4-3 = 1). Then we divided the constant coefficient by the linear coefficient and negated to get x.

于 2013-01-03T21:39:15.780 に答える
0

新しいアルゴリズムを使用したり、古いアルゴリズムを書き直したりしたくない場合は、方程式ソルバーを使用できます。

于 2013-01-03T21:29:02.037 に答える