MATLAB非线性优化中求积分,求积分的时候怎么卡住不动,左下角显示正忙,程序运行不动,该如何解决?

因为这个积分是从大程序里截取出来的,所以有的变量没有出现。为什么会一直显示正忙得不出结果?是因为解不出来吗?那如何跳过无解的值?
M文件:
function f=fun(x)
p1=30*pi/180
b=60*pi/180
n=0.5
func=@(nm)cos(nm)-cos(p1).*exp(((p1-nm)./(x(5)-x(4))).*log((sin(x(4))./sin(x(2))).*exp((x(5)-x(2)).*tan(p1))));
TM=fsolve(func,rand(1));
syms s
TZ=TM-((TM-p1)./(x(5)-x(4))).*(s-x(4))
QQ=(1./cos(TZ))*(1-sin(TZ)+2.*n*((sin(TZ)-sin(p1))/(1+sin(p1)))).*exp((2.*(x(5)-x(4))./(TM-p1)).*log(cos(TZ)./cos(TM)))
CC=int(QQ,s,x(4),x(5))
f=double(CC)
end
优化语句:
x0=[77*pi/180;55*pi/180;60*pi/180;66*pi/180;69*pi/180];
A=[-1 1 0 0 0;-1 0 0 0 1;0 1 0 -1 0;0 0 0 1 -1];b=[0;0;0;0];
Aeq=[];beq=[];
VLB=[(1*pi/180);(1*pi/180);(60*pi/180);(2*pi/180);(3*pi/180)];
VUB=[(120*pi/180);(89*pi/180);(60*pi/180);(110*pi/180);(110*pi/180)];
[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,VLB,VUB)

求积分的时候为什么停滞不前,是因为下式

QQ=(1./cos(TZ))*(1-sin(TZ)+2.*n*((sin(TZ)-sin(p1))/(1+sin(p1)))).*exp((2.*(x(5)-x(4))./(TM-p1)).*log(cos(TZ)./cos(TM)))
CC=int(QQ,s,x(4),x(5))

被积函数含有变量矩阵x,所以用无法对其积分表达式进行积分运算,如matlab的int()、quad()等。

解决的方法,可以单独对其积分运算,然后用x(1)替代x1,x(2)替代x2,。。。

温馨提示:答案为网友推荐,仅供参考