matlab 如何求函数最小值


g(x) = x sin(2x - 1)
0<= x <=2
matlab 怎么写最小值过程?求大神!谢谢

>> [x,fval] = fminbnd('x*sin(2*x-1)',0,2)

x =

0.2601

fval =

-0.1201

当x取0.2601时,函数有最小值-0.1201

当然答案是近似值

扩展资料:

一个函数是一组在一起执行任务的语句。 在MATLAB中,函数在单独的文件中定义。文件的名称和函数的名称应该是一样的。

函数在自己的工作空间内的变量上运行,这个变量也称为本地工作空间,与在MATLAB命令提示符下访问的工作区(称为基本工作区)不同。

函数可以接受多个输入参数,并可能返回多个输出参数。

匿名函数就像传统编程语言中的内联函数,在单个MATLAB语句中定义。 它由单个MATLAB表达式和脊蚂任意数量的输入和输出参数组成。

可以在MATLAB命令行或函数或脚本中定义一个匿名函数。

这样就可以创建简单的函数,而无需为它们创建一个文件。

matalab 中的zeros()函数和ones()函数

zeros()函数用来生成全0矩阵 

ones()函数用茄野让来生成全1矩阵

zeros()函数的具体用法如下:

zeros(n):n*n 全零矩阵

zeros(m,n):m*n全零矩阵

zeros(d1,d2,d3……dn):生成 d1*d2*d3*……*dn 全零矩阵或数组。

zeros(size(A)):生成与矩阵A大小相同的全零矩阵。

ones()函数的具体用法如下:

ones(n):n*n 全1矩阵

ones(m,n):m*n全1矩阵

ones(d1,d2,d3……dn):颤局生成 d1*d2*d3*……*dn 全1矩阵或数组。

ones(size(A)):生成与矩阵A大小相同的全1矩阵。

参考资料:百度百科-MATLAB


>> [x,fval] = fminbnd('慎蠢链x*sin(2*x-1)',0,2)

x =

0.2601

fval =

-0.1201

当x取0.2601时,函宽孙数档州有最小值-0.1201
当然答案是近似值
clc;clear
x=[42.8,42.9,43,43.1,43.2,43.3,43.4,43.5,43.6,43.7,43.8,43.9,44,44.1,44.2,44.3,44.4,44.5,44.6,44.7];
y=[23265,23029,22907,22668,22264,22083,22112,22096,21864,21742,21733,21844,21787,21756,21838,21984,21971,21876,21879,21996];
p2=polyfit(x,y,2)
xx=min(x):0.1:max(x);
yy=polyval(p2,x);
Y=vpa(poly2sym(p2,'x'哪此),6)%转化为多举仔项式格式
Y1=diff(Y)%求一阶导数
Xmin=eval(solve(Y1))%一阶导数等于零,极值点李答迅
Ymin=polyval(p2,Xmin)
plot(x,y,'o',xx,yy,Xmin,Ymin,'*')
结果:
p2 =
932.1 -82142 1.8314e+006

Y =

932.103*x^2-82142.3*x+.183145e7

Y1 =

1864.206*x-82142.3

Xmin =
44.063
Ymin =
21734