trapezregel fläche
-
ft schrieb:
ich weiß nicht wie man die fläche mit hilfe der trapezformel in c++ umwandle (schriebe)
ich hab erst seit einem monat c++ und lerne es erst seitdem
was meinst du mit tags ???
Aber du rechnest da ja schon etwas. Und das ist falsch, oder wie?
Ich denke eher, dass du ein Problem hast die Daten aus der Datei zu lesen, weil du rufst die Funktion kein einziges mal auf.
Schau dir mal die I/O Examples hier an:
http://www.cppreference.com/cppio/examples.htmlDa siehst du, wie man Daten aus einer Datei einliest.
-
also die x-achse ist bei mir die zeit und die y- achse die amplitude (also koordinatenkreuz)
es läuft eine kurve vom punkt 0.00 die einmal ins posotive dann ins negative und wieder ins postive und dann wieder ins negative verläuft.(in bezug auf die x-achse
es sind insgesamt 4 flächen.
ich hab schon vieles im netz gesucht und in büchern auch nichts vergleichbares gefunden (LEIDER) ihr seid halt mein letzter versuch.
-
Wenn ich das richtig verstehe, willst Du mit hilfe der Sehnentrapezformel die Energie Deines Oszilators (mit f(xt)) bestimmen, oder?
Schwingt der wirklich mit sqrt(x) * sin(x) ein? Kommt mir irgendwie komisch vor.
Oder habe ich grundsätzlich falsch verstanden, was Du da bezweckst?
-
du hast eine sinuskurve nehm ich an, welceh exkatr 2 perioden lang ist? und du willst die summe der fläche aus den beiden positien und negativen flächen der kurve?
Du könntes theoretisch aud en kuvenpunkten näherungweise die kruvenfunktion ermitteln, und dann mit integralrechnung die flächen berechnen;)
Im trapezverfahren prinzip liest du immer die zwei aueinder folgende Punkte aus, und beechnet darin die fläche (einfache geometrie). Diese ergebnisse summerist du in der schleife auf..
-
ich will nicht die energie ermitteln sondern mit hilfe der sehnentrapezregel die fläche aus einer vorhandenen datei ermitteln
-
wie könnte denn beispielsweise so eine schleife aussehen (etwa so wie hier ???
http://www.c-plusplus.net/forum/viewtopic-var-t-is-128038-and-highlight-is-trapezregel.html)
-
die fläche zwischen zwei punkten bzw. zeitintervall:
fläche= (y1>y2) ? (y2 *(abs(x1-x2)) + ((y1-y2)* abs(x1-x2))/2 : (y1 *(abs(x1-x2)) + ((y2-y1)* abs(x1-x2))/2 )
:schland:
-
ft schrieb:
ich will nicht die energie ermitteln sondern mit hilfe der sehnentrapezregel die fläche aus einer vorhandenen datei ermitteln
Jo, aber wozu? Wenn Du einen Oszillator hast (und das hast Du oben geschrieben) und Du die Fläche der Amplitudenschwingung im Intervall t0-tn berrechnest, dann hast Du die Energie in diesem Intervall. "Die Fläche" zu berrechnet muss ja im Bezug auf einen Oszillator irgendeinen Sinn haben. Und wenn Dein Oszillator mit sqrt(t) * sin(t) schwingt, ist er nicht stabil.
-
also muss ich erst die energie ermitteln um die fläche zu berechnen???
-
ft schrieb:
also muss ich erst die energie ermitteln um die fläche zu berechnen???
Nein.
Die Frage ist doch, wenn Du einen Oszillator hast, und die Fläche unterhalb des Schwingungsverlaufs berrechnen willst, was bezweckst Du damit? Man berechnet die Fläche ja nicht aus Spaß an der Freude.
Ich will erstmal Dein Problem verstehen, bevor ich hier versuche, irgendwelche Lösungen sinnlos in den Wald zu schreien.PS: Ich liege auch falsch, was die Energie betrifft...
-
ich hab von meinem prof mehrere aufgabenblätter bekommen (zum üben) und bei dieser scheiter ich.
http://img169.imageshack.us/my.php?image=53760639zj8.png
so lautet die augfabe:
Es soll die Fläche unter dieser Kurve berechnet werden. Da die analytische Funktion unbekannt
ist, muss dazu eine numerische Integration der Messwerte durchgeführt werden. Dies soll mittels
der Sehnen-Trapezregel erfolgen.
Recherchieren Sie den Algorithmus der Sehnen-Trapezregel1 und schreiben Sie ein modularisiertes
Programm, das das Integral von A(t) über alle auf der Datei vorliegenden Stützstellen t hiermit
näherungsweise berechnet. Nähern sie die Zeitpunkte der Nullstellen durch lineare Interpolation
zwischen den beiden umgebenden Stützstellen an. Verwenden Sie mindestens zwei Funktionen:
zur Trapezflächen-Berechnung und zur Nullstellen-Interpolation.
Geben Sie aus: Das vorgefundene Zeitintervall und die Anzahl der Stützstellen, das Amplituden-
Minimum und -Maximum mit deren Zeiten, die Zeiten der (interpolierten) Nulldurchgänge der
Schwingung und das Integral2.
Beachten Sie, a) dass die Stützstellen zwar monoton aufsteigend vorliegen, die summierte Form
der Trapezregel aber hier nicht anwendbar ist, da die Stützstellen nicht äquidistant vorliegen und
b) dass die gesamte Fläche (nicht-vorzeichenbehaftet) unter der Kurve ermittelt werden soll.
-
er meinst du hast ja die funktion der schwingung, somit kannst du ja die fläche über integral berechnen...
-
Puh, das ist aber eine Scheissaufgabe.
Du musst, damit die Trapezregel überhaupt anwendbar wird, äquidistante Stützstellen haben. Das scheint aber bei der gegebenen Datei nicht der Fall zu sein.
Hierfür brauchst Du also erstmal einen Interpolator mit dem Du aus den gegebenen Werten äquidistante Stützstellen erzeugen kannst. Ich nehme mal an, dass in Der einzulesenden Datei irgendwie die Messzeitpunkt stehen. Als einfache Annäherung kannst Du dann erstmal eine lineare Interpolation benutzen (schön einfach).
Wenn Du dann äquidistante Werte hast, kann Deine Trapezfunktion zum Einsatz kommen. Nur, dass Du hier nicht Deine Funktion f(x) für die Werte nimmst, sondern die generierten äquidistanten Werte.
-
die gegebenen werte sind die zeit und die amplitude
# t[sec] A[mm]
0.0000 0.000000
0.0021 0.002114
0.0081 0.008124
0.0240 0.024001
0.0309 0.030896
0.0420 0.041961
0.0506 0.050552
0.0594 0.059449
0.0721 0.072062
0.0764 0.076395
0.0888 0.088772
0.1015 0.101524
0.1083 0.108322
0.1207 0.120718
0.1273 0.127323
0.1397 0.139646
0.1515 0.151507
0.1637 0.163708
0.1700 0.169955
0.1773 0.177279
0.1914 0.191403
0.2039 0.203798
0.2125 0.212389
0.2171 0.217034
0.2288 0.228688
0.2380 0.237884
0.2496 0.249485
0.2566 0.256370
0.2706 0.270382
0.2820 0.281739
0.2939 0.293531
0.2973 0.296872
0.3064 0.305935
0.3191 0.318507
0.3279 0.327225
0.3430 0.342165
0.3487 0.347828
0.3619 0.360891
0.3731 0.371914
0.3793 0.378004
0.3886 0.387098
0.3997 0.397957
0.4114 0.409469
0.4205 0.418330
0.4267 0.424353
0.4439 0.440990
0.4485 0.445463
0.4578 0.454501
0.4678 0.464076
0.4795 0.475243
0.4894 0.484691
0.4991 0.493949
0.5091 0.503429
0.5188 0.512556
0.5309 0.523859
0.5432 0.535394
0.5509 0.542528
0.5624 0.553038
0.5668 0.557075
0.5778 0.567137
0.5877 0.576068
0.6025 0.589315
0.6095 0.595569
0.6168 0.601997
0.6298 0.613439
0.6423 0.624232
0.6512 0.631856
0.6579 0.637537
0.6737 0.650816
0.6812 0.657003
0.6880 0.662557
0.6988 0.671319
0.7071 0.677989
0.7215 0.689376
0.7287 0.694907
0.7388 0.702621
0.7495 0.710684
0.7564 0.715783
0.7704 0.725939
0.7767 0.730405
0.7878 0.738183
0.8006 0.746922
0.8100 0.753098
0.8192 0.759062
0.8285 0.764948
0.8373 0.770374
0.8526 0.779452
0.8608 0.784157
0.8663 0.787252
0.8768 0.792944
0.8917 0.800669
0.8980 0.803777
0.9082 0.808672
0.9230 0.815318
0.9296 0.818139
0.9426 0.823373
0.9536 0.827505
0.9605 0.829926
0.9719 0.833693
0.9793 0.835933
0.9900 0.838948
1.0033 0.842237
1.0100 0.843715
1.0175 0.845226
1.0298 0.847345
1.0410 0.848888
1.0529 0.850105
1.0626 0.850776
1.0716 0.851137
1.0827 0.851225
1.0885 0.851112
1.1006 0.850520
1.1114 0.849572
1.1191 0.848659
1.1314 0.846763
1.1426 0.844577
1.1526 0.842246
1.1626 0.839574
1.1728 0.836455
1.1761 0.835365
1.1902 0.830242
1.1989 0.826684
1.2063 0.823437
1.2226 0.815590
1.2340 0.809443
1.2402 0.805862
1.2480 0.801185
1.2629 0.791594
1.2735 0.784194
1.2798 0.779646
1.2928 0.769609
1.3018 0.762295
1.3138 0.752022
1.3163 0.749780
1.3261 0.740836
1.3385 0.728986
1.3501 0.717335
1.3591 0.707880
1.3717 0.694121
1.3784 0.686561
1.3886 0.674607
1.4007 0.659962
1.4126 0.644986
1.4168 0.639577
1.4306 0.621352
1.4364 0.613528
1.4534 0.589642
1.4575 0.583645
1.4678 0.568511
1.4801 0.549943
1.4933 0.529378
1.4974 0.522851
1.5073 0.507004
1.5191 0.487529
1.5276 0.473280
1.5421 0.448412
1.5484 0.437337
1.5590 0.418692
1.5727 0.393977
1.5766 0.386910
1.5924 0.357652
1.5992 0.344810
1.6107 0.323069
1.6168 0.311399
1.6293 0.287121
1.6419 0.262611
1.6540 0.238696
1.6562 0.234293
1.6664 0.214109
1.6826 0.181652
1.6891 0.168423
1.7029 0.140515
1.7091 0.127920
1.7197 0.106469
1.7338 0.077866
1.7390 0.067363
1.7487 0.047849
1.7597 0.025643
1.7714 0.002073
1.7800 -0.015105
1.7881 -0.031069
1.8002 -0.054924
1.8085 -0.071237
1.8235 -0.100108
1.8291 -0.110739
1.8398 -0.130837
1.8526 -0.154699
1.8617 -0.171246
1.8661 -0.179057
1.8823 -0.207594
1.8882 -0.217711
1.8990 -0.235963
1.9108 -0.255315
1.9165 -0.264468
1.9328 -0.289688
1.9395 -0.299597
1.9478 -0.311659
1.9567 -0.324124
1.9721 -0.344715
1.9820 -0.357278
1.9875 -0.363919
1.9996 -0.377963
2.0116 -0.390918
2.0172 -0.396640
2.0303 -0.409183
2.0364 -0.414617
2.0481 -0.424286
2.0567 -0.430710
2.0677 -0.438181
2.0822 -0.446588
2.0907 -0.450695
2.0964 -0.453165
2.1085 -0.457521
2.1235 -0.461235
2.1328 -0.462606
2.1385 -0.463095
2.1476 -0.463300
2.1636 -0.461965
2.1699 -0.460839
2.1802 -0.458288
2.1913 -0.454510
2.2020 -0.449918
2.2094 -0.446159
2.2164 -0.442161
2.2281 -0.434636
2.2437 -0.422815
2.2481 -0.419102
2.2584 -0.409925
2.2675 -0.400990
2.2785 -0.389461
2.2892 -0.377369
2.2981 -0.366553
2.3082 -0.353711
2.3181 -0.340462
2.3293 -0.324604
2.3434 -0.303611
2.3527 -0.289161
2.3562 -0.283432
2.3686 -0.263099
2.3788 -0.245793
2.3877 -0.230300
2.3995 -0.209058
2.4118 -0.186487
2.4209 -0.169267
2.4306 -0.150910
2.4370 -0.138542
2.4531 -0.106865
2.4582 -0.096845
2.4740 -0.065391
2.4833 -0.046857
2.4924 -0.028567
2.5021 -0.008992
2.5105 0.007761
2.5163 0.019249
2.5294 0.045222
2.5437 0.073250
2.5485 0.082446
2.5569 0.098528
2.5693 0.121701
2.5789 0.139320
2.5932 0.164854
2.6013 0.178654
2.6098 0.192954
2.6208 0.210863
2.6319 0.228029
2.6432 0.244686
2.6461 0.248857
2.6577 0.264728
2.6665 0.276026
2.6808 0.292969
2.6904 0.303404
2.6993 0.312358
2.7132 0.324769
2.7177 0.328388
2.7263 0.334759
2.7427 0.344722
2.7515 0.348950
2.7605 0.352420
2.7721 0.355576
2.7790 0.356752
2.7900 0.357548
2.7998 0.357132
2.8124 0.355009
2.8239 0.351568
2.8291 0.349509
2.8393 0.344647
2.8498 0.338416
2.8583 0.332530
2.8736 0.319994
2.8768 0.317139
2.8903 0.303698
2.8980 0.295199
2.9132 0.276747
2.9224 0.264685
2.9267 0.258729
2.9363 0.245060
2.9477 0.227775
2.9620 0.204604
2.9730 0.186109
2.9782 0.176947
2.9932 0.149898
2.9962 0.144468
3.0074 0.123445
3.0163 0.106432
3.0323 0.075117
3.0425 0.055013
3.0492 0.041608
3.0561 0.027714
3.0704 -0.000849
3.0804 -0.020771
3.0914 -0.042622
3.1018 -0.062889
3.1082 -0.075173
3.1185 -0.094878
3.1275 -0.111547
3.1366 -0.128150
3.1464 -0.145417
3.1581 -0.165251
3.1700 -0.184342
3.1779 -0.196467
3.1925 -0.217387
3.2024 -0.230505
3.2066 -0.235772
3.2165 -0.247530
3.2270 -0.258826
3.2391 -0.270379
3.2535 -0.281835
3.2615 -0.287134
3.2707 -0.292247
3.2797 -0.296239
3.2897 -0.299428
3.2961 -0.300773
3.3100 -0.301880
3.3239 -0.300424
3.3305 -0.298841
3.3372 -0.296677
3.3508 -0.290430
3.3597 -0.285075
3.3718 -0.276173
3.3770 -0.271788
3.3905 -0.258899
3.3971 -0.251786
3.4136 -0.231935
3.4228 -0.219592
3.4289 -0.211062
3.4423 -0.190940
3.4509 -0.177138
3.4591 -0.163437
3.4675 -0.148984
3.4778 -0.130531
3.4863 -0.114821
3.4982 -0.092406
3.5130 -0.063474
3.5197 -0.050231
3.5306 -0.028688
3.5383 -0.013233
3.5449 0.000000gebe es da einen schritt der recht hilfreich wäre???
-
Erstmal eine neue Tabelle mit äquidistanten Wertan aufbauen. Dafür würde ich lineare Interpolation verwenden. Also x(tn) und x(tn+1) (n sei der Abtastzeitpunkt) mit Geraden verbinden, und dann in gleichen Abständen Interploationspunkte berrechen (Lineare Interpolation).
So erhälst Du eine neue Tabelle mit Zeit/Wert-Paaren, in denen die Abstände jetzt aber äquidistant sind. Mit dieser Tabelle gehst Du jetzt in Deine Trapezformel rein. Und dabei nimmst Du an dieser Stelle:flaeche += (f(l) + f(r)) / 2 * d; // Trapezformel
anstatt der von f(x) berrechneten Werte die Werte aus der äquidistanten Tabelle.
So sieht grob der Ablauf aus. Die Implementierung überlasse ich Dir.
-
danke für die hilfe
:schland:
-
Tachyon schrieb:
Erstmal eine neue Tabelle mit äquidistanten Wertan aufbauen. Dafür würde ich lineare Interpolation verwenden.
Dann ist das Ergebnis doch am Ende bestenfalls so gut wie wenn du gleich die Trapezflächen aufsummiert hättest. Bestenfalls heißt, das ist nur dann der Fall, wenn die äquidistanten Stützstellen alle ursprünglichen Stützstellen einschließen.
-
Bashar schrieb:
Dann ist das Ergebnis doch am Ende bestenfalls so gut wie wenn du gleich die Trapezflächen aufsummiert hättest.
Das geht nicht, wenn man die diskrete Form anwendet. Aber Du hast in sofern recht, dass ein Sinusinterpolator wahrscheinlich bessere Ergebnisse liefert (wenn die Referenzfrequenz einigermaßen passt).
-
ich hab überlegt und überlegt aber ich komm nicht auf die lösung.
falls einer von euch interesse und lust hat diese aufgabe zu lösen könnte er die dann bitte reinstellen.
wäre echt spitze von euch
-
ft schrieb:
ich hab überlegt und überlegt aber ich komm nicht auf die lösung.
falls einer von euch interesse und lust hat diese aufgabe zu lösen könnte er die dann bitte reinstellen.
wäre echt spitze von euch
Was ist denn das Ergebnis Deiner Überlegungen? Eine Lösung wird Dir hier keiner so ohne weiteres geben, denke ich. Es sei denn, Du zahlst dafür.