作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/06/01 11:09:16
matlab中求积分需要定义符号,然后我想带入数值怎么办
syms r a1 b u t a2 F1;%定义符号
S1='-10/3*r*cos(2*a1-b-u+t)';%要求积分的式子
F1=int(int(S1,u,0,pi+a1+t),a1,b-a2,b);%积分结果为F1 =
- (10*r*(cos(b - 2*a2 + t)/2 - cos(b + t)/2))/3 - (10*r*(cos(a2) - 1))/3r=19.2*0.5*10^(-3)
b=0.18*pi*0.5;%带入积分结果
a2=28.2014/180*pi;%带入积分结果
t=0:pi/50:2*pi;%带入不同的t值
求不同t值下的F1值,接下来的程序是什么样的啊,求matlab大神帮忙
建议楼上的同学回答问题之前自己先试一下,以免既浪费自己时间又误导他人.
 
显然这样的代入没起到任何作用,这很容易验证:
>> 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)