标签:
新建文件 newton.m
function [x k]=newton(f,df,x0,ep,N) k=0; while k<N x=x0-feval(f,x0)/feval(df,x0); if abs(x-x0)<ep break end x0=x; k+=1; end endfunction
f : 传入的待求值函数
df : 待求值函数的导数
x0: 起始值
ep : 精度值,小于改值认为求得结果
N : 逼近最大次数,防止程序死掉
原理就是不断用切线进行逼近,直到小于要求的精度值。
先逆向构造一个函数 x=sqrt(2) 等价于对 x^2-2=0 求值
func=@(x) x.^2-2; %函数 x^2-2 dfunc=@(x) 2.*x; %导数 2x [x k]=newton(func,dfunc,1,0.001,10) %对 x^2-2 进行求值 输出 ---------- x = 1.4142 k = 3
可以看出,仅仅计算了3次便达到了想要的精度
标签:
原文地址:http://my.oschina.net/000quanwei/blog/500242