exponentialfunktion Kurve programmieren
-
Hallo,
könntet ihr mir bitte bei der Programmierung von dieser Funktion helfen?
y = ymax * (1 - exp(-t)) ?
Macht man das mit For-Schleife?
int ymax = 20 ;
int t[6] ={0,1,2,3,4,5};
For (int i = 0; i<=6 ; i++)
{
y = 20*(1-exp(-t[i]));
}...
Wie geht es hier weiterDanke!
-
Was willst du den mit den Werten machen, ausgeben (als Zahlen), zeichnen, abspeichern?
Dein Array ist ziemlich überflüssig, die for-Schleife kann prima zählen. Allerdings sind 6 Werte nicht wirklich viel. Nimm float/double, dann kannst du feiner inkrementieren.
exp will double exp(double) und steckt in math.h.
-
Ach und nebenbei, deine for-Schleife ist falsch, bei 6 Elementen im Array geht der Index von 0 bis 5. Also muss der Vergleich i<6 heissen.
-
Danke für deine Antwort!
Ich muss die Ladekurve von einem Kondensator in einem Simulationsprogramm zeichnen. Die Kurve muss ich erst aber in C oder C++ implementieren.
http://home.arcor.de/wetec/rechner/cladekurve.png
D.h. mein Code ist korrekt? Wenn ich das im Si.-Programm eingebe dann bekomme ich keine Exponentialfunktion
-
a-schlieve schrieb:
int ymax = 20 ; int t[6] ={0,1,2,3,4,5}; For (int i = 0; i<=6 ; i++) { y = 20*(1-exp(-t[i])); }
und wenn du die 20 schon in eine Variable "ymax" packst, würde ich auch diese Variable für die Rechnung verwenden und nicht so eine magische Konstante im Quellcode:
int ymax = 20 ; int t[6] ={0,1,2,3,4,5}; For (int i = 0; i<6 ; i++) { y = ymax*(1-exp(-t[i])); }
-
Verrat mal mehr über dieses Programm und das Interface was du benutzen musst. Und wie gesagt, 6 Punkte sind ein bisschen wenig. Es könnte auch sein dass du nur die Formel angeben musst (mit passenden Variablennamen) und das Programm den Rest selber macht. Wie gesagt, mehr Infos bitte.
-
Die Formel scheint richtig, hier ein Testprogramm welches die Werte ausgibt.
#include <stdio.h> #include <math.h> int main(void) { double t; double ymax=20; double y; for(t=0;t<5;t+=0.2) { y = ymax*(1-exp(-t)); printf("%f\t%f\n",t,y); } return 0; }
-
420815 schrieb:
Verrat mal mehr über dieses Programm und das Interface was du benutzen musst. Und wie gesagt, 6 Punkte sind ein bisschen wenig. Es könnte auch sein dass du nur die Formel angeben musst (mit passenden Variablennamen) und das Programm den Rest selber macht. Wie gesagt, mehr Infos bitte.
Es geht um eine restbussimulation in Canoe. Entweder macht man das mit einem I-Generator oder programmiert man das mit Capl (ähnlich wie C). In einer Timer-Funktion (on Timer) muss ich nach einer if-Anweisung Das Aufladekurve von einem Kondensator implemtieren und im Graphik-Fenster die Kennline daratellen. Dadurch das sich wenig Foren mit Capl beschäftigen habe ich das hier gepostet weil das eigentlich ähnlich wie C und C ist. Nachdem ich diese Kurve nach eurer Hilfe implementiert habe, habe ich die programmierte Funktion einen Systemvariable (was die Ladespannung sein soll) zugewiesen, aber es hat leider nicht geklappt und ist immer Null. Vielleicht ist irgendwas in meiner Capl-programm nicht in Ordnung!
-
a-schlieve schrieb:
Vielleicht ist irgendwas in meiner Capl-programm nicht in Ordnung!
Wird wohl... Gibt es in der Firma / Uni niemanden den du fragen kannst?
-
420815 schrieb:
a-schlieve schrieb:
Vielleicht ist irgendwas in meiner Capl-programm nicht in Ordnung!
Wird wohl... Gibt es in der Firma / Uni niemanden den du fragen kannst?
Wie man so schön sagt: Im kalten Wasser geschmissen:-)
Danke trotzdem für die Hilfe!