matlab函数求最值

如题所述

需求:利用matlab求解二元函数 y=f(x1,x2)
=(339-0.01*x1-0.003*x2)*x1 +(399-0.004*x1-0.01*x2)*x2-(400000+195*x1+225*x2) 的最大值
步骤:1、syms x1 x2;
2、y=(339-0.01*x1-0.003*x2)*x1+(399-0.004*x1-0.01*x2)*x2-(400000+195*x1+225*x2) 得 y = - 195*x1 - 225*x2 - x1*(x1/100 + (3*x2)/1000 - 339) - x2*(x1/250 + x2/100 - 399) - 400000
3、y=simple(y) 得 y = - x1^2/100 - (7*x1*x2)/1000 + 144*x1 - x2^2/100 + 174*x2 - 400000
4、求偏导 dydx1=diff(y,x1) 得 dydx1 = 144 - (7*x2)/1000 - x1/50 dydx2=diff(y,x2) 得 dydx2 = 174 - x2/50 - (7*x1)/1000
5、令偏导等于0,解方程 S=solve(dydx1,dydx2) 得 S = x1: [1x1 sym] x2: [1x1 sym]
6、显示结果 S.x1 得 ans = 554000/117 S.x2 得 ans = 824000/117
7、把得到的结果代入原f(x1,x2),求最大y值:
y=subs(y,x1,554000/117); y=subs(y,x2,824000/117) 得 y = 5.5364e+005
当然,该最大值是不是真正的最大值,还需要进一步结合实际情况验证(通过画出图形,观察二阶导数的符号等)。比如,syms x1 x2; y=(339-0.01*x1-0.003*x2)*x1+(399-0.004*x1-0.01*x2)*x2-(400000+195*x1+225*x2);然后使用 ezsurf(y,[0 10000],[0 10000]);就可以得到三维的图形如下图所示:
可以看到,在感兴趣区间内,函数是有最大值的,即上面求出的y = 5.5364e+005,在x1=554000/117,x2=824000/117处取得。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-21
需求:利用matlab求解二元函数 y=f(x1,x2)
=(339-0.01*x1-0.003*x2)*x1 +(399-0.004*x1-0.01*x2)*x2-(400000+195*x1+225*x2) 的最大值
步骤:1、syms x1 x2;
2、y=(339-0.01*x1-0.003*x2)*x1+(399-0.004*x1-0.01*x2)*x2-(400000+195*x1+225*x2) 得 y = - 195*x1 - 225*x2 - x1*(x1/100 + (3*x2)/1000 - 339) - x2*(x1/250 + x2/100 - 399) - 400000
3、y=simple(y) 得 y = - x1^2/100 - (7*x1*x2)/1000 + 144*x1 - x2^2/100 + 174*x2 - 400000
4、求偏导 dydx1=diff(y,x1) 得 dydx1 = 144 - (7*x2)/1000 - x1/50 dydx2=diff(y,x2) 得 dydx2 = 174 - x2/50 - (7*x1)/1000
5、令偏导等于0,解方程 S=solve(dydx1,dydx2) 得 S = x1: [1x1 sym] x2: [1x1 sym]
6、显示结果 S.x1 得 ans = 554000/117 S.x2 得 ans = 824000/117
7、把得到的结果代入原f(x1,x2),求最大y值:
y=subs(y,x1,554000/117); y=subs(y,x2,824000/117) 得 y = 5.5364e+005
当然,该最大值是不是真正的最大值,还需要进一步结合实际情况验证(通过画出图形,观察二阶导数的符号等)。比如,syms x1 x2; y=(339-0.01*x1-0.003*x2)*x1+(399-0.004*x1-0.01*x2)*x2-(400000+195*x1+225*x2);然后使用 ezsurf(y,[0 10000],[0 10000]);就可以得到三维的图形如下图所示:
可以看到,在感兴趣区间内,函数是有最大值的,即上面求出的y = 5.5364e+005,在x1=554000/117,x2=824000/117处取得。
另外,团IDC网上有许多产品团购,便宜有口碑
第2个回答  2011-07-20
使用fmincon函数

