matlab多元函数极值_matlab求三元函数的极值

matlab多元函数极值_matlab求三元函数的极值matlab求解二元函数极值命令:1、x=fminsearch(fun,x0)或x=fminunc(fun,x0)求极小值点x,初值选为x02、[x,fmin]=fminsearch(fun,x0)或[x,fmin]=fminunc(fun,x0)3、fminsearch采用单纯形法,fminunc采用牛顿法除了fminsearch和fminunc这两种命令外,建立函数还可以用不同的方法

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

matlab求解二元函数极值

依然是机房中的R2010a版本
命令:
1、x=fminsearch(fun,x0)或x=fminunc(fun,x0)求极小值点x,初值选为x0
2、[x,fmin]=fminsearch(fun,x0)或[x,fmin]=fminunc(fun,x0)
3、fminsearch采用单纯形法,fminunc采用牛顿法

除了fminsearch和fminunc这两种命令外,建立函数还可以用不同的方法:

建立函数的方法

以p191task2_2为例子,采用字符串建立函数

% p191task2_2
%求min(f(x))=(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1)*exp(x(1))
clc,clear
f='(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1)*exp(x(1))';
digits 15
x0=[0,0];
[x,fmin]=fminsearch(f,x0);
vpa(x,15)
vpa(fmin,15)

然而此题的问题在于,无法找到合适的初值,初值每变动一次,fmin也随之变动。
为此,画出函数图像:

[x,y]=meshgrid(-30:0.3:-10,-30:0.3:-10);
f=(4*x.^2+ 2*y.^2+4.*x.*y+2.*y+1).*exp(x);
figure(1)
surf(x,y,f)
figure(2)
contour(x,y,f,100)

结果

补充:contour为画等高线命令
contour(x,y,z,n) n为等高线条数;

由图可以大致得到,函数在所选区域内全部为正,最小值接近0,在另外选择的若干区域中,结果类似,看出最小值大概是0。

以p191task2_3为例子,用.m文件建立函数

先创建.m函数

%p192task2_3 fun
%fun2_3.m
function f=fun2_3(x)
f=4*x(1)^2+5*x(1)*x(2)+2*x(2)^2;

再在同一个目录下写

%p191task2_3.m
clc,clear
[x,y]=meshgrid(-10:0.3:10,-10:0.3:10);
z=4*x.^2+5*x.*y+2*y.^2;
figure(1)
surf(x,y,z)
figure(2)
contour(x,y,z)
x0=[-3,-3];
% [x,fmin]=fminsearch(@fun2_3,x0)
[x,fmin]=fminunc(@fun2_3,x0)

结果:
运行结果

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/196449.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号