用matlaB求定积分的时候报错
在用matlaB求定积分的时候报错信息如下:错误使用sym/subsindex(line663)Invalidindexingorfunctiondefinition.W...
在用matlaB求定积分的时候报错信息如下:
错误使用 sym/subsindex (line 663)
Invalid indexing or function definition. When defining a function, ensure that the body of
the function is a SYM object. When indexing, the input must be numeric, logical or ':'.
出错 landscape1fig6 (line 79)
E(j)=eta_e(j).*n*Zr.*int((S(i)-Sh)./(Sstar-Sw).*p(i),S(i),Sh,Sfc);
代码如下:
syms S(i) E(j) T(j) L(j) R(j)
E(j)=eta_e(j).*n*Zr.*int((S(i)-Sh)./(Sfc-Sh).*p(i),S(i),Sh,Sfc);
T(j)=eta_t(j).*n*Zr.*(int((S(i)-Sw)./(Sstar-Sw).*p(i),S(i),Sw,Sstar)+int(p(i),S(i),Sfc,1));
L(j)=m.*n*Zr.*int(exp(beta*(S(i)-Sfc)-1).*p(i),S(i),Sfc,1);
R(j)=E(j)+E(j)+L(j);
S(i)相当于x 定积分范围是Sh,Sfc,只有S(i)是变量,其他都是常数
请问这是什么原因?如何修改? 展开
错误使用 sym/subsindex (line 663)
Invalid indexing or function definition. When defining a function, ensure that the body of
the function is a SYM object. When indexing, the input must be numeric, logical or ':'.
出错 landscape1fig6 (line 79)
E(j)=eta_e(j).*n*Zr.*int((S(i)-Sh)./(Sstar-Sw).*p(i),S(i),Sh,Sfc);
代码如下:
syms S(i) E(j) T(j) L(j) R(j)
E(j)=eta_e(j).*n*Zr.*int((S(i)-Sh)./(Sfc-Sh).*p(i),S(i),Sh,Sfc);
T(j)=eta_t(j).*n*Zr.*(int((S(i)-Sw)./(Sstar-Sw).*p(i),S(i),Sw,Sstar)+int(p(i),S(i),Sfc,1));
L(j)=m.*n*Zr.*int(exp(beta*(S(i)-Sfc)-1).*p(i),S(i),Sfc,1);
R(j)=E(j)+E(j)+L(j);
S(i)相当于x 定积分范围是Sh,Sfc,只有S(i)是变量,其他都是常数
请问这是什么原因?如何修改? 展开
3个回答
展开全部
matlab中求定积分一般用int函数。
int(expr,var,a,b)是int函数求定积分的一般形式。其中,expr为符号表达式,var为符号变量,为积分变量,缺省为x。a、b为积分上下限,可以是数字,也可以是符号变量。
出错时,可以检查代码是否有如下问题:
1、是否有调用格式的错误,expr需要为符号表达式,var需要为符号变量。(在旧的matlab版本中,支持使用字符串作为表达式与积分变量,在新的版本中已经不支持了)
2、表达式中有错误。
习惯性错误,如 2x+1、xy、sinx、e^x、ln(x) 等等,这些都是错误的,会直接报错。
应该改为2*x+1、x*y、sin(x)、exp(x)、log(x)
3、有时候会碰到积分不可积的情况或者积分结果为特殊函数。
int(expr,var,a,b)是int函数求定积分的一般形式。其中,expr为符号表达式,var为符号变量,为积分变量,缺省为x。a、b为积分上下限,可以是数字,也可以是符号变量。
出错时,可以检查代码是否有如下问题:
1、是否有调用格式的错误,expr需要为符号表达式,var需要为符号变量。(在旧的matlab版本中,支持使用字符串作为表达式与积分变量,在新的版本中已经不支持了)
2、表达式中有错误。
习惯性错误,如 2x+1、xy、sinx、e^x、ln(x) 等等,这些都是错误的,会直接报错。
应该改为2*x+1、x*y、sin(x)、exp(x)、log(x)
3、有时候会碰到积分不可积的情况或者积分结果为特殊函数。
展开全部
我不确定积分中的上下限是否能用syms类型的变量
int((S(i)-Sh)./(Sstar-Sw).*p(i),S(i),Sh,Sfc);
你可以把其中的常数都换为实际对应的数字,然后试试能不能行
int((S(i)-Sh)./(Sstar-Sw).*p(i),S(i),Sh,Sfc);
你可以把其中的常数都换为实际对应的数字,然后试试能不能行
追问
我这里积分的上下线没有用syms类型的变量呢,Sh,Sfc是常数
这里的把常数代进去之后求出来的定积分还是个定积分!
追答
你的S(i)是表达式么??
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
syms S(i) E(j) T(j) L(j) R(j)
不能这样定义, 去掉()
不能这样定义, 去掉()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询