matlab - 使用涉及许多变量的 fminsearch 最小化变量
问题描述
我有一个包含许多变量的方程。我必须a0
通过将输入提供给所有其他变量来找到变量的最小值[a1, a2, a3, a4, a5, a6, x1]
。
x1
是一个数组,其他变量对于常量 a0 值是常量。(其他 6 个变量随着 值的变化而变化a0
,但现在我只是在考虑a0 = 0
,因此这六个变量具有下面提到的“出于学习目的”的恒定值。)
我尝试同时为每个变量提供数组值以包含在函数中,但它不起作用,因为fminsearch
我想它需要一个标量值。
a0 = 0;
x1 = -10:0.1:10;
a1 = 1.329438561310570 e-05;
a2 = -0.002504562092133;
a3 = -0.036785455629072;
a4 = 0.056797862719813;
a5 = 2.624845095825030;
a6 = 30.072580030528270;
f=@(a0) min(((max((((30*a0*(x1.^4))+(20*a1*(x1.^3))+(12*a2*(x1.^2))+.....(6*a3*x1)+(2*a4))/((1+((6*a0*(x1.^5))+(5*a1*(x1.^4))+(4*a2*(x1.^3))+(3*a3*(x1.^2))+(2*a4*(x1))+(a5))^2))^1.5)))-0.1)+(-0.1-(min((((30*a0*(x1.^4))+(20*a1*(x1.^3))+(12*a2*(x1.^2))+(6*a3*(x1))+(2*a4))/((1+((6*a0*(x1.^5))+(5*a1*(x1.^4))+(4*a2*(x1.^3))+(3*a3*(x1.^2))+(2*a4*(x1))+(a5))^2))^1.5)))));
a0_min = fminsearch(f,0);
我假设我会a0
在 10^-7 或 10^-6 的范围内得到最小值。不完全确定。我是否将函数的输入作为正确的值?
解决方案
tl;
在您的示例中,错字博士。代码不运行。优化是在域上最小化目标函数,并且肯定具有数学表示。您的目标函数似乎是一个常数a0
,表明示例中的某些内容(数据或f
)可能是错误的。
该示例包含一些印刷错误。
- 更改
a1 = 1.329 e-05;
为a1 = 1.329e-05;
。 - 换成
^
in除非.^
有f
原因。 - 删除
)
右端的多余部分f
。
目标函数相对于 是常数a0
。
% MATLAB 2018b
x1 = -10:0.1:10;
a1 = 1.329e-05;
a2 = -0.003;
a3 = -0.037;
a4 = 0.057;
a5 = 2.625;
a6 = 30.073;
和
f=@(a0) min(((max((((30*a0*(x1.^4))+(20*a1*(x1.^3))+(12*a2*(x1.^2))+6*a3*x1)+(2*a4))/((1+((6*a0*(x1.^5))+(5*a1*(x1.^4))+(4*a2*(x1.^3))+(3*a3*(x1.^2))+(2*a4*(x1))+(a5)).^2)).^1.5)))-0.1)+(-0.1-(min((((30*a0*(x1.^4))+(20*a1*(x1.^3))+(12*a2*(x1.^2))+(6*a3*(x1))+(2*a4))/((1+((6*a0*(x1.^5))+(5*a1*(x1.^4))+(4*a2*(x1.^3))+(3*a3*(x1.^2))+(2*a4*(x1))+(a5)).^2)).^1.5))));
这段代码
a0init = 0; % Initial guess for a0
[a0star, f_min] = fminsearch(f,a0init)
执行,但初始猜测对目标函数没有影响。例如,尝试[a0star, f_min] = fminsearch(f,-2)
.
f(a0)
对多个值的评估a0
揭示了一个更深层次的问题。没有什么可以最小化,任何价值a0
似乎都一样好。
推荐阅读
- azure - 如何将 dprep 包应用于 score.py Azure Workbench 中的传入数据
- c - libcurl,处理分块数据
- java - 带有 Wildfly 和部署顺序的 Eureka+Cloud-Config
- heroku - 制作 requirements.txt 文件后 Heroku 部署失败
- powershell - 公用文件夹报告脚本 - Exchange 2010
- c# - Minio:放置带有附加数据的对象
- php - 自定义表格不起作用
- vba - 运行自动滚动宏,但有两个问题
- ios - 带有渐变层的 TableViewCell -> 布局问题
- momentjs - moment.utc - 无效输入字符串格式警告