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 bei Cosinus-Funktion schreiben

 

xTheDJX4
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2016, 17:53     Titel: Hilfe bei Cosinus-Funktion schreiben
  Antworten mit Zitat      
Hallo,
ich habe folgende Aufgabe erhalten:
Schreiben Sie eine Script, dass der Funktionswert der Kosinusfunktion an der Stelle x=5 für n=0,...,10,20,50 berechnet.

dazu: cos(x) ist ungefähr:
die summe von i=0 bis n über:
((-1)^i)*((x^(2i))/((2i)!)

Mein Ansatz ist im Editor:
Code:

x==5
n=5
for i=0:n
  f = ((-1)^i)*((x^(2*i))/(factorial(2*i)))
end


Kann mir irgendwer sagen, wie ich die Ergebnisse aufsummiere, bzw. ob es einen einfacheren Weg gibt?
Vielen Dank im voraus Smile

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.04.2016, 18:01     Titel:
  Antworten mit Zitat      
Hallo,

bitte keine Mehrfachposts.

Momentan ist das Problem, dass f in jeder Iteration überschrieben wird.

Code:
x=5
n=5
for i=0:n
f(i+1) = ((-1)^i)*((x^(2*i))/(factorial(2*i)))
end


Das Berechnen der Summe übernimmt dann sum . Irgendwo naheliegend, oder?

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

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2016, 21:16     Titel:
  Antworten mit Zitat      
1. Danke für die schnelle Antwort. Smile
2. Der andere Post ist eine andere Aufgabe!
3. Bei dem sum Befehl bin ich auch schon gelandet, jedoch addiert das system dann immer nur die letzten beiden ergebnisse. wie genau muss ich das eingeben?

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
jedoch addiert das system dann immer nur die letzten beiden ergebnisse.

Wenn du den von mir angegebenen Vorschlag verwendest, dann ganz sicher nicht.

Zitat:
wie genau muss ich das eingeben?

Code:


Die beiden Fragen sind sehr eng verwandt. Wenn du diese gelöst hast, sollte die andere nun wirklich auch kein Problem mehr darstellen. Gut, man sollte irgendwann mal gesehen haben, wie man eine Funktion schreibt. Das wird aber in der Doku und verschiedensten Tutorials ausführlich beschrieben.

Grüße,
Harald

Zuletzt bearbeitet von Harald am 20.04.2016, 21:41, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
xTheDJX4
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2016, 21:39     Titel:
  Antworten mit Zitat      
Ok vielen Dank.
Und wie stelle ich es an, dass f nicht jedes Mal überschrieben wird?

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
xTheDJX4
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2016, 21:43     Titel:
  Antworten mit Zitat      
Und wie gebe ich weiterhin ein, dass n nicht gleich Null bis 50 ist, sondern n=0,...10,20,50?

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.04.2016, 22:13     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Und wie stelle ich es an, dass f nicht jedes Mal überschrieben wird?

Siehe mein Beitrag von 19:01.

Zitat:
Und wie gebe ich weiterhin ein, dass n nicht gleich Null bis 50 ist, sondern n=0,...10,20,50?

Du könntest z.B. cumsum statt sum verwenden und die entsprechenden Elemente extrahieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 21.04.2016, 07:17     Titel:
  Antworten mit Zitat      
Und es ist nie zu früh zu lernen, dass man in MATLAB besser keine Laufvariable i oder j benutzt. Dann hat man es mit komplexen Zahlen leichter Very Happy

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
xTheDJX4
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2016, 09:36     Titel:
  Antworten mit Zitat      
Danke für den Tipp Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
xTheDJX4
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.04.2016, 11:37     Titel:
  Antworten mit Zitat      
Eine weiter Frage zur zweiten Aufgabe:

Schreiben Sie eine Octave-Funktion y = my_cos(x,n), die den Funktionswert der Kosinusfunktion über die endliche Reihendarstellung für beliebiges x und n berechnet.

Mein Ansatz:

Code:
function[y] = my_cos(x,n)

for k = 0:n
y(i+1) = ((-1)^k)*((x^(2*k))/(factorial(2*k)));

sum(y)
end
end


Funktioniert aber nicht. Wo liegt der Fehler?
Vielen Dank im voraus. Smile

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
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: 24.04.2016, 11:53     Titel:
  Antworten mit Zitat      
Zitat:
Funktioniert aber nicht
ist keine gute fehlerbeschreibung.
sum(y) wird nicht in deiner rückgabevariablen gespeichert.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
xTheDJX4
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.04.2016, 12:51     Titel:
  Antworten mit Zitat      
Tut mir leid die Antwort verstehe ich inhaltlich nicht.

Mein Problem:
wenn ich die oben genannte Funktion ausführe erscheint folgende Fehlermeldung:

error: 'n' undefined near line 3 column 11
error: called from
aufgabeb at line 3 column 1
error: invalid limit value in colon expression
error: called from
aufgabeb at line 3 column 1

Wie kann ich diesen Fehler beheben und die Aufgabe lösen?
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: 24.04.2016, 12:59     Titel:
  Antworten mit Zitat      
i ist in deiner funktion unbekannt also ist es die immaginäre einheit.
dann weist du in jedem schleifendurchlauf dem i+1 element einen wert zu das sollte schonmal überhaubt nicht klappen da indexe entweder logicals sind oder positive integer werte.
danach berechnest du sum(y) das ist schön aber du speicherst den wert nirgens.
. auß deinerfehlermeldung geht hervor das irgendwas mit dem namen aufgabe aufgerufen wird. das kommt in deinem code garnicht vor. daher weis ich auch nicht woher der fehler kommt. der teil der den fehler produziert hast du nicht gepostet.
ich kann wirklich nur nochmal empfehlen das getting startet oder ähnliches durchzuarbeiten.
grüße
_________________

richtig Fragen
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: 24.04.2016, 15:17     Titel:
  Antworten mit Zitat      
Hallo xTheDJX4,

Wenn laut Fehlermeldung "n" unbekannt ist, liegt der Fehler wohl daran, wie Du die Funktion aufgerufen hast. Es wäre also erforderlich, auch diese Zeile zu posten.

Hier mal eine aufgeräumte Version Deines Codes:
Code:
function y = my_cos(x, n)
y = 0;
for k = 0:n
  y = y + (-1)^k * x^(2 * k) / factorial(2 * k);
end
end

Wir lösen keine Hausaufgaben, aber Du hattest es ja fast geschafft.

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 - 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.