我是靠谱客的博主 矮小溪流,最近开发中收集的这篇文章主要介绍MATLAB 二分法、牛顿迭代法、弦截法二分法Newton法:弦截法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述

二分法

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法:弦截法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部