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

Fragen zur "Integral"-Funktion

 

Mr. Machete
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2015, 10:42     Titel: Fragen zur "Integral"-Funktion
  Antworten mit Zitat      
Hallöchen miteinander,

ich versuche gerade mit der Integralfunktion bei einem Problem zurecht zu kommen. Folgenden Code habe ich herausbekommen, der auch funktioniert:

Code:

fun = @(x)cos(2*pi*x).^2;
q = 0.5.*integral(fun,0,1);
disp(['Integral: ' num2str(q)]);
 


Da in meinem Programm jedoch die Cos.-Funktion als Variable weiter vorne auftauchen soll, habe ich sie aus fun rausgenommen. Anschließend hat Matlab gemeckert, dass mein x nicht definiert ist, weshalb ich es ergänzt habe. Die Programmierung sieht nun wie folgt aus:

Code:

z=1/10000;
x=0:z:1;

var=cos(2*pi*x).^2;
fun = @(x)var;
q = 0.5.*integral(fun,0,1);
disp(['Integral: ' num2str(q)]);
 


Hier meckert Matlab bei der vorletzten Zeile, dass es nicht funktioniert und ich bitte an dieser Stelle um Hilfe.
Ich bitte auch zu beachten, dass der Ausdruck x=0:z:1 bestehen bleiben soll, da das x für eine numerische Berechnung vorher benutzt wird. Also nicht mit syms und int arbeiten.
Gibt es vielleicht andere Integrallogarythmen, die für dieses Problem besser funktionieren:

Gruß Machete
Private Nachricht senden Benutzer-Profile anzeigen


Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 12.03.2015, 13:30     Titel:
  Antworten mit Zitat      
Hallo,

Die Fehlermeldung ist meist nützlich:
Zitat:
Error using integralCalc/finalInputChecks (line 515)
Output of the function must be the same size as the input. If FUN is an array-valued integrand, set the 'ArrayValued' option to
true.


Aus der Hilfe zu integral:
Zitat:
q = integral(fun,xmin,xmax,Name,Value)

Name-Value Pair Arguments:
'ArrayValued' — Array-valued function flag
false (default) | true | 0 | 1
Array-valued function flag, specified as the comma-separated pair consisting of 'ArrayValued' and either false, true, 0, or 1. Set this flag to true to indicate that fun is a function that accepts a scalar input and returns a vector, matrix, or N-D array output.

Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Mr. Machete
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2015, 17:15     Titel:
  Antworten mit Zitat      
Danke für die Antwort, ich hab das mal versucht, in Matlab wie folgt umzusetzen:

Code:

z=1/10000;
x=0:z:1;

var=cos(2*pi*x).^2;
fun = @(x)var;
q = 0.5.*integral(fun,0,1,'ArrayValued',1);
disp(['Integral: ' num2str(q)]);
 


Die darauffolgenden Fehlermeldungen sind für mich böhmische Dörfer. Bitte um Hilfe:
Code:

Error using integralParseArgs (line 12)
Argument 'ArrayValued' failed validation
with error:
ArrayValued must be true or false.

Error in integral (line 88)
opstruct = integralParseArgs(varargin{:});

Error in Test2 (line 10)
q = 0.5.*integral(fun,0,1,'ArrayValued',0);
 

Die Meldung erscheint übrigens auch, wenn ich nach 'ArrayValued' eine 0 einsetze.
Private Nachricht senden Benutzer-Profile anzeigen
 
laternenjoe
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 83
Anmeldedatum: 25.02.15
Wohnort: Bochum
Version: ---
     Beitrag Verfasst am: 12.03.2015, 18:15     Titel:
  Antworten mit Zitat      
Hallo Mr Machete,

Ich zitiere mal aus der Fehlermeldung

"ArrayValued must be true or false. "

Anstatt 1 musst du da true reinschreiben. Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 13.03.2015, 03:07     Titel:
  Antworten mit Zitat      
huhu ich geb jetzt auch mal meinen senf dazu Smile
Code:
hier überschreibst du die matlab funktion var... das ist nicht sehr schön. das kann zu unerwarteten ergebnissen führen und sollte vermieden werden.
Code:

hier vesuchst du nun aus den vorhergehenden werten eine funktion zu machen die von x abhängt...
das geht aber nicht. var ist bei dir einfach ein array mit zahlen die nix mit x zu tun haben.. das ist als wenn du
Code:
fun = @(x) [1,3];
schreibst
wie siht es denn mit sowas aus?

Code:
z=1/10000;
x=0:z:1;
fun = @(x) cos(2*pi*x).^2;
var2=fun(x)
q = 0.5.*integral(fun,0,1,'ArrayValued',1);
disp(['Integral: ' num2str(q)]);
 

kann das grade nicht testen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Mr. Machete
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2015, 21:26     Titel:
  Antworten mit Zitat      
Jo, das sieht jetzt gut aus. Danke für die Antworten.
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 - 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.