Autor |
Beitrag |
Kirk1701A
Beiträge: 126
Erhaltene Danke: 3
Linux, Ubuntu, Mac, IOS, Android (4.2.x - 9.x.x), Win Mob., Micro. DOS, Win 95, Win 98, Win 2000, Win ME, Win XP, Win Vista, Win 7, Win8.1, Win 10
C# (VS 2017 Community/Enterprise, VS 2019 Professional/Enterprise), VB (VBA), JavaScript
|
Verfasst: Do 15.03.18 11:01
Jolan Tru Leute,
ich bin momentan dabei, einen sog. Warprechner auf Basis folgender Formel zu gestalten (Konsole):
Quelltext 1:
| f(x) = x ^((10/3) / (1 - (x/10)^(( 91,28 / (10-x)^0,27)))) |
Allerdings tritt das Problem auf, dass schon bei 1,2 unendlich auftritt. Unendlich darf erst bei exakt 10,0 auftreten. Ich habe schon den Entwickler diese Formel angeschrieben, er konnte sich das auch nicht erklären (er ist übrigens Mathematiker). Ich habe mit allen möglichen Taschenrechnern (Soft- und Hardware-Taschenrechner) versucht, die rechnen allerdings alles richtig. Könnt Ihr mir helfen? Ich gebe die URL an, die diese Formel, sowie eine Tabelle mit richtige Werten enthält. Sobald ihr meine Syntax braucht, meldet euch doch bitte.
Hier die URL: Warpcalc
Danke
Moderiert von Th69: Topic aus C# - Die Sprache verschoben am Do 15.03.2018 um 10:35
Moderiert von Th69: Code-Tags hinzugefügt
Moderiert von Th69: URL-Tag hinzugefügt
_________________ "Ich war es und werde es immer bleiben... Ihr Freund!"
@Spock -> Star Trek II: Der Zorn des Khan
|
|
Th69
Beiträge: 4784
Erhaltene Danke: 1055
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Do 15.03.18 11:39
Hallo,
zeig mal deinen zugehörigen C#-Code.
|
|
Kirk1701A
Beiträge: 126
Erhaltene Danke: 3
Linux, Ubuntu, Mac, IOS, Android (4.2.x - 9.x.x), Win Mob., Micro. DOS, Win 95, Win 98, Win 2000, Win ME, Win XP, Win Vista, Win 7, Win8.1, Win 10
C# (VS 2017 Community/Enterprise, VS 2019 Professional/Enterprise), VB (VBA), JavaScript
|
Verfasst: Do 15.03.18 11:43
Jolan Tru,
hier der C# Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40:
| static void Main() { Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Bitte geben Sie den zu berechnende Warpfaktor ein!"); double Warpfaktor;
if(double.TryParse(Console.ReadLine(), out Warpfaktor)) { if (Warpfaktor < 10) { double Basis = 1.0 - (Warpfaktor / 10.0); double Exp1 = 91.28 / (Math.Pow((10.0 - Warpfaktor), 0.27)); double NennerF1 = Math.Pow(Basis, Exp1); double ZählerF1 = 10.0 / 3.0; double F1 = ZählerF1 / NennerF1;
Console.WriteLine("~ " + Math.Pow(Warpfaktor, F1));
Console.WriteLine(Math.Pow(Warpfaktor, (10 / 3) / (Math.Pow((1 - (Warpfaktor / 10)), (91.28 / (Math.Pow((10 - Warpfaktor), 0.27))))))); }
else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Der Warpfaktor " + Warpfaktor + " ist nach der TNG-Einteilung eine unendliche Geschwindigkeit.\n"); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Die USS Voyager hat schon einmal mit dem Delta-Flyer versucht, allerdings mit der Nebenwirkung, dass Tom Paris und Captain Janeway sich in eine andere Lebensform transformiert hatten. Das MHN konnte die Beiden gerade so noch zurückverwandeln. Seit dem gilt Warp 10 (und schneller) als die gefährlichste Geschwindigkeit überhaupt und auch als eine unendliche Geschwindigkeit, weil theoretisch mit Warp 10 der gesamte Raum mit einmal eingenommen wird.\n\nIn TOS flogen Schiffe oft über Warp 10 (damals noch als Sol-Antrieb (SpeedOverLight) bekannt). Zu TNG änderte man allerdings die Warpeinteilung."); Console.ForegroundColor = ConsoleColor.White; } } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\n\nDer eingegebene Warpfaktor ist ungültig.\n"); Console.ForegroundColor = ConsoleColor.White; }
Console.ReadKey(); } |
Vielen Dank für die Hilfe
_________________ "Ich war es und werde es immer bleiben... Ihr Freund!"
@Spock -> Star Trek II: Der Zorn des Khan
|
|
Th69
Beiträge: 4784
Erhaltene Danke: 1055
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Do 15.03.18 11:51
Du berechnest die Variable Basis schon falsch. Erst die Potenz berechnen und dann diesen Wert von 1.0 abziehen...
Zuletzt bearbeitet von Th69 am Do 15.03.18 12:07, insgesamt 1-mal bearbeitet
|
|
Kirk1701A
Beiträge: 126
Erhaltene Danke: 3
Linux, Ubuntu, Mac, IOS, Android (4.2.x - 9.x.x), Win Mob., Micro. DOS, Win 95, Win 98, Win 2000, Win ME, Win XP, Win Vista, Win 7, Win8.1, Win 10
C# (VS 2017 Community/Enterprise, VS 2019 Professional/Enterprise), VB (VBA), JavaScript
|
Verfasst: Do 15.03.18 11:57
Jolan Tru,
also meinst du, ich muss erst die Potenz (von der ganz oberen Potenz bis zur unteren herunter) ausrechnen, um diese dann mit der Basis zu verrechnen.
_________________ "Ich war es und werde es immer bleiben... Ihr Freund!"
@Spock -> Star Trek II: Der Zorn des Khan
|
|
Th69
Beiträge: 4784
Erhaltene Danke: 1055
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Do 15.03.18 12:04
Ich habe mal eckige Klammern für dich gesetzt:
Quelltext 1:
| f(x) = x ^((10/3) / (1 - [(x/10)^(( 91,28 / (10-x)^0,27))])) |
Potenz vor Punkt vor Strich
Für diesen Beitrag haben gedankt: Kirk1701A
|
|
Kirk1701A
Beiträge: 126
Erhaltene Danke: 3
Linux, Ubuntu, Mac, IOS, Android (4.2.x - 9.x.x), Win Mob., Micro. DOS, Win 95, Win 98, Win 2000, Win ME, Win XP, Win Vista, Win 7, Win8.1, Win 10
C# (VS 2017 Community/Enterprise, VS 2019 Professional/Enterprise), VB (VBA), JavaScript
|
Verfasst: Do 15.03.18 12:23
_________________ "Ich war es und werde es immer bleiben... Ihr Freund!"
@Spock -> Star Trek II: Der Zorn des Khan
|
|
Kirk1701A
Beiträge: 126
Erhaltene Danke: 3
Linux, Ubuntu, Mac, IOS, Android (4.2.x - 9.x.x), Win Mob., Micro. DOS, Win 95, Win 98, Win 2000, Win ME, Win XP, Win Vista, Win 7, Win8.1, Win 10
C# (VS 2017 Community/Enterprise, VS 2019 Professional/Enterprise), VB (VBA), JavaScript
|
Verfasst: Do 15.03.18 12:29
PS:
Ich habe nochmal ein Debugging gemacht und gemerkt, dass in der Variablen F1 (siehe obigen Code) etwas falsch verrechnet wird. Liegt das an der Schreibweise?
_________________ "Ich war es und werde es immer bleiben... Ihr Freund!"
@Spock -> Star Trek II: Der Zorn des Khan
|
|
OlafSt
Beiträge: 486
Erhaltene Danke: 99
Win7, Win81, Win10
Tokyo, VS2017
|
Verfasst: Do 15.03.18 12:44
(10/3) / 1 ergibt... Genau, (10/3)
So ist vllt besser (sehr ausführlich geschwafelt):
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| double x = 3.5;
double p1 = Math.Pow((10 - x), 0.27); double p2 = 91.28 / p1; double p3 = Math.Pow((x / 10.0), p2); double p4 = 1 - p3; double p5 = (10 / 3) / p4; double p6 = Math.Pow(x, p5); |
_________________ Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
Zuletzt bearbeitet von OlafSt am Do 15.03.18 12:49, insgesamt 1-mal bearbeitet
Für diesen Beitrag haben gedankt: Kirk1701A
|
|
Th69
Beiträge: 4784
Erhaltene Danke: 1055
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Do 15.03.18 12:44
Hä, jetzt hast du schon wieder die (anderen) Potenzen falsch berechnet.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| double x = Warpfaktor;
double a = 10.0 / 3.0;
double base2 = x / 10; double pow2 = Math.Pow(10-x, 0.27); double exp2 = 91.28 / pow2; double pow1 = Math.Pow(base2, exp2);
double b = 1 - pow1;
double exp1 = a / b;
double f = Math.Pow(x, exp1); |
s.a. Ideone-Code
Für diesen Beitrag haben gedankt: Kirk1701A
|
|
Kirk1701A
Beiträge: 126
Erhaltene Danke: 3
Linux, Ubuntu, Mac, IOS, Android (4.2.x - 9.x.x), Win Mob., Micro. DOS, Win 95, Win 98, Win 2000, Win ME, Win XP, Win Vista, Win 7, Win8.1, Win 10
C# (VS 2017 Community/Enterprise, VS 2019 Professional/Enterprise), VB (VBA), JavaScript
|
Verfasst: Do 15.03.18 12:51
Jolan Tru,
WOW!!! Bin echt begeistert, vielen vielen vielen vielen vielen Dank Th69 und OlafSt!! Jetzt geht es.
P.S.:
Falls du es haben möchtest oder jmd. anderes es haben möchte, kann von mir das Programm ab dem 01.04.2018 anfordern (kostenlos).
_________________ "Ich war es und werde es immer bleiben... Ihr Freund!"
@Spock -> Star Trek II: Der Zorn des Khan
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 15.03.18 17:16
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
|