复试到HR面你们等了几天了?
点赞 5

相关推荐

不愿透露姓名的神秘牛友
2024-12-25 21:54
飞猪 java 114514 硕士985
点赞 评论 收藏
分享
01-08 15:35
提示:牛顿法using System;class Program{    // 定义方程 f(x)    static double Equation(double x)    {        double expTerm = Math.Exp(-x);          // 计算 e^(-x)        double cosTerm = Math.Cos(x);           // 计算 cos(x)        double sinTerm = Math.Sin(x);           // 计算 sin(x)                double part1 = 2 * expTerm * cosTerm;   // 2 * e^(-x) * cos(x)        double part2 = sinTerm * sinTerm;       // sin^2(x)        double part3 = Math.Log(x + 1);         // ln(x + 1)        double part4 = 3 / (x * x + 1);         // 3 / (x^2 + 1)                return part1 + part2 + part3 - part4;  // 返回整个方程值    }    // 使用牛顿法(Newton-Raphson Method)来求解方程的零点    static double SolveEquation(double initialGuess, double tolerance = 1e-6, int maxIterations = 1000)    {        double x = initialGuess;        double fx = Equation(x);        double fxDerivative = Derivative(x);        // 在开始之前,检查初始点是否已经是解        if (Math.Abs(fx)         {            return x;        }        int iteration = 0;        while (iteration         {            // 防止导数为零            if (Math.Abs(fxDerivative)             {                Console.WriteLine("导数接近零,牛顿法迭代失败!");                break;            }            // 计算下一次迭代的值            double newX = x - fx / fxDerivative;            // 如果函数值已经接近零或变化值小于容差,则提前退出            if (Math.Abs(fx)             {                return newX;            }            // 更新变量            x = newX;            fx = Equation(x);                // 更新方程值            fxDerivative = Derivative(x);    // 更新导数            iteration++;        }        return x;    }    // 计算方程 f(x) 的导数,使用中心差分法    static double Derivative(double x)    {        const double h = 1e-6; // 微小增量        double fxPlusH = Equation(x + h);        double fxMinusH = Equation(x - h);                return (fxPlusH - fxMinusH) / (2 * h);  // 中心差分法计算导数    }    static void Main()    {        // 给定初始猜测值        double initialGuess = 1.0;        // 使用牛顿法求解方程的数值解        double root = SolveEquation(initialGuess);        Console.WriteLine($"方程的近似解是: x = {root}");        // 输出该解的方程值        double equationValue = Equation(root);        Console.WriteLine($"在 x = {root} 处,方程值为: f(x) = {equationValue}");    }}
点赞 评论 收藏
分享
牛客网
牛客企业服务