首页 文章

使用牛顿法的非线性插值

提问于
浏览
1

给定一组数据点,我试图使用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 回答

  • 0

    jacobi matrixwrong . 使用牛顿's method, you'重新尝试找到 ab 的值,这将解决方程 8-ax^b - y = 0 . 所以,你的雅可比应该是 a 的衍生物 ab . 那是 J = [df/da df/db] ,导致:

    J = [-x.^b -a.*x.^b.*log(x)]
    

    并且您将获得5次迭代的以下曲线:

  • 2

    请注意,您可以轻松地使用线性化模型

    Log(8 - U(x)) = Log(a) + b Log(x)
    

相关问题