如何使用fminco​n函数求含有积分的函​数的最小值

11 ビュー (過去 30 日間)
迎迎 孙
迎迎 孙 2021 年 8 月 19 日
コメント済み: 迎迎 孙 2021 年 8 月 19 日
clc;
clear;
a=0;
alpha=0.01;
beta=0.01;
Caql=1.33;
Crql=1;
b1=3*Caql*(1+a^2)^0.5;
b2=3*Crql*(1+a^2)^0.5;
fun1=@(t)chi2cdf(x(1)*b1^2/(9*x(3)^2)-t^2,x(1)-1)*(normpdf(t+a*x(1)^0.5)+normpdf(t-a*x(1)^0.5));%PN(Caql)
fun2=@(t)chi2cdf(x(1)*b2^2/(9*x(3)^2)-t^2,x(1)-1)*(normpdf(t+a*x(1)^0.5)+normpdf(t-a*x(1)^0.5));%PN(Crql)
fun3=@(t)chi2cdf(x(2)*b1^2/(9*x(3)^2)-t^2,x(2)-1)*(normpdf(t+a*x(2)^0.5)+normpdf(t-a*x(2)^0.5));%PT(Caql)
fun4=@(t)chi2cdf(x(2)*b2^2/(9*x(3)^2)-t^2,x(2)-1)*(normpdf(t+a*x(2)^0.5)+normpdf(t-a*x(2)^0.5));%PT(Crql)
fun=@(x)1/2*((integral(fun3,0,b1*x(2)^0.5/(3*x(3)))*x(1)+(1-integral(fun1,0,b1*x(1)^0.5/(3*x(3))))*x(2))/(1-integral(fun1,0,b1*x(1)^0.5/(3*x(3)))+integral(fun3,0,b1*x(2)^0.5/(3*x(3)))))+...
1/2*((integral(fun4,0,b2*x(2)^0.5/(3*x(3)))*x(1)+(1-integral(fun2,0,b2*x(1)^0.5/(3*x(3))))*x(2))/(1-integral(fun2,0,b2*x(1)^0.5/(3*x(3)))+integral(fun4,0,b2*x(2)^0.5/(3*x(3)))));
x0=[110,130,1.1];
A=[];%AX<=b(线性不等式约束),G(X)<=0(非线性不等式约束)
b=[];
Aeq=[];%AeqX=beq(线性等式约束),Geq(X)=0(非线性等式约束)
beq=[];
vlb=[2,2];%lb<=x<=ub(变量约束)
vub=[];
exitflag=1;
[x,fval,exitflag]=fmincon(fun,x0,A,b,Aeq,beq,vlb,vub,'myfun');
function [g,ceq]=myfun(x)
g=1-alpha-(integral(fun3,0,b1*x(2)^0.5/(3*x(3)))/(1-integral(fun1,0,b1*x(1)^0.5/(3*x(3)))+integral(fun3,0,b1*x(2)^0.5/(3*x(3)))));
ceq=(integral(fun4,0,b2*x(2)^0.5/(3*x(3)))/(1-integral(fun2,0,b2*x(1)^0.5/(3*x(3)))+integral(fun4,0,b2*x(2)^0.5/(3*x(3)))))-beta;
  1 件のコメント
迎迎 孙
迎迎 孙 2021 年 8 月 19 日
警告: Length of lower bounds is < length(x); filling in missing lower bounds with -Inf.
> In checkbounds (line 33)
In fmincon (line 318)
In trysampling1 (line 24)
未定义函数或变量 'x'。
出错 trysampling1>@(t)chi2cdf(x(2)*b1^2/(9*x(3)^2)-t^2,x(2)-1)*(normpdf(t+a*x(2)^0.5)+normpdf(t-a*x(2)^0.5))
出错 integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
出错 integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
出错 integralCalc (line 75)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);
出错 integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
出错
trysampling1>@(x)1/2*((integral(fun3,0,b1*x(2)^0.5/(3*x(3)))*x(1)+(1-integral(fun1,0,b1*x(1)^0.5/(3*x(3))))*x(2))/(1-integral(fun1,0,b1*x(1)^0.5/(3*x(3)))+integral(fun3,0,b1*x(2)^0.5/(3*x(3)))))+1/2*((integral(fun4,0,b2*x(2)^0.5/(3*x(3)))*x(1)+(1-integral(fun2,0,b2*x(1)^0.5/(3*x(3))))*x(2))/(1-integral(fun2,0,b2*x(1)^0.5/(3*x(3)))+integral(fun4,0,b2*x(2)^0.5/(3*x(3)))))
出错 fmincon (line 546)
initVals.f = feval(funfcn{3},X,varargin{:});
出错 trysampling1 (line 24)
[x,fval,exitflag]=fmincon(fun,x0,A,b,Aeq,beq,vlb,vub,'myfun');

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File Exchange数值积分和微分 についてさらに検索

製品


リリース

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!