eine mathematische funktion anzeigen lassen

  • VB.NET

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    eine mathematische funktion anzeigen lassen

    moin leuts

    mal kurz zu mir

    ich studiere maschinenbau und bin recht neu hier hab auch nicht so die ahnung vom programmieren, in welcher form auch immer

    mein problem ist nun, das ich eine aufgabe von meinem prof. bekommen habe in der ich 2 symullationen grafisch darstellen muss, das alles ist.
    Ist weiter auch kein problem, da man bis jetzt alles mit excel machen konnte nur irgendwie fand er dieses semester zu einfach und hat nun vor ein paar tagen eine mail rumgeschickt wo wir eine programieren müssen. nu da ich ja echt wenig ahnung von programieren habe, habe ich echt ein problem


    so zur aufgabe

    ich muss im endefekt eine funktion auf einen koordinaten kreuz darstellen Ähnlich einer sinus funktion von 1/3 pi bis pi

    die mathematische lösung habe ich schon fertig allerdings muss ich es nur noch in ein programm kriegen

    das teil muss umgefähr so aussehen

    x achse von 90 bis 160
    y achse von 0 bis 1200

    und dann muss er die funktion rechnen sowas wie f(x)= wurzel(x) * 1200

    und dann setzte zahlen für x ein von 90 bis 160 in

    und trage die punkte in das diagramm ein

    leute ihr seid echt die letzte hoffnung für mich wenn jemand da echt eine idee hat wie ich es machen kann dann nur her damit

    für euch ist das bestimmt ein klax und echt kein aufwand

    bitte helft mir

    thx spoilt

    spoilt schrieb:

    für euch ist das bestimmt ein klax und echt kein aufwand
    von wegen - dassis sehr aufwändig.
    Ich kann nur so grob auf ähnliches verweisen - eine wirklich auf deine Anforderung passende Lösung habich bei weitem nicht parat.
    ChartTester

    activevb.de/cgi-bin/upload/search.pl -> dort nach "functionplotter01" suchen
    sieht mir wie eine gute Lösung aus, und sehe keinen Grund, sich in die fortgeschrittene Programmierung einzuarbeiten - ausser deinen Prof.
    Ich hab ja eine erhebliche Aversion gegen Lehrkörper und ihre Programmier-Aufgaben - ist dein Prof erfahrener Coder?

    Ansonsten darf man überaus gespannt sein auf seine Muster-Lösung (er wird doch eine aussm Ärmel schütteln - oder etwa nicht? :evil: )

    Im Ernst, meine Prognose: Diese Aufgabe wird in einem Debakel enden, in deren Verlauf sich herausstellt, dass dein Prof sie selbst nicht lösen kann.
    Hi
    im Prinzip wäre das darstellen einer vordefinierten Funktion kein Problem, solange eine Annäherung genügt. Dazu musst du einfach nur die Punkte auf dem Koordinatensystem berechnen und anschließend per z.B. Graphics zeichnen. Du ermittelst also einfach nur die Anzahl der benötigten Punkte und legst per DrawLines von jedem Punkt zum nächsten durch. Weißt du, wie das geht?
    Problematisch ist, wenn du ein dx statisch wählst (vorzugsweise 1), liegen bei einer nicht linearen oder konstanten Funktion die Werte zwangsweise nicht auf "einer durchgezogenen Linie". Ich wüsste dafür eine Methode, glaube aber kaum, dass das verlangt wird.
    Sag' mir, dass du die Funktion nicht parsen musst. :P Eine konkrete Lösung würde ich übrigens für alle Nachposter nicht zur Verfügung stellen, da das Verwenden einer nicht selbst erarbeiteten Lösung sicher nicht erlaubt ist.

    Gruß
    ~blaze~
    genau das ist mein problem ich hab keine ahnung wie ich so ein diagram in vb erstelle das ist alles es ist im prinzip sogar egal ob er die zahlen aus der tabelle dierekt in die grafik übernimmt oder ob er es selber rechnet

    ich hab nur keine ahnug wie ich das chart überhaupt baue und die tabelle aus excel dort übertrage

    das ist ja das schlimme es ist alles fertig ich brauch nur ein chart mit den werten aus der excel tabelle mir ist echt jede lösung recht




    mann muss auch sagen in der excel tabelle ich auch ein dicker fehler drin das keiner sich das teil abkucken kann
    sorry verstehe die frage nicht

    ich soll eine symulation einer federbelastung grafisch dastellen die kurve ist nur deswegen nicht linear weil die kraft über 2 gelenke umgelenkt wird

    qwasi so wie in excel

    zb ich habe die weite von 90 cm und brauche dafür die kraft von 11.161 N
    91 cm weite kraft von 11.227 N

    die ganzen punkte in ein diagram

    das

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „spoilt“ ()

    Nochmal: Arbeitest du in Visual Studio / Visual Basic Express (VB.NET) oder in Excel mit programmierten Makros (VBA)?
    Oder: Kannst du mal nen Screenshot deiner Entwicklungsumgebung schicken?
    Oder nochmal: Kannst du uns die Aufgabenstellung wörtlich geben?

    Dann sollte einiges klarer werden.
    also ich habe instaliert visual basic 2010, lazarus, free pascal, visual c++ und vba

    arbeiten würde ich es nicht nennen hab halt 0 ahnug von programieren und probier nur herrum

    jetzt zu der aufgabe
    Bilder
    • IMG-20120717-WA0001.jpg

      44,15 kB, 800×479, 232 mal angesehen
    Einfach nur ein Graphenzeichner?
    Dann musst du schlicht und ergreifend die Formel mithilfe von MSSciptcontrol für jeden xWert ausrechnen und dann immer Linien von einem zum nächsten Punkt zeichnen denk ich?

    Falls es wirklich nur das ist werd ich auf Wunsch natürlich noch ein Beispiel anfügen^^

    ErfinderDesRades schrieb:

    da steht nix, dass du Excel nicht verwenden darfst - also was ist an deiner Lsg aus post#3 auszusetzen?

    ja das steht da nicht aber glaube es mir es ist so wieso sonst sollte ich das machen

    Telcrome schrieb:

    Einfach nur ein Graphenzeichner?
    Dann musst du schlicht und ergreifend die Formel mithilfe von MSSciptcontrol für jeden xWert ausrechnen und dann immer Linien von einem zum nächsten Punkt zeichnen denk ich?
    Falls es wirklich nur das ist werd ich auf Wunsch natürlich noch ein Beispiel anfügen^^

    also um erlich zu sein währe mir vba am liebsten oder irgendeine verknüpfung mit der excel tabelle wo er halt wirklich auf die tabelle zugreift weil die funktion doch recht komplex ist und so setzt du für x die weite und für y die kraft die werte stehen dann da

    und ja es ist einfach nur ein graph

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „spoilt“ ()

    Mit VB in Excel kenne ich mich jetzt nicht aus, aber vielleicht hilft dir eine kurze Erklärung eines Graphenzeichners. In VB express 2010.
    Einfach eine Windows Forms Anwendung starten...
    1). Die UI:
    Einfach die Form ein bisschen größer machen. Ich hab jetzt mal 800x600 gewählt. Dann nimmt man einen Button "BtnZeichnen" und eine TextBox "TxtEingabe". Doppelklick auf den Button.

    2). MSScriptControl:
    Das ist eine Möglichkeit um Strings auszurechnen. Es gibt noch andere Möglichkeiten und andere Parser. Aber diese hier ist leicht zugänglich.
    Dein Projekt -> Verweise hinzufügen -> COM -> Microsoft Script Control 1.0 -> OK
    2.1) Anwendung:
    Das MSSctiptControl importieren: (Imports gehören über "Public Class...")

    VB.NET-Quellcode

    1. Imports MSScriptControl

    Dann deklarieren: (Direkt unter "Public Class...")

    VB.NET-Quellcode

    1. Dim SC As New MSScriptControl.ScriptControl

    Dann gehst du kurz in den Designer und klickst doppelt auf die Form:
    Jetzt solltest du das Event "Form_Load" haben. Da weißt du dem ScriptControl jetzt die Sprache zu:

    VB.NET-Quellcode

    1. SC.Language = "VBScript"

    Dadurch lässt sich jetzt eine Funktion schreiben, mit der man Strings ausrechnen kann und eben das Ergebnis zurückerhält:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Function Ausrechnen(ByVal Formel As String) As Double
    2. Return SC.Eval(Formel)
    3. End Function

    3).Zeichnen und Logik.
    Das hier in das Klick-Event des Buttons einfügen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Me.Refresh()
    2. Dim AlterPunkt As Point = New Point(0, SC.Eval(TxtEingabe.Text.Replace("x", -250)))
    3. Dim NeuerPunkt As Point = New Point(0, SC.Eval(TxtEingabe.Text.Replace("x", -250)))
    4. Me.CreateGraphics.DrawLine(Pens.Black, 250, 0, 250, 500)
    5. Me.CreateGraphics.DrawLine(Pens.Black, 0, 250, 500, 250)
    6. For i As Integer = -250 To 250 Step 1
    7. NeuerPunkt = New Point(i, SC.Eval(TxtEingabe.Text.Replace("x", i)))
    8. Me.CreateGraphics.DrawLine(Pens.Black, AlterPunkt.X + 250, -1 * AlterPunkt.Y + 250, NeuerPunkt.X + 250, -1 * NeuerPunkt.Y + 250)
    9. AlterPunkt = New Point(NeuerPunkt.X, NeuerPunkt.Y)
    10. Next

    Das Koordinatenkreuz wird einmal umgekehrt und der Graph selber wird gezeichnet...


    Ganzer Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports MSScriptControl
    2. Public Class Form1
    3. Dim SC As New MSScriptControl.ScriptControl
    4. Private Sub BtnZeichnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnZeichnen.Click
    5. Me.Refresh()
    6. Dim AlterPunkt As Point = New Point(0, SC.Eval(TxtEingabe.Text.Replace("x", -250)))
    7. Dim NeuerPunkt As Point = New Point(0, SC.Eval(TxtEingabe.Text.Replace("x", -250)))
    8. Me.CreateGraphics.DrawLine(Pens.Black, 250, 0, 250, 500)
    9. Me.CreateGraphics.DrawLine(Pens.Black, 0, 250, 500, 250)
    10. For i As Integer = -250 To 250 Step 1
    11. NeuerPunkt = New Point(i, SC.Eval(TxtEingabe.Text.Replace("x", i)))
    12. Me.CreateGraphics.DrawLine(Pens.Black, AlterPunkt.X + 250, -1 * AlterPunkt.Y + 250, NeuerPunkt.X + 250, -1 * NeuerPunkt.Y + 250)
    13. AlterPunkt = New Point(NeuerPunkt.X, NeuerPunkt.Y)
    14. Next
    15. End Sub
    16. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    17. SC.Language = "VBScript"
    18. End Sub
    19. Public Function Ausrechnen(ByVal Formel As String) As Double
    20. Return SC.Eval(Formel)
    21. End Function
    22. End Class