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

tatsächlichen Fehler berechnen

 

ng83
Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 26.11.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 01.08.2014, 19:27     Titel: tatsächlichen Fehler berechnen
  Antworten mit Zitat      
Hallo,
ich möchte den tatsächlichen Fehler der exakten Lösung berechnen.
Das funktioniert über die Kondition des Problems, wofür man die 1. Ableitung benötigt. Dazu habe ich das folgendes kleines Programm geschrieben, komme aber jetzt nicht mehr weiter.
Vllt. kann mir hier jemand helfen.

Code:
t=eps;
syms t v
v=(-0.003*t-0.047)/0.01;
diff(v,t)


Ich erhalte -1/3.

Vielen Dank vorab und VG
Private Nachricht senden Benutzer-Profile anzeigen


ng83
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 26.11.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 02.08.2014, 08:01     Titel:
  Antworten mit Zitat      
Hallo,
ich habe noch ein bisschen rumprobiert und das folgende erhalten.
Code:
fabl=norm(-3/10);
disp(fabl)
normeps=norm(2.2204e-16);
disp(normeps);
fablxeps=fabl*normeps;
disp(fablxeps)
y=(-0.003*eps-0.047)/0.01;
norm_y=norm(y);
disp(norm(y))
kond_rel=fablxeps/norm_y


Das Ergebnis:
Code:
kond_rel =1.4173e-17


Kommt das hin? Ist ja eine sehr kleine Zahl.

VG
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.08.2014, 13:58     Titel: Re: tatsächlichen Fehler berechnen
  Antworten mit Zitat      
Hallo ng83,

Zitat:
ich möchte den tatsächlichen Fehler der exakten Lösung berechnen.

Was möchtest Du genau? Exakte Lösungen haben definitionsgemäß keinen Fehler.

Möchtest Du die Sensitivität der Lösung in Abhängigkeit von einer Variation des Inputs bestimmen?

Die Verwenung von "norm(-3/10)" ist hier nur verwirren. Du kannst gleicht "0.3" schreiben, oder?

Du könntest die 1. Ableitung durch einen Differenzen-Quotienten annähern:
Code:
t1 = 0;
t2 = eps;
v1 = (-0.003 * t1 - 0.047) / 0.01;
v2 = (-0.003 * t2 - 0.047) / 0.01;

S = abs((v2 - v1) / (t2 - t1))

Dann wüsstest Du, um welchen Betrag v abweicht, wenn t um EPS variiert wird.

Gruß, Jan

Ich erhalte -1/3.

Vielen Dank vorab und VG[/quote]
Private Nachricht senden Benutzer-Profile anzeigen
 
ng83
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 26.11.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 02.08.2014, 14:09     Titel:
  Antworten mit Zitat      
Hallo und danke für die Antwort,
nein, der Betreff war schon richtig.
"Wenn man nun die exakte Lösung kennt, kann man den tatsächlichen Fehler angeben." Dazu soll man die Kondition des Funktionsterms benutzen, wofür man die erste Ableitung benötigt.
Auch die exakte Lösung ist nicht "exakt". Der Rechner rundet doch auch nur, daraus entsteht ein Fehler.

So habe ich das verstanden.
Private Nachricht senden Benutzer-Profile anzeigen
 
ng83
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 26.11.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 02.08.2014, 19:12     Titel:
  Antworten mit Zitat      
Hallo,
ich möchte das Thema gern noch einmal nach oben schieben.
Code:
t=eps;
syms t v
v=(-0.003*t-0.047)/0.01;
diff(v,t)

%kond_rel
norm_fabl=norm(-3/10);%||f´(x)||
disp(norm_fabl);
normeps=norm(2.2204e-16);
disp(normeps);
fablxeps=norm_fabl*normeps;%||f´(x)||*||eps||
disp(fablxeps);
y=((-0.003*eps)-0.047)/0.01;%f(x)
norm_y=norm(y);%||f(x)||
disp(norm(y));
kond_rel=fablxeps/norm_y%kond_rel=||f´(x)||*||eps||/||f(x)||

%kond_abs
fpluseps=(norm_fabl*normeps)+norm(y);%f(x-dx)=||f´(x)||*dx+||f(x)||
norm_fpluseps=norm(fpluseps);%||f(x-dx)||
disp(norm_fpluseps);

fplusepsminusf=fpluseps-y;%f(x-dx)-f(x)
norm_fplusepsminusf=norm(fplusepsminusf);%||f(x-dx)-f(x)||
kond_abs=(norm_fplusepsminusf)/normeps

 


Die Ergebnisse:
Code:
kond_rel =1.4173e-17
kond_abs =4.2335e+16


Ich glaube ich habe hier einen Fehler gemacht.
Ich muss dt=eps setzen und nicht t, aber welchen wert nehme ich dann für t?

vg und danke für die hilfe
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.