提问人:Elegant 提问时间:11/16/2023 最后编辑:Elegant 更新时间:11/16/2023 访问量:24
MATLAB 错误:将包含剩余符号函数调用的表达式转换为双精度数组
MATLAB error: converting expression containing remaining symbolic function calls into double array
问:
我应该使用数值和符号积分求解积分,然后比较结果。 这是我的代码,我在其中定义了一个函数,然后相应地使用符号和数值工具箱中的方法对其进行集成:
syms x;
functions = cell(1, 3);
functions{1} = (1 + x - x^2) / sqrt((1 - x^2)^3);
ranges = [4, 10; -9, 0; 2, 10];
figure;
for i = 1:2
fprintf('Function %d: %s\n', i, char(functions{i}));
antiderivative = int(functions{i}, x);
fprintf('Antiderivative: %s\n', char(antiderivative));
a = ranges(i, 1);
b = ranges(i, 2);
num_result = zeros(1, (b - a) / 0.01);
sym_result = zeros(1, (b - a) / 0.01);
x_vals = a:0.01:b-0.01;
for j = 1:length(x_vals)
num_result(j) = integral(@(t) double(subs(functions{i}, x, t)), x_vals(j), x_vals(j) + 0.01);
sym_result(j) = double(subs(antiderivative, x, x_vals(j) + 0.01) - subs(antiderivative, x, x_vals(j)));
end
但是,在尝试解决此问题时,Matlab会抛出以下错误:
Error using symengineUnable to convert expression containing remaining symbolic function calls into
double array. Argument must be expression that evaluates to number.Error in sym/double (line 761)
Xstr = mupadmex('symobj::double', S.s, 0);
该方法适用于没有复数的其他问题。我已经尝试在线搜索此错误,提供的唯一解决方案是不使用符号工具箱,不幸的是我必须这样做。
答: 暂无答案
评论