求近似根的算法-matlab实现

在数值计算中,求一个根的近似很重要,因为在因为在用牛顿迭代等其他方法的时候,往往要找一个初始点,初始点的选取应在根的附近。另外,只有知道了近似根,才能有整体转化为局部。刚刚学数值计算方法,认识有限,大家一起讨论

函数文件approot_my.m

function R=approot_my(f,x,epsilon)
y=f(x);
yrange=max(y)-min(y);
epsilon2=yrange*epsilon; %描述y很小,即与x轴相切的点
n=length(x);
m=0;
x(n+1)=x(n);
y(n+1)=y(n);
k=2;
while k<=n
    if(y(k-1)*y(k)<=0)
        m=m+1;
        R(m)=(x(k-1)+x(k))/2;
    end
    s=(y(k)-y(k-1))*(y(k+1)-y(k));%y曲线的拐点
    if(abs(y(k))<epsilon2)&& (s<=0)
        m=m+1;
        R(m)=x(k);
    end
    k=k+1;
end

测试函数f.m

function y=f(x)
y=sin(cos(x.^3));

运行

>> x=-2:0.0001:2;
>> approot_my(@f,x,0.001)


ans =

   -1.9878   -1.6766   -1.1625    1.1625    1.6766    1.9878

一下是测试函数的图

>> x=-2:0.0001:2;
>> y=sin(cos(x.^3));
>> plot(x,y,x,0)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值