詳解matlab下非線性方程組迭代法的實現方法

WBOY
發布: 2024-01-08 16:06:35
轉載
737 人瀏覽過

非線性方程組迭代法的matlab實作詳細說明

牛頓迭代法:

function[x0,n]=newton(fx,dfx,x0,tol,N)

% 牛頓迭代法

% 第一個參數 fx 是關於變數x的所要的函數表達式.

% 第二個參數 dfx 是fx的一階導數.

% x0 是迭代初始值.

% tol 是迭代誤差限.

% N 最大迭代次數.

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

n=0;

disp('[ n xn xn 1 delta ]');

while n

x1=x0-f0/df0;

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

delta=abs(x0-x1);

% X=[n,x0,x1,delta];

disp(X); %用於顯示中間結果

if delta

fprintf('迭代計算成功')

return

else

n=n 1;

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

end

end

if n==N 1

fprintf('迭代計算失敗 ')

end

另外兩個在此基礎上稍作改動就可以了。

MATLAB用牛頓迭代解非線性方程式的程式

給你一個完整版:

% 牛頓法解非線性方程組

function main()

clc; clear all;

f = @(x)log(x sin(x));% 測試函數

df = @(x)(1 cos(x))/(x sin(x)); % 導函數

x0 = 0.1; % 迭代初值

x = TestNewton(f, df, x0) % 牛頓法解

function x = TestNewton(fname, dfname, x0, e, N)

% 用途:Newton迭代法解非線性方程式f(x)=0

% fname和dfname分別表示f(x)及其導函數的M函數句柄或內嵌函數表達式

% x0為迭代初值,e為精度(預設值1e-7)

% x為回傳數值解,並顯示計算過程,設定迭代次數上限N以防發散(預設500次)

% 輸入參數

if nargin

N = 500;

end

if nargin

e = 1e-7;

end

x = x0; % 初值

x0 = x 2*e; % 浮動

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); % 更新x(k 1)

fprintf('x[%d]= .9f\n', k, x) % 列印訊息

end

if k == N

fprintf('已達迭代次數上限'); % 迭代結束

#end

結果:

詳解matlab下非線性方程組迭代法的實現方法

#

以上是詳解matlab下非線性方程組迭代法的實現方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:docexcel.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!