プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

非線形方程式を解くための割線法


割線法は、非線形方程式を解くためにも使用されます。この方法はニュートンラプソン法に似ていますが、ここでは関数f(x)の微分を見つける必要はありません。 f(x)を使用するだけで、ニュートンの差商式を使用してf’(x)を数値的に見つけることができます。ニュートン-ラフソン法から

私たちはそれを知っています、

非線形方程式を解くための割線法

ここで、差商の公式を使用すると、次のようになります。

非線形方程式を解くための割線法 非線形方程式を解くための割線法 非線形方程式を解くための割線法

ニュートンラプソン公式のf’(x)を新しいf’(x)に置き換えることにより、非線形方程式を解くための割線公式を見つけることができます。

非線形方程式を解くための割線法

注: この方法では、非線形方程式の根を見つけ始めるために、任意の2つの初期推定が必要です。

入力と出力

Input:
The function f(x) = (x*x) - (4*x) - 10
Output:
The root is: -1.74166

アルゴリズム

secant(x1, x2)

入力: ルートの2つの最初の推測。

出力: 非線形方程式f(x)の近似根。

Begin
   f1 := f(x1)
   f2 := f(x2)
   x3 := ((f2*x1) – (f1*x2)) / (f2 – f1)
   while relative error of x3 and x2 are > precision, do
      x1 := x2
      f1 := f2
      x2 := x3
      f2 := f(x2)
      x3 := ((f2*x1) – (f1*x2)) / (f2 – f1)
   done
   root := x3
   return root
End

#include<iostream>
#include<cmath>
using namespace std;

double absolute(double value) {             //to find magnitude of value
   if(value < 0)
      return (-value);
   return value;
}

double f(double x) {              //the given function x^2-4x-10
   return ((x*x)-(4*x)-10);
}

double secant(double x1, double x2) {
   double x3, root;
   double f1, f2;
   f1 = f(x1);
   f2 = f(x2);
   x3 = (f2*x1-f1*x2)/(f2-f1);

   while(absolute((x3-x2)/x3) > 0.00001) {         //test accuracy of x3
      x1 = x2;           //shift x values
      f1 = f2;
      x2 = x3;
      f2 = f(x2);                 //find new x2
      x3 = (f2*x1-f1*x2)/(f2-f1);          //calculate x3
   }

   root = x3;
   return root;              //root of the equation
}

main() {
   double a, b, res;
   a = 0.5;
   b = 0.75;
   res = secant(a, b);
   cout << "The root is: " << res;
}

出力

The root is: -1.74166

  1. Array#zipメソッド

    違いを見つけることができるように、2つの配列を要素ごとに比較したいとします。 または、すべてのインデックスで最大の数値を見つけたい場合や、キーのリストと値のリストをマージしてハッシュを作成したい場合もあります… …これを行うための「難しい方法」は、次のようになります。 例 : a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.map.with_index { |_, idx| [a[idx], b[idx]] } # [[1, 1], [2, 2], [3, 3], [4, 6], [5, 8]] それで仕事は終わりますが、きれいではありませんよね?

  2. PC で Warzone が起動しない問題を解決する方法

    Call of Duty:Warzone は、世界中の何百万人もの人々がプレイするアクション アドベンチャー ゲームです。ただし、PCでWarzoneが起動しないというエラーに直面すると、イライラします.このガイドでは、さまざまなゲーム フォーラムから専門家が推奨する方法をまとめたので、この 1 つの記事を参照して PC で Call of Duty Warzone が起動しない問題を解決できます。 コール オブ デューティ ウォーゾーンが PC で起動しない問題を解決する方法 以下に示すように、この問題を解決するために従うことができるいくつかの方法があります。メソッドに従う必要はな