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

时间:2015-10-22 20:12:45

标签: matlab plot equation

我需要绘制这个等式:(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)

1 个答案:

答案 0 :(得分:3)

您的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

结果:

plot