Как ввести 2 или 4 уравнения как систему уравнений и использовать ее как переменную в C #?Может быть, можно конвертировать из MATLAB? - PullRequest
0 голосов
/ 24 ноября 2018

поэтому я столкнулся с проблемой.Я не слишком много программировал на C #, поэтому я не знаю, как я мог бы ввести 2 или 4 уравнения в качестве системы уравнений, которую я мог бы использовать в своей программе в качестве переменной для решения уравнений?Я знаю, как написать это в MATLAB, но не знаю, как сделать то же самое в C #.Любая помощь очень ценится.

Системы уравнений, которые мне нужно включить в мою программу на C #: Изображение обеих систем уравнений, которые мне нужно включить

Вот как я ввожусистема из 4 уравнений в MATLAB:

function F=f(X) 
F(1)=X(1)+2*X(2)+X(3)+4*X(4)-20.7;
F(2)=X(1)^2+2*X(1)*X(2)+X(4)^3-15.88;
F(3)=X(1)^3+X(3)^2+X(4)-21.218;
F(4)=3*X(2)+X(3)*X(4)-7.9;
F=F(:);
return
end 

И вот как я ввел систему из 2 уравнений в другом проекте MATLAB:

    function fff=f(x)
fff=[x(1)^2+x(2)^2-2;
     x(1)^2-x(2)^2];
return
end

Я делал подобную задачу раньше в C #,но система уравнений ( изображение системы уравнений, используемой для этого случая ) была очень простой, поэтому мне просто нужно было сохранить коэффициенты, которые были близки ко всем значениям x (x1, x2, x3, x4):

double[,] A0 = { { 4, 3, -1, 1 }, { 3, 9, -2, -2 }, { -1, -2, 11, -1 }, { 1, 
-2, -1, 5 } };
Matrix<double> A = Matrix<double>.Build.DenseOfArray(A0);

1 Ответ

0 голосов
/ 24 ноября 2018

Вы можете использовать делегаты

namespace Stackoverflow
{
    public class Function
    {
        public delegate int X(int param);

        public static double Operation(X x)
        {
            var F1 = x(1) + 2 * x(2) + x(3) + 4 * x(4) - 20.7;
            var F2 = x(1)  + 2 * x(1) * x(2) + x(4) - 15.88;
            var F3 = x(1) + x(3) + x(4) - 21.218;
            var F4 = 3 * x(2) + x(3) * x(4) - 7.9;

            return F1 + F2 + F3 + F4;
        }
    }

    class Program
    {
        private static void Main(string[] args)
        {
            // We give the Something function defined below to the Operation method
            // which has the same parameters as X, .
            Console.WriteLine(Function.Operation(Something));
        }

        public static int Something(int param)
        {
            return param + param;
        }
    }
}

Метод Operation принимает функцию, если она имеет те же параметры ввода и тот же тип возврата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...