Ⅰ 请教高手帮忙编程序~~用matlab编写数值优化方法(最速下降法,惩罚函数法),具体题目如下:
例1 求 f = 2 在0<x<8中的最小值与最大值
主程序为wliti1.m:
f='2*exp(-x).*sin(x)';
fplot(f,[0,8]); %作图语句
[xmin,ymin]=fminbnd (f, 0,8)
f1='-2*exp(-x).*sin(x)';
[xmax,ymax]=fminbnd (f1, 0,8)
运行结果:
xmin = 3.9270 ymin = -0.0279
xmax = 0.7854 ymax = 0.6448
★(借助课件说明过程、作函数的图形)
例2 对边长为3米的正方形铁板,在四个角剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?
设剪去的正方形的边长为x,则水槽的容积为: ,建立无约束优化模型为:min y=- , 0<x<1.5
先编写M文件fun0.m如下:
function f=fun0(x)
f=-(3-2*x).^2*x;
主程序为wliti2.m:
[x,fval]=fminbnd('fun0',0,1.5);
xmax=x
fmax=-fval
运算结果为: xmax = 0.5000,fmax =2.0000.即剪掉的正方形的边长为0.5米时水槽的容积最大,最大容积为2立方米.
★(借助课件说明过程、作函数的图形、并编制计算程序)
例3
1、编写M-文件 fun1.m:
function f = fun1 (x)
f = exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
2、输入M文件wliti3.m如下:
x0 = [-1, 1];
x=fminunc(‘fun1’,x0);
y=fun1(x)
3、运行结果:
x= 0.5000 -1.0000
y = 1.3029e-10
★(借助课件说明过程、作函数的图形并编制计算程序)
例4 Rosenbrock 函数 f(x1,x2)=100(x2-x12)2+(1-x1)2 的最优解(极小)为x*=(1,1),极小值为f*=0.试用不同算法(搜索方向和步长搜索)求数值最优解.初值选为x0=(-1.2 , 2).
为获得直观认识,先画出Rosenbrock 函数的三维图形, 输入以下命令:
[x,y]=meshgrid(-2:0.1:2,-1:0.1:3);
z=100*(y-x.^2).^2+(1-x).^2;
mesh(x,y,z)
画出Rosenbrock 函数的等高线图,输入命令:
contour(x,y,z,20)
hold on
plot(-1.2,2,' o ');
text(-1.2,2,'start point')
plot(1,1,'o')
text(1,1,'solution')
f='100*(x(2)-x(1)^2)^2+(1-x(1))^2';
[x,fval,exitflag,output]=fminsearch(f, [-1.2 2])
运行结果:
x =1.0000 1.0000
fval =1.9151e-010
exitflag = 1
output =
iterations: 108
funcCount: 202
algorithm: 'Nelder-Mead simplex direct search'
★(借助课件说明过程、作函数的图形并编制计算程序)
(五)、 作业
陈酒出售的最佳时机问题
某酒厂有批新酿的好酒,如果现在就出售,可得总收入R0=50万元(人民币),如果窖藏起来待来日(第n年)按陈酒价格出售,第n年末可得总收入 (万元),而银行利率为r=0.05,试分析这批好酒窖藏多少年后出售可使总收入的现值最大. (假设现有资金X万元,将其存入银行,到第n年时增值为R(n)万元,则称X为R(n)的现值.)并填下表:
Ⅱ 用C语言编程:一个球从x米高度自由落下,每次落地后反弹回原高度的一半;再落下,求在第几次之后反弹高
#include<stdio.h>
intmain(){
floatx=0.0;
floats=0.0;
intcount=0;
printf("请输入高度x:");
scanf("%f",&x);
s=x;
while(x>0.1){
x/=2.0;
s+=x*2;
printf("第%d次之后反版弹高度为%.2lf米 ",++count,x);
}
printf("第%d次之后反弹高度小于0.1米,这权一次落地时共经过%.2f米",count,s);
return0;
}
测试结果:
Ⅲ C语言,计算物体自由下落的距离:一个物体从100米的高空自由下落。编写程序,求3秒前下落的垂直距离
#include "stdio.h"
int main(int argv,char *argc[]){
printf("Vertical fell in %g meters ",9.8*3*3/2);
return 0;
}运行结果:
拓展资料
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
Ⅳ 核桃编程中怎样使物体下降一点
在核桃编程中,如果你想让物体下降一点,可以使用以下方法之一:
在游戏中使用重力:
如果你想让物体受到重力的影响,可以将它设置为受力物体(Rigidbody)。然后,你可以使用游戏对象的AddForce函数,向下施加重力力。例如:
object.AddForce(Vector3.down * gravity, ForceMode.Acceleration);
这将使物体受到向下的重力力的影响,使其下降。
注意:这种方法需要设置物理引擎,并且需要考虑物体的质量等因素。
使用移动函数:
如果你想让物体在游戏中移动,可以使用游戏对象的Transform.Translate函数。例如:
object.transform.Translate(Vector3.down * distance);
这将使物体在游戏中向下移动一段距离。
注意:这种方法不受物理引擎的影响,因此不会考虑物体的质量等因素。如果你想使用重力模拟物体的下降,建议使用方法1。
此外,还有许多其他方法可以实现物体的下降效果,如使用动画或粒子效果等。具体方法取决于你的游戏设计和需求。