如何在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=0
到 y=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
结果:
我需要绘制这个等式:(y)/[(4*3.14*10^-7)*(1+(4200/(1+0.03(y^8.2))^0.5))]
在区间 y=0
到 y=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
结果: