ホームページ  >  記事  >  コンピューターのチュートリアル  >  matlabにおける非線形方程式の反復法の実装方法を詳しく解説

matlabにおける非線形方程式の反復法の実装方法を詳しく解説

WBOY
WBOY転載
2024-01-08 16:06:35839ブラウズ

非線形方程式系反復法の Matlab 実装の詳細な説明

ニュートン反復法:

関数[x0,n]=ニュートン(fx,dfx,x0,tol,N)

% ニュートン反復法

% 最初のパラメータ fx は、変数 x に関する目的の関数式です。

% 2 番目のパラメーター dfx は、fx の 1 次導関数です。

% x0 は反復の初期値です。

% tol は反復誤差の制限です。

% N 最大反復回数。

x=x0;f0=eval(fx);df0=eval(dfx);

n=0;

disp('[ n xn xn 1 デルタ ]');

while n

x1=x0-f0/df0;

x=x1;f1=eval(fx);df1=eval(dfx);

デルタ=abs(x0-x1);

% X=[n,x0,x1,デルタ];

disp(X); % は中間結果を表示するために使用されます

if デルタ

fprintf('反復計算が成功しました')

###戻る### ###それ以外###

n=n 1;

x0=x1;f0=f1;df0=df1;

###終わり### ###終わり###

if n==N 1

fprintf('反復計算が失敗しました')

###終わり###

他の 2 つは、これに基づいて少し変更できます。

ニュートン反復を使用して非線形方程式を解く MATLAB プログラム

完全版を提供します:

% 非線形方程式を解くためのニュートン法

関数 main()

clc;すべてクリア;

f = @(x)log(x sin(x)); % テスト関数

df = @(x)(1 cos(x))/(x sin(x)); % 微分関数

x0 = 0.1; % 反復初期値

x = TestNewton(f, df, x0) % ニュートン法の解

関数 x = TestNewton(fname, dfname, x0, e, N)

% 目的: 非線形方程式 f(x)=0

を解くためのニュートン反復法

% fname と dfname はそれぞれ、f(x) とその導関数の M 関数ハンドルまたは埋め込み関数式を表します

% x0 は反復の初期値、e は精度 (デフォルト値 1e-7)

% x は数値解を返し、計算過程を表示します 発散を防ぐための反復回数 N の上限を設定します (デフォルトは 500 回)

% 入力パラメータ

if ナルギン

N = 500;

###終わり###

if ナルギン

e = 1e-7;

###終わり### #xx = x0; % 初期値

x0 = x 2*e; % float

k = 0; % ステップ数

fprintf('x[%d]= .9f\n', k, x) % 情報を印刷します

while abs(x0-x)>e & k k = k 1; % 歩数を記録します

x0 = x; % 更新 x(k)

x = x0 - feval(fname,x0)/feval(dfname,x0); % update x(k 1)

fprintf('x[%d]= .9f\n', k, x) % 情報を印刷します

###終わり###

if k == N

fprintf('最大反復回数に達しました'); % 反復の終了

###終わり### ###結果:###

以上がmatlabにおける非線形方程式の反復法の実装方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はdocexcel.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。