首先你的代码run不了,大小写x需改正,diff没用的,修改如下
function newton(f,g,a)
for n=1:20
x=a;
fa=eval(f);
ga=eval(g);
a=a-fa/ga;
x=a;
format long
disp(x)%output 'approximate value of a'
end
其次算法没错,错的是你的初值,newton算法是需要很好初值的,不然会发散
所以你必须选一个离真解很近的值,例如1,0.7,我算了是对的