我想用for循环绘制一个方程式。我已经尝试了几种不同的方法,但继续得到明显的常见错误"下标索引必须是真正的正整数或逻辑"。我要绘制的等式是 y(x)=(x ^ 4) - (4 * x ^ 3) - (6 * x ^ 2)+15 。
我尝试的最后一个代码如下:
y(0) = 15;
for x = [-3 -2 -1 0 1 2 3 4 5 6];
y(x) = (x^4)-(4*x^3)-(6*x^2)+15;
end
plot(x,y)
答案 0 :(得分:3)
从头开始,
y(0) = 15;
会出现以下错误:
下标索引必须是实数正整数或逻辑。
这是因为Matlab的索引从1开始。其他语言如C和Python从0开始。
Matlab可以直接使用向量。所以在你的代码中,根本不需要循环。
你可以这样做:
x = [-3 -2 -1 0 1 2 3 4 5 6];
y = (x.^4) - (4*x.^3) - (6*x.^2) + 15;
plot(x, y);
请注意,我们需要使用像.*
和.^
这样的元素运算符来计算每个元素的矢量化值。因此,在操作员面前写入.
点。
此外,我们可以使用colon operator生成x
来大幅改善代码:
x = -3:6; % produces the same as [-3 -2 -1 0 1 2 3 4 5 6]
y = (x.^4) - (4*x.^3) - (6*x.^2) + 15;
plot(x, y);
如果您想要更精细的图表细节,请按照@Yvon的建议使用linspace
:
x = linspace(-3, 6, 100); % produces a vector with 100 points between -3 and 6.
y = x.^4-4*x.^3-6*x.^2+15;
plot(x,y)
答案 1 :(得分:0)
x = linspace(-3, 6, 100);
y = x.^4-4*x.^3-6*x.^2+15;
plot(x,y)