Matlab将符号变量转换为数组
我想将用符号变量Matlab将符号变量转换为数组,matlab,symbols,symbolic-math,Matlab,Symbols,Symbolic Math,我想将用符号变量x定义的函数转换为数组。我的MWE是: syms x f = x.^2; x = linspace(-10,10,100); f1 = double(f); 我试图使用double命令,但出现了一个错误 Error using symengine Unable to convert expression into double array. Error in sym/double (line 692) Xstr = mupadmex('symobj::doub
x
定义的函数转换为数组。我的MWE是:
syms x
f = x.^2;
x = linspace(-10,10,100);
f1 = double(f);
我试图使用double
命令,但出现了一个错误
Error using symengine
Unable to convert expression into double array.
Error in sym/double (line 692)
Xstr = mupadmex('symobj::double', S.s, 0);
我不确定这意味着什么以及如何解决它。- 在应用
之前,用其给定值替换double()
x
subs()
具有类似的功能vpa()
- 与使用
相比,使用double()
的优势在于您可以设置 小数精度由您自己决定vpa()
syms x
f = x.^2;
x = linspace(-10,10,10);
f1 = subs(f);
f2 = double(f1)
f3 = vpa(f1, 8)
输出:小数点后的固定位数double()
输出:小数点后可调整的位数,此处精度调整为8vpa()
有几种方法可以做到这一点。首先是: 这相当于:
syms x % or: syms f(x)
f(x) = x.^2;
xv = linspace(-10,10,100);
f1 = double(f(xv));
另一种方法是使用所建议的
subs
方法 试试f1=double(f(x))?我不能在这里测试它,但试试syms f(x);f1=double(f(linspace(-10,10100))?我得到一个错误:使用symengine时出错。无法将表达式转换为双数组。sym/double错误(第692行)。Xstr=mupadmex('symobj::double',S.S,0)代码>
f3 =[ 100.0, 60.493827, 30.864198, 11.111111, 1.2345679, 1.2345679, 11.111111,
30.864198, 60.493827, 100.0]
syms x
f = symfun(x.^2, x);
xv = linspace(-10,10,100);
f1 = double(f(xv));
syms x % or: syms f(x)
f(x) = x.^2;
xv = linspace(-10,10,100);
f1 = double(f(xv));