[英]How to plot a nonlinear equation in matlab
我需要在間隔y=0
上繪制此方程式: (y)/[(4*3.14*10^-7)*(1+(4200/(1+0.03(y^8.2))^0.5))]
到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
的定義中應該使用.*
而不是*
,就像其他所有操作也都帶有a一樣.
(以使這些操作逐個元素地進行數組操作)。
並且您必須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
結果:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.