В Матлабе есть возможность использовать "встроенные" константы в символьном виде, например:
Мне же нужно задать в символьном виде константу phi (сверхзолотое сечение), которая в "готовом" виде в Матлабе отсутствует. Как это сделать?
P.S. Численно получаю значения, используя такую функцию:
function [res] = phi
% Cверхзолотое сечение
res=(2^(2/3)*(29 - 3*93^(1/2))^(1/3))/6 + (2^(2/3)*(3*93^(1/2) + 29)^(1/3))/6 + 1/3;
end
Но мне нужно иметь возможность вызывать phi именно в символьном виде.
-- 30.08.2020, 20:28 --Ой, получилось:
function [res] = phi
% Cверхзолотое сечение
res=sym('(2^(2/3)*(29 - 3*93^(1/2))^(1/3))/6 + (2^(2/3)*(3*93^(1/2) + 29)^(1/3))/6 + 1/3');
end
Всем спасибо!
-- 30.08.2020, 21:00 --Правда на этот вариант Матлаб немного ругался:
>> phi
Warning: Support of character vectors will be removed in a future release. Character vectors can be used only
for variable names and numbers. Instead, to create symbolic expressions first create symbolic variables using
'syms'. To evaluate character vectors and strings representing symbolic expressions, use 'str2sym'.
> In sym>convertExpression (line 1581)
In sym>convertChar (line 1486)
In sym>tomupad (line 1236)
In sym (line 215)
In phi (line 3)
ans =
(2^(2/3)*(29 - 3*93^(1/2))^(1/3))/6 + (2^(2/3)*(3*93^(1/2) + 29)^(1/3))/6 + 1/3
Поэтому в итоге, следуя подсказке Матлаба, сделал вот так:
function [res] = phi
% Cверхзолотое сечение
res='(2^(2/3)*(29 - 3*93^(1/2))^(1/3))/6 + (2^(2/3)*(3*93^(1/2) + 29)^(1/3))/6 + 1/3';
res=str2sym(res);
end