给定一组数据点,我试图使用MATLAB中的牛顿方法逼近函数U(x)= 8-ax ^ b中的系数a,b .
x = [150 200 300 500 1000 2000]';
y = [2 3 4 5 6 7]';
a=170; b=-0.7; iter = 0;
for iter=1:5
f=8-a*x.^(b) -y;
J = [-x.^b -a*b*x.^(b-1)]; %Jacobis matrix
h=J\f;
a=a-h(1); b=b-h(2);
disp(norm(f))
iter = iter+1;
end
结果是不正确的,我没有成功找到失误 . 所有帮助表示赞赏 .
2 回答
jacobi matrix 是 wrong . 使用牛顿's method, you'重新尝试找到
a
和b
的值,这将解决方程8-ax^b - y = 0
. 所以,你的雅可比应该是a
的衍生物a
和b
. 那是J = [df/da df/db]
,导致:并且您将获得5次迭代的以下曲线:
请注意,您可以轻松地使用线性化模型