Wolfram mathematica 1) 一个解决方案;“最大化”;“错误”;函数无界。”;但是不要';我不知道为什么2)更重要的是,如何加速这个3d区域绘图(参见更新2)
当我试图使用Wolfram mathematica 1) 一个解决方案;“最大化”;“错误”;函数无界。”;但是不要';我不知道为什么2)更重要的是,如何加速这个3d区域绘图(参见更新2),wolfram-mathematica,mathematical-optimization,Wolfram Mathematica,Mathematical Optimization,当我试图使用NMaximize查找f的最大值时,mathematica给了我一个错误提示 NMaximize::cvdiv:未能收敛到解决方案。该函数可能是无限的。 但是,如果我用一个大数字来缩放f,比如说,10^5,10^10,甚至10^100,NMaximize效果很好 在下面的两幅图像中,蓝色的是f,红色的是f/10^10 我的问题来了: 缩放是否是一种通用的优化技巧 任何其他稳健、通用的解决方案用于以下优化 针状函数 因为缩放几乎没有改变针的形状 f,如两幅图所示,缩放在这里如何工作?
NMaximize
查找f
的最大值时,mathematica给了我一个错误提示
NMaximize::cvdiv:未能收敛到解决方案。该函数可能是无限的。
但是,如果我用一个大数字来缩放f
,比如说,10^5,10^10,甚至10^100,NMaximize
效果很好
在下面的两幅图像中,蓝色的是f
,红色的是f/10^10
我的问题来了:
f
,如两幅图所示,缩放在这里如何工作?f
Clear["Global`*"]
d = 1/100;
mu0 = 4 Pi 10^-7;
kN = 97/100;
r = 0.0005;
Rr = 0.02;
eta = 1.3;
e = 3*10^8;
s0 = 3/100;
smax = 1/100; ks = smax/s0;
fre = 1; tend = 1; T = 1;
s = s0*ks*Sin[2*Pi*fre*t];
u = D[s, t];
umax = N@First[Maximize[u, t]];
(*i=1;xh=0.1;xRp=4.5`;xLc=8.071428571428573`;
i=1;xh=0.1;xRp=4.5;xLc=8.714285714285715;*)
i = 1; xh = 0.1; xRp = 5.5; xLc = 3.571428571428571`;
(*i=1;xh=0.1`;xRp=5.`;xLc=6.785714285714287`;*)
h = xh/100; Rp = xRp/100; Lc = xLc/100;
Afai = Pi ((Rp + h + d)^2 - (Rp + h)^2);
(*Pi (Rp-Hc)^2== Afai*)
Hc = Rp - Sqrt[Afai/Pi];
(*2Pi(Rp+h/2) L/2==Afai*)
L = (2 Afai)/(\[Pi] (h + 2 Rp));
B = (n mu0 i)/(2 h);
(*tx = -3632B+2065934/10 B^2-1784442/10 B^3+50233/10 B^4+230234/10 \
B^5;*)
tx = 54830.3266978739 (1 - E^(-3.14250266080741 B^2.03187556833859));
n = Floor[(kN Lc Hc)/(Pi r^2)] ;
A = Pi*(Rp^2 - Rr^2);
b = 2*Pi*(Rp + h/2);
(* -------------------------------------------------------- *)
Dp0 = 2*tx/h*L;
Q0 = 0;
Q1 = ((1 - 3 (L tx)/(Dp h) + 4 (L^3 tx^3)/(Dp^3 h^3)) Dp h^3)/(
12 eta L) b;
Q = Piecewise[{{Q1, Dp > Dp0}, {Q0, True}}];
Dp = Abs[dp[t]];
ode = u A - A/e ((s0^2 - s^2)/(2 s0 )) dp'[t] == Q*Sign[dp[t]];
sol = First[
NDSolve[{ode, dp[0] == 0}, dp, {t, 0, tend} ,
MaxSteps -> 10^4(*Infinity*), MaxStepFraction -> 1/30]];
Plot[dp''[t] A /. sol, {t, T/4, 3 T/4}, AspectRatio -> 1,
PlotRange -> All]
Plot[dp''[t] A /10^10 /. sol, {t, T/4, 3 T/4}, AspectRatio -> 1,
PlotRange -> All, PlotStyle -> Red]
f = dp''[t] A /. sol;
NMaximize[{f, T/4 <= t <= 3 T/4}, t]
NMaximize[{f/10^5, T/4 <= t <= 3 T/4}, t]
NMaximize[{f/10^5, T/4 <= t <= 3 T/4}, t]
NMaximize[{f/10^10, T/4 <= t <= 3 T/4}, t]
清除[“全局”*]
d=1/100;
mu0=4pi10^-7;
kN=97/100;
r=0.0005;
Rr=0.02;
eta=1.3;
e=3*10^8;
s0=3/100;
smax=1/100;ks=smax/s0;
fre=1;倾向=1;T=1;
s=s0*ks*Sin[2*Pi*fre*t];
u=D[s,t];
umax=N@First[最大化[u,t]];
(*i=1;xh=0.1;xRp=4.5`;xLc=8.071428571428573`);
i=1;xh=0.1;xRp=4.5;xLc=8.714285714285715;*)
i=1;xh=0.1;xRp=5.5;xLc=3.571428571428571`;
(*i=1;xh=0.1`;xRp=5.`;xLc=6.785714285714287`;*)
h=xh/100;Rp=xRp/100;Lc=xLc/100;
Afai=Pi((Rp+h+d)^2-(Rp+h)^2);
(*Pi(Rp-Hc)^2==Afai*)
Hc=Rp-Sqrt[Afai/Pi];
(*2Pi(Rp+h/2)L/2==Afai*)
L=(2 Afai)/(\[Pi](h+2 Rp));
B=(n mu0 i)/(2 h);
(*tx=-3632B+2065934/10B^2-1784442/10B^3+50233/10B^4+230234/10\
B^5;*)
tx=54830.3266978739(1-E^(-3.14250266080741B^2.03187556833859));
n=地板[(kN Lc Hc)/(Pi r^2)];
A=Pi*(Rp^2-Rr^2);
b=2*Pi*(Rp+h/2);
(* -------------------------------------------------------- *)
Dp0=2*tx/h*L;
Q0=0;
Q1=((1-3(L tx)/(Dp h)+4(L^3 tx^3)/(Dp^3 h^3))Dp h^3)/(
12(L)b;
Q=分段[{Q1,Dp>Dp0},{Q0,True}}];
Dp=Abs[Dp[t]];
ode=ua-A/e((s0^2-s^2)/(2s0))dp'[t]==Q*符号[dp[t]];
索尔=第一[
NDSolve[{ode,dp[0]==0},dp,{t,0,tend},
最大步长->10^4(*无穷大*),最大步长分数->1/30];
绘图[dp'[t]A/.sol,{t,t/4,3t/4},AspectRatio->1,
绘图范围->全部]
绘图[dp'[t]A/10^10/.sol,{t,t/4,3t/4},AspectRatio->1,
打印范围->全部,打印样式->红色]
f=dp''[t]A/。溶胶;
如果在优化过程中最优值提高了几个数量级,并且最终结果在绝对意义上是“大的”,则会发出NMaximize[{f,T/4NMaximize::cvdiv
。(例如,在我们从10^-6变为1的情况下防止消息)
因此,是的,目标函数的缩放会对这一点产生影响
严格地说,此消息是一个警告,而不是一个错误。我的经验是,如果您看到它,您的问题很有可能出于某种原因是无限的。在任何情况下,此警告都是一个提示,提示您可能希望仔细检查您的系统,看看是否存在这种情况。如果选择imum在优化过程中提高了几个数量级,最终结果在绝对意义上是“大的”(例如,在从10^-6到1的情况下防止消息)
因此,是的,目标函数的缩放会对这一点产生影响
严格地说,此消息是一个警告,而不是一个错误。我的经验是,如果您看到它,您的问题很有可能出于某种原因是无限的。在任何情况下,此警告都是一个提示,提示您可能需要重新检查您的系统,以确定是否存在这种情况。是否定义函数,f
?是的,pl易用性包括f
!@David和Mr Wizard,感谢您的关心。我认为在这里显示f
会有点不好。好的,我现在做了两次更新。缩放或规范化是优化中的一项标准技术。@Platomanic,非常感谢您。您能在我的文章中就这个问题给我一些建议吗上面的更新2?:)你能定义函数吗,f
?是的,请包括f
!@David和Mr Wizard,谢谢你的关心。我认为在这里显示f
会有点不舒服。好的,我现在做了两次更新。缩放或规范化是优化中的一项标准技术。@platonariac,谢谢你非常感谢。你能就我上面更新的问题给我一些建议吗?:)
Clear["Global`*"]
d = 1/100;
mu0 = 4 Pi 10^-7;
kN = 97/100;
r = 0.0005;
Rr = 0.02;
eta = 1.3;
e = 3*10^8;
s0 = 3/100;
smax = 1/100; ks = smax/s0;
f = 1; tend = 1/f; T = 1/f;
s = s0*ks*Sin[2*Pi*f*t];
u = D[s, t];
umax = N@First[Maximize[u, t]];
du[i_?NumericQ, xh_?NumericQ, xRp_?NumericQ, xLc_?NumericQ] :=
Module[{Afai, Hc, L, B, tx, n, A, b, Dp0, Q0, Q1, Q, Dp, ode, sol,
sF, uF, width, h, Rp, Lc},
h = xh/100; Rp = xRp/100; Lc = xLc/100;
Afai = Pi ((Rp + h + d)^2 - (Rp + h)^2);
Hc = Rp - Sqrt[Afai/Pi];
L = (2 Afai)/(\[Pi] (h + 2 Rp));
B = (n mu0 i)/(2 h);
tx = 54830.3266978739 (1 - E^(-3.14250266080741 B^2.03187556833859));
n = Floor[(kN Lc Hc)/(Pi r^2)] ;
A = Pi*(Rp^2 - Rr^2);
b = 2*Pi*(Rp + h/2);
Dp0 = 2*tx/h*L;
Q0 = 0;
Q1 = ((1 - 3 (L tx)/(Dp h) + 4 (L^3 tx^3)/(Dp^3 h^3)) Dp h^3)/(
12 eta L) b;
Q = Piecewise[{{Q1, Dp > Dp0}, {Q0, True}}];
Dp = Abs[dp[t]];
ode = u A - A/e ((s0^2 - s^2)/(2 s0 )) dp'[t] == Q*Sign[dp[t]];
sol = First[
NDSolve[{ode, dp[0] == 0}, dp, {t, 0, tend} , MaxSteps -> 10^4,
MaxStepFraction -> 1/30]];
sF = ParametricPlot[{s, dp[t] A /. sol}, {t, 0, tend},
AspectRatio -> 1];
uF = ParametricPlot[{u, dp[t] A /. sol}, {t, 0, tend},
AspectRatio -> 1];
tdu = NMaximize[{dp''[t] A /10^8 /. sol, T/4 <= t <= 3 T/4}, {t,
T/4, 3 T/4}, AccuracyGoal -> 6, PrecisionGoal -> 6];
width = Abs[u /. tdu[[2]]];
{uF, width, B}]
RegionPlot3D[
du[1, h, Rp, Lc][[2]] <= umax/6, {h, 0.1, 0.2}, {Rp, 3, 10}, {Lc, 1,
10}, LabelStyle -> Directive[18]]