Verfasst am: 20.02.2011, 22:51
Titel: zu langsam...
Ich habe auf Matlab ein Programm zum Berechnen von Integralen anhand des numerischen Romberg Verfahrens programmiert. Nur leider ist das ganze etwas zu langsam.
V.a. wenn ich die Funktion sin(x) mit den Grenzen 0 und 2*pi eingebe, bleibt er hängen.
Mein jetziger Code sieht so aus:
Code:
function Romberg3( f, a, b )
E=10^(-10);
n=1;
w=0;
h=b-a;
T(1,1)=h*(feval(f,a)+feval(f,b))/2;
while w==0
%Hauptzyklus
h=(b-a)/2^n;
T(n+1,1)=h/2*(feval(f,a)+feval(f,b)+2*sum(feval(f,a+(1:(2^n-1))*h))); %naechstes Glied;Trapezrege
%extrapolieren des Unterzyklus mit m=2 bis n+1 for m=2:n+1 for l=1:n+2-m
T(l,m)=T(l+1,m-1)+(T(l+1,m-1)-T(l,m-1))/(2.^(2*(m-1))-1);
end end ifabs((T(1,n+1)-T(1,n))/T(1,n))>E
n=n+1;
else
w=1;
end end disp(T(1,n+1));
Wie kann man diesen vereinfachen. Bei den beiden for-Schleifen werden Werte immer wieder ausgerechnet. Nur leider weiss ich nicht, wie ich das ändern könnte. Hat jemand von euch vielleicht eine Idee?
Wäre wirklich sehr froh um Hilfe. (Bin leider noch nicht so routiniert im Programmieren!)
Vielen Dank schon im Voraus!!
Wombat
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 21.02.2011, 16:52
Titel:
Habs selbst rausgefunden!!
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
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.