回覆列表
  • 1 # 範閒不是我

    建立m檔案:

    function [result ,k] = newton(fun,x0,e)

    % 呼叫形式:

    % [x k] = newton(fun,x0,e)

    % 功能:

    % 用差商求導的牛頓法求解一元非線性方程的根

    % 輸入:

    % -- fun 字串,f(x)的表示式,以x作為自變數,以字串形式輸入

    % -- x0 標量,求解的起始點

    % -- e 標量,精度要求

    % 輸出:

    % -- x 標量,所求得的解

    % -- k 標量,求解過程的迭代次數

    % 袁怡圃,2003/4/3

    m = x0;

    h=0.000001;

    f=inline(fun,"x");

    k=0;

    f0=feval(f,m);

    f2=feval(f,m+h);

    f1=feval(f,m-h);

    n=m-2*h*f0/(f2-f1);

    while abs(1-m/n)>e

    m=n;

    f0=feval(f,m);

    f2=feval(f,m+h);

    f1=feval(f,m-h);

    n=m-2*h*f0/(f2-f1);

    k=k+1;

    if k>999

    break

    end

    end

    if k==1000

    disp("沒找到方程的根!");

    result = "zero";

    else

    result = n;

    end

    在命令視窗輸入:

    fun = "2*x^3+x^2-3*x+4=0";

    x0 = 1;

    [result ,k] = newton(fun,x0,0.00001)

  • 中秋節和大豐收的關聯?
  • 醬爆桃仁正宗做法?