MATLAB如何找最大值?
找最大元素就是max(max(A)),注意二维矩阵要写两个max找对应位置用find函数举个例子: A=[1 2 3 ;4 5 6]A =1 2 34 5 6 max(max(A))ans =6 [x y]=find(A==max(max(A)))x =2y =3找到最大元素是6,对应位置是x=2,y=3,就是第2行,第3列 ...

如何用matlab求一个函数的最大值?
其中0.00001是精度,求得最大值为0.5000

matlab如何求函数的最大值
matlab如何求函数的最大值。(1)先在命令窗口给s,A赋值。(2)>> y=@(x)0.65*(s+x)*x\/(A+x)。(3)[x,fval]= fminbnd(y,0,inf)%用于求函数y在x在[0,inf]内的最小值。则在取负即为求最大值。不过本题我试验了,本题好像有问题。手算都没有最大值的,因为对y求导后y'在...

求Matlab函数的最值
第一步:确定x1、x2极值的范围,如x1【0,20】,x2【0,100】第二步:自定义函数,即 function [f,g]=fun1(x)f=x(1)^3+x2^2-10*x(1)*x(2)+1;g=[-x(1)-20; -x(2)-40];第三步:利用for循环语句和if判断语句,求解其最优解 for i=1:10^7 x=unifrnd(0,100,1,2...

用matlab求一元函数在某区间的最大值的方法 急急
求出的最小值再取相反数,就是函数的最大值了 fmax =52.005 MAX函数 max函数为Matlab中求最大值的函数,格式如下:M = max(A) %返回数组A中最大的元素 M = max(A,[],dim) %返回数组A中维度dim的最大的元素 [M,I] = max(___)C = max(A,B)以上内容参考:百度百科-最大值 ...

matlab已知自变量的取值范围求最大值
1、根据函数表达式为f=QR(1-D),自定义其目标函数,fmincon_fun(x),即 f=-Q*R*(1-D); 这里负号表示最大值 2、根据约束条件,自定义其约束函数,fmincon_con(x),即 g(1)=Q-10; %Q>10;g(2)=R-0.04; %R>0.04 g(3)=100-Q; %Q<100 g(4)=0.14-R; %R<0.14 g(5)=...

matlab如何求函数的最大值
matlab如何求函数的最大值 (1)先在命令窗口给s,A赋值 (2)>> y=@(x)0.65*(s+x)*x\/(A+x)(3)[x,fval]= fminbnd(y,0,inf)%用于求函数y在x在[0,inf]内的最小值 则在取负即为求最大值。不过本题我试验了,本题好像有问题。手算都没有最大值的,因为对y求导后y'在x>0...

有一个4*5矩阵,用MATLAB编程求出其最大值及其所在的位置
MATLAB求最大值直接调用求最值的函数 max 函数就好了。例如矩阵为 A ,那么求最值即为 max_A = max( max(A) ) , [m,n] = find( max_A == A )程序中出错的原因可能是因为第一行结束的分号是中文分号,换成非英文分号就好。MATLAB 中的 max 函数是求最大值的函数。1、如果 A 是向量...

matlab中,两个自变量的函数怎么求最大值(急!1) 请举例说明
需求:利用matlab求解二元函数 y=f(x1,x2)=(339-0.01*x1-0.003*x2)*x1 +(399-0.004*x1-0.01*x2)*x2-(400000+195*x1+225*x2) 的最大值 步骤:1、syms x1 x2;2、y=(339-0.01*x1-0.003*x2)*x1+(399-0.004*x1-0.01*x2)*x2-(400000+195*x1+225*x2) 得 y =...

怎样在matlab中找出数组中所有的最大的值?
1、第一步,需要知道matlab数组找到所有接近某个值的点的坐标是使用“find”函数,可以在命令行窗口中输入“help find”,如下图所示,然后进入下一步。2、其次,完成上述步骤后,输入“a =[1 4 5;6 7 8;7 9 12]”,在matlab命令行窗口中创建副本数组,如下图所示,然后进入下一步。3、接着...

相似回答