Как работает функция MATLAB symvar? - PullRequest
0 голосов
/ 13 мая 2019

Я прочитал документацию и справку о функции symvar, но я все еще не уверен, как она работает, особенно для следующего примера:

syms x y a
symvar(x + y, 1)

Когда я запускаю этот M-файл, яполучить ответ 'x'.Почему я получаю этот ответ?Почему не 'y'?И какова роль числа 1, записанного в качестве второго аргумента?

1 Ответ

3 голосов
/ 13 мая 2019

Полагаю, вы набрали help symvar в командном окне MATLAB, что обычно является лучшим первым шагом, но в этом случае вы можете столкнуться с небольшой ошибкой.Это связано с тем, что symvar является перегруженной функцией : существует более одной копии, и вызываемая копия зависит от типа данных / класса переменных / объектов, которые ей передаются.Вы можете увидеть все версии, используя функцию which с опцией -all.Вывод, который я получаю на R2018a:

>> which symvar -all
C:\Program Files\MATLAB\R2018a\toolbox\matlab\funfun\symvar.m
C:\Program Files\MATLAB\R2018a\toolbox\curvefit\curvefit\@fittype\symvar.m  % fittype method
C:\Program Files\MATLAB\R2018a\toolbox\symbolic\symbolic\@sym\symvar.m      % sym method
C:\Program Files\MATLAB\R2018a\toolbox\matlab\funfun\@inline\symvar.m       % inline method

Обратите внимание, что в ...\matlab\funfun есть версия по умолчанию, а затем еще три версии для объектов fittype, sym и inline.Когда вы набираете help symvar, вы получаете справку по первому, что не очень полезно, потому что вам нужна помощь по перегруженному методу sym.Чтобы получить это, вы должны набрать help sym/symvar, и вы увидите что-то вроде этого:

 symvar Finds the symbolic variables in a symbolic expression or matrix.
     symvar(S), where S is a scalar or matrix sym, returns a vector sym
     containing all of the symbolic variables appearing in S. The
     variables are returned in lexicographical order. If no symbolic variables
     are found, symvar returns the empty vector.
     The constants pi, i and j are not considered variables.

     symvar(S,N) returns the N symbolic variables closest to 'x' or 'X'.
     If N exceeds the number of variables appearing in S, or equals inf,
     then all variables appearing in S are returned.
     Upper-case variables are returned ahead of lower-case variables.
     If S is a symbolic function the inputs to S are listed in front of the
     other free variables. 

     Examples:
        syms alpha a b x1 y

        symvar(alpha+a+b) returns
         [a, alpha, b]

        symvar(cos(alpha)*b*x1 + 14*y,2) returns
         [x1, y]

        symvar(y*(4+3*i) + 6*j) returns
         y

Вы также можете использовать онлайн-документацию для новейшей версии MATLAB: symvar

Они дают понять, что symvar делает для символических переменных.Он вернет вектор всех символических переменных, найденных в выражении, которое вы передаете в качестве первого аргумента.Если вы укажете второй аргумент как число, он вернет только столько символов, выбрав сначала те, которые в алфавитном порядке наиболее близки к 'x'.

...