概述
二分法
binarySearch.m文件:
function binarySearch(f,bot,top)
err = 1e-6;
while abs(top-bot)>err
x=(bot+top)/2;
fx=f(x);
if fx==0
bot=x; top=x;
elseif f(bot)*fx<0
top=x;
else
bot=x;
end
fprintf('·½³ÌµÄ¸ùx=%.6f;f(x)=%.6fn',x,fx); % 复制到word上出现乱码了,不管了
end
控制台输入:
>> f=@(x)x*cos(x)+2;
>> bot = -4;
>> top = -2;
>> binarySearch(f,bot,top)
Newton法:
newton.m文件:
function [x,b,c]= newton( f,df,x0,x1,N )
x=ones(N,1);
e=ones(N,1);
c=ones(N,1);
b=ones(N,1);
for n=1:N
fvalue=subs(f,x1);
dfvalue=subs(df,x1);
x(n)=vpa(x1-fvalue/dfvalue);
e(n)=vpa(abs(x(n)-x0));
if n>1
c(n)=vpa(e(n)/e(n-1));
b(n)=vpa(e(n)/e(n-1)^2);
end
x1=x(n);
end
end
控制台输入:
>> f=@(x)x^3+2*x^2+10*x-100;
df=@(x)3*x^2+4*x+10;
n=10;
x0=2; % 初值
x1=0; % 初值
newton( f,df,x0,x1,n );
弦截法
gfun.m文件:
function y=gfun(a,n,x)
y=0.0;
for i=1:(n+1)
y=y+a(i).* (x.^(n+1-i));
end
end
xjf.m文件:
function y=xjf(a,n,x1,x2,eps)
x(1)=x1;x(2)=x2;
b=1;i=2;
while(abs(b)>eps*x(i))
x(i+1)=x(i)-gfun(a,n,x(i))*
(x(i)-x(i-1))/(gfun(a,n,x(i))-
gfun(a,n,x(i-1)));
b=x(i+1)-x(i);
i=i+1;
end
y=x';
控制台输入:
>>a=[1;2;10;-100];
n=3;
eps=1e-6; % 精度
x0=2;
x1=0;
y=xjf(a,n,x0,x1,eps);
最后
以上就是矮小溪流为你收集整理的MATLAB 二分法、牛顿迭代法、弦截法二分法Newton法:弦截法的全部内容,希望文章能够帮你解决MATLAB 二分法、牛顿迭代法、弦截法二分法Newton法:弦截法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复