Heron-Verfahren mit R definieren

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Informatikloser

Heron-Verfahren mit R definieren

Beitrag von Informatikloser »

Hallo Leute.
Ich habe von meinem Prof ein Arbeitsblatt bekommen mit Aufgaben zu R das ich lösen muss um Bonuspunkte für mein Studium zu kassieren. Die Aufgaben sind auch relativ einfach (Datensatz einlesen, filtern etc.) aber es gibt eine Aufgabe bei der ich mir schon seit Tagen die Zähne ausbeiße, ich schreib sie mal hier rein:
Das Heron-Verfahren ist ein Näherungsverfahren zur Berechnung von √a für a >
0. Dazu wird für einen beliebigen Startwert x0 6= 0 die Folge

Code: Alles auswählen

xn+1=(1/2)*(xn+(a/xn))
definiert, die für zunehmendes n ∈ N gegen √a konvergiert.
Definieren Sie eine Funktion heron(a, x_0, n), die den Näherungswert von
√a des Heron-Verfahrens mit Startwert x0 nach n Iterationen ausgibt.

Hab auch schon versucht die Funtkion zu definieren und ein paar Bedingungen einzubauen, weiß aber auch nicht ob das richtig ist:

Code: Alles auswählen

> func <- function(a,x_0,n){
+ heron <- x_0+1=(1/2)*(n+(a/n))
+ if(a<=0)
+ heron <- "a<=0, keine Lösung"
+ if(x_0==0)
+ heron <- "x_0=0, keine Lösung"
Ich bedanke mich schonmal bei allen die sich die Zeit dafür genommen haben das hier zu lesen und mir eventuell auch helfen! Bin leider sehr neu auf dem Gebiet der Programmierung.
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Heron-Verfahren mit R definieren

Beitrag von jogo »

Hallo Informatikloser,

willkommen im Forum! Leider hat das Forum momentan eine kleine Macke, so dass ich den Code nicht mit der geeigneten Formatierung darstellen kann.

Code: Alles auswählen

heron <- function(x0, a, n) {
  if (a<=0) stop("heron: a<=0, keine Lösung")
  if(x0==0) stop("heron: x0=0, keine Lösung")
  while (n>0) {
    x0 <- 0.5*(x0 + a/x0)
    n <- n-1
  }
  return(x0)
}
heron(2, 5, 1)
heron(2, 5, 2)
heron(2, 5, 3)
sqrt(5)
Gruß, Jörg
Informatikloser

Re: Heron-Verfahren mit R definieren

Beitrag von Informatikloser »

Danke Jörg für deine Antwort! Ich bin jetzt schon ein ganzes Stück weiter, ich werde jetzt versuchen das vielleicht in eine for schleife einzupacken, denke das müsste gehen, vielen dank! Schönen Tag noch
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Heron-Verfahren mit R definieren

Beitrag von jogo »

dann ist statt der Konstruktion while(...) { } zu schreiben:

Code: Alles auswählen

for (i in 1:n) x0 <- 0.5*(x0 + a/x0)
Gruß, Jörg
p.s. natürlich kann man vorher noch testen, ob n wirklich größer gleich 1 ist
Antworten