matlab中求积分需要定义符号,然后我想带入数值怎么办

2025-01-20 16:53:47
推荐回答(2个)
回答1:

建议楼上的同学回答问题之前自己先试一下,以免既浪费自己时间又误导他人。

 

显然这样的代入没起到任何作用,这很容易验证:

>> F1-subs(F1,{b,a2,t},{b,a2,t})
ans =
0

 

正确的做法是:

subs(F1)

这种情况下,会把当前工作区中变量的具体数值代入表达式,对于本例而言,会得到一个sym数组。这里需要注意的是,由于符号表达式F1中的变量r没有具体数据,所以得到的结果是一个含有r的表达式。

 

如果在上面的代入之前给r赋值

r = 1;
subs(F1)

却会导致报错(各版本可能有所差别)

??? Error using ==> sym.subs at 214
Elements of the substitution cell array must be of the same size.

这是因为,代入表达式的数值必须具有相同的维数——如果是标量,应该都是标量;如果是向量,则应该都是向量(而且维数相同)。解决这个问题的做法是,调用两次subs把向量和标量分别代入:

b = 0.18*pi*0.5;
a2 = 28.2014/180*pi;
r = 1;
F1 = subs(F1);
t = 0:pi/50:2*pi;
F1 = subs(F1)

希望回答对楼主有帮助,有问题请追问。

回答2:

subs(F1,{b,a2,t},{b,a2,t})

%上面的代码有误,现改正如下
subs(F1)