matlab求函数最大值?

2024-05-16 02:10

1. matlab求函数最大值?

用matlab求函数最大值的步骤如下:
1.
打开matlab软件,清空桌面环境;
clear
clc

2.
定义一个符号变量:
syms t

3.
定义一个函数:
y=t/(1+t*t);
再通过以下函数来查看上面的函数图像;
ezplot(y);

4.
查看该函数的图像可知,函数在0到2之间有一个极值,本例求解该最大值为例;

5.
输入以下的指令可以求得该函数最大值;
max(subs(y,t,[0:0.00001:2]));
其中0.00001是精度,求得最大值为0.5000

matlab求函数最大值?

2. matlab求最大值

直接用max函数
max(Y(:)) 就能够返回最大值

3. 用matlab求最大值

题主的求最大值问题,用matlab求解,可以这样来考虑:
第一步:自定义目标函数,fmincon_fun(x),其内容
f=。。。; %f表达式
g=。。。; %g表达式
p=。。。; %p表达式q=。。。; %q表达式
Ca=-sqrt((f^2+g^2+p^2+q^2)/2+sqrt(((f^2+g^2+p^2+q^2)/2)^2-(f*q-g*p)^2)); %注意对于最大值问题,在Ca表达式前应加负号
第二步:初定x的初值,如x0=[1.5  -3];
第三步:确定x的上下限,lb=[-pi,-pi];ub=[pi,pi];
第四步:使用fmincon函数,求解θ,ψ,即
[x,fval] = fmincon(@(x) fmincon_fun(x),x0,[],[],[],[],lb,ub); 
theta=x(1),phi=x(2)
Ca=-fval
第五步:编写代码,并运行得到如下结果。


用matlab求最大值

4. 急问:如何用matlab求这个函数的最大值啊?

题主给出的实数a,b满足1≤b≤a≤√3,则(a^2+b^2-1)/(ab)的最大值问题。可以通过matlab的fmincon最优化函数求解。求解方法:
1、自定义目标函数,fmincon_fun(x),这里x=[a,b],其内容
y=-((a.^2+b.^2-1)./(a*b)); %负号的意思求最大值即最小值的相反数
2、自定义约束条件函数,fmincon_con(x),这里x=[a,b],其内容
条件1(1≤b):c(1)=1-b
条件2(b≤a):c(2)=b-a
条件3(a≤√3):c(3)=a-sqrt(3)
3、确定初值,x0=[0.8,0.8];
4、确定[a,b]的上下限,lb=[0.8,0.8]; ub=[sqrt(3),sqrt(3)];
5、使用fmincon函数求求解a,b值
6、验证,所求的a,b值是否满足约束条件
运行结果及代码如下。


5. matlab求最大值

给定的最大值问题,可以考虑遗传算法ga()函数来求出。
[x, fval, reason, output, population, scores] = ga(@ga_fun,2);  % ga_fun 极值自定义函数
x, fval
disp('验证 9*x1+5*x2<360'),9*x(1)+5*x(2) %360
disp('验证 4*x1+5*x2<200'),4*x(1)+5*x(2) %200
disp('验证 3*x1+10*x2<300'),3*x(1)+10*x(2) %300
运行结果
x 1=18.657;x 2=24.364
fval =  -4.2297e+05   %最大值为422970

matlab求最大值

6. matlab算最大值

显然y>0;
用fmincon,求最小值
取y=-(x(1)+x(1)*x(2)+x(3)-x(2)*x(3)+x(3)*x(4)+134);
那么求出来的就是y的最大值
 
function y=OptimFun(x)
y=-(x(1)+x(1)*x(2)+x(3)-x(2)*x(3)+x(3)*x(4)+134);
%%%%%%%%%%%%%%%%%%%%%%
clc;clear;
[x,fval]=fmincon(@OptimFun,[1 2 3 4],[],[],[],[],[1 2 3 4],[5 7 11 10])
 
x =
     5     2    11    10

fval =
  -248
那么
y=-fval=248
 
 
%%%%%%%%%%%%%
可以用循环验证一下
clc;clear;
y=zeros(4*5*8*6+1);
y(1)=0; 
for j=1:4*5*8*6;
for x1=1:1:5 
    for x2=2:1:7
        for x3=3:1:11
            for x4=4:1:10
                y(j+1)=x1+x1*x2+x3-x2*x3+x3*x4+134;
                if y(j+1)>y(j)
                    yy=y(j+1);
                    a=x1;b=x2;c=x3;d=x4;
              j=j+1;
                end
            end
        end
    end
end
end
yy
 
yy =
   248

7. 请问如何用matlab求出这个函数的最大值?谢谢!

你的这个函数有点问题,z=-by-axy对吧?
根据多元函数极值的求解方法,对x求偏导得:偏z/偏x=-ay
对y求偏导得:偏z/偏y=-b-ax,可得驻点为(-b/a,0)
z对x的二阶偏导为0,z对y的二阶偏导为0,偏²z/偏x偏y=-a
所以根据公式AC-B^2=-a^2<0,所以在唯一驻点处没有极值
所以说函数只能存在边界上的最值。
在你给出的x和y的区间上,当y=0时取得最大值0
函数的图像也说明了这点:

请问如何用matlab求出这个函数的最大值?谢谢!

8. matlab高手看看怎么求这个函数的最大值

从图形来看,方程的最大值在x=10的附近

用fminsearch()求得,x =10.9780883789063,y = 13.2348950693333
函数定义:
func=inline('-(0.000099261901556999720041760126854058*x^5 - 0.0023305907031025767622671451828609*x^4 - 0.025259643140202740069222286933837*x^3 + 0.81623253924995070596182245026284*x^2 - 3.6632601044075792096066379599506*x + 6.5229679256533339426482598355506)','x')求最大值
[x,g]=fminsearch(func,10)x =          10.9780883789063g =         -13.2348950693333