2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Matlab - как задать константу phi в символьном виде?
Сообщение30.08.2020, 19:18 
В Матлабе есть возможность использовать "встроенные" константы в символьном виде, например:
Используется синтаксис Matlab M
pi=sym(pi);
 

Мне же нужно задать в символьном виде константу phi (сверхзолотое сечение), которая в "готовом" виде в Матлабе отсутствует. Как это сделать?
P.S. Численно получаю значения, используя такую функцию:
Используется синтаксис Matlab M
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 --

Ой, получилось:
Используется синтаксис Matlab M
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 --

Правда на этот вариант Матлаб немного ругался:
Используется синтаксис Matlab M
>> 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

Поэтому в итоге, следуя подсказке Матлаба, сделал вот так:
Используется синтаксис Matlab M
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

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group