Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2009-04-02
年龄: 39
帖子: 6
声望力: 0 ![]() |
![]()
大家好,我正在做一个关于优化函数的问题,下面是我的程序,其中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)) |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-11-07
住址: 湖南长沙
帖子: 233
声望力: 21 ![]() |
![]()
这样就可以了,其实程序没有什么大问题,就是少了几个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
__________________
坚持就是胜利,努力就有奇迹。 |
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2009-04-02
年龄: 39
帖子: 6
声望力: 0 ![]() |
![]()
楼上的好人哪```万分感谢!```GOD BLESS YOU!
|
![]() |
![]() |
![]() |
#4 |
初级会员
注册日期: 2009-04-02
年龄: 39
帖子: 6
声望力: 0 ![]() |
![]()
昨晚我运行了一下程序,IGv表达式的那一行出现divide by zero的警告,这是什么意思啊?
|
![]() |
![]() |