Nullstellenbestimmung

Ich brauche ein programm welches mir nullstellen einer Gleichung ausgibt. Ich habe schon genau im kopf wie es funktionieren soll, kann aber nur winlogo als „programmiersprache“.

Das programm soll:
Gleichung als variable nehmen
am anfang X den wert -1000 zuweisen
gucken ob die gleichung mit dem derzeitigen x wert 0 ergibt
wenn ja x wert ausgeben
Dannach x + 1 rechnen
jetzt jedesmal checken ob x schon größer oder gleich 1000 ist.( in meinen Gleichungen kommen keine werte unter oder über 1000 vor)

Hej :smile:

Unter den Stichworten Deiner Frage sehe ich gerade „Programmieren in C“ - bist Du sicher, daß Du den richtigen „Experten“ ausgewählt hast? Ich habe von C nur rudimentäre Kenntnisse - bin beruflich C#- und privat Java-Programmierer. Nur mal am Rande bemerkt… :smile:

Viele Grüße
Karsten

Huhu nochmal,

so, jetzt nochmal in ausführlich, nachdem es gestern Abend zeitlich etwas knapp war.

In welcher Sprache auch immer - das, was Du brauchst, dürfte nicht ganz trivial zu implementieren sein. Wenn ich das richtig verstehe („Gleichung als variable nehmen“), dann soll das ganze auf beliebigen Gleichungen operieren, die zu Beginn eingegeben werden. Um damit zu arbeiten, müßte zunächst ein Tokenizer über die (als „Text“) eingegebene Gleichung laufen, sie syntaktisch korrekt in Operanden und Operationen zerlegen und schließlich in einem Baum zur weiteren Verarbeitung anordnen, das ist schon eher was für einen Compilerbauer… will sagen: eine recht komplexe Sache. :smile: Möglicherweise geht das mit funktionalen Sprachen (F#, Lisp, Clojure), da kenne ich mich allerdings nicht aus.

Mit einer fest vorgegebenen Gleichung (als Ausdruck im Programmcode vorliegend) ist das ganze dagegen kein Problem; die Schritte zur Lösung hast Du selbst schon beschrieben, das kann man 1:1 so umsetzen.

Beispiel in C#:

for (int x = -1000; x 

Wenn das ganze tatsächlich auf unterschiedlichen Gleichungen arbeiten soll, wäre es möglich, objektorientiert vorzugehen - ich weiß nicht, inwieweit Du mit diesem Konzept vertraut bist, daher nur kurz umrissen: man kann eine Schnittstelle vorgeben, die eine Operation anbietet; unterschiedliche Gleichungen werden dann von unterschiedlichen Klassen repräsentiert, deren jede eine spezielle Gleichung implementiert. In der Verarbeitungsschleife oben (for...) wird dann nur noch über die Schnittstelle operiert.

Beispiel:



    public interface Equation
    {
     double ComputeFor(int x);
    }
    
    public class SimpleEquation : Equation
    {
     public double ComputeFor(int x)
     {
     return x \* 3 / 7;
     }
    }
    
    public class AnotherEquation : Equation
    {
     public double ComputeFor(int x)
     {
     return x / 8;
     }
    }
    
    
    ...
    Equation equation = new SimpleEquation(); // ..oder jede andere Implementierung von Equation
    
    for (int x = -1000; x 
    
    HTH,
    
    Viele Grüße
    Karsten

danke das is ne gute idee, ich verstehe c nicht richtig nur kleinere bruchstücke und kann mit dem obereren etwas anfangen mit dem unteren aber nicht mehr.

wenn es möglich ist und so funktioniert könntest du das ganze compilieren so das ich eine x beliebeige gleichung eingebe mit x³ etc.(will mir die polynomdivision sparen)
das er mir dann die nullstellen ausgibt, und es irgendwo hochladen?

Ich brauche ein programm welches mir nullstellen einer
Gleichung ausgibt. Ich habe schon genau im kopf wie es
funktionieren soll, kann aber nur winlogo als
„programmiersprache“.

Hier kannst du die Nullstellen beliebiger Funktionsgleichungen berechnen lassen:

http://www.arndt-bruenner.de/mathe/scripts/polynome.htm

Viele Grüße

Hallo

Ich habe mich weder als Experte für Mathe noch für dieses „winlogo“ deklariert. Verstehe ich also Null, warum Du mich als Experten auswählst. Habe auch keinen Schimmer, wie sowas geht.

Ich empfehle Dir das Brett „Prog. allgemein“ für diese Anfrage.

Martin B

Hej,

wie eingangs erwähnt: mit einem C-Programm kann ich nicht dienen. Ich könnte allenfalls ein C#-Programm anbieten (das ist ein großer Unterschied, auch bei fast gleichem Namen) - dafür benötigst Du ein .NET-Framework (3.5 oder 4).

Die Eingabe einfacher Gleichungen ist damit tatsächlich möglich; der eingegebene String wird mittels des internen C#-Compilers und anschließender Reflection in eine ausführbare Methode übersetzt. Allerdings ist das auf C#-Syntax beschränkt, x3 muß bspw. als x*x*x dargestellt werden, nicht als x^3 (^ ist das binäre bitweise XOR).

Ich habe Dir Assembly und Projekt hochgeladen.

Letzteres kannst Du mit einem Visual Studio oder mit MonoDevelop öffnen und bearbeiten.

Darf ich fragen, wofür das ganze überhaupt ist? Klingt nach Informatik- oder Mathematikunterricht… Ich liefere im Zweifelsfall gern noch Erläuterungen zum Quellcode. :smile:

Viele Grüße
Karsten