八度编码 - 我需要帮助编码多项式系数
Octave Coding - I need help coding coefficients of polynomial
这个问题手动做起来很容易,但是我很难用代码写出来。
有一个四次多项式:
P(x)=ax^4+bx^3+cx^2+dx+e
还有一个给定的矩阵M:
5 0 -1 2 9
-2 -1 0 1 2
其中第一行给出 P(x),第二行给出 x 的值。
使用矩阵 M 中的信息,求系数:
a, b, c, d, e
我会知道如何手动解决这个问题,将每一列替换并与其他列同时求解以获得每个系数的值或将其放入矩阵中。
我知道要做什么,但我不知道如何编码。
我相信最后一行会是 linearsolve(M(,1),M(,2))
,因此能够获得每个系数,但我不知道如何到达那一行。
欢迎 J Cheong
% Values of y and x (note: in your post you had 2 values at x = 1, I assumed that was an accident)
M = [5 0 -1 2 9 ; -2 -1 0 1 2];
% Separate for clarity
y = M(1,:);
x = M(2,:);
% Fit to highest order polynomial model
f = fit(x',y',['poly', num2str(length(y)-1)])
% Extract coefficients
coeff = coeffvalues(f);
% Plotting
X = linspace(min(x)-1, max(x) + 1, 1000) ;
plot(x,y,'.',X,f(X))
编辑
抱歉,我正在使用 Matlab。查看 Octave 文档。您应该能够使用
获得系数
p = polyfit(x,y,length(y)-1)';
然后按照您指定的方式显示系数试试这个
strcat(cellstr(char(96+(1:length(p))')), { ' = ' } , cellstr(num2str(p)))
y=[5 0 -1 2 9];
x=[-2 -1 0 1 2];
P=polyfit(x,y,2)
给予
P =
2.0000 1.0000 -1.0000
这些是 c、d、e 的系数,其他系数为零。您可以查看结果:
polyval(P, x)
ans =
5.0000e+00 2.2204e-16 -1.0000e+00 2.0000e+00 9.0000e+00
这给你 y
顺便说一句,您无需计算器就可以在头脑中非常快速地解决这个问题,因为 x=0 和 x=+/-1 的函数值非常容易计算。
这个问题手动做起来很容易,但是我很难用代码写出来。
有一个四次多项式:
P(x)=ax^4+bx^3+cx^2+dx+e
还有一个给定的矩阵M:
5 0 -1 2 9
-2 -1 0 1 2
其中第一行给出 P(x),第二行给出 x 的值。
使用矩阵 M 中的信息,求系数:
a, b, c, d, e
我会知道如何手动解决这个问题,将每一列替换并与其他列同时求解以获得每个系数的值或将其放入矩阵中。
我知道要做什么,但我不知道如何编码。
我相信最后一行会是 linearsolve(M(,1),M(,2))
,因此能够获得每个系数,但我不知道如何到达那一行。
欢迎 J Cheong
% Values of y and x (note: in your post you had 2 values at x = 1, I assumed that was an accident)
M = [5 0 -1 2 9 ; -2 -1 0 1 2];
% Separate for clarity
y = M(1,:);
x = M(2,:);
% Fit to highest order polynomial model
f = fit(x',y',['poly', num2str(length(y)-1)])
% Extract coefficients
coeff = coeffvalues(f);
% Plotting
X = linspace(min(x)-1, max(x) + 1, 1000) ;
plot(x,y,'.',X,f(X))
编辑
抱歉,我正在使用 Matlab。查看 Octave 文档。您应该能够使用
获得系数p = polyfit(x,y,length(y)-1)';
然后按照您指定的方式显示系数试试这个
strcat(cellstr(char(96+(1:length(p))')), { ' = ' } , cellstr(num2str(p)))
y=[5 0 -1 2 9];
x=[-2 -1 0 1 2];
P=polyfit(x,y,2)
给予
P =
2.0000 1.0000 -1.0000
这些是 c、d、e 的系数,其他系数为零。您可以查看结果:
polyval(P, x)
ans =
5.0000e+00 2.2204e-16 -1.0000e+00 2.0000e+00 9.0000e+00
这给你 y
顺便说一句,您无需计算器就可以在头脑中非常快速地解决这个问题,因为 x=0 和 x=+/-1 的函数值非常容易计算。