怎样用Matlab求二元函数极小值?f(x,y)=100(y-x^2)^2+(1-x)^2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用Matlab求二元函数极小值?f(x,y)=100(y-x^2)^2+(1-x)^2相关的知识,希望对你有一定的参考价值。

代码% By lyqmath。

clc; clear all; close all。

% f(x,y)=100(y-x^2)^2+(1-x)^2。

title('By lyqmath', 'FontWeight', 'Bold', 'Color', 'r')结果。

f(x, y) = 100*(y-x^2)^2+(1-x)^2 = 0。

因为平方是非负数,所以得出:

y-x^2 = 0。

1-x = 0。

即:x = 1,y = 1。

所以 ezplot('100*(y-x^2)^2+(1-x)^2') 实际上只画出了一个点。

必须注意

所谓二重极限存在,是指P(x,y)以任何方式趋于P0(x0,y0)时,f(x,y)都无限接近于A,因此,如果P(x,y)以某一特殊方式。

例如沿着一条定直线或定曲线趋于P0(x0,y0)时,即使f(x,y)无限接近于某一确定值,还不能由此断定函数的极限存在.但是反过来,如果当P(x,y)以不同方式趋于P0(x0,y0)时,f(x,y)趋于不同的值,那么就可以断定这函数的极限不存在。

参考技术A 做个测试,希望有所帮助。代码% By lyqmath
clc; clear all; close all;
% f(x,y)=100(y-x^2)^2+(1-x)^2
fun = @(x) 100*(x(2)-x(1)^2)^2+(1-x(1))^2;
[x,fval,exitflag] = fminsearch(fun, [-1.2, 1], ...
optimset('TolX',1e-8))
figure; ezmesh('100*(y-x^2)^2+(1-x)^2'); hold on;
plot3(x(1), x(2), fval, 'ro', 'MarkerFaceColor', 'r');
title('By lyqmath', 'FontWeight', 'Bold', 'Color', 'r')结果

matlab二元非线性拟合?

有多条曲线,每条曲线是代表y在某一定值下z = f(x)的曲线,y有对应的几个值,就有几条曲线,如何拟合一个二元函数z = f(x,y),能够表达这种多曲线的数值关系。具体见附图,具体意思就是如何将图中的5条曲线拟合成图中左下角的公式

直接把下面的代码复制到M文件编辑器中保存运行即可。
需要说明的是,拟合问题和初值关系很大,我这里给的初值是经过多次调整得到的。
目前得到的结果是[a,b,c,d]=[14678.3 -0.1447 14681.2 0.436]
结果应该还有可能进一步提高,例如可以修改优化算法设置的TolFun参数为更小的值。

function zd499535361
% x0 = [1 1 1 1];
x0 = [1.47E4 -0.15 1.47E4 0.44];
opt = optimset('MaxFunEvals', 1E4, 'MaxIter', 5E4);
x = lsqcurvefit(@f,x0,[X;Y],Z,[],[],opt);
a = x(1)
b = x(2)
c = x(3)
d = x(4)

% 绘图比较拟合结果和原始数据
z = a*X.^b + c*Y.^d;
plot(Z, '.-')
hold on
plot(z, 'ro')

function F = f(x, xdata)
a = x(1);
b = x(2);
c = x(3);
d = x(4);

x = xdata(1, :);y = xdata(2, :);
F = a*x.^b + c*y.^d;
参考技术A MATLAB 中进行非线性最小二乘拟合的函数为:lsqnonline 函数和 lsqcurvefit 函数。 帮助文档中的解释为: lsqcurvefit: Solve nonlinear curve-fitting (data-fitting) problems in least-squares sense(非线性曲线拟合)。 但是这两个函数本质上是一样的,他们用的默认算法都是:trust-region-reflective,并且都可以修改为:levenberg-marquardt algorithm(详见MATLAB中的帮助文档)。 这两个函数的不同在于 lsqcurvefit 的使用形式要更简单一点。 下面将结合MATLAB中的帮助文档,简单介绍这两个函数的使用方法

以上是关于怎样用Matlab求二元函数极小值?f(x,y)=100(y-x^2)^2+(1-x)^2的主要内容,如果未能解决你的问题,请参考以下文章

matlab求一个函数的极小值问题,急急急!!!!!!

matlab 求解函数极小值问题

matlab求二元一次方程组

matlab小问题求教

急!matlab怎么算如下递归问题!!

matlab求函数最小值