这个问题很容易手动完成,但是,我很难用代码编写。
有一个四次多项式:
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))
,因此能够获得每个系数,但是我不知道如何到达该行。
答案 0 :(得分:0)
欢迎张智贤
% 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。查看八度文档。您应该能够使用
来获得系数p = polyfit(x,y,length(y)-1)';
然后以您指定的方式显示系数
strcat(cellstr(char(96+(1:length(p))')), { ' = ' } , cellstr(num2str(p)))
答案 1 :(得分:0)
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系数,其他系数为零。您可以检查结果:
polyval(P, x)
ans =
5.0000e+00 2.2204e-16 -1.0000e+00 2.0000e+00 9.0000e+00
为您提供y
顺便说一句,因为x = 0和x = + /-1的函数值很容易计算,所以无需计算器就可以很快解决这个问题。