使用牛顿法的非线性插值
Nonlinear interpolation using Newtons method
给定一组数据点,我尝试使用 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
结果不正确,我没有成功找到失误。感谢所有帮助。
jacobi 矩阵 错误。使用牛顿法,您试图找到 a
和 b
的值来求解方程 8-ax^b - y = 0
。因此,您的雅可比应该是 f
关于 a
和 b
的导数。即 J = [df/da df/db]
,导致:
J = [-x.^b -a.*x.^b.*log(x)]
你将得到以下 5 次迭代的曲线:
请注意,您可以使用
轻松地线性化您的模型
Log(8 - U(x)) = Log(a) + b Log(x)
给定一组数据点,我尝试使用 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
结果不正确,我没有成功找到失误。感谢所有帮助。
jacobi 矩阵 错误。使用牛顿法,您试图找到 a
和 b
的值来求解方程 8-ax^b - y = 0
。因此,您的雅可比应该是 f
关于 a
和 b
的导数。即 J = [df/da df/db]
,导致:
J = [-x.^b -a.*x.^b.*log(x)]
你将得到以下 5 次迭代的曲线:
请注意,您可以使用
轻松地线性化您的模型Log(8 - U(x)) = Log(a) + b Log(x)