MATLAB牛頓法求解非線性方程的根

2022-01-22 雲龍派

牛頓迭代法(Newton's method)又稱為牛頓-拉夫遜(拉弗森)方法(Newton-Raphson method),它是牛頓在17世紀提出的一種在實數域和複數域上近似求解方程的方法。

求解原理:

舉例

牛頓迭代法(matlab)求方程x^3-2x-1=0的根(-1)

clc;clear all;close all;syms x;f=(x^3-2*x-1);x0 = -0.85;eps = 1e-8;[x,k]=Newtondd(f,x0,eps);x = vpa(x)k


function [x,k]=Newtondd(f,x0,e)%%牛頓迭代法,求f(x)=0在某個範圍內的根。%%f為f(x),x0為迭代初值,e為迭代精度。k為迭代次數 x_a=x0;x_b=x_a-subs(f,x_a)/subs(diff(f),x_a);k=1;while abs(x_a-x_b)>e, k=k+1; x_a=x_b; x_b=x_a-subs(f,x_a)/subs(diff(f),x_a); end x=x_b;end

x =-1.000000000000000006731967303275k =     7

舉例2

clc;clear all;x0 = 2;eps = 1e-4;max = 30;x1=newton(x0,eps,max)

function x1=newton(t1,esp,m)syms x;fun=x^3+2*x-5;for k=1:m    if abs(subs(diff(fun,'x'),x,t1))<esp        x1=t1;        break;    else        if subs(diff(fun,'x',2),x,t1)==0            break;            disp('解題失敗!')        else            t0=t1;            t1=t0-subs(fun,x,t0)/subs(diff(fun,'x'),x,t0);            if abs(t1-t0)<esp                x1=t1;                break;            end        end    endendx1=vpa(x1,8);

clc;clear all;close all;syms xf1 = sin(x)-x.^2./4%設置目標函數f2 = diff(f1,'x')fun = inline('[sin(x)-x.^2./4,cos(x) - x/2]');x0 = 1.5;%初值ep = 1e-10;it_max = 1000;[x_star,index, it]=Newton_G(fun, x0, ep, it_max);fprintf('經過%d次迭代,函數方程根的近似解為:x=%.8f\n',it,x_star)%輸出迭代過程
function [x_star,index, it]=Newton_G(fun, x, ep, it_max)%求解非線性方程的Newton法,其中% fun(x) ---需要求根的函數,% 第一個分量是函數值,第二個分量是導數值%x ---初始點。% ep ---精度,當(x(k)-x(k-1)/<ep時,終止計算。省缺為1e-5% it_max ---最大迭代次數,省缺為100% x _star ---當迭代成功時,輸出方程的根% 當迭代失敗時,輸出最後的迭代值。% index ---當index=1時,表明迭代成功,% 當index=0時,表明迭代失敗(迭代次數>=it_max)% it --- 迭代次數。if nargin <4 it_max=1000;endif nargin <3 ep=1e-10;end
index=0; k=1;while k<=it_max x1 = x; f =feval(fun,x); if abs(f(2))<ep break; end x = x-f(1)/f(2); if abs(x-x1)<ep index = 1; break; end k = k+1;end x_star=x; it=k;end

%運行結果%經過6次迭代,函數方程根的近似解為:x=1.93375376

MATLAB相關內容往期回顧

1、MATLAB基礎知識

matlab中矩陣的入門知識

MATLAB的輸入輸出input函數

Matlab對fig文件導出數據

matlab多項式(定義、四則計算、求根)

MATLAB的switch選擇語句和input輸入語句

視頻講解MATLAB的switch選擇語句和input輸入語句

matlab中的歸一化處理的三種方法

MATLAB求函數的導數和偏導

視頻講解MATLAB求函數的導數和偏導

MATLAB處理NAN數據程序(含實例)

視頻講解MATLAB處理NAN數據程序(含實例)

2、電子書

電子書推薦(一)《MATLAB在數學建模中的應用》

電子書推薦(二)《Matlab 從入門到精通 》

電子書推薦(三)《運籌學基礎及其MATLAB應用》

電子書推薦(四)MATLAB、Simulink系統仿真超級學習手冊

3、MATLAB繪製圖形

Matlab中plot函數全功能解析

matlab中legend函數的用法

視頻講解MATLAB的text函數圖形標註

MATLAB中繪製三維圖形

matlab詳細介紹畫柱形圖

Matlab中繪製不同坐標的圖形

matlab 畫圖——誤差條圖errorbar函數(含視頻講解)

Matlab 進度條的製作

Matlab編程並繪製函數或者信號包絡線

Matlab作圖後的調整—線條、坐標、標題、圖例

MATLAB繪製雙y軸圖形兩種方法

視頻講解MATLAB繪製雙y軸圖形兩種方法

MATLAB的compass函數繪製羅盤圖

視頻講解MATLAB的compass函數繪製羅盤圖

MATLAB繪製交互式圖形

視頻講解MATLAB繪製交互式圖形

MATLAB的ezplot函數繪製隱函數圖像

視頻講解MATLAB的ezplot函數繪製隱函數圖像

4、MATLAB規劃求解

MATLAB線性規劃函數求解線性規劃

matlab繪圖--線性規劃圖解法示意

MATLAB求解混合整數線性規劃

Matlab的fmincon函數求解非線性規劃

MATLAB的fgoalattain()函數求解多目標規劃

5、MATLAB擬合函數或擬合未知參數

Matlab 多項式擬合函數關係

MATLAB的lsqcurvefit函數擬合非線性式子中的未知參數

MATLAB曲線擬合工具箱

MATLAB中regress函數用法(多元線性回歸)

MATLAB非線性擬合函數nlinfit函數

MATLAB的fittype函數的非線性擬合未知參數

視頻講解MATLAB的fittype函數的非線性擬合未知參數

總結MATLAB的線性擬合和非線性擬合函數參數

視頻講解總結MATLAB的線性擬合和非線性擬合函數參數

6、MATLAB預測數據 

matlab GUI實現導入txt文件(含字符和數據的文本)

基於MATLAB的灰色預測模型GM(1,1)計算的GUI界面

MATLAB的主成分分析的GUI界面計算

基於MATLAB的BP神經網絡預測計算GUI界面

視頻講解基於MATLAB的BP神經網絡預測計算GUI界面

MATLAB實現人口預測的Logistic模型

視頻講解MATLAB實現人口預測的Logistic模型

MATLAB的三次指數平滑法預測計算GUI界面

視頻講解MATLAB的三次指數平滑法預測計算GUI界面

7、MATLAB方程(組)求解、函數極值、數值積分、微分方程

MATLAB的solve函數求非線性解方程或方程組

視頻講解MATLAB的solve函數求非線性解方程或方程組

Matlab非線性方程求解器fsolve總結

視頻講解Matlab非線性方程求解器fsolve總結

MATLAB的fzero函數求解單變量非線性方程求解

視頻講解MATLAB的fzero函數求解單變量非線性方程求解

MATLAB的dsolve函數求解微分方程的符號解

視頻講解MATLAB的dsolve函數求解微分方程的符號解

MATLAB二分法求方程的根(實例加程序)

視頻講解MATLAB二分法求方程的根(實例加程序)

MATLAB實例講解—求二元函數的極值

MATLAB實例講解—求二元函數的極值視頻

MATLAB的ode45函數實例求常微分方程數值解

MATLAB求解微分方程組—以一種傳染病的動力學模型求解為例

MATLAB實例編程之一個成績分析和處理的程序實例講解

MATLAB中的數據插值函數

視頻講解MATLAB中的數據插值函數

MATLAB的拉格朗日插值

視頻講解MATLAB的拉格朗日插值

MATLAB牛頓法插值實例加程序

視頻講解MATLAB牛頓法插值實例加程序

MATLAB求數值積分方法(一)

視頻講解MATLAB求數值積分方法(一)

MATLAB求定積分的相關函數和實例(一)

視頻講解MATLAB求定積分的相關函數和實例(一)

MATLAB的fminbnd函數求單變量函數極值

視頻講解MATLAB的fminbnd函數求單變量函數極值

8、MATLAB的GUI界面和其他

層次分析法(AHP)在MATLAB中的應用

MATLAB《自動控制原理》相關編程

 MATLAB用GUI計算十進位轉換為二、八、十六進位

MATLAB GUI實現簡單的計算器

視頻講解MATLAB GUI實現簡單的計算器

MATLAB 蒙特卡洛方法編程並舉例分析

視頻講解MATLAB 蒙特卡洛方法編程並舉例分析

MATLAB實現控制系統穩定性判別GUI界面

視頻講解MATLAB實現控制系統穩定性判別GUI界面

 MATLAB的二次指數平滑法預測計算GUI界面

視頻講解 MATLAB的二次指數平滑法預測計算GUI界面

9、MATLAB導出函數圖象

MATLAB中圖片保存的五種方法(一)

視頻講解MATLAB中圖片保存的五種方法(一)

MATLAB中圖片保存的五種方法(二)

視頻講解MATLAB中圖片保存的五種方法(二)

MATLAB動態繪圖、展示並保存的一種方法

視頻講解MATLAB動態繪圖、展示並保存的一種方法

雙十一特輯---MATLAB繪製愛心表白程序

視頻講解雙十一特輯---MATLAB繪製愛心表白程序

MATLAB創建詞雲(含程序)

視頻講解MATLAB創建詞雲(含程序)

MATLAB-圖片自動編號、命名及保存

視頻講解MATLAB-圖片自動編號、命名及保存

10、記錄生活

記錄生活之MATLAB學習交流

記錄生活之課題組內MATLAB第一次交流(上)

記錄生活之課題組內MATLAB第一次交流(中)和(下)

MATLAB交流學習第一次課視頻(上)

MATLAB交流學習第一次課視頻(中)

MATLAB交流學習第一次課視頻(下)

記錄生活之課題組內MATLAB第二次交流

MATLAB交流學習第二次課視頻(上)

MATLAB交流學習第二次課視頻(中)

MATLAB交流學習第二次課視頻(下)

記錄生活之課題組內MATLAB第三次交流

MATLAB交流學習第三次課視頻(上)

MATLAB交流學習第三次課視頻(中)

MATLAB交流學習第三次課視頻(下)

記錄生活之課題組內MATLAB第四次交流

MATLAB交流學習第四次課視頻(上)

MATLAB交流學習第四次課視頻(中)

MATLAB交流學習第四次課視頻(下)

記錄生活之課題組內MATLAB交流學習第五次交流

MATLAB交流學習第五次課視頻(上)

MATLAB交流學習第五次課視頻(下)

考研複試經驗資源分享

湘大記憶畢業視頻(2016級自動化四班、琴湖9棟407)

運營「雲龍派」公眾號半年感悟

MATLAB趣味繪圖之奧運五環

視頻講解MATLAB趣味繪圖之奧運五環

MATLAB趣味繪圖之繪製聖誕樹

相關焦點

  • Matlab非線性方程求解器fsolve總結
    fsolve是採用最小二乘法來求解非線性方程。其基本結構如下:(可以在matlab命令頁面輸入help fsolve查詢)fsolve()解決的方程形式為F(X)=0;  用法為:X = fsolve(FUN,X0,OPTIONS)[x,fval,exitflag]=fsolve(fun,x0,options)其中fun是方程,x0是初值,需要提前設定,options是一些設定要求,
  • MATLAB二分法求方程的根(實例加程序)
    詳細介紹畫柱形圖matlab中矩陣的入門知識matlab中legend函數的用法matlab繪圖--線性規劃圖解法示意Matlab 進度條的製作Matlab對fig文件導出數據Matlab中plot函數全功能解析Matlab的fmincon函數求解非線性規劃MATLAB線性規劃函數求解線性規劃
  • 利用matlab求解非線性規劃問題
    用於無約束最優化模型求解    函數:可以調用 matlab的的函數, fminsearch、fminunc。
  • Matlab:代數方程求解—solve命令
    那麼對於普通的代數方程,我們如何用matlab求解呢,這就是我們今天要討論的內容啦。一元一次方程先從簡單的開始,我們看看下面的一元一次方程,其中x是未知數。好了,大家一眼就能看出來這個方程的解是x=9。現在我們希望matlab來幫我們做這件事,這就要用到matlab 的 solve 命令了。
  • 牛頓法——二元二次方程求解可視化
    牛頓和拉夫森牛頓-拉夫森法。從名字上看,你可能會覺得牛頓和拉夫森作為一個團隊一起工作,然後共同提出了這個方法。但實際上,他們是獨立發現的。還記得他是如何和萊布尼茨一起發現微積分的嗎?讓我們來看看牛頓-拉夫森法的原理。x是什麼?代數的本質是求解未知量的方程。例如,求x,其中:2x + 5 = 7 很容易看出,上面方程的解是x=1。
  • MATLAB製作煙花
    MATLAB線性規劃函數求解線性規劃matlab繪圖--線性規劃圖解法示意MATLAB求解混合整數線性規劃Matlab的fmincon函數求解非線性規劃MATLAB的fgoalattain()函數求解多目標規劃5、MATLAB擬合函數或擬合未知參數Matlab 多項式擬合函數關係MATLAB
  • MATLAB的feather函數繪製箭頭圖
    MATLAB線性規劃函數求解線性規劃matlab繪圖--線性規劃圖解法示意MATLAB求解混合整數線性規劃Matlab的fmincon函數求解非線性規劃MATLAB的fgoalattain()函數求解多目標規劃5、MATLAB擬合函數或擬合未知參數Matlab 多項式擬合函數關係MATLAB
  • MATLAB牛頓法插值實例加程序
    詳細介紹畫柱形圖matlab中矩陣的入門知識matlab中legend函數的用法matlab繪圖--線性規劃圖解法示意Matlab 進度條的製作Matlab對fig文件導出數據Matlab中plot函數全功能解析Matlab的fmincon函數求解非線性規劃MATLAB線性規劃函數求解線性規劃
  • MATLAB的solve函數求非線性解方程或方程組
    solve函數可用來求解代數方程(組)與非線性方程(組),具體使用格式如下:solve('F','var'):用於求解單個方程情形,F表示求解方程,var表示求解變量。當求解變量省略時,表示對默認變量求解。
  • Matlab 最優化求解
    Matlab 最優化求解1 線性規劃2 非線性規劃3   無約束問題matlab解法4 求解零點與方程組的解4.1 多項式4.2 符號解4.3 數值解4.4 方程組情形5 約束問題matlab解法6 其他一些命令6.1 fminbnd函數
  • MATLAB非線性擬合函數nlinfit函數
    [beta,r,j]=nlinfit(x,y,'model』,beta0) 其中,輸人數據x,y分別為n×m矩陣和n維列向量,對一元非線性回歸,x為n維列向量model是事先用 m-文件定義的非線性函數,beta0是回歸係數的初值, beta是估計出的回歸係數,r是殘差,j是Jacobian矩陣,它們是估計預測誤差需要的數據。
  • MATLAB的拉格朗日插值
    在數值分析中,拉格朗日插值法是以法國十八世紀數學家約瑟夫·拉格朗日命名的一種多項式插值方法。許多實際問題中都用函數來表示某種內在聯繫或規律,而不少函數都只能通過實驗和觀測來了解。拉格朗日插值法可以找到一個多項式,其恰好在各個觀測的點取到觀測到的值。這樣的多項式稱為拉格朗日(插值)多項式。
  • MATLAB的dsolve函數求微分方程的符號解
    詳細介紹畫柱形圖matlab中矩陣的入門知識matlab中legend函數的用法matlab繪圖--線性規劃圖解法示意Matlab 進度條的製作Matlab對fig文件導出數據Matlab中plot函數全功能解析Matlab的fmincon函數求解非線性規劃MATLAB線性規劃函數求解線性規劃
  • 總結MATLAB的線性擬合和非線性擬合函數參數
    更多內容點擊文字,查看往期推文:MATLAB曲線擬合工具箱MATLAB相關內容往期回顧MATLAB中繪製三維圖形MATLAB的輸入輸出input函數matlab詳細介紹畫柱形圖matlab中矩陣的入門知識matlab中legend函數的用法
  • MATLAB的compass函數繪製羅盤圖
    詳細介紹畫柱形圖matlab中矩陣的入門知識matlab中legend函數的用法matlab繪圖--線性規劃圖解法示意Matlab 進度條的製作Matlab對fig文件導出數據Matlab中plot函數全功能解析Matlab的fmincon函數求解非線性規劃MATLAB線性規劃函數求解線性規劃
  • Matlab中ode45函數的使用(常微分方程求解)
    利用matlab可以很方便的對非剛性常微分方程進行求解,其提供了大量的內置函數可以幫我們實現需要的效果,如ode45(4-5階龍格庫塔方法),ode23(2-3階龍格庫塔方法),ode113(多步法)等。ode45其求解精度相對較高,是我們經常使用函數 。
  • [代碼資源] 數學建模基礎算法(2) 非線性規劃
    一般說來,解非線性規劃不像線性規劃有單純形法這一通用方法,非線性規劃目前還沒有適於各種問題的一般算法,各個方法都有自己特定的適用範圍。下面針對不同問題提出相應算法。1.無約束一維函數--->fminbnd:黃金分割法、牛頓法、拋物線法等!
  • 2019數學建模國賽|Matlab 求解微分方程(組)
    2.函數 dsolve 求解的是常微分方程的精確解法,也稱為常微分方程的符號解.但是,有大量的常微分方程雖然從理論上講,其解是存在的,但我們卻無法求出其解析解,此時,我們需要尋求方程的數值解,在求常微分方程數值解方面,MATLAB 具有豐富的函數,將其統稱為 solver,其一般格式為:           [T,Y]=solver(odefun,tspan,y0)
  • MATLAB繪製交互式圖形
    詳細介紹畫柱形圖matlab中矩陣的入門知識matlab中legend函數的用法matlab繪圖--線性規劃圖解法示意Matlab 進度條的製作Matlab對fig文件導出數據Matlab中plot函數全功能解析Matlab的fmincon函數求解非線性規劃MATLAB線性規劃函數求解線性規劃
  • 優化 | 利用SciPy求解非線性規劃問題
    編者按:本文使用SciPy的optimize模塊來求解非線性規劃問題,結合實際例子,引入非線性規劃問題的求解算法及相應函數的調用。將目標函數梯度作為搜索方向,對非線性規劃問題的求解具有重要的意義。這些函數或其導數\梯度的不連續性給許多現有的非線性優化問題的求解帶來了困難。在下文中,我們假設這些函數是連續且光滑的。