Seite 1 von 1

Schleife mit zwei Operationen

Verfasst: Di Okt 03, 2017 11:39 am
von wintwin111
Hallo,

ich habe ein Problem mit einer Schleife. Die Ausgangssituation sind zwei Vektoren

Code: Alles auswählen

a<-c(1:10)
b<-c(0.5*(1:10))
Nun soll die Schleife folgende Berechnungen durchführen:

1.Iteration:

0.5*a[1] -> in Vektor c speichern
b[1]-a[1] -> in Vektor d speichern

2.Iteration:

0.5*d[1] -> in Vektor c speichern
b[2]-d[1] -> in Vektor d speichern

usw.

Nun habe ich folgende Schleife versucht um dieses Problem zu lösen:

Code: Alles auswählen

a<-c(1:10)
b<-c(0.5*(1:10))
temp<-0
temp<-a
N<-10
c<-numeric(0)
d<-numeric(0)
for(i in 1:N){
c<-c(d,0.5*res[1])
d<-oos[i]-c[i]
temp<-c(tail(d,1),head(temp,-1))}
Die ersten 5 Werte für c und d per Hand ausgerechnet:

c = 0.5, 0, 0.5, 0.5, 0.75
d = 0, 1, 1, 1.5, 1.75

Bei meiner Schleife kommt folgendes heraus:

Code: Alles auswählen

c
[1]  NA 0.5

d
 [1]  NA  NA  NA  NA  NA  NA  NA  NA 0.5 0.0
Kann mir jemand erklären, wo mein Fehler liegt?

Vielen Dank im Voraus und viele Grüße,

wintwin111

Re: Schleife mit zwei Operationen

Verfasst: Di Okt 03, 2017 12:46 pm
von EDi
Die ersten 5 Werte für c und d per Hand ausgerechnet:

c = 0.5, 0, 0.5, 0.5, 0.75
d = 0, 1, 1, 1.5, 1.75
1.Iteration:

0.5*a[1] -> in Vektor c speichern
b[1]-a[1] -> in Vektor d speichern
a [1] = 1
b [1] = 1 * 0.5 = 0.5
c = 0.5*1 =0.5
d = 0.5 - 1 = -0.5

:?: Passt irgendwie nicht...

Auch verstehe ich nicht das "usw." - wie sieht die dritte iteration aus? Braucht man a [2:10] nicht (wozu ist es dann da?)?

Re: Schleife mit zwei Operationen

Verfasst: Di Okt 03, 2017 1:14 pm
von wintwin111
Ja das sollte heißen

0.5*a[1] -> in Vektor c speichern
c[1]-b[1] -> in Vektor d speichern

Die dritte Iteration lautet:

0.5*d[2] -> in c speichern
b[3]-c[2] -> in d speichern

Ja a[2:10] wird (erstmal) nicht benötigt.

Re: Schleife mit zwei Operationen

Verfasst: Di Okt 03, 2017 2:28 pm
von jogo
wintwin111 hat geschrieben: Di Okt 03, 2017 1:14 pm Ja das sollte heißen:

... -> in Vektor c speichern
... -> in Vektor d speichern

... -> in c speichern
... -> in d speichern
Mir ist nicht klar, in welchem Element von c bzw. d das Ergebnis gespeichert wird.

Re: Schleife mit zwei Operationen

Verfasst: Di Okt 03, 2017 3:15 pm
von wintwin111
Der Reihe nach. Also in der ersten Iteration sollen die Berechnungen in c[1] und d[1] gespeichert werden und dann in der zweiten Iteration d[1] wieder aufgerufen werden

Re: Schleife mit zwei Operationen

Verfasst: Di Okt 03, 2017 4:12 pm
von EDi
wintwin111 hat geschrieben: Di Okt 03, 2017 1:14 pm Ja das sollte heißen

0.5*a[1] -> in Vektor c speichern
c[1]-b[1] -> in Vektor d speichern

Die dritte Iteration lautet:

0.5*d[2] -> in c speichern
b[3]-c[2] -> in d speichern

Ja a[2:10] wird (erstmal) nicht benötigt.
Jetzt passt es gar nicht mehr (zum vorherigen)!?

Bitte nochmal Iteration 1 bis 3 posten.

Re: Schleife mit zwei Operationen

Verfasst: Di Okt 03, 2017 4:34 pm
von wintwin111
1 Iteration:

0.5*a[1] -> speichern als c[1]
b[1]-c[1] -> speichern als d[1]

2. Iteration:

0.5*d[1] -> speichern in c[2]
b[2]-c[2] -> speichern in d[2]

3.Iteration:

0.5*d[2] -> speichern in c[3]
b[3]-c[3] -> speichern in d[3]

Re: Schleife mit zwei Operationen

Verfasst: Di Okt 03, 2017 4:45 pm
von jogo

Code: Alles auswählen

a <- 1
b <- 0.5 * (1:10)
C <- numeric(10)
D <- numeric(10)
C[1] <- 0.5*a
D[1] <- b[1] - C[1]
for (i in 2:10) {
  C[i] <- 0.5 * D[i-1]
  D[i] <- b[i] - C[i]
}