`
tempsitegoogle
  • 浏览: 868133 次
文章分类
社区版块
存档分类
最新评论

求近似根的算法-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)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics