WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

betrag bzw. abs macht probleme

 

mightym0e
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2013, 22:48     Titel: betrag bzw. abs macht probleme
  Antworten mit Zitat      
Ich versuche zur zeit ein parabolisches randwertproblem mit finiten elementen zu lösen. Dazu brauch ich unter anderem die funktion: f=@(y)abs(x(j)-y)
x(j) ist ein konstanter vektoreintrag. Die funktion ist eigentlich sehr simpel, jedoch macht octave einen merkwürdigen fehler: bis etwa f(y)=0.0008 sinkt die funktion linear wie sie soll. Danach bleibt sie jedoch für eine kleine strecke konstant und steigt danach wieder linear. Sie erreicht somit nie null, obwohl sie das ja eigentlich sollte... Weiss jemand, was das problem sein könnte? Bin langsam am verzweifeln...

Die funktion x(j)-y ist übrigens -wie sie auch soll- linear sinkend...

Sorry wegen der schlechten rechtschreibung, schreibe mit dem handy da das internet zur zeit nicht funktioniert.
Private Nachricht senden Benutzer-Profile anzeigen


markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 07.01.2013, 22:57     Titel: Re: betrag bzw. abs macht probleme
  Antworten mit Zitat      
mightym0e hat Folgendes geschrieben:

Sorry wegen der schlechten rechtschreibung, schreibe mit dem handy da das internet zur zeit nicht funktioniert.


Kannst du dann vielleicht sobald es wieder funktioniert mehr Code posten?
Und welche Octave Version verwendest du?
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
mightym0e
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2013, 09:02     Titel:
  Antworten mit Zitat      
das Internet wird wohl demnächst nicht gehen, unser Anbieter ist nicht gerade bekannt für seine Geschwindigkeit. Smile

Aber jetzt bin ich am Arbeitsplatz und kann den Code einigermassen auswendig, zumindest den relevanten Teil:

Code:

h=0.001; %die Zahl kommt etwas komplexer zu Stande und ist meistens nicht so schön, jedoch tut dies hier nicht zur Sache.

xl=0; %dito
xr=5; %dito

x = [xl:h:xr];

j=60; %Habe ich um zu Testen einfach mal irgendwie gewählt, wird dann später in einer Schlaufe sein.

f = @(y)(abs(x(j)-y));

fplot(f,[x(j)-h x(j)+h])

 


So das ists schon... Also eigentlich ist alles etwas komplizierter, jedoch bin ich nie auf ein richtiges Ergebnis gekommen, weshalb ich begonnen habe, die einzelnen Teile des Codes zu prüfen, wobei ich dann halt eben hier den Fehler gefunden habe.

Edit: Die Octave-Version kann ich leider nicht angeben da -wie gesagt- ich bei der Arbeit bin. Habe jedoch das neuste Ubuntu installiert und dies im Dezember 2012, sollte somit die aktuellste Version sein.
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 08.01.2013, 10:04     Titel:
  Antworten mit Zitat      
Auf der Arbeit habe ich leider nur Matlab zur Verfügung (Olle 7.4.0.287 Version Wink ). Dort macht die Funktion genau was deinen Erwartungen entspricht. Sie fällt linear bis sie ihr Minimum in x=0.059 y=0 erreicht. Danach steigt sie wieder linear.
Ich kann es dann erst heute Abend wenn ich wieder Zuhause bin mit Octave 3.6.3 testen.

mightym0e hat Folgendes geschrieben:

Edit: Die Octave-Version kann ich leider nicht angeben da -wie gesagt- ich bei der Arbeit bin. Habe jedoch das neuste Ubuntu installiert und dies im Dezember 2012, sollte somit die aktuellste Version sein.


Das sollte dann glaube ich Octave 3.6.1 sein.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
mightym0e
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2013, 11:15     Titel:
  Antworten mit Zitat      
Gut, das ist schon mal beruhigend wenn es bei dir funktioniert, dann stimmt zumindest der Code... Smile

Aber irgendwie kann ich mir einfach nicht vorstellen, dass das Problem an der Octave-Version liegen könnte... Die Betrags-Funktion ist ja relativ simpel und sollte doch eigentlich immer funktionieren?

Kann es noch an etwas anderen liegen? Irgendwelche Einstellungen oder so? :S
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 08.01.2013, 19:20     Titel:
  Antworten mit Zitat      
Ich würde sagen, ein Bug...bzw. schlecht implementiert, da fplot die zu plottenden Punkte schätzt.

http://paste.osuv.de/index.php/qryhB/
http://paste.osuv.de/index.php/2zw0Wp/


....oder du hast falsch gedacht, und matlab sich verrechnet Razz

Also reporten, oder selber fplot verbessern (und den patch einreichen Very Happy ) oder eine andere Plotdarstellung wählen (kein Ahnung wie und welche).
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
mightym0e
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2013, 12:54     Titel:
  Antworten mit Zitat      
So, es gibt Neuigkeiten: Es sieht tatsächlich nach einem Bug von fplot aus, leider sind meine Programmierkentnisse zu beschränkt um es beheben zu können.
Es spielt jedoch weniger eine Rolle, da die Werte eigentlich stimmen. Nur fplot zeigt sie falsch an.

Mit dem kann ich leben, wollte ja eigentlich nur schauen wo der Fehler steckt. Smile

Jedoch habe ich noch eine kleine andere Frage:

Ist es möglich, eine solche Schleife direkt mit Vektoren zu lösen? Leider ist es mit der Schleife ziemlich rechenintensiv...

Code:

N=2000;
c=1; %ist eigentlich eine Funktion von y

for j=1:1:N

bjbj=@(y)max(0,1-(abs(y-x(j)))/h)^2*c;
beta1(j) = quad(bjbj,x(j)-h,x(j)+h);

end
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 09.01.2013, 22:17     Titel:
  Antworten mit Zitat      
Weiß ich leider nicht. Und die ganzen Matlab User hier, gucke nie hier rein Smile
Würd die Frage einfach ganz dreist noch mal in einem Matlab Forum hier auf machen.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.