【发布时间】:2019-11-25 07:29:26
【问题描述】:
我正在尝试将函数的定积分从 -1 变为 1 关于x。该函数有变量a、b、c、d和x,所有这些我都定义为syms变量。我试图将a、b、c、d 保留在我的最终积分中,因为稍后我将针对每个优化问题进行区分。这是我拥有的当前代码:
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);
当我尝试仅使用变量 x 和 y 来实现较小的函数时,类似的代码也有效。但是,当我尝试这段代码时,我得到:
使用 sym/subsindex 时出错(第 825 行)无效的索引或函数 定义。索引必须遵循 MATLAB 索引。函数参数 必须是符号变量,函数体必须是符号表达式。
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, x, [0 3]);
disp(integral);
【问题讨论】:
-
在
f(x)表达式中的c和d之后添加乘法运算符*,否则将被解释为数组 -
谢谢!这行得通,我什至没有注意到我在那里缺少一个操作员。
标签: matlab syntax-error symbolic-math