Ich versuche, etwas Spaß zu haben, indem Sie etwas Java in C# umwandeln, ich habe den folgenden Code von Java.Delegierte helfen Java zu C#
public void calculate() {
UnivariateFunction forceBalance = (double x) -> {
return Mu - k1 * fcu * b * x * (d - k2 * x);
};
BrentSolver biSolver = new BrentSolver(1e-6);
x = biSolver.solve(1000, forceBalance, 0, d/2, 1);
As = Mu/(gamma_r * fy * (d - k2 * x));
}
Kein alles, was ich in C# finden kann, ist, dass diese MathNet.Numerics zu lösen scheint, als diese RootFinding.Brent.FindRoot enthält.
Ich fand andere Sachen, die das lösen könnten, aber ich habe nicht $ 900.
Hier ist, was ich habe, aber ich denke, dass ich etwas verpassen könnte, da mein Wissen bezüglich Delegierten nicht das Beste ist.
class Program
{
public static double Mu = 100e6;
public static double K1 = 0.45 * (1 - (Math.Sqrt(fcu)/52.5));
public static double fcu = 30.00;
public static double b = 300.00;
//public static double c = 0.00;
public static double d = 500.00;
public static double k2 = (Math.Pow(2 - Math.Sqrt(fcu)/17.5, 2) + 2)/(4 * (3 - (Math.Sqrt(fcu)/17.5)));
static void Main(string[] args)
{
Calculate();
}
public static void Calculate()
{
Func<double, double> abc = x => Mu - K1 * fcu * b * x * (d - k2 * x);
var a = MathNet.Numerics.RootFinding.Brent.FindRoot(abc, 0, 10000, 1e-6);
Console.WriteLine();
Console.ReadLine();
}
}
Ausführen dieses mir der folgende Fehler gibt: failed übertraf die Anzahl der Iterationen erlaubt oder es ist keine Wurzel innerhalb der vorgesehenen Grenzen ‚.
Nun gehe ich davon aus, dass dies daran liegt, dass die Funktion x nicht auflöst.
Fehle ich etwas?
Bitte beachten Sie auch, dass dies weit über meinem Qualifikationsniveau liegt, aber ich versuche mich zu verbessern.
Warum versuchen Sie, quadratische Gleichung numerisch zu lösen? –