2015-09-17 79 views
-1

我試圖繪製解決在R A ODE,我打字:半徑誤差x和y的長度不同

dx=0.01 
x=seq(-5,5,by=dx) 
A=0.5 
B=1 
C=-2 
length(Y)=length(x)-2 
Y=x*0 
Y[1]=A 
Y[2]=dx*B+A 
for(k in 1:(length(x)-3))(C*dx^2-1)*Y[k]+2*Y[k+1] 
plot(x[1:(length(x)-2)],Y,type="l",col="blue") 

它顯示了我的錯誤:

Error in xy.coords(x, y, xlabel, ylabel, log) : 'x' and 'y' lengths differ 
+1

是,'長度(X [1:(長度(X)-2)])''給出和999''長度(Y)''給出1001'。 –

+1

for循環的要點是什麼?它不分配任何東西。你的意思是'Y [k] < - (C * dx^2 -....'? –

+0

這個情節適用於我,但是你的調用順序是錯誤的,'length(Y)'在改變之前被改變 –

回答

0

線6和7需要切換。創建之前,您無法更改變量的長度。另外,我認爲你的意思是將for循環輸出分配給一個變量。

dx=0.01 
x=seq(-5,5,by=dx) 
A=0.5 
B=1 
C=-2 
Y=x*0 
length(Y)=length(x)-2 
Y[1]=A 
Y[2]=dx*B+A 
for(k in 1:(length(x)-3))(C*dx^2-1)*Y[k]+2*Y[k+1] 
plot(x[1:(length(x)-2)],Y,type="l",col="blue") 

enter image description here

+0

您應該說明原因作品:因爲你改變了2行的順序,人們不會閱讀評論。 –