format long
um=linspace(-0.03,0.03,1001);
[m,num]=size(um);
T=-100;
a1=(T-115)*4.124*10^5;
a11=-2.097*10^8;
a12=7.974*10^8;
a111=1.294*10^9;
a112=-1.950*10^9;
a123=-2.5*10^9;
a1111=3.863*10^10;
a1112=2.5293*10^10;
a1122=1.637*10^10;
a1123=1.367*10^10;
Q11=0.11;
Q12=-0.043;
Q44=0.059;
s11=8.3*10^-12;
s12=-2.7*10^-12;
s44=9.24*10^-12;
ar11=1/4*(2*a11+a12)+1/24*(2*(Q11-Q12+Q44)^2/(s11-s12+s44)+(4*Q11+8*Q12+Q44)^2/(4*s11+8*s12+s44));
ar33=1/3*(a11+a12)+(2*Q11+4*Q12-Q44)^2/6*(4*s11+8*s12+s44);
ar13=2*a11+1/6*((2*Q11+4*Q12-Q44)*(4*Q11+8*Q12+Q44)/(4*s11+8*s12+s44)+(2*Q11-2*Q12-Q44)^2/(s11-s12-s44));
a2233=sqrt(2)/3*(a12-2*a11)+(Q11-Q12+Q44)*(2*Q12+Q44-2*Q11)/3*sqrt(2)*(s11-s12+s44);
for cyc1 = 1:num
ar1(cyc1)=a1-um(cyc1)*(4*Q11+8*Q12+Q44)/(4*s11+8*s12+s44);
ar3(cyc1)=a1-um(cyc1)*2*(2*Q11+4*Q12-Q44)/(4*s11+8*s12+s44);
fun1=@(x)ar1(cyc1)*(x(1)^2+x(2)^2)+ar3(cyc1)*x(3)^2+ar11*(x(1)^2+x(2)^2)^2+ar33*x(3)^4+ar13*x(3)^2*(x(1)^2+x(2)^2)+...
+a2233*x(2)*x(3)*(x(2)^2-3*x(1)^2)+1/108*(27*x(1)^6*(a111+a112)+12*x(2)^2*x(3)^4*(15*a111+6*a112-a123)+9*x(2)^4*x(3)^2*(30*a111+a123)-...
-4*sqrt(2)*x(2)^3*x(3)^3*(30*a111-12*a112+a123)+6*sqrt(2)*x(2)^5*x(3)*(-15*a111+3*a112+a123)+4*x(3)^6*(3*a111+6*a112+a123)+...
+x(2)^6*(33*a111+21*a112+2*a123)+3*x(1)^2*(x(2)^4*(15*a111+39*a112-4*a123)+4*sqrt(2)*x(2)^3*x(3)*(15*a111-3*a112-a123)+...
+4*x(3)^4*(15*a111+6*a112-a123)+6*x(2)^2*x(3)^2*(30*a111+a123)+4*sqrt(2)*x(2)*x(3)^3*(30*a111-12*a112+a123))+...
+9*x(1)^4*(2*sqrt(2)*x(2)*x(3)*(15*a111-3*a112-a123)+x(3)^2*(30*a111+a123)+x(2)^2*(15*a111+3*a112+2*a123)))+...
+6*um(cyc1)^2/(4*s11+8*s12+s44);
[x,fun1]=fminsearch(fun1,[0,0,0]);
命令行窗口出现:
正在退出: 超过了函数计算的最大数目
- 请增大 MaxFunEvals 选项。
当前函数值: -90671563919020688000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000
正在退出: 超过了函数计算的最大数目
- 请增大 MaxFunEvals 选项。
当前函数值: -515255564088274530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000
在尝试使用fminsearch求解复杂函数最值时,遇到'超过了函数计算的最大数目'错误。文章通过实例展示了如何增大MaxFunEvals限制,以避免该错误。目前计算得到的函数值为极大的负数。
2770

被折叠的 条评论
为什么被折叠?



