如何在matlab中绘制非线性方程

How to plot a nonlinear equation in matlab

我需要绘制这个等式:(y)/[(4*3.14*10^-7)*(1+(4200/(1+0.03(y^8.2))^0.5))] 在区间 y=0y=3

我试过了

y=0:0.5:1:1.5:2:2.5:3;
x=(y)./((4*3.14*10.^-7)*(1+(4200./(1+0.03*y.^8.2).^0.5)));
plot(x,y)

你的 plot 没问题,只是你的 y 定义有问题:语法是 var=from:step:to,不需要额外的冒号。所以你要么说

y=[0 0.5 1 1.5 2 2.5 3];

或者,更好的是,

y=0:0.5:3;

或者,现在等价的是什么,

y=linspace(0,3,7);

请注意,最后一种形式将使您更容易生成更精细的函数图(因为 plot 默认情况下将为您绘制分段线性函数,即将点与线段连接)。因此,您可能希望将点数从 7 增加到更大的值,例如 50.

不等等,还有一个小问题:在 x 的定义中,您应该使用 .* 而不是 *,就像所有其他操作一样,前面也带有 .(使这些操作按元素进行数组操作)。

并且你必须 plot(y,x) 因为这似乎是你的函数的顺序:y 是独立的并且 x 是函数的值。

固定版本:

y=linspace(0,3,50);
x=(y)./((4*3.14*10.^-7).*(1+(4200./(1+0.03*y.^8.2).^0.5)));
plot(y,x)
xlabel('y')
ylabel('x(y)'); %for clarity

结果: