union1.m

来自「Matlab语言常用算法程序集.rar 里面有很多有用的Matlab数值运」· M 代码 · 共 33 行

M
33
字号
function root = Union1(f,a,b,eps)
format long;
if(nargin==3)
    eps=1.0e-6;
end

fa=subs(sym(f),findsym(sym(f)),a);
fb=subs(sym(f),findsym(sym(f)),b);
if(fa==0)
    root=a;
end
if(fb==0)
    root=b;
end

tol=1;
df=diff(sym(f));                                 %求导数
dfa=subs(sym(df),findsym(sym(df)),a);
x1 = a - fa/dfa;
x1_s = b - fb*(b-a)/(fb-fa);

while tol>eps
    fn=subs(sym(f),findsym(sym(f)),x1);
    dfn=subs(sym(df),findsym(sym(df)),x1);
    fn_s=subs(sym(f),findsym(sym(f)),x1_s);
    x2 = x1 - fn/dfn;
    x2_s = x1_s - (x1 - x1_s)*fn_s/(fn - fn_s);
    tol = abs(x2_s - x1_s);
    x1 = x2;
    x1_s = x2_s;
end
root = x2_s;    
format short;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?