簡體   English   中英

如何在Matlab中繪制非線性方程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM