如何用matlab求函数最优解(2)

作者&投稿:扈克 (若有异议请与网页底部的电邮联系)
如何用matlab求函数最优解~

如果求函数在区间内的最小值,可以用fminbnd。
但如果限定x是整数,可以直接求出所有点的函数值来,然后用min来求。

参考代码:
f=@(x)100000./x+333*x;x0=fminbnd(@(x)100000/x+333*x,1,100)ezplot(f,[1 100])hold on;plot(x0,f(x0),'ro')x=1:100;y=f(x);[ymin,inx]=min(y);plot(x(inx),ymin,'ms')axis autoxlim([15 20])

你写的f(x,y)式子很矛盾,不应该有min。设题目是去除min后,求f(x,y)的最小值。
xi = [0 40 20 0 20 40 0 40];yi = [30 30 0 0 60 0 60 60];li = [16.9 25.4 27.8 31.9 35 36.6 38.3 42];f = @(x,y)sum(abs(sqrt((x-xi).^2+(y-yi).^2)-li));fminsearch(@(x)f(x(1), x(2)), [0; 0])

function f=myfun(x)
f=x(1)+x(2)+81;
end %%函数,其中x=x(1)y=x(2)

function [c,ceq]=mycon(x)
c(1)=100000-x(1)*x(2);
c(2)=1-x(1);
c(3)=1-x(2);
ceq=[];
end %%条件

clc,clear all
x0=[400 ;400];
[x,fval]=fmincon(@myfun,x0,[],[],[],[],[],[],@mycon)

x =

316.3406
316.1150 %即x=y等于这个数时最小

fval =

713.4556 %最小值为这个值

利用罚函数法求解

syms x y M
%罚函数的形式写成如下函数P
P= x+y+81+M*[(x-1)^2+(y-1)^2+(x*y-10000)^2];
%计算雅可比矩阵
J=jacobian(P,[x,y]);
%雅可比矩阵等于零的解,关于M的函数表达式
[x,y]=solve(J);
%给M赋值 这里赋值100,求x y 的值
x0=subs(x,M,100)
y0=subs(y,M,100)
%得到x0,y0会有多组解 ,取有意义的值 得
x0=y0=99.9950

%通过理论求解 这里的x,y取值应是 x0=y0=100 x+y >= 2*sqrt(xy) = 2*100 =200.

应该是小于100000吧 如果大于 那没有什么意思


如何用matlab求特征值?
求特征值的传统方法是令特征多项式| AE-A| = 0,求出A的特征值,对于A的任一特征值h,特征方程( aE- A)X= 0的所有非零解X即为矩阵A的属于特征值N的特征向量两者的计算是分割的,一个是计算行列式,另一个是解齐次线性方程组,且计算量都较大。使用matlab可以方便的计算任何复杂的方阵...

用Matlab怎么求反函数
1、我们首先需要知道在matlab中求反函数用到的是finverse函数,在命令行窗口中输入“help finverse”,可以看到函数的使用方法。2、g=finverse(f)格式,f符号函数表达式,变量x,求得的反函数g是满足g(f(x))=x的函数,输入如图代码。3、按回车键之后,可以看到求得的反函数g是asin(2\/x)。4、g=...

请问如何用MATLAB求这个方程的解,要求过程,谢谢
syms x x=solve('250=x*(246.8-((exp(1.5-0.34\/x)+0.86)\/0.34)^2)')x = -3542.6913453239844374478360256088 误差计算:subs(250-x*(246.8-((exp(1.5-0.34\/x)+0.86)\/0.34)^2))ans = 8.1741e-028

matlab如何求解微分方程并画图的呢?
如何用matlab求解微分方程并画图,可以先用dsolve()或ode()求出其微分方程(组)的解析解或数值解,然后用plot()绘制其图形。例如:解微分方程 y'=y-2t\/y,y(0)=1,0<t<4 1、用dsolve()求解,代码及结果如下 2、用ode45()求解,代码及结果如下 3、当然喽,使用dsolve()或ode(...

matlab已知自变量的取值范围求最大值
如何用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....

如何用Matlab求线性方程组的通解
如何用Matlab求线性方程组的通解 这个是线性齐次方程组的 先写m文件 function [x,y]=line_solution(A,b)[m,n]=size(A);y=[];if norm(b)>0 if rank(A)==rank([A,b])if rank(A)==n disp('方程有唯一解x');x=A\\b;else disp('方程有无穷多解,特解为x,其齐次方程组的基础解...

如何用MATLAB对速度求导得加速度?
1、根据时间和速度的数据,用plo函数绘制其趋势图,判断是符合什么类型的数学模型(如:(v(t)=a0+b0t)2、根据数学模型,自定义其函数,func=@(a,t)a(1)+a(2)*t 3、根据时间和速度的数据,使用lsqcurvefit或nlinfit等拟合函数,求出其系数a0、b0 4、得到v(t)表达式后,可以用diff函数求导,...

使用matlab迭代法求E=M+e*sinE中的E,其中M和e是已经输入好的参数?_百 ...
已知M和e的具体数值,如何使用matlab用迭代法求方程E=M+e*sinE中的E?根据题型,建议题主使用拟牛顿法求解(隐函数方程)。拟牛顿法迭代格式为 x(k+1)=x(k)-A(k)^(-1)f(x(k))p(k)=x(k+1)-x(k),q(k)=f(x(k+1))-f(x(k))A(k+1)=A(k)+(q(k)-A(k)*p(k))*p(k...

用matlab怎么求正态分布概率?
用matlab求正态分布概率的函数是normpdf,使用格式为 Y = normpdf(X,mu,sigma)mu——均值μ sigma——标准偏差σ 使用MatLab画出正态分布的概率密度函数 x=[-10:0.01];y=normpdf(x,0,1);%正态分布函数 figure;axes1=axes('Pos',[0.1 0.1 0.85 0.85]);plot(x,y);set(axes1,'...

请问用matlab怎样求曲线斜率或切线啊?
用matlab求曲线的斜率或切线的方法,就是按照微积分的方法求解是一样的,则不过是matlab语言去描述。例如,求曲线y=x²在点(1,1)的切线方程。第一步:对方程y=x²求一次导数 >>syms x %声明变量 >>y=x^2; %函数表达式 >>dy=diff(y,1) %一次导数 y'=2*x 第二步...

福海县18738554268: 如何用matlab实现求解函数最值 -
用达加衡: 用matlab求函数最值的方法有很多,下面给出一个非常直观的求最值的方法:(不要求函数处处可导) clear clc t= -100:0.001:100; syms x; y = x/(x * x + 1); f = inline(y); max = max(f(t)) min = min(f(t))结果为: max = 0.5000 min = -0.5000

福海县18738554268: MATLAB 求目标函数最优解试编制程序实现黄金分割法,并求目标函数F(x) = x2 −4x+4的最优解.给定的初始区间为[−10 10],收敛精度ε = 0.001 .希望帮忙做... -
用达加衡:[答案] function [p,u]=nlp618(f_name,a,b,e)%//////////////////////////////////////////////////%输入f_name为函数名,[a,b]初始区间,e为最小区间要求%输出p为所有的计算情况,u为最优解,表示x,step为计算步骤%///////////...

福海县18738554268: matlab求二元函数最优解 -
用达加衡: 解决方案1:直接用缉鼎光刮叱钙癸水含惊ifft();例如信号x y=fft(x);%对信号傅里叶变换到频域 z=ifft(y);%对信号y傅里叶反变换到时域,解决方案2:工具箱啊.IFFT()函数

福海县18738554268: matlab 不等式 求解目标函数最优解 -
用达加衡: 优化问题, 最大化 x1+x2-x3, 保证条件 X1+X2+X3 <= 100 X1 + X2 >= 99 如果只是这种简单的线性问题,直接手算就可以解出值.如果更复杂的话,matlab有个function 叫 linprog 你懂英文的话去这里自己看用法.http://www.mathworks.com/...

福海县18738554268: MATLAB 求目标函数最优解 -
用达加衡: function [p,u]=nlp618(f_name,a,b,e)%////////////////////////////////////////////////// %输入f_name为函数名,[a,b]初始区间,e为最小区间要求 %输出p为所有的计算情况,u为最优解,表示x,step为计算步骤 %//////////////////////////////////////////////////a(1)=a; b(1)=b; L=e; ...

福海县18738554268: 怎么用matlab运行线性函数的最优解 -
用达加衡: function f=myfun(x) f=x(1)+x(2)+81; end %%函数,其中x=x(1)y=x(2) function [c,ceq]=mycon(x) c(1)=100000-x(1)*x(2); c(2)=1-x(1); c(3)=1-x(2); ceq=[]; end %%条件 clc,clear all x0=[400 ;400]; [x,fval]=fmincon(@myfun,x0,[],[],[],[],[],[],@mycon) x =316.3406316.1150 %即x=y等于这个数时最小 fval =713.4556 %最小值为这个值

福海县18738554268: matlab怎么求解多元函数的最优化问题
用达加衡: 问的太笼统了 不过如果是纯粹的线性曲线函数求最优解,用lingo简单得多,列方程组,设置变量区间,最后输入目标函数就可以了

福海县18738554268: 如何用matlab中的枚举法解决函数的最优解 -
用达加衡: 先做个循环,在循环体内分别计算每种情况的值,循环结束后选最大的就行了.这种方法效率太低了,如果数据量大的话,有可能要算几年.可以考虑用启发式算法.像遗传算法,蚁群算法,粒子群算法等等.

福海县18738554268: matlab中fmincon函数如何求解全局最优解 -
用达加衡: 由于fmincon函数的最优解依赖于x0的初值,所以要求解全局最优解,要根据具体问题具体来对待.只有在合理的x0的初值条件,才能得到全局最优解.如你有具体的极值问题,请贴出来这样好帮你解决.如有不便也可以私信交流.

福海县18738554268: 如何用matlab求这个最优解 -
用达加衡: for i=1:100 %% x在[1,100] x=i; f(i)=100000/x+333*x; end x=find(f==min(f)) %%计算出f在取得最小值下,x的值

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网