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

Hilfe zur Fkt. Berechnung

 

Gast_Denny

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2012, 15:06     Titel: Hilfe zur Fkt. Berechnung
  Antworten mit Zitat      
Guten Tag,

ich habe eine Frage zu einer Fkt., die ich in Matlab integrieren soll.

Numerische Integration

Y(i) = yi-1 * (ti - ti-1)

Meine Frage dazu wäre, ob es möglich ist, einen Tip zu bekommen, wie ich diese Formel in Matlab integrieren kann.
Ich habe es bereits mit einer for-Schleife versucht, aber irgendwo hängt es.

Eingabewerte für y und t wurden bereits programmiert.

Bei "i" handelt es sich um den jeweiligen Index des Elements von y bzw. t.

Wäre schön, wenn jemand einen Tip abgeben könnte bzw. mir helfen würde.

Danke .... MfG


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 09.09.2012, 15:55     Titel: Re: Hilfe zur Fkt. Berechnung
  Antworten mit Zitat      
Hallo Gast_Denny,

Wenn es an Deinem Code "irgendwo hängt", poste doch mal den Code und beschreibe, wo es hängt mit den notwendigen Details. Dann würden unsere Vorschläge wohl viel wahrscheinlicher zu Deinem Code passen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast_Denny

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2012, 15:56     Titel:
  Antworten mit Zitat      
Ich werde versuchen meine Frage konkreter darzustellen.

Ich habe mit "input" 2 Anweisungen erstellt, die zum Eingeben eines y-Wertes und eines t-Wertes auffordern.

y = input
t = input

Dazu habe ich Ausgabeparameter erstellt, die mit disp ausgegeben werden

disp(Y)
disp(T)

Nunn soll folgende Fkt. berechnet werden, die mit den Eingabeparametern bestückt wird.

Wobei "i" der Index der Durchläufe darstellt.


Y(i) = y(i-1) * ( t(i) - t(i-1) )

Ich hab es schon mit einer for-Schleife versucht und mit einer Fkt. Aber irgendwie passt es immer nicht.

Wäre sehr nett, wenn mir jemand einen Tipp geben könnte bzw. mir helfen würde.


Ich hoffe, ich habe meine Fragestellung besser darstellen können.
 
Gast_Denny

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2012, 15:58     Titel:
  Antworten mit Zitat      
Hier mein Versuch:

Code:


%Erstelln Sie in Matlab eine Funktion, welche den übergebenden Datenvektor
%y numerisch integriert. Die zu integrierende Funktion y soll hierfür mit
%dem zugehörigen Zeitvektor t übergeben werden und die Ergebnisse nach der
%Berechnung wieder ausgegeben werden.
clear;clc;close all;



disp(' ')
y = input('Bitte geben Sie einen Datenvektor y ein!   y =  ');

% Eingabeparameter y

% Fehlerabfrage, ob ein Parameter eingegeben wurde

if isempty(y)
    disp(' ')
    disp('Sie haben vergessen einen Parameter für y einzugeben.')
end


disp(' ')
t = input('Bitte geben Sie einen Zeitvektor t!        t =  ');

% Eingabeparameter t

% Fehlerabfrage, ob ein Parameter eingegeben wurde

if isempty(y)
    disp(' ')
    disp('Sie haben vergessen einen Parameter für t einzugeben.')
end





% Berechnung



for i = t
    y = i-1;
    t1 = i;
    t2 = i-1;
    Y = y*(t1-t2);
end

disp(' ')
disp('Der Datenvektor der integrierten Fkt. lautet: ');
disp(' ')
disp(Y)

% Ausgabeparameter Y

disp(' ')
disp('Der Zeitvektor der integrierten Fkt. lautet: ');
disp(' ')
disp(T)

% Ausgabeparameter T

 
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 09.09.2012, 17:08     Titel:
  Antworten mit Zitat      
Hallo Gast_Denny,

Zitat:
Nunn soll folgende Fkt. berechnet werden, die mit den Eingabeparametern bestückt wird.
Wobei "i" der Index der Durchläufe darstellt.

Hier muss ich einige Phantasie aufwenden um zu erraten, was Du meinst.

Zitat:
Ich hab es schon mit einer for-Schleife versucht und mit einer Fkt. Aber irgendwie passt es immer nicht.

Dieses Forum kann Fehler sehr gut lösen, aber es ist schlecht beim Erraten von Fehlern. Während Du den Fehler oder die Probleme direkt vor der Nase hast, haben wir keine Ahnung was passiert. "Passt irgendwie nicht" ist nicht hilfreich. Bitte beschreibe statt dessen was genau passiert und wodurch sich dies von Deinen Erwartungen unterscheidet.

Zitat:
%Erstelln Sie in Matlab eine Funktion, ...

Eine Funktion muss in Matlab mit dem Keyword "function" beginnen, ansonsten ist es ein "script". Zunächst mag der Unterschied nebensächlich klingen, aber für einen tieferen Einstie in Matlab ist die Unterscheidung essentiell.

Wie kommst Du dazu das Script(!) mit "clear;clc;close all;" zu starten? Ich bin immer wieder verwundert darüber, wo Matlab-Beginner diese kruden Aufräum-Methoden bekommen. Ohne Frage ist es aber eine gute Idee, zumindest auf "clear all" zu verzichten ;-)

Und nun zur eigentlichen Frage:
Einerseits hast Du die Beschreibung:
Zitat:
Y(i) = y(i-1) * ( t(i) - t(i-1) )

Andererseits den Code:
Code:
Y = y * (t1-t2)

Da fehlt doch im Code der Index "(i)" bei Y! Deshalb überschreibst Du den Wert von Y in jeder Iteration.
Aber es gibt ein weiteres Problem im Code:
Code:
for i = t
    y = i-1;
    t1 = i;
    t2 = i-1;
    Y = y*(t1-t2);
end

"y = i-1"? Hier wird auch noch der Input-Vektor "y" überschrieben.
Ich schlage vor, der Text-Beschreibung zu folgen:
Code:
for i = 2:length(t)
  yout(i) = y(i-1) * (t(i) - t(i-1));
end

Diese Schleife startet erst bei 2, statt bei 1. Wieso? Wie bekommst Du aus dem Output "yout" (optisch besser unterscheidbar als "y" und "Y") nun das approximierte Intergral?

Gruß, Jan
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.