matlab增大maxfunevals,用fminsearch求解最小值时,出现正在退出: 超过了函数计算的最大数目 - 请增大 MaxFunEvals 选项。...

在尝试使用fminsearch求解复杂函数最值时,遇到'超过了函数计算的最大数目'错误。文章通过实例展示了如何增大MaxFunEvals限制,以避免该错误。目前计算得到的函数值为极大的负数。

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值