![]() |
关于优化函数程序错误的问题
大家好,我正在做一个关于优化函数的问题,下面是我的程序,其中k,c,omega是变量,整个函数就是要在不同的k,c,omega取值时使IGv达到最小,兄弟姐妹们看看我的程序有没有什么问题啊,我都调试两天了,还是不得行,各们帮帮忙噢!(本人还是新手,边做毕业设计边学的MATLAB,各位不要见笑哈)
%%IGvmin is global minimum IGvmin=1000000000000000; %%exmperimantal values M=1000000; for c=0:1:100000; for omiga=0:1:100; for k=100000:100:100000000; %%igvlmax is local maximum; IGvlmax=0; %%IGv’s calculational equation IGv=sqrt(16*c.^4*omiga.^4+16*k.^4+4*M.^2*k.^2*omiga.^4+32*c.^2*omiga.^2*k.^2-16*M*k.^3*omiga.^2+4*M.^2*c.^2*omiga.^6)/((-M*omiga.^2+2*k).^2+4*c.^2*omiga.^2); if IGvmin>=IGvlmax; IGvlmax=IGvmin; end; end if IGvlmax<=IGvmin; IGvmin=IGvlmax; Kmin=k; cmin=c; end end if IGvlmin>=IGvmax k=kmin c=Cmin for omiga=0:1:100; IGv(i)=sqrt(16*c.^4*omiga.^4+16*k.^4+4*M.^2*k.^2*omiga.^4+32*c.^2*omiga.^2*k.^2-16*M*k.^3*omiga.^2+4*M.^2*c.^2*omiga.^6)/((-M*omiga.^2+2*k).^2+4*c.^2*omiga.^2); End; for i=0:1:100; plot(i,IGv(i)) |
回复: 关于优化函数程序错误的问题
这样就可以了,其实程序没有什么大问题,就是少了几个end和多了几处分号
%%IGvmin is global minimum IGvmin=1000000000000000; %%exmperimantal values M=1000000; for c=0:1:100000 for omiga=0:1:100 for k=100000:100:100000000 %%igvlmax is local maximum; IGvlmax=0; %%IGv’s calculational equation IGv=sqrt(16*c.^4*omiga.^4+16*k.^4+4*M.^2*k.^2*omiga.^4+32*c.^2*omiga.^2*k.^2-16*M*k.^3*omiga.^2+4*M.^2*c.^2*omiga.^6)/((-M*omiga.^2+2*k).^2+4*c.^2*omiga.^2); if IGvmin>=IGvlmax IGvlmax=IGvmin; end end if IGvlmax<=IGvmin IGvmin=IGvlmax; Kmin=k; cmin=c; end end end if IGvlmin>=IGvmax k=kmin c=Cmin end for omiga=0:1:100 IGv(i)=sqrt(16*c.^4*omiga.^4+16*k.^4+4*M.^2*k.^2*omiga.^4+32*c.^2*omiga.^2*k.^2-16*M*k.^3*omiga.^2+4*M.^2*c.^2*omiga.^6)/((-M*omiga.^2+2*k).^2+4*c.^2*omiga.^2); end for i=0:1:100 plot(i,IGv(i)) hold on; end |
回复: 关于优化函数程序错误的问题
楼上的好人哪```万分感谢!```GOD BLESS YOU!
|
回复: 关于优化函数程序错误的问题
昨晚我运行了一下程序,IGv表达式的那一行出现divide by zero的警告,这是什么意思啊?
|
所有时间均为北京时间。现在的时间是 10:22。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.