麻省在MATLAB中使用horner函数

时间:2014-11-20 16:48:21

标签: matlab plot figure least-squares

我有以下作业问题:

  

对两个模型应用线性最小二乘法S1(A,B,C)= Ax ^ 2 + Bx   + C和S2(A,B,C,D)= Ax ^ 3 + Bx ^ 2 + Cx + D到数据集(0,4),(1,-1),(2,6),(3 ,1),(4,-4),(5,-9)。用MATLAB求解   lspoly。清楚地报告参数A,B,C和D的值,并且   生成一个显示数据和拟合曲线的图。

我在MATLAB中使用以下函数:

功能1

function y = horner(a,c)

n=length(a)-1;
y=a(n+1);

for k = n:-1:1
    y = a(k)+ c*y;
end

功能2

function C = lspoly(x,y,M)

n = length(x);
F = zeros(n,M+1);
for k = 1:M+1
   F(:,k) = x'.^(k-1);
end
A = F'*F;
B = F'*y';
C = A\B;

这是我为问题写的代码:

clc
clear all
close all

x = [0, 1, 2, 3, 4, 5];
y = [4, -1, 6, 1, -4, -9];

C = lspoly(x,y,2); % finds the parameters
xx = 0:0.01:5;
yy = zeros(1, length(xx));
for i=1:length(xx)
  yy(i) = horner(C,xx(i));
end

CC = lspoly(x,y,3); % finds the parameters
xxx = 0:0.1:5;
yyy = zeros(1, length(xxx));
for i=1:length(xxx)
  yyy(i) = horner(CC,xxx(i));
end

figure(1)
plot(x, y, 'o',  xx, yy, 'r-', xxx, yyy, 'b-')

我遇到了这段代码的一些问题。当我尝试运行该程序时,出现以下错误:

  

在赋值A(I)= B中,B和I中的元素数必须为   同样的。

     

HW7_1中的错误(第14行)yy(i)= horner(C,xx(i));

我无法真正理解我需要做些什么来解决这个问题。我尝试逐个分解我的程序以确定代码中不同位置的结果,但到目前为止还没有找到任何注意事项。

有人可以帮我修复此错误吗?

1 个答案:

答案 0 :(得分:0)

在Octave 3.8中它对我来说很合适。我唯一能想到的是在MATLAB中有一个名为horner的内置函数(Symbolic Math Toolbox的一部分),所以也许你的代码调用的是函数而不是你的函数。也许尝试将其重命名为不同的内容,例如my_horner或类似内容。