matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Schulmathe
  Status Primarstufe
  Status Mathe Klassen 5-7
  Status Mathe Klassen 8-10
  Status Oberstufenmathe
    Status Schul-Analysis
    Status Lin. Algebra/Vektor
    Status Stochastik
    Status Abivorbereitung
  Status Mathe-Wettbewerbe
    Status Bundeswettb. Mathe
    Status Deutsche MO
    Status Internationale MO
    Status MO andere Länder
    Status Känguru
  Status Sonstiges

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenMatlabNewton-Verfahren
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Deutsch • Englisch • Französisch • Latein • Spanisch • Russisch • Griechisch
Forum "Matlab" - Newton-Verfahren
Newton-Verfahren < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Newton-Verfahren: Übung
Status: (Frage) beantwortet Status 
Datum: 08:50 Do 30.10.2014
Autor: Striker_03

Aufgabe
(a) Berechnen Sie die Nullstellen von $ p= [mm] f_1,f_7 [/mm] $ mit dem Newtonschen Verfahren.
$ [mm] x_t_+_1 [/mm] = [mm] x_t-\bruch{f(x_t)}{f'(x_t)}, [/mm] $ $ t=0,1,..., $
für die folgenden Startwerte [mm] x_0: [/mm]
$ [mm] x_0 [/mm] = -3 $, $ [mm] x_0 [/mm] = -1,5 $ , $ [mm] x_0 [/mm] = 0 $, $ [mm] x_0 [/mm] = 1,5 $, $ [mm] x_0=3 [/mm] $

in (a) und (b) gewinnen Sie die für die Iterationsformel bzw. für [mm] s_t [/mm]  benötigten Werte [mm] p(x_t),p'(x_t) [/mm] und $ [mm] \bruch{(p(x_t)-p(x_t_-_1))}{x_t-x_t_-_1} [/mm] $ jeweils mit dem Hornerschema. Hierzu beachten Sie: Mit dem P [mm] \in P_n [/mm] aus der erstem Zeile des Hornerschemas erhaltenen [mm] q_t \in P_n_1 [/mm] mit $ p = [mm] p(x_t)+(x-x_t)q_t [/mm] $ gilt $ [mm] p'(x_t) [/mm] = [mm] q(x_t) [/mm] $ und $ [mm] \bruch{p(x_t)-p(x_t_-_1)}{x_t-x_t_-_1} [/mm] $

$ [mm] f_1(x) [/mm] = [mm] x^5-0.4x^4-5x^3+2x^2+4x-1.5, [/mm] $ $ x [mm] \in \IR [/mm] $

Hallo,
ich habe einige Verständnisprobleme bei der Aufgabe.
Erstmal allgemein ich habe  jetzt nur (a) aufgeschrieben und [mm] f_1. f_2-f_7 [/mm] kann ich ja wenn alles so weit ist mal aufschreiben.


x = -3 % Startwert
j = 5 % Anzahl der Durchläufe

for i = 1:j % Beginn der Schleife

    fx = [mm] x^5-0.4*x^4-5*x^3+2*x^2+4*x-1.5; [/mm]   % Funktion
    dx = [mm] 5*x^4-1.6*x^3-15*x^2+4*x+4; [/mm]        % Ableitung der Funktion

    x = x - fx/dx   % Berechnung
end

( ich wollte es per code schreiben mit den befehl [code] aber irgendwie hat es nicht hingehauen, sorry.)

Ist mein Code für das Newton-Verfahren richtig?

Und meine Probleme ich verstehe nicht was der Prof. mit dem Hornerschema meint. Ich weiß, was der Hornerschema ist, aber ich wende den doch gar nicht an im Programm, also ich brauche es doch gar nicht? :S

ich finde die Aufgabenstellung bisschen kompliziert hingeschrieben.
Ich soll doch nur die Nullstellen mit dem Newton-Verfahren berechnen oder nicht?

LG

        
Bezug
Newton-Verfahren: Horner auch programmieren
Status: (Antwort) fertig Status 
Datum: 09:20 Do 30.10.2014
Autor: Al-Chwarizmi


> (a) Berechnen Sie die Nullstellen von [mm]p= f_1,f_7[/mm] mit dem
> Newtonschen Verfahren.
>  [mm]x_t_+_1 = x_t-\bruch{f(x_t)}{f'(x_t)},[/mm] [mm]t=0,1,...,[/mm]
>  für die folgenden Startwerte [mm]x_0:[/mm]
>  [mm]x_0 = -3 [/mm], [mm]x_0 = -1,5[/mm] , [mm]x_0 = 0 [/mm], [mm]x_0 = 1,5 [/mm], [mm]x_0=3[/mm]
>  
> in (a) und (b) gewinnen Sie die für die Iterationsformel
> bzw. für [mm]s_t[/mm]  benötigten Werte [mm]p(x_t),p'(x_t)[/mm] und
> [mm]\bruch{(p(x_t)-p(x_t_-_1))}{x_t-x_t_-_1}[/mm] jeweils mit dem
> Hornerschema. Hierzu beachten Sie: Mit dem P [mm]\in P_n[/mm] aus
> der erstem Zeile des Hornerschemas erhaltenen [mm]q_t \in P_n_1[/mm]
> mit [mm]p = p(x_t)+(x-x_t)q_t[/mm] gilt [mm]p'(x_t) = q(x_t)[/mm] und
> [mm]\bruch{p(x_t)-p(x_t_-_1)}{x_t-x_t_-_1}[/mm]
>  
> [mm]f_1(x) = x^5-0.4x^4-5x^3+2x^2+4x-1.5,[/mm] [mm]x \in \IR[/mm]
>  Hallo,
>  ich habe einige Verständnisprobleme bei der Aufgabe.
>  Erstmal allgemein ich habe  jetzt nur (a) aufgeschrieben
> und [mm]f_1. f_2-f_7[/mm] kann ich ja wenn alles so weit ist mal
> aufschreiben.
>  
>
> x = -3 % Startwert
>  j = 5 % Anzahl der Durchläufe
>  
> for i = 1:j % Beginn der Schleife
>  
> fx = [mm]x^5-0.4*x^4-5*x^3+2*x^2+4*x-1.5;[/mm]   % Funktion
>      dx = [mm]5*x^4-1.6*x^3-15*x^2+4*x+4;[/mm]        % Ableitung
> der Funktion
>  
> x = x - fx/dx   % Berechnung
> end
>  
> ( ich wollte es per code schreiben mit den befehl [code]
> aber irgendwie hat es nicht hingehauen, sorry.)
>  
> Ist mein Code für das Newton-Verfahren richtig?
>  
> Und meine Probleme ich verstehe nicht was der Prof. mit dem
> Hornerschema meint. Ich weiß, was der Hornerschema ist,
> aber ich wende den doch gar nicht an im Programm, also ich
> brauche es doch gar nicht? :S
>  
> ich finde die Aufgabenstellung bisschen kompliziert
> hingeschrieben.
> Ich soll doch nur die Nullstellen mit dem Newton-Verfahren
> berechnen oder nicht?
>  
> LG


Hallo Striker

Zuerst dachte ich: 7 Funktionen, jeweils für 5 verschiedene
Startwerte Newton- und Hornerverfahren durchführen:
ganz schön nahrhafte Aufgabe, an der man aber mit der
Zeit auch den Appetit verlieren könnte.
Doch es scheint, dass das nicht etwa von Hand gerechnet,
sondern programmiert werden soll. Dann ist die Menge
der Beispiele nicht mehr so abschreckend.
Der Code für die Newton-Berechnung ist korrekt.
Warum wählst du aber z.B. gerade j=5 ? Oft genügt dies
zwar - aber besser wäre eine Methode, bei der bei
jedem Schritt auf die erreichte Genauigkeit geprüft wird
und z.B. dann abgebrochen wird, wenn [mm] |x_{n+1}-x_n| [/mm] < [mm] \varepsilon [/mm]
mit z.B.  [mm] $\varepsilon=10^{-8}$ [/mm] .

Nun soll aber offenbar für die ersten beiden Teilaufgaben (a),(b)
(wo die Funktionen Polynomfunktionen sind) das Hornerschema
eingesetzt werden. Für das Programmieren heißt dies,
dass du zu diesem Zweck am besten eine kleine
Prozedur schreibst, die dann diese Berechnung als
Nebenjob übernimmt. Das ist bestimmt eine gute
Programmierübung, aber wenn du dies zum ersten Mal
machst, halt schon ein bisschen aufwendig ... (sorry, aufwändig
natürlich, weil es einige vielleicht die Wände rauf treibt ...)

LG ,   Al-Chwarizmi



Bezug
                
Bezug
Newton-Verfahren: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 10:07 Do 30.10.2014
Autor: Striker_03

ok danke,
ich habe nun versucht das Horner-Schema zu Programmieren.


% y Koeffizienten des Polynoms [mm] p_n-1(x) [/mm]
% rn Wert des Polynoms [mm] p_0(x) [/mm] an der Stelle x0
% xi Koeffizienten des Polynoms [mm] p_n(x) [/mm]
% x0 Stelle an der gerechnet wird (x=x0)

y(1)=xi(1);
for i=2:(length(xi)-1)
    y(i)=y(i-1)*x0+xi(i);
end

rn=y(end)*x0+xi(end);

nur falls das jetzt richtig ist verstehe ich nicht wo ich das bei meinem Newton einsetzen könnte den code?

ja das mit der Länge j beim Newton-Verfahren schaue ich mir denn auch nochmal an.

LG

Bezug
                        
Bezug
Newton-Verfahren: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 12:08 Do 30.10.2014
Autor: Striker_03

So habe es geändert der vorherige code war ja falsch.

function [w,q] = poly_horner(p,x0)
q=[p(1)];
for k=2:length(p)-1
    q=[q,q(length(q))*x0+p(k)];
end
w=q(length(q))*x0+p(length(p));

nun läuft es zwar bei mir, aber es scheint trotzdem noch falsch zu sein.
wenn ich ein p und ein [mm] x_0 [/mm] eingebe dann kommt der Funktionswert an der Stelle [mm] x_0 [/mm] raus :S

Bezug
                                
Bezug
Newton-Verfahren: Antwort
Status: (Antwort) fertig Status 
Datum: 17:10 Do 30.10.2014
Autor: leduart

Hallo
ich denke das Hornerschema brauchst du, weil dein Programm sobald es ein allgemeines f kriegt, die Ableitung nicht kennt.  die sollst du also wohl nicht einfach als dx in dein Ptogramm schreiben sonder numerisch bestimmen.
(das ist aber nur eine Vermutung=
Gruß leduart

Bezug
                                
Bezug
Newton-Verfahren: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 12:20 Sa 01.11.2014
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
                                
Bezug
Newton-Verfahren: Programm in TI-Basic
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:56 Sa 01.11.2014
Autor: Al-Chwarizmi

Hallo Striker

endlich bin ich jetzt dazu gekommen, mir das Ganze
nochmals anzuschauen und selber ein passendes
kleines Programm zu schreiben, allerdings nicht
in MatLab, sondern in dem TI-Basic des CAS-Rechners
Voyage 200 , den ich für solche kleinen Programme
gerne einsetze.

Deine MatLab - Funktion

> function [w,q] = poly_horner(p,x0)
>  q=[p(1)];
>  for k=2:length(p)-1
>      q=[q,q(length(q))*x0+p(k)];
>  end
>  w=q(length(q))*x0+p(length(p));

liefert offenbar zu einem eingegebenen Polynom (als
Liste seiner Koeffizienten) und einem Startwert x0 den
Funktionswert w und ein neues Polynom q , nämlich
genau jenes, das man bei der Polynomdivision

    $\ p(x)\ :\ (x-x0)\ =\ (Polynom\ q(x))\ +\ (Restbruch)$

erhalten würde und das beim Hornerverfahren
"unter dem Strich" entsteht. Dieses Polynom
ist zwar nicht etwa die Ableitungsfunktion p'(x) ,
hat aber die besondere Eigenschaft, dass es für
den vorher eingesetzten Wert x wirklich auch
denselben Wert liefert wie die Ableitungsfunktion.
Es gilt also

    $\ q(x0)\ =\ p'(x0)$

Das ist einer der guten Gründe für das "erweiterte
Horner-Schema". Und wir können es hier prima brauchen.
Eigentlich könnte man nun die Hornerfunktion aus
einer Newtonfunktion heraus zweimal abrufen,
einmal für den Funktionswert und dann für den
Ableitungswert.
Für meine kleine Funktion "polynull" in TI-Basic
habe ich das aber mit "copy, paste and modify"
gemacht. Hier das Ergebnis:




polynull(p,x0,epsilon)
Func
Local k,q,r,wert,abl
x0 [mm] \to [/mm] x
1000 [mm] \to [/mm] wert
While abs(wert) ≥ epsilon

{p [1]}  [mm] \to [/mm] q
For k,2,dim(p)-1
augment(q,{q [dim(q)]*x + p [k]})  [mm] \to [/mm] q
EndFor
q [dim(q)]*x + p [dim(p)] [mm] \to [/mm] wert

{q [1]}  [mm] \to [/mm] r
For k,2,dim(q)-1
augment(r,{r [dim(r)]*x + q [k]}) [mm] \to [/mm] r
EndFor
r [dim(r)]*x + q [dim(q)] [mm] \to [/mm] abl

x - wert / abl [mm] \to [/mm] x

EndWhile
Return x
EndFunc




Ich hoffe, dass du diesen Basic-Code im Wesentlichen
verstehst und in MatLab-Code "übersetzen" kannst.
Sonst stell einfach Rückfragen dazu !
Du erkennst ja sicher, dass ich deine Funktion
"poly_horner" mit verwendet habe.


Ich füge ein Beispiel an. Nehmen wir zum Beispiel
die Polynomfunktion  

    $\ p:\ [mm] x\,\mapsto\ x^3\ -\,4\,x^2\,-\,5\,x\,+3$ [/mm]

Die Koeffizientenliste für p ist

   p = { 1 , -4 , -5 , 3 }

Nehmen wir z.B. den Startwert x0 = 2 und die
Toleranzgrenze  epsilon = 0.0001 , so wäre der
Funktionsaufruf

polynull ( { 1 , -4 , -5 , 3 } , 2 , 0.0001 )

und darauf wird der (approximative) Wert einer
ersten Nullstelle angegeben:   0.45389

Für die Teilaufgaben, bei welchen gar nicht Polynom-
funktionen vorliegen, muss jeweils der Funktions-
term vorliegen, beispielsweise  

     $\ f(x)\ =\ [mm] \sqrt{4-x}-\,e^{\,-\,x}$ [/mm]

(oder auch kompliziertere Terme). Um dann nicht
die Ableitung von Hand berechnen zu müssen,
würde ich (da ja ohnehin schon der Computer
eingesetzt wird) vorschlagen, anstelle des "wahren"
Ableitungswertes jeweils einen Differenzenquotienten
zu nehmen, zum Beispiel

anstatt  f'(x) :     $\ [mm] \frac{f(x+\varepsilon)-f(x+\varepsilon)}{2\,\varepsilon}$ [/mm]

mit einem geeigneten (genügend kleinen) [mm] \varepsilon [/mm] .

LG ,   Al-Chwarizmi


Noch eine kleine Übersetzungshilfe:

  TI Basic                                         MatLab

{p [1]} [mm] \to [/mm] q                                    q = [p(1)];
For k,2,dim(p)-1                               for k = 2 : length(p)-1
augment(q,{q [dim(q)]*x + p [k]}) [mm] \to [/mm] q          q = [q,q(length(q))*x0+p(k)];
EndFor                                         end
q [dim(q)]*x + p [dim(p)] [mm] \to [/mm] wert               w = q(length(q))*x0+p(length(p));  



Bezug
                
Bezug
Newton-Verfahren: deutsche Sprache...
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 10:11 Do 30.10.2014
Autor: Marcel

Hi,

die deutsche Sprache ist halt *modernisiert*:

> ...
>  Programmierübung, aber wenn du dies zum ersten Mal
>  machst, halt schon ein bisschen aufwendig ... (sorry,
> aufwändig
>  natürlich, weil es einige vielleicht die Wände rauf
> treibt ...)

    []http://www.duden.de/rechtschreibung/aufwendig

Beide Versionen sind okay, ich kenne *aufwendig* so aus meiner Schulzeit.
Als mein kleiner Bruder in der Schule war, und dann die Rechtschreibereform
kam (die dann wieder reformiert wurde oder wie auch immer), lernte ich das
*aufwändig* kennen, was man tatsächlich schreiben darf. Da ist zwar nix
auf der Wand, aber Deine Begründung, warum man das schreiben darf, also
warum es nun doch schreiben darf, finde ich besser, als die "weil es ja von
Aufwand kommt". ;-)

Ich warte nun noch auf die neue Reform, dass wir demnächst die ganzen
Kürzel wie *lol*, *rofl* etc. mal in die deutsche Sprache integrieren. Das
wäre doch mal ein tolles Experiment, wenn irgendein Sender derartiges
in seine Nachrichten integrieren würde. ;-)

Gruß,
  Marcel

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.schulmatheforum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]