24小时热门版块排行榜    

查看: 265  |  回复: 2
当前主题已经存档。

whiteman

铜虫 (正式写手)

[交流] 【求助】200金币求如何在matlab里实现循环求极小值?

如M函数:
function f=c(p);
z=p(1);
T=377;u1=0.012;u2=u1;
   a1=(4.273e+5)*(T-377.0);
   a11=-6.36e+8;
    a111=2.81e+9;
     a1111=1.74e+10;
     Q11=0.12;Q12=-0.053;Q44=0.052;s11=4.6e-12;s12=-1.1e-12;s44=11.1e-12;

   aa3=a1-(u1+u2)*Q12/(s11+s12);
    aa33=a11+Q12^2/(s11+s12);

  f=aa3*z^2+aa33*z^4+a111*z^6+a1111*z^8;

我现在只会在m函数中改变u1然后在命令行输入[x,f]=fminbnd('c',0,1)求不同u1下的极小值。怎样才能在Matlab上自动求u1=-0.015,-0.014,。。。0.015函数求极小值
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jjdg

版主 (知名作家)

优秀版主

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+2,VIP+0):谢谢应助! 1-7 22:54
matlab最大的特点是矩阵运算快,最大的缺点是循环速度太慢。因此能够避免循环就尽量不用循环。
你可以试试把生成的数据在其他语言里面循环求极值!
努力学习!以正当途径!获得需要的知识!
2楼2010-01-07 22:01:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dreamingnow

新虫 (初入文坛)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+2,VIP+0):谢谢应助! 1-8 09:26
看来起楼主的u1可能的取值也就31个啊,再循环一下也就循环了
事先声明,我这是个笨办法。
fminbnd要求单参数的函数,但可以接受anonymous function,帮助文档里面就有一个例子:
x = fminbnd(@(x) sin(x*x),x1,x2);

楼主这里可以这样,不详细写了,大概可以看出个意思
for u1=-0.015:0.001:0.015
     [x, f] = fminbun(@(x) 含x和u1的函数表达式, 0, 1);
    % display result
     disp([u1, x, f]);
end
3楼2010-01-08 00:28:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 whiteman 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见