Найдите минимум и максимум для квадратного уравнения

как найти минимум и максимум для квадратного уравнения с помощью С#??

f(x,y) = x^2 + y^2 + 25 * (sin(x)^2 + sin(y)^2) ,where (x,y) from (-2Pi, 2Pi) ??

при ручном решении я получил min is = 0 , max = 8Pi^2 = 78,957 .

Я пытался написать код на основе линейного квадратичного кода, но что-то пошло совершенно не так этот код дает min = -4.?? и макс = 96 не могли бы вы помочь узнать, где моя ошибка, пожалуйста ??

Я загрузил код в Dropbox, если кто-то может посмотреть: https://www.dropbox.com/s/p7y6krk2gk29i9e/Program.cs

    double[] X, Y, Result; // Range array and result array.

    private void BtnRun_Click(object sender, EventArgs e)
    {
        //Set any Range for the function
        X = setRange(-2 * Math.PI, 2 * Math.PI, 10000);
        Y = setRange(-2 * Math.PI, 2 * Math.PI, 10000);

        Result = getOutput_twoVariablesFunction(X, Y);

        int MaxIndex = getMaxIndex(Result);
        int MinIndex = getMinIndex(Result);

        TxtMin.Text = Result[MinIndex].ToString();
        TxtMax.Text = Result[MaxIndex].ToString();
    }

    private double twoVariablesFunction(double x,double y)
    {
        double f;
        //Set any two variables function
        f = Math.Pow(x, 2) + Math.Pow(y, 2) + 25 * (Math.Pow(Math.Sin(x), 2) + Math.Pow(Math.Sin(y), 2));
        return f;
    }

    private double[] setRange(double Start, double End, int Sample)
    {
        double Step = (End - Start) / Sample;
        double CurrentVaue = Start;
        double[] Array = new double[Sample];
        for (int Index = 0; Index < Sample; Index++)
        {
            Array[Index] = CurrentVaue;
            CurrentVaue += Step;
        }
        return Array;
    }

    private double[] getOutput_twoVariablesFunction(double[] X, double[] Y)
    {
        int Step = X.Length;
        double[] Array = new double[Step];
        for (int Index = 0; Index < X.Length ; Index++)
        {
            Array[Index] = twoVariablesFunction(X[Index], Y[Index]);
        }
        return Array;
    }

    private int getMaxIndex(double[] ValuesArray)
    {
        double M = ValuesArray.Max();
        int Index = ValuesArray.ToList().IndexOf(M);
        return Index;
    }

    private int getMinIndex(double[] ValuesArray)
    {
        double M = ValuesArray.Min();
        int Index = ValuesArray.ToList().IndexOf(M);
        return Index;
    }

person user3568101    schedule 24.04.2014    source источник
comment
Вы спрашиваете, почему ваш код не работает или как написать код для решения произвольных квадратных уравнений?   -  person Jodrell    schedule 24.04.2014
comment
В каком квадратном уравнении есть sin и cos?   -  person Rawling    schedule 24.04.2014
comment
На самом деле, является ли уравнение в вопросе действительно квадратным? en.wikipedia.org/wiki/Quadratic_equation   -  person Jodrell    schedule 24.04.2014
comment
небольшая вещь, которая бросается в глаза, диапазон в формуле составляет от -2pi до 2pi, но в коде диапазон установлен от -pi^2 до pi^2. Не сказать, что это причина, но это несоответствие.   -  person Me.Name    schedule 24.04.2014
comment
а также то, что вместо sin(x)^2 в коде используется sin(x^2)   -  person Me.Name    schedule 24.04.2014
comment
это эталонная функция, мне нужно использовать ее для сравнения моего результата   -  person user3568101    schedule 24.04.2014
comment
Я изменил код, код, я думаю, работает, но я думаю, что у меня проблема с формулой уравнения в C # или границей для массива.   -  person user3568101    schedule 24.04.2014


Ответы (1)


Вы хотите вычислить (sin(x))^2 или sin(x^2)? В вашей формуле f(x,y) это выглядит как (sin(x))^2, но в вашем методе twoVariablesFunction выглядит как sin(x^2).

person gdir    schedule 24.04.2014
comment
сила для греха, а не для степени x. Я пробовал оба, но все равно не работает. Любой другой способ написать функцию на С# - person user3568101; 24.04.2014
comment
@Me.Name .. отлично .. Я изменил код, код, я думаю, работает. но я думаю, что у меня проблема с формулой уравнения в С# или границей для массива. Я перепробовал все возможные Sin(x^2) и Sin(x)^2, но результат все равно неправильный... - person user3568101; 24.04.2014