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

我正在尝试针对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时有效。但是,当我尝试这段代码时,我得到:

  

使用sym / subsindex时出错(第825行)无效的索引编制或函数   定义。索引必须遵循MATLAB索引。函数参数   必须是符号变量,函数体必须是sym表达式。

     

sym / subsref错误(第870行)
              R_tilde = Builtin('subsref',L_tilde,Idx);

     

HW11中的错误(第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,[0 3]);
disp(integral);
a125000178 回答:MATLAB无法存储具有多个变量的符号函数

commentAdam中所述,您可能忘记了在*c之后添加乘法运算符d,因此当您编写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;
本文链接:https://www.f2er.com/3038349.html

大家都在问