MATLAB实例:非线性方程数值解法(迭代解)

MATLAB实例:非线性方程数值解法(迭代解)

MATLAB实例:非线性方程数值解法(迭代解)

作者:凯鲁嘎吉 – 云海天 http://www.cnblogs.com/kailugaji/

    很久之前写过一篇关于“MATLAB用二分法、不动点迭代法及Newton迭代(切线)法求非线性方程的根”,本博文相当于之前这一篇的延续与拓展,介绍四种求解一元非线性方程的数值解法(迭代解),包括:牛顿迭代法,Halley迭代法,Householder迭代法以及预测校正牛顿-哈雷迭代法(Predictor-Corrector Newton-Halley,PCNH),具体参考文献[1],来源于这篇文章:THREE-STEP ITERATIVE METHOD WITH EIGHTEENTH ORDER CONVERGENCE FOR SOLVING NONLINEAR EQUATIONS。

1. 迭代更新公式

2. MATLAB程序

newton.m

function [x1, k]=newton(t1,esp,m)
syms x;
fun=x^3+4*(x^2)-10;
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
    end
end
% x1=vpa(x1,15);
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » MATLAB实例:非线性方程数值解法(迭代解)