-2

我想在 Matlab 中绘制这个函数:

F(p)=((3/2)*(7.02^2))-(2*18*p((1-(p/18))*(1-(exp(-18/p))))

我试图按照Mathworks 页面中的描述制作情节。我写了这个:

p=0.001:0.001:10;
F=(((3/2)*(7.02^2))-(2*18*p((1-(p/18))*(1-(exp(-18/p)))));
plot(p,y)

但我得到一个错误:

??? F=(((3/2)*(7.02^2))-(2*18*p((1-(p/18))*(1-(exp(-18/p)))));
                                                            |
Error: Unbalanced or unexpected parenthesis or bracket.

我也尝试过这样的循环:

p=0.01:0.01:10;
F=zeros(1,length(p))
for i = 1:1000
F(i)=(((3/2)*(7.02^2))-(2*18*p(i)((1-(p(i)/18))*(1-(exp(-18/p(i))))));
end
plot(p,y)

但我得到了错误:

??? F=(((3/2)*(7.02^2))-(2*18*p((1-(p/18))*(1-(exp(-18/p)))));
                                                            |
Error: Unbalanced or unexpected parenthesis or bracket.

??? Error: File: Untitled2.m Line: 4 Column: 70
Unbalanced or unexpected parenthesis or bracket.

我不明白问题出在哪里...

4

2 回答 2

1

你显然有太多(或太多)。数一数,然后使用 Matlab 编辑器的语法高亮和帮助找到准确的位置。

于 2012-08-14T12:39:44.847 回答
0

你这里有几个问题。第一个是您正在使用的(和的数量。)第二个是你没有考虑到它p是一个向量并且需要.*./运算符的事实,因为矩阵运算并不总是像A times B向量长度不匹配时说的那么简单。

无论哪种方式,这现在应该适合你......

F=(((3/2)*(7.02^2))-(2*18*p.*(1-(p./18))).*(1-(exp(-18./p))));

将来它有助于简单地计算@rubenvb 提到的数量(和数量。)这将为您提供一个很好的指标,表明问题可能出在哪里。

在这种特殊情况下,由于我在上面关于乘法和除法的说明,您会得到矩阵维度不匹配错误。

希望有帮助。

于 2012-08-14T13:21:49.193 回答