Ⅰ 請教高手幫忙編程序~~用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。
此外,還有許多其他方法可以實現物體的下降效果,如使用動畫或粒子效果等。具體方法取決於你的游戲設計和需求。