| 
 | 
  
	
		 | 
		Newton-Verfahren in Scilab | 
		 | 
	 
 
 
| Bad_Rockk | 
 
  
 
Forum-Newbie
 
 
 | 
 
  | 
Beiträge: 3
 | 
  | 
 
 | 
 
  | 
Anmeldedatum: 24.07.08
 | 
  | 
 
 | 
 
  | 
Wohnort: ---
 | 
  | 
 
 | 
 
  | 
Version: ---
 | 
  | 
 
 | 
 
 
 | 
 
  | 
 
  | 
      
Verfasst am: 24.07.2008, 12:57    
Titel: Newton-Verfahren in Scilab
 | 
  | 
 
 
|   | 
  | 
           | 
 
 
Hallo zusammen,
 
 
bin Maschinenbau-Student und sitze gerade an einer Numerik-Aufgabe.
 
 
Es geht darum über das Newtonverfahren näherungsweise die Nullstellen einer Funtion zu bestimmen.
 
 
ich habe schon einen entwurf von dem Verfahren, nur seh ich gerade nicht wo ich meine funktion einfügen kann?!
 
 
hier mal der bisherige entwurf:
 
 
// newtonsolve.sci
 
 
function [y,iter]=newtonsolve2(f,df,x)
 
 
err=1e-7;
 
yact=f(x);
 
xact=x;
 
iter = 0;
 
 
// Schleife solange yact nicht null ist
 
while  abs(yact)>err
 
   iter = iter + 1
 
  // berechne Jacobi-Matrix
 
  jac = df(xact)
 
  
 
  // diese Abfrage ist schon ein Verbesserung gegenüber einer Standardimplementierung
 
  
 
  if (det(jac)<=err)
 
      iter = -iter
 
    break
 
  end
 
  // neuer Aufpunkt x berechnet sich aus dem alten
 
   xact=xact-jac\yact
 
   // neuer functionswert
 
   yact=f(xact)
 
end
 
 
y=xact
 
 
endfunction
 
 
meine frage ist einfach die, wie muss ich meine Funktion angeben?? Sitze schon mehrere Stunden an Numerik, vielleicht bin ich einfach jetzt blind und es ist offensichtlich! Aber bin wirklich für jede Hilfe dankbar!
 
 
Danke schonmal im vorraus.
 |   
 | 
 
| 
 | 
 
 
		
		 |  
		
		
		
  
		 | 
		 
		
| nschlange | 
 
  
 
Ehrenmitglied
 
  
 
 | 
 
  | 
Beiträge: 1.320
 | 
  | 
 
 | 
 
  | 
Anmeldedatum: 06.09.07
 | 
  | 
 
 | 
 
  | 
Wohnort: NRW
 | 
  | 
 
 | 
 
  | 
Version: R2007b
 | 
  | 
 
 | 
 
 
 | 
 
  | 
 
  | 
      
Verfasst am: 24.07.2008, 13:40    
Titel: 
 | 
  | 
 
 
Hi,
 
 
ich nehme an, es geht folgendermaßen:
 
Du nimmst eine Vektor x
 
 
Eine Funktion f
 
 
und deren Ableitung df
 
 
und übergibst beides mit einem Startwert an die Funktion
 
 
	  | Zitat: | 
	 
	
	  | newtonsolve2(f,df,2) | 
	 
 
 _________________
  Viele Grüße
 
nschlange
 
 
"Chuck Norris ejakuliert fluessigen Stahl!"
 |   
 | 
 
| 
 | 
 
 
 
| Bad_Rockk | 
 
Themenstarter
  
  
 
Forum-Newbie
 
 
 | 
 
  | 
Beiträge: 3
 | 
  | 
 
 | 
 
  | 
Anmeldedatum: 24.07.08
 | 
  | 
 
 | 
 
  | 
Wohnort: ---
 | 
  | 
 
 | 
 
  | 
Version: ---
 | 
  | 
 
 | 
 
 
 | 
 
  | 
 
  | 
      
Verfasst am: 24.07.2008, 18:46    
Titel: 
 | 
  | 
 
 
erstmal danke für die schnelle antwort.
 
 
sprich einfach vor der ersten zeile meines entwurfs 
 
 
f=... und die ableitung als df=... angeben?
 
 
eine frage noch, warum muss x ein vektor sein? weil das ganze problem ist eigentlich im x-y-system. also keine z komponente. warum muss ich da dann nen vektor angeben? und wenn woher weiß ich welcher vektor der richtige ist?
 |   
 | 
 
