字符串和符号表达式错误之间的转换

时间:2014-05-05 00:07:07

标签: matlab type-conversion symbolic-math

我一直在探索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);

2 个答案:

答案 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)

请参阅:https://www.mathworks.com/help/symbolic/str2sym.html