MATLAB 无法存储具有多个变量的符号函数

MATLAB Unable to Store Symbolic Function with Multiple Variables

我正在尝试对 x 的函数求从 -1 到 1 的定积分。该函数有变量 abcdx,所有这些我都定义为 syms 变量。我试图将 abcd 保留在我的最终积分中,因为稍后我将针对优化问题对每一个进行区分。这是我当前的代码:

syms f(x);
syms a b c d;
f(x)= (exp(x)-a*(1/sqrt(2))-b*(sqrt(3/2)*x)-c((sqrt(45/8))*(x^2-(1/3)))+d((sqrt(175/8))*((x^3)-(3/5)*(x))))^2;
integral = int(f, x, [-1 1]);
disp(integral);

当我尝试仅使用变量 xy 来实现较小的函数时,类似的代码有效。但是,当我尝试这段代码时,我得到:

Error using sym/subsindex (line 825) Invalid indexing or function definition. Indexing must follow MATLAB indexing. Function arguments must be symbolic variables, and function body must be sym expression.

Error in sym/subsref (line 870)
R_tilde = builtin('subsref',L_tilde,Idx);

Error in HW11 (line 4)
f(x)= (exp(x)-a*(1/sqrt(2))-b*(sqrt(3/2)x)-c((sqrt(45/8))(x^2-(1/3)))+d((sqrt(175/8))((x^3)-(3/5)(x))))^2;

我对 MATLAB 中的符号函数和 syms 变量还很陌生,为什么 MATLAB 拒绝此代码?我尝试过的类似代码是:

syms f(x);
syms y;
f(x) = (x^2) + y;
integral = int(f, x, [0 3]);
disp(integral);

by Adam中所述,您可能忘记在cd之后添加乘法运算符*,因此当您编写c(...)d(...) MATLAB 将它们视为数组的索引,但您不能使用符号变量或表达式对数组进行索引。您需要将其更改为 c*(...)d*(...).

替换:

f(x)= (exp(x)-a*(1/sqrt(2))-b*(sqrt(3/2)*x)-c((sqrt(45/8))*(x^2-(1/3)))+d((sqrt(175/8))*((x^3)-(3/5)*(x))))^2;

与:

f(x)= (exp(x)-a*(1/sqrt(2))-b*(sqrt(3/2)*x)-c*((sqrt(45/8))*(x^2-(1/3)))+d*((sqrt(175/8))*((x^3)-(3/5)*(x))))^2;