我一直在探索Matlab的象征工具箱,为即将到来的决赛做准备。但是,我似乎无法将用户输入的字符串转换为符号表达式,然后将其用于集成。
a = input('Plese enter a = ');
b = input('Please enter b = ');
function1 = input('Please enter the function: ', 's');
syms x eq1
eq1 = sym(function1);
Integral1 = int(eq1 , x, a, b);
Simpson = 1 / 6 * (b - a) * (subs(eq1 , x, a) + 4 * ...
(subs(eq1 , x, (a+b)/2))...
+ subs(eq1 , x, b));
fprintf('The value of the integral is %s \n', Integral1);
fprtinf('The aprroximation with simp is %s \n', Simpson);
辛普森是辛普森法则的积分近似。我得到的错误是"转换为' sym'返回了MuPAD错误:错误:意外的'标识符'"行号是行
eq1 = sym(function1);
答案 0 :(得分:0)
执行此操作的一种方法是使用eval
:
function1 = input('Please enter the function: ', 's');
eq1=eval(function1);
但您需要将结果转换为双打,然后才能使用fprintf
显示结果:
fprintf(''The value of the integral is %s \n', double(Integral1));
答案 1 :(得分:0)
启动R2017b,使用str2sym
>> syms f(x)
>> function1 = input('Please enter the function: ', 's');
Please enter the function: sin(x)
>> f(x) = str2sym(function1)
f(x) =
sin(x)