當前位置:編程學習大全網 - 編程軟體 - MATLAB用牛頓叠代求解非線性方程的程序

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 < 5

N = 500;

end

if nargin < 4

e = 1e-7;

end

x = x0; % 初值

x0 = x+2*e; % 浮動

k = 0; % 步數

fprintf('x[%d]=%12.9f\n', k, x) % 打印信息

while abs(x0-x)>e && k<N % 循環叠代條件

k = k+1; % 記錄步數

x0 = x; % 更新x(k)

x = x0 - feval(fname,x0)/feval(dfname,x0); % 更新x(k+1)

fprintf('x[%d]=%12.9f\n', k, x) % 打印信息

end

if k == N

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

end

結果:

  • 上一篇:孩子越早學習編程,有哪些好處
  • 下一篇:74HC595咋編程控制
  • copyright 2024編程學習大全網