方程式の根のためのニュートン反復法

第二エッセイ

後半11月9102において、f(x)の式がある式f(x)は= 0のルートを計算するには**男性曹操エンジニアリング:

Fの実数の範囲(x)のため=すぎる根の0、これだけ研究ので-2 <<ケースのX 2。この式Fを与えるために長い醜い、ツァオ**は不快感を見て、ガイド「(x)は

この式は、より醜いであるが、我々は、ニュートン反復法は、反復配列{XN}出会うを構築することができる持っています。

F「(XN)が0に等しくない、請求それは長い良い選択の初期値としてとして示すことができ、シーケンスは、ルートに収束するために必要とされ得る。ルートは、プログラムを書くことができます。

(Desmosによって引き出される)最初の画像上の機能、指定した範囲に見られる5ゼロがある。そして、それはゼロ値付近。

そして、実際には

 

結果は良好です。

最後に、コード.F(X)とf「(x)関数は、渡されたCALC委任方法。メモデリゲートのインスタンス化

公共 の委任 機能 myfunc関数(X として ダブルとして ダブル
Public Function func0(x As Double) As Double
    Return Exp(x) + Pow(x, 4) * Sin(Pow(x, 3))
End Function
Public Function func0derive(x As Double) As Double
    Return Exp(x) + 4 * Pow(x, 3) * Sin(Pow(x, 3)) + 3 * Pow(x, 6) * Cos(Pow(x, 3))
End Function
Dim f0 As New myfunc(AddressOf func0)
Dim fd0 As New myfunc(AddressOf func0derive)

 

calc的参数中f和fd分别是指向f(x)和f'(x)的函数指针,x0为初值,eps为精度,cnt为迭代次数

用传引用的方式,通过sol返回计算结果.

返回True为没有出错,False为出错.

 1 Public Function Calc(f As myfunc, fd As myfunc, x0 As Double, eps As Double, cnt As Integer, ByRef sol As Double) As Boolean
 2         If cnt <= 0 Or f Is Nothing Or fd Is Nothing Then
 3             Return False
 4         End If
 5         Try
 6             sol = 0
 7             Dim x As Double = x0, c0 As Integer = 0
 8             While Math.Abs(x) > eps And cnt > c0
 9                 x = x - f(x) / fd(x)
10                 c0 += 1
11             End While
12             sol = x
13             Return True
14         Catch ex As Exception
15             Return False
16         End Try
17     End Function

 

 

おすすめ

転載: www.cnblogs.com/woshilxcdexuesheng/p/11964097.html