非線形方程式を解くための割線法
割線法は、非線形方程式を解くためにも使用されます。この方法はニュートンラプソン法に似ていますが、ここでは関数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
-
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]] それで仕事は終わりますが、きれいではありませんよね?
-
PC で Warzone が起動しない問題を解決する方法
Call of Duty:Warzone は、世界中の何百万人もの人々がプレイするアクション アドベンチャー ゲームです。ただし、PCでWarzoneが起動しないというエラーに直面すると、イライラします.このガイドでは、さまざまなゲーム フォーラムから専門家が推奨する方法をまとめたので、この 1 つの記事を参照して PC で Call of Duty Warzone が起動しない問題を解決できます。 コール オブ デューティ ウォーゾーンが PC で起動しない問題を解決する方法 以下に示すように、この問題を解決するために従うことができるいくつかの方法があります。メソッドに従う必要はな