求matlab编程求解贝塔的最大最小值

问题描述:

求matlab编程

求解贝塔的最大最小值
1个回答 分类:综合 2014-12-01

问题解答:

我来补答
参考代码:
function zd1829630755957934620
f=@(u)sqrt(u(1)^2+u(2)^2);
[u,fval,flag] = fmincon(f,[1 1 50],[],[],[],[],[-inf -inf 45],[inf inf 55],@nlcon)
[u,fval,flag] = fmincon(@(u)-f(u),[1 1 50],[],[],[],[],[-inf -inf 45],[inf inf 55],@nlcon)
num2str(u) 
 
function [c,ce] = nlcon(u)
c = [];
ce = (200+10*u(1)+sqrt(2)*u(3)) / (200+10*u(2)) - 1;
两次调用fmincon, 第一次是求最小值,第二次是求最大值.
 
输出:
u =
   -3.1820    3.1820   45.0000

fval =
    4.5000

flag =
     5
 
u =
  1.0e+016 *
    1.2133    1.2133    0.0000

fval =
 -1.7159e+016

flag =
     1

ans =
12133488015431316  12133488015133054                 55
其中,u(3)就是R2.
需要注意:第二组结果求最大值,fval应该取反号,u的数值直接显示效果不好(由于数量级相差比较大),所以用num2str转换了显示.
再问: 可以把程序发到youxiang一下吗?8-3 -7 -7 -1 -6 -6 -2 -4,谢谢哈
再答: 程序一共就那几行,直接复制保存成M文件就可以了(文件名任意,但要符合MATLAB程序的命名规范,即:除扩展名.m之外,余下的部分应以字母开始,后面是字母、数字和下划线的序列)。
再问: 里面看不懂第一个,function zd1829630755957934620,这是什么?
再答: 就是一个函数(主函数)的名字,可以随便取。 由于非线性约束函数必需返回两个参数,所以整个程序需要写成函数形式(或者分成多个M文件,那样更麻烦)。
再问: 那应该怎么调用呢,可以把调用过程写一下吗?我运行不出结果哩,这个题目的答案是0.9878《贝塔《0.997
再答: 你说答案是0.9878,是最大值还是最小值?对应的u1、u2、R2都是多少?
再问: 这边答案没有关于u1,u2,r2的数据,这边答案只有说beita的上限是0.997,下限是0.9878. 不好意思,数据出了点错误,第二个式子两个10都改为根号10;根号2改为1/根号2; 你再帮我运算看看哈,顺便和我说说怎么调用的哩,调用程序怎么写;我是外行人,计算需要,真是万分感谢!
再答: 或者答案有错,或者你贴出来的题有错。其实我们可以换个思路:直接由第二个式子求出u2=f(u1,R2),然后代入第一个式子得到β =g(u1,R2),可以画出相应的曲面图:syms u1 u2 R2
b = sqrt(u1^2+u2^2);
eq1 = (200+10*u1+sqrt(2)*R2) / (200+10*u2) - 1;
b1 = subs(b,u2,solve(eq1,u2));
ezmesh(b1,[45 55],[-60 60])

figure
eq2 = (200+sqrt(10)*u1+1/sqrt(2)*R2) / (200+sqrt(10)*u2) - 1;
b2 = subs(b,u2,solve(eq2,u2));
ezmesh(b2,[45 55],[-60 60])画出两个图分别对应你原先贴出的式子和后来改过的式子:由图可见,上面程序求出的最小值是正确的,而如果对u1、u2没有其它约束,是没有最大值的(换言之,最大值为无穷大)。
再问: 非常感谢,画图这个方法很好。另外,我想学一下第一种写的程序,应该怎么来调用呢,可不可以把调用程序方式写一下呢。。很感谢!
再答: 不知道你所说的“调用”是什么意思?就这个具体问题来说,把我贴的代码复制保存成M文件,然后运行就可以了。 要想了解更一般的方法,核心就是非线性约束优化的函数fmincon,这个就不是几句话能说清楚的了,下面给你的一些提示,但要想全面了解,你最好找相关的资料看一看(如果英语过得去,建议直接看MATLAB自带的帮助文档)。 使用fmincon,比较重要的有这几点:1、目标函数(代码中的匿名函数f)。需要注意的是,fmincon是求最小化问题,如果求解最大化,需要把目标函数反号。2、初值(代码中的[1 1 50])。优化算法只能保证局部最优,初值的选择往往很重要,甚至可能直接影响到能否求解。3、线性约束。在这个问题中没有,但fmincon的参数顺序不能变,不需要的参数用空数组([])表示。4、变量范围约束(代码中的[-inf -inf 45],[inf inf 55])。表示u1、u2无限制,R2在45-55之间。5、非线性约束(代码中的nlcon函数)。需要注意的是,非线性约束要返回两个参数,所以无法使用匿名函数;另外,调用的时候用函数句柄(@nlcon),不要少了那个@符。6、有些情况下需要对算法进行设置,后面还有一个options参数,使用optimset函数设置。
再问: 非常感谢,这个问题懂了。。另外想问问看,你懂得关于双循环蒙特卡洛算法吗?如果知道的话,可不可以给个案例算法程序或者大概的程序,再次感谢!
再答: 抱歉,没接触过。
 
 
展开全文阅读
剩余:2000
上一页:函数急