12.02.2014 Aufrufe

Mathematik für Physiker - Numerische Physik: Modellierung

Mathematik für Physiker - Numerische Physik: Modellierung

Mathematik für Physiker - Numerische Physik: Modellierung

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

156 KAPITEL 4. DIFFERENTIALRECHNUNG<br />

>> xn=fzero(’x*x-1’,[-1.1 0.9]) ←↪<br />

xn =<br />

- 1<br />

sucht MATLAB im Intervall von -1.1 bis 0.9 und findet als zweite Nullstelle die -1.<br />

§ 617 Da die Nullstellensuche über einen Vorzeichenwechsel der Funktionswerte erfolgt, wird<br />

für die Funktion x 2 keine Nullstelle gefunden:<br />

>> xn=fzero(’x*x’,0.01) ←↪<br />

Exiting fzero: aborting search for an interval containing a sign change<br />

because NaN or Inf function value encountered during search (Function value<br />

at -1.553326e+154 is Inf) Check function or try again with a different<br />

starting value.<br />

xn =<br />

NaN<br />

§ 618 Ebenso scheitert MatLab bei der Nullstellensuche, wenn bei der uns bereits bekannten<br />

Funktion f(x) = x 2 − 1 das Intervall so gross gewählt wird, dass es beide Nullstellen<br />

enthält:<br />

>> fzero(’x*x-1’,[-1.1 1.1]) ←↪<br />

??? Error using ==> fzero<br />

The function values at the interval endpoints must differ in sign.<br />

§ 619 Aus MatLabs Fehlermeldung können wir schließen, dass es bei drei Nullstellen im<br />

Intervall wieder funktionieren müsste. Versuchen wir es also mit<br />

>> xn = fzero(’x. ∧ 3-9*x’,[-4 4]) ←↪<br />

xn =<br />

0<br />

Das Ergebnis ist korrekt, allerdings ist es nur eine der drei Nullstellen in dem Intervall.<br />

Die beiden anderen Nullstellen werden nicht gefunden, für sie müssten wir das Intervall<br />

geschickter eingrenzen, z.B.<br />

>> xn = fzero(’x. ∧ 3-9*x’,[-4 -2]) ←↪<br />

xn =<br />

-3<br />

und<br />

>> xn = fzero(’x. ∧ 3-9*x’,[2 4]) ←↪<br />

xn =<br />

3<br />

roots<br />

Da es sich bei dieser Funktion um ein Polynom handelt, steht zur Nullstellensuche auch<br />

die Funktion roots zur Verfügung. Ihr übergeben wir als Parameter einen Vektor, der in<br />

absteigender Reihenfolge die Koeffizienten enthält. dabei müssen auch die Faktoren Null vor<br />

dem quadratischen Term und der Konstante mit übergeben werden:<br />

>> roots([1 0 -9 0]) ←↪<br />

ans =<br />

0<br />

3<br />

-3<br />

Damit erhalten wir (ohne vorherige Eingrenzung des Bereiches) alle Nullstellen korrekt – das<br />

Verfahren funktioniert aber eben nur bei Polynomen.<br />

13. März 2007 c○ M.-B. Kallenrode

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!