我做的一个项目,我发现正弦函数的近似,采用最小二乘法查找正弦逼近。我也可以使用我自己选择的12个值。因为我无法弄清楚如何解决它,所以我想用泰勒的Sine系列,然后将其作为5阶多项式求解。下面是我的代码:采用最小二乘
%% Find the sine of the 12 known values
x=[0,pi/8,pi/4,7*pi/2,3*pi/4,pi,4*pi/11,3*pi/2,2*pi,5*pi/4,3*pi/8,12*pi/20];
y=zeros(12,1);
for i=1:12
y=sin(x);
end
n=12;
j=5;
%% Find the sums to populate the matrix A and matrix B
s1=sum(x);s2=sum(x.^2);
s3=sum(x.^3);s4=sum(x.^4);
s5=sum(x.^5);s6=sum(x.^6);
s7=sum(x.^7);s8=sum(x.^8);
s9=sum(x.^9);s10=sum(x.^10);
sy=sum(y);
sxy=sum(x.*y);
sxy2=sum((x.^2).*y);
sxy3=sum((x.^3).*y);
sxy4=sum((x.^4).*y);
sxy5=sum((x.^5).*y);
A=[n,s1,s2,s3,s4,s5;s1,s2,s3,s4,s5,s6;s2,s3,s4,s5,s6,s7;
s3,s4,s5,s6,s7,s8;s4,s5,s6,s7,s8,s9;s5,s6,s7,s8,s9,s10];
B=[sy;sxy;sxy2;sxy3;sxy4;sxy5];
然后,在MATLAB我得到这个结果
>> a=A^-1*B
a =
-0.0248
1.2203
-0.2351
-0.1408
0.0364
-0.0021
然而当我尝试替换的值在泰勒级数和解决FE T = PI/2 I得到错误的结果
>> t=pi/2;
fun=t-t^3*a(4)+a(6)*t^5
fun =
2.0967
我正在做一些事情吴当我更换a
矩阵的值泰勒级数或者是我最初的想法有缺陷?
注:如果你需要一个最小二乘近似,只是在要接近上并产生一些x
横坐标固定的时间间隔决定我不能使用任何内置函数
你能否写下你原来的想法 - 它让我想起[Vandermonde矩阵](http://en.wikipedia.org/wiki/Vandermonde_matrix),但你还有所有这些金额。 – bdecaf
我用这个作为指南[链接](http://kobus.ca/seminars/ugrad/NM5_curve_s02.pdf),如果这是你的要求。如果没有,告诉我,我可以更好地解释 –
啊我明白了。那么你的测试功能是错误的 - 你需要使用所有的'a's。 – bdecaf