jckyyy 2022-11-01 15:37 采纳率: 0%
浏览 63
已结题

matlab 抛物线法求方程全部根时怎么剔除已经求得的根

MATLAB 抛物线法求方程的全部根,求得一个根后如何剔除, 使用f1=f/(x-X1)一直报错,请问应该怎么解决呢?
clear all
clc
syms x

f=@hanshu;
X1=paowuxian(f,1,2,3);
f1=f/(x-X1);

function f=hanshu(x)
f=x^6-2*x^5+2*x^4+x^3+6*x^2-6*x+8;
end

function root= paowuxian(f,x0,x1,x2)
disp(f);
max=1000;
N=1;
eps1=1e-10;eps2=1e-10;

while (N<max)
    f0=feval(f,x0);f1=feval(f,x1);f2=feval(f,x2);
    
    lemda=(x2-x1)/(x1-x0);delta=(x2-x0)/(x1-x0);
    
    g=f0*lemda^2-f1*delta^2+f2*(lemda+delta);
    
    LEMDA=-2*f2*delta/(g+sign(g)*sqrt(g^2-4*f2*delta*lemda*(f0*lemda-f1*delta+f2)));
    
    x3=x2+LEMDA*(x2-x1);
    f3=feval(f,x3);
    
    
    if abs(x3)<1
        delta=abs(x3-x2);
    else
        delta=abs(x3-x2)/abs(x3);
    end
    
    if (delta<=eps1 )|| (abs(f3)<=eps2)
        root=x3;
        froot=f3;
        fprintf('The root is')
        disp(root)
        fprintf('The froot is')
        disp(froot)
        break
    else
        N=N+1;
        x0=x1;x1=x2;x2=x3;
    end   
    disp(N);
    
end
end

  • 写回答

5条回答 默认 最新

  • Jackyin0720 2022-11-01 15:46
    关注
    获得7.50元问题酬金

    最好是把报错信息贴出来,方便分析

    评论

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 赞助了问题酬金15元 11月1日
  • 创建了问题 11月1日