2015-09-17 2 views
-1

Я пытаюсь построить решение в ОДУ в R, и я напечатал:R ошибка х и у длины отличаются

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

Да, 'Длина (х [1: (длина (х) -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 строки. Люди не будут читать комментарии. –

Смежные вопросы