Oder-Befehl bei Matlab < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 10:13 Fr 08.02.2013 | Autor: | Lyta |
Hallo
Ich möchte eine Funktion bei Matlab erstellen, mit der man ein Integral annäherungsweise berechnen kann. Das Integral soll über eine Funktion berechnet werden, die ich als gesondertes m.-File gespeichert habe. Momentan lautet sie zu Testzwecken einfach [mm] "f=x^2", [/mm] die Funktion heißt "Parabel".
Hier ist mein bisheriges Skript:
function d=Integral(a,b,n)
h=0;
x=a;
while x<=(b);
if (x==a || x==b)
y=Parabel(x);
else y=2*Parabel(x);
end
h=h+y;
x=x+((b-a)/n);
end
d=h*((b-a)/(a*n))
Ich habe das Programm mal mit a=2, b=5 und n=10 ausprobiert.
Leider scheint der "||"-Befehl nicht zu laufen, denn das letzte Ergebnis für y, das er liefert, ist "50" und nicht "25", also nimmt er die Parabel-Funktion Mal 2, was er aber ja nicht tun soll, wenn x==5 ist. Es scheint aber für den ersten Wert, also x==2 zu klappen... Wende ich das "||" falsch an?
Vielen Dank fürs Miträtseln und hoffentlich Lösen dieser eigentlich recht einfachen Aufgabe ;)
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hi!
Versuche es mal mit nur einem Strich. Also: |
Den rest des Programms habe ich mir nicht angeschaut.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:50 Mo 11.02.2013 | Autor: | Lyta |
Anmerkung: Der doppelte || Befehl wird von Matlab verlangt, ist also nicht Kern des Fehlers.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:53 Mo 11.02.2013 | Autor: | QCO |
Mein Freund der Debugger hat mir geholfen: Das Problem liegt nicht am Oder-Operator, sondern entsteht beim Rechnen. In deinem letzten Schleifendurchlauf wird x zwar als 5.0000 angezeigt, wenn man aber den Variableneditor öffnet, sieht man dort den Wert 4.999999999999998
Deshalb schlägt der Vergleich fehl. Wieso Matlab bei solch "einfachen" Divisionen aber schon Genauigkeit verliert, weiß ich leider nicht.
|
|
|
|