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

Implementierung e. Summe ohne Schleifenkonstrukte/Rekursion

 

mitsch1989

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2011, 13:49     Titel: Implementierung e. Summe ohne Schleifenkonstrukte/Rekursion
  Antworten mit Zitat      
Wie implementiere ich das ohne diese Schleifenkonstrukte? Als Hinweise wurde uns gesagt, dass " die übergebene Funktion f eine bestimmte Art von Argumenten aktzeptieren muss.

Code:
%h=(b-a)/n;
sum=0;
v=linspace(a,a+n*h,n+1);

for i = 1:n
    sum = sum+(feval(f,((v(i+1)+v(i))/2)));
end
M=sum*h
end
 

vielen dank im voraus


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.05.2011, 14:15     Titel: Re: Implementierung e. Summe ohne Schleifenkonstrukte/Rekurs
  Antworten mit Zitat      
Hallo mitsch1989,

Zitat:
Als Hinweise wurde uns gesagt, dass " die übergebene Funktion f eine bestimmte Art von Argumenten akzeptieren muss.

Nämlich welche Art von Argumenten??? Irgendeine Idee?
Bisher rufst Du die Funktion mit einzelnen Werten auf, die in der FOR-Schleife aus einem Vektor nacheinander ausgewählt werden. dann könnte man doch gleich...

Viele Spaß beim Matlab lernen! Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
mitsch1989

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2011, 10:23     Titel: Re: Implementierung e. Summe ohne Schleifenkonstrukte/Rekurs
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:

Nämlich welche Art von Argumenten??? Irgendeine Idee?
Bisher rufst Du die Funktion mit einzelnen Werten auf, die in der FOR-Schleife aus einem Vektor nacheinander ausgewählt werden. dann könnte man doch gleich...


...alle Werte des Vektors gleichzeitig benutzen?
wie soll das funktionieren?
hab leider erst 2 vorlesungen matlab hinter mir und die waren nicht gerade hilfreich, vorher noch nie programmiert...

Jan S hat Folgendes geschrieben:
Viele Spaß beim Matlab lernen!

den hab ich, danke Laughing
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.05.2011, 10:57     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
...alle Werte des Vektors gleichzeitig benutzen?

genau.

Zitat:
wie soll das funktionieren?

Indem die Funktion einen Vektor als Eingabeargument annimmt und einen Vektor als Ausgabeargument zurückgibt.

Achtung im übrigen: eine Variable SUM zu nennen ist keine gute Idee, da dadurch der MATLAB-Befehl SUM überlagert wird.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Mitsch1989

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2011, 11:03     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:

Indem die Funktion einen Vektor als Eingabeargument annimmt und einen Vektor als Ausgabeargument zurückgibt.


Code:
function [ M ] = mittelpunkt( a, b, n, f )

h=(b-a)/n;
sum=0;
v=linspace(a,a+n*h,n+1)


g=(h/2:h:b-(h/2))
g2 = feval(g)

M=sum*h
end
 

jetzt versuch ich hier die werte aus g in die funktion einzusetzen und diese in g2 zu speichern. funktioniert so leider nicht ganz Confused
 
Mitsch1989

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2011, 11:06     Titel:
  Antworten mit Zitat      
bzw ehr so
Code:
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.05.2011, 12:39     Titel:
  Antworten mit Zitat      
Hallo,

natürlich musst du dann auch g2 verwenden, um M zu berechnen.

Ansonsten Rückfragen: warum funktioniert es nicht? Bekommst du eine Fehlermeldung? Welche?
Was wird als a, b, f, n übergeben?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
mitsch1989

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2011, 17:01     Titel:
  Antworten mit Zitat      
hallo,

ja den rest hatte ich dann nicht mehr geändert, weil das mit dem vektor übergeben scho nicht geklappt hatte.
ich will ja das integral von a bis b berechnen.

Code:
>> mittelpunkt2(0,4,10,f)

g =

  Columns 1 through 8

    0.2000    0.6000    1.0000    1.4000    1.8000    2.2000    2.6000    3.0000

  Columns 9 through 10

    3.4000    3.8000

??? Error using ==> mpower
Inputs must be a scalar and a square matrix.

Error in ==> @(x)(x^2)


Error in ==> mittelpunkt2 at 11
g2 = feval(f,g)


dies bekomme ich als fehlermeldung
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.05.2011, 21:06     Titel:
  Antworten mit Zitat      
Hallo,

dann ist f wohl @(x) x^2 ? Probiers mal mit f = @(x) x.^2. Und dann mach dich über komponentenweise Operationen .* ./ .^ schlau Smile

Grüße,
Harald
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.