Tylor und Horner



  • Hallo @ all!

    Ich sollte das Hornerschema und die Taylorserie anwenden, um sin(x) zu berechnen (nur mit reellen Zahlen, ohne eingebaute sin(x)-Funktion).
    Der absolute Fehler sollte dabei kleiner gleich 1/10^6 sein.

    Ich habe mal folgendes zusammen:

    function horner(x) 
    
    L = 0; 
    while abs(sin(x)-L) > (1/(10).^6) 
    for n=1:1000 
        L = sum((-1).^n*(x.^(2*n+1))./(fac(2*n+1))); 
    end 
    n = n + 100; 
    end 
    
    % Auswertung mittels Hornerschema (leider noch nicht korrekt) 
    xs = x; 
    ys = L(n+1); 
    for i = n:-1:1 
    ys = ys*(xs-x(i))+y(i); 
    end 
    
    err = abs(sin(x) -ys) 
    
    end
    

    Bei der Sinus-Berechnung bin ich mir eigentlich relativ sicher - aber wie baue ich das Hornerschema noch korrekt ein?
    Hierzu wäre ich für jeden Tipp sehr dankbar.

    Liebe Grüsse,
    Marcel


  • Mod

    Geht das überhaupt? Ich kenne das Hornerschema nur für Polynome. Und ein kurzer Blick in Wikipedia bestätigt dies.



  • Ich geb mal die Aufgabe wieder:
    "Benutze das Horner-Schema und "Taylor series expansion write a Matlab program", in dem man nur Feld-Operationen aus reellen Zahlen (keine eingebauten Funktionen wie sin(x)) benutzen darf, um sin(x) für ein gegebenes x aus [0, 2pi] nit absoluten Fehler weniger gleich 1/10^6 zu berechnen."

    ..also sollte es schon gehen. Eventuell aber nicht so, wie ich das begonnen habe..



  • spricht was dagegen, das Taylorpolynom mit Horner zu berechnen?

    z.B. Taylorpolynom von sin vom Grad 5:

    x-(1/3!)*x^3+(1/5!)*x^5
    = x*(1-1/3!*x^2+1/5!*x^4)
    = x*(1-x^2*(1/3!-1/5!*x^2))
    


  • Aber müsste man die Rechenschritte nicht allgemein implementieren? (könnte man das überhaupt?)
    Also x soll man sicher angeben können (das könnte man bei dir), und ja..okey. Der Fehler sollte einfach kleiner gleich 1/10^6 sein.
    ..dein Code käme eigentlich schon fast hin, oder?
    Noch eine Abfrage dazu, damit der absolute Fehler auch unter 1/10^6 liegt, et voilà.



  • Kann man das nicht so implementieren, dass das Horner-Schema "automatisch" generiert wird?
    Also die allgemeine Implementation der Tylor-Serie für den sin ist klar, aber wie sieht das für das Horner-Schema aus?

    Hierzu wäre ich für jeden Vorschlag dankbar.



  • steht doch da:

    x-(1/3!)*x^3+(1/5!)*x^5
    = x*(1-1/3!*x^2+1/5!*x^4)
    = x*(1-x^2*(1/3!-1/5!*x^2)
    

    die allgemeine Form wird ja wohl nicht schwierig aufzustellen sein,

    x*(1-x^2*(1/3!-x^2*(1/5!-x^2*(1/7!-x^2*....1/(2n+1)!-x^2*(...)))))
    

    oder so ähnlich


Anmelden zum Antworten