24小时热门版块排行榜    

CyRhmU.jpeg
查看: 529  |  回复: 2
当前主题已经存档。

whiteman

铜虫 (正式写手)

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

如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的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
zeoliters(金币+3):多谢回帖交流! 2010-03-05 16:37
加一个for循环

function A111
clc
clear all

c=-0.015:0.001:0.015;

for i=1:length(c)
    [x(i),f(i)]=fminbnd(@(x)myfun(x,c(i)),0,1);
end
[x',f']
function f=myfun(p,u1)
z=p(1);
T=377;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;
2楼2010-03-01 17:59:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huweny87

木虫 (小有名气)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
luoqiquan(金币+2):ths 2010-04-08 18:48
建议用并行for循环(parfor),这样执行速度比较快.将楼主的函数第三行对u1的赋值语句删掉,得到一个新的函数.新写一个脚本来实现楼主的功能.
u1range=-0.015:0.001:0.015;
x=zeros(size(u1range));f=zeros(size(u1range));
global u1;
parfor i=1:length(u1range)
  u1=u1range(i);
  [x(i),f(i)]=fminbnd('c',0,1);
end
仅提供参考思路,程序没有调试过.
少年心事当拏雲,谁念幽寒坐呜呃?
3楼2010-04-07 23:24:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 whiteman 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见