通过迭代具有可变系数的函数之和

时间:2015-06-17 00:31:10

标签: matlab

我正在尝试编写如下代码。

syms c, p
yfunc=symfun(0, [c,p])
y=[1 2 3 4 5] 
for j=1:5
       func=symfun((y(j+1)-c-p*y(j))^2, [c,p]);
       yfunc=yfunc+func;
end

我曾预料到'yfunc'本身会有'c'和'p'五种不同的功能。但是这段代码不起作用。 首先,symfun认为y(j)是符号而不是向量y中的值。所以我也试着像下面这样做,而不是使用symfun。

func=@(c,p)[(y(j+1)-c-p*y(j))^2]

但这既不起作用。因为在下一行'yfunc = yfunc + func'中,函数句柄中不允许加号。

你有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

这个怎么样,

syms c p

y = [1 2 3 4 5];
x = circshift(y, [1, 1]);

yfunc = symfun(sum((x-c-p*y).^2), [c, p]);

您的for循环已超出y范围,因此我执行了circshift。在分配x(1) = ...行后,您可以通过x轻松更改。祝你好运。