| 
 | 
 
 
 
| nschlange | 
 
  
 
Ehrenmitglied
 
  
 
 | 
 
  | 
Beiträge: 1.320
 | 
  | 
 
 | 
 
  | 
Anmeldedatum: 06.09.07
 | 
  | 
 
 | 
 
  | 
Wohnort: NRW
 | 
  | 
 
 | 
 
  | 
Version: R2007b
 | 
  | 
 
 | 
 
 
 | 
 
  | 
 
  | 
      
Verfasst am: 24.07.2008, 20:46    
Titel: 
 | 
  | 
 
 
Hi,
 
 
mit Vektor meine ich hier nicht ein Element eines Vektorraumes. Es ist im Wesentlichen eine Liste von Zahlen; das sind einfach die Stellen, an denen f und df berechnet werden.
 
 
In dieser Funktion musst Du nichts ändern, nur halt diese passenden Parameter beim Aufrufen der Funktion übergeben.
 _________________
  Viele Grüße
 
nschlange
 
 
"Chuck Norris ejakuliert fluessigen Stahl!"
 |   
 | 
 
| 
 | 
 
 
 
| Bad_Rockk | 
 
Themenstarter
  
  
 
Forum-Newbie
 
 
 | 
 
  | 
Beiträge: 3
 | 
  | 
 
 | 
 
  | 
Anmeldedatum: 24.07.08
 | 
  | 
 
 | 
 
  | 
Wohnort: ---
 | 
  | 
 
 | 
 
  | 
Version: ---
 | 
  | 
 
 | 
 
 
 | 
 
  | 
 
  | 
      
Verfasst am: 25.07.2008, 09:56    
Titel: 
 | 
  | 
 
 
|   | 
  | 
           | 
 
 
aber woher soll ich denn wissen an welchen stellen, das berechnet werden soll?
 
 
es geht ja gerade darum die x-werte rauszufinden, für die die funktion=0 ist!
 
 
Habe es momentan so:
 
 
x=[0]
 
f=(2.25-(x-1)^2)^(0.5)+1-(-sqrt(3)*x+2*sqrt(3)+1)
 
df=sqrt(3)-(1.0*(x-1))/(2.25-(x-1)^2)^0.5
 
 
// newtonsolve.sci
 
 
function [y,iter]=newtonsolve2(f,df,x)
 
 
err=1e-7;
 
yact=f(x);
 
xact=x;
 
iter = 0;
 
 
// Schleife solange yact nicht null ist
 
while  abs(yact)>err
 
   iter = iter + 1
 
  // berechne Jacobi-Matrix
 
  jac = df(xact)
 
  
 
  // diese Abfrage ist schon ein Verbesserung gegenüber einer Standardimplementierung
 
  
 
  if (det(jac)<=err)
 
      iter = -iter
 
    break
 
  end
 
  // neuer Aufpunkt x berechnet sich aus dem alten
 
   xact=xact-jac\yact
 
   // neuer functionswert
 
   yact=f(xact)
 
end
 
 
y=xact
 
 
endfunction
 
 
als ausgabe bekomme ich dann:
 
 x  =
 
 
    0.
 
 f  =
 
 
  - 2.3460676
 
 df  =
 
 
    2.626478
 
 
habe jetzt eben mal x=0 gesetzt, bekomme da auch en ergebniss raus aber das ist das negative was ich haben will.  
 
 
Habe die rechnung schonmal über ein normales CAS-System gemacht und da eben meine 2 Nullstellen rausbekommen. Und muss jetzt mit dem Newtonverfahren eine Näherung machen. Und schlussendlich die ergebnisse vergleichen.
 
 
als nullestellen kommen:
 
x1=1,13763...
 
x2=2,36237...
 
 
raus.
 |   
 | 
 
| 
 | 
 
 
 
 
 
  
 | 
  
 | 
 
| 
Einstellungen und Berechtigungen
 | 
 
 
 | 
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen 
 | 
 
 
 
 |  
 
 
  Impressum
 | Nutzungsbedingungen
 | Datenschutz
 | FAQ
 |   RSS
  
  
  Hosted by: 
 
  
  
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks 
 
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
  
 
 | 
 
 
		 |