怎么用matlab画出二维散点边界边界给出这五个数的最优值?五个变量,分别有自己的区间,这五个数和为1。

用Matlab实现黄金分割法,优化目标函数minf(x)=2x^2-x-1,初始区间为[-1,1],e=0.001
问题描述:
用Matlab实现黄金分割法,优化目标函数minf(x)=2x^2-x-1,初始区间为[-1,1],e=0.001求高手帮忙!急!急!急!
问题解答:
首先在matlab新建文件保存为goldmin.mfunction[x,y] = goldmin(f,xa,xb,s)% 黄金分割法求解函数最小值% 输入% f 待优化函数% a,b 区间% s 精度% 输出% x 最优解% y 最优解对应的最小值%%g = (sqrt(5)-1)/2; % 黄金分割比,0.618a =b =x2 = a + g*(b-a);x1 = a + b - x2;y1 = f(x1);y2 = f(x2);while abs(b-a) > sif y1=y2a = x1;x1 = x2;x2 = a + b - x1;endy1=f(x1);y2 = f(x2);endx = x1;y = f(x);然后在命令区输入>> f = @(x) 2*x^2-x-1;>> [x,y]=goldmin(f,-1,1,0.001)x =0.2497y =-1.1250>> 即当x=0.2497时取最小值-1.125
我来回答:
剩余:2000字
你要很精确的解吗?如果不要的话那就很简单了.x=-3:0.00001:6;中的精度你自己选,太小了会比较慢y=x.^2+2*x;[n m]=min(y);这个返回的就是X和对应的最小值;
f(x)=x^3=10x-20?怎么有两个等号?是不是x^3+10x-20?不然在1,2之间无根? 再问: 是你的那个了,我打错了,求答案? matlab写的程序,要画图的。 再答: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%f=inline('x.^3+10.*x-20');x=
程序编的非常好,只有一句:size(x) = [4,3]改为x =zeros(4,3) 即可.%运行结果:X =19.7 94.3 88.3 38.3 113.7 69.7FVAL =0
如果按照默认设置来运行GA,输入fitness函数和未知量个数,就可以运行了.通常,优化问题的目标函数就是fitness函数.如果想重新设置一下GA的参数,可在options处,设置,具体参数设置还要看看帮助文件.
北化的吧.%7.12 用0.618法计算三次迭代a=60;b=150;alpha=0.01;%定义迭代精度syms xf=(100-x)^2;num=3;%定义迭代次数,这里为3次k=1;fprintf('\n//\n\n')fprintf('已达到规定迭代次数:%d次,输出优化结果:\n',k-1
这个程序要能够运行,首先要解决以下几个问题:第一,你的第二个程序,定义目标函数中有一个错误:function f=jsqyh_f(x); 应改为:function f=rzjyh_f(x);第二,以上一大段,应该分别保存为3个m文件一个是主程序:(随意命名)%人字架体积优化设计%1----主程序%人字架优化调用目标函数
目标函数M文件function f=fun(x)f=x(1)^2+x(2)^2+x(3)^2+x(4)^2;非线性约束M文件function [c ceq]=fun1(x)c=[];ceq=x(1)*x(4)+2*x(2)*x(4)-2*x(3)*x(4)^2;命令窗口>> x0=rand(1,4);>> lb=[54
clearclc%求解优化函数f=@(x) x(1).*x(1)+x(2).*x(2)+2.*x(3).*x(3)+x(4).*x(4)-5.*x(1)-5.*x(2)-21.*x(3)+7.*x(4)+1;x0=[1,1,1,1]; %初始解向量options=optimset('maxfunevals',10000
[x&fval]=&fmincon(@(x)&CostObj(x),x0,A,B,Aeq,Beq) 再问: ?????д??????????? ??? Input argument "x" is undefined. Error in ==> CostObj at 34 c(i)=b(i)
参照书籍 工程优化设计与Matlab实现 李万祥主编 清华大学出版社2010.2月出版 有源程序 不过里面的M文件没有电子版 得自己输 精通MATLAB最优化计算 这本书里也有
elp=0.03;tao=0.618;N=fix(log(elp)/log(tao))+1;k=1;a(k)=0;b(k)=1;r(1)=b(k)-tao*(b(k)-a(k));u(1)=a(k)+tao*(b(k)-a(k));for i=1:N%f1=(r(k)).^2-r(k);f1
楼主的意思应该是函数的变量是一个向量,是吧?那么楼上的方法就没什么意义了,因为很可能你连这个向量的长度都不知道.而且所谓的“不要用x(1),x(2),x(3)这样的格式”这是放屁.function y=f(x)n=length(x); %你的例子中n=3y=0;for i=1:n:1y=y+x(i);r
例1 求 f = 2 在0
这个有什么问题?结果都可以跑出来了哦~~~~~ 再问: 太慢了。我做的是一个遗传算法的程序,这段程序alpha和beta是直接给出了的,但实际上是需要我用遗传算法来得到最好的alpha和beta的值,就是说需要运行很多次类似的for循环,如果有必要我可以把整段程序发给你看看,指教一下我。QQ邮箱 再
我有,给邮箱给你发过去 再问: 你发的哪个邮箱啊?发到这个邮箱吧!谢谢!!!!!
你的E和d在循环中,其长度不断变化,所以应该先给E和d预分配内存.对于四个for,我暂时没想到向量化的方法.但至少你可以改成这样for i=1:7&&&& for j=1:8-i&& &&&&&&&n
写matlab程序需要注意,尽量少用for.matlab从名字也可以看出是为矩阵运算设计的,所以你要多利用矩阵运算来处理问题.先给你如果我做此题,会写什么程序.以下是我的程序.set={0:9};t=nchoosek([0:9],5);tr=cell2mat(cellfun(@perms,cellfun(@setdif
因为 f 是一个凸函数,函数的极小值发生在 f 对 x(1) 和 x(2) 的偏导为 0 的地方,或者在约束条件的边界上.本题的主函数的点为 x(1)=2, x(2)=3, 在约束条件以外,所以,最小值发生在离这个点最近的约束条件边界上,即 x(1)=3, x(2)=4,其对应的最小值为 28.用Matlab的fmin
max=1.06*x4A+1.15*x3B+1.20*x2C+1.02*x5D;x1A+x1D=100; 1.02*x1D+x2A+x2C+x2D=0; 1.02*x2D+x3A+x3B+x3D=0; 1.02*x3D+x4A+x4D=0; 1.02*x4D+x5D=0; x3B=40; x2C=30; 就这样点击运行
也许感兴趣的知识扫一扫,访问微社区
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 19040|回复: 12|关注: 0
matlab在解方程组时,如何给其中一个变量限定一个范围区间?
<h1 style="color:# 麦片财富积分
新手, 积分 10, 距离下一级还需 40 积分
&& syms SA Tab T
&& eq1=SA^2+1-2*SA*cos(pi/2-theta)-(SA+340*Tac)^2;
&& eq2=SA^2+1-2*SA*cos(theta)-(SA+340*Tab)^2;
&& [SA,T]=solve(eq1,eq2)
这样直接解出来会有四组解,其中有几个是我不需要的,所以我要把theta角限定在【0:pi/2】中,所以我在定义完变量后,在第一行下面加入&& T=0:0.01:pi/2; 然后系统就报错了
??? Error using ==& solve&assignOutputs at 132
3 variables does not match 2 outputs.
Error in ==& solve at 87
varargout = assignOutputs(nargout,R,symvars);
这是什么原因?我不约束theta角大小的时候,可以求解的么
<h1 style="color:# 麦片财富积分
有哪位大神愿意帮我解答下不。。。。实在想不明白么
<h1 style="color:# 麦片财富积分
。。。。。。。。。。。。没人吗,只能自己顶一下了,,,,,
<h1 style="color:# 麦片财富积分
只能自己顶了。。。
论坛优秀回答者
<h1 style="color:#4 麦片财富积分
关注者: 107
数值解应该没问题。
<h1 style="color:# 麦片财富积分
数值解应该没问题。
我觉得应该也没问题的么 那为什么会这样报错呢。。。。
论坛优秀回答者
<h1 style="color:#4 麦片财富积分
关注者: 107
你用的是解析解的命令。
<h1 style="color:# 麦片财富积分
你用的是解析解的命令。
那应该用怎么样的命令 才能正确的限定theta角的范围呢?
<h1 style="color:# 麦片财富积分
还是不懂啊 继续求助。。。。。。
<h1 style="color:# 麦片财富积分
初学者同问&&如何 反三角函数 acos 设定取值范围
站长推荐 /3
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区MATLAB中已知一个1*40行向量,怎样在这40个元素中筛选出元素值在某段区间内的元素?(详见问题补充)_百度知道
MATLAB中已知一个1*40行向量,怎样在这40个元素中筛选出元素值在某段区间内的元素?(详见问题补充)
比如这个行向量中40个元素位于区间【0,1】内,我要筛选出位于区间【0,0.05】的所有元素。...
比如这个行向量中40个元素位于区间【0,1】内,我要筛选出位于区间【0,0.05】的所有元素。
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
来自电脑网络类芝麻团
采纳数:1336
获赞数:16660
参与团队:
j=0for i=1 : 40
if a[i] &=0 && a[i] &=0.05
// 数组a中放1*40的行向量
b[j] = a[i];
// 数组b中放位于区间【0,0.05】的所有元素
来自科学教育类芝麻团
采纳数:323
获赞数:424
参与团队:
这样或许可以A=rand(1,40);%A的每个值是0到1n=find(0=&A&=0.05);you_need=A(n)
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。<meta xmlns="http://www.w3.org/1999/xhtml" name="description" itemprop="description" content="此 MATLAB 函数 返回一个值 x,该值是 fun 中描述的标量值函数在区间 x1&<&x&
本页对应的英文页面已更新,但尚未翻译。 fminbnd查找单变量函数在定区间上的最小值
fminbnd 是一个一维最小值,用于求由以下条件指定的问题的最小值:
minxf(x)&#x00A0;such&#x00A0;that&#x00A0;x1&#x003C;x&#x003C;x2.
x、x1 和 x2 是有限标量,f(x) 是返回标量的函数。
语法x = fminbnd(fun,x1,x2)x = fminbnd(fun,x1,x2,options)x = fminbnd(problem)[x,fval]
= fminbnd(___)[x,fval,exitflag]
= fminbnd(___)[x,fval,exitflag,output]
= fminbnd(___)说明 = fminbnd(,,) 返回一个值 x,该值是 fun 中描述的标量值函数在区间 x1&&&x&&&x2 中的局部最小值。 = fminbnd(,,,) 使用 options 中指定的优化选项执行最小化计算。使用
可设置这些选项。 = fminbnd() 求 problem 的最小值,其中 problem 是一个结构体。对于任何输入参数,[,]
= fminbnd(___) 返回目标函数在 fun 的解 x 处计算出的值。[,,]
= fminbnd(___) 还返回描述退出条件的值 exitflag。[,,,]
= fminbnd(___) 还返回一个包含有关优化的信息的结构体 output。示例求
范围内的最小值的点。fun = @
x = fminbnd(fun,x1,x2)x = 4.7124
为了显示精度,此值与正确值
相同。3*pi/2ans = 4.7124
<meta itemprop="exampletitle" content="Minimum of <literal moreinfo=&#34;none&#34;&sin求通过单独的函数文件指定的函数的最小值。函数接受输入点 x 并返回表示 x 处的目标函数值的实数标量。将以下函数编写为文件,并将文件保存为您的 MATLAB&#174; 路径中的 scalarobjective.m。
function f = scalarobjective(x)
for k = -10:10
f = f + (k+1)^2*cos(k*x)*exp(-k^2/2);
求在区间 1 &= x &= 3 内使 scalarobjective 具有最小值的 x。x = fminbnd(@scalarobjective,1,3)
存在额外参数时求函数的最小值。函数
有一个最小值,该值取决于参数
的值。创建
的匿名函数,其中包含参数
的值。求此函数在区间
内的最小值。a = 9/7;
fun = @(x)sin(x-a);
x = fminbnd(fun,1,2*pi)x = 5.9981
此答案是正确的;理论值为3*pi/2 + 9/7ans = 5.9981
有关包括额外参数的详细信息,请参阅。监视 fminbnd 计算函数
内的最小值时所采用的步骤。fun = @
options = optimset('Display','iter');
x = fminbnd(fun,x1,x2,options)
Func-count
Optimization terminated:
the current x satisfies the termination criteria using OPTIONS.TolX of 1.
x = 4.7124
的最小值的位置以及在
区间内的最小值。fun = @
[x,fval] = fminbnd(fun,1,2*pi)x = 4.7124
fval = -1.0000
通过请求所有输出返回有关 fminbnd 求解过程的所有信息。此外,还使用绘图函数监视求解过程。fun = @
options = optimset('PlotFcns',@optimplotfval);
[x,fval,exitflag,output] = fminbnd(fun,x1,x2,options)x = 4.7124
fval = -1.0000
exitflag = 1
output = struct with fields:
iterations: 8
funcCount: 9
algorithm: 'golden section search, parabolic interpolation'
message: 'Optimization terminated:...'
其中 myfun 是一个 MATLAB&#x00AE; 函数,例如
function f = myfun(x)
% Compute function value at x
您还可以为匿名函数指定 fun 作为函数句柄:
x = fminbnd(@(x)norm(x)^2,x1,x2);
示例: fun = @(x)-x*exp(-3*x)
数据类型: char | function_handle | string
FunValCheck检查目标函数值是否有效。当目标函数返回的值为 complex 或 NaN 时,默认 'off' 允许 fminbnd 继续。当目标函数返回的值是 complex 或 NaN 时,'on' 设置会引发错误。MaxFunEvals允许的函数求值的最大次数,为正整数。默认值为 500。请参阅 。MaxIter允许的迭代最大次数,为正整数。默认值为 500。请参阅 。OutputFcn以函数句柄或函数句柄的元胞数组的形式来指定优化函数在每次迭代时调用的一个或多个用户定义函数。默认值是“无”([])。请参阅 。PlotFcns绘制执行算法过程中的各种测量值,从预定义绘图选择值,或记录您自己的值。传递函数句柄或函数句柄的元胞数组。默认值是“无”([])。
@optimplotx 绘制当前点@optimplotfunccount 绘制函数计数@optimplotfval 绘制函数值
有关编写自定义绘图函数的信息,请参阅。TolX关于正标量 x 的终止容差。默认值为 1e-4。请参阅 。
示例: options = optimset('Display','iter')
数据类型: struct
获取 problem 结构体最简单的方式是从 Optimization 应用程序导出问题。
数据类型: struct输出参数
局限性要计算最小值的函数必须是连续的。fminbnd 只能给出局部解。当解在区间的边界上时,fminbnd 可能表现出慢收敛。算法fminbnd 是一个函数文件。算法基于黄金分割搜索和抛物线插值方法。除非左端点 x1 非常靠近右端点 x2,否则 fminbnd 从不计算 fun 在端点处的值,因此只需要为 x 在区间 x1 & x & x2 中定义 fun。如果最小值实际上出现在 x1 或 x2 处,则 fminbnd 返回区间 (x1,x2) 内部靠近极小值的点 x。在本例中,x 与最小值的距离不超过 2*(TolX&+&3*abs(x)*sqrt(eps))。有关算法的详细信息,请参阅
或 。参考[1] Forsythe, G. E., M. A. Malcolm, and C.
B. Moler. Computer Methods for
Mathematical Computations.
Englewood Cliffs, NJ: Prentice Hall, 1976.[2] Brent, Richard. P. Algorithms
for Minimization without Derivatives. Englewood Cliffs,
NJ: Prentice-Hall, 1973.扩展功能C/C++ 代码生成 使用 MATLAB&#174; Coder&#8482; 生成 C 代码和 C++ 代码。对于 C/C++ 代码生成:fminbnd 不支持问题结构体参数。fminbnd 会忽略 Display 选项,且不会给出迭代显示或退出消息。要检查解的质量,请检查退出标志。输出结构体不包含 algorithm 或 message 字段。fminbnd 忽略 OutputFcn 和 PlotFcns 选项。另请参阅 |
| 主题在 R2006a 之前推出
此主题对您有帮助吗?
您点击了调用以下 MATLAB 命令的链接:
Web 浏览器不支持 MATLAB 命令。请在 MATLAB 命令窗口中直接输入该命令以运行它。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
(Fran?ais)
(Italiano)
Switzerland
Asia Pacific扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
用matlab 求f(x)=x^2-3x+2函数在区间[-10,10]内的最值1、求函数f(x)=x^2-3x+2在区间[-10,10]内的最值?2、求函数f(x)=(2x^2-3x+4)/(x^2+2x+2)在区间[-1,3]内的最值?3、某工厂要制作一个容积为100立方米的无盖长方体容器,问:怎样制作材料最省?
作业帮用户
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
syms xf=x^2-3*x+2;df=diff(f,x);x0=eval(solve(df));x=[-10 x0 10];y=x.^2-3*x+2;fmin=min(y)syms xf=(2*x^2-3*x+4)/(x^2+2*x+2);df=diff(f,x);x0=eval(solve(df));x=[-1 x0(1) 3];y=(2*x.^2-3*x+4)./(x.^2+2*x+2);fmin=min(y)这是前两个
为您推荐:
其他类似问题
扫描下载二维码

我要回帖

更多关于 matlab怎么出图像 的文章

 

随机推荐