C語言的問題,求此函數的最小值,並求出此時對應的h1,h2的值。。求大神指教
總費用: W1(最小)=
sqrt((8-h1-h2+5-h1)*(8-h1-h2+5-h1)+15*15)+h1)*7.2+27.2*sqrt(h2*h2+25)
(式1)
參數的取值范圍: 0<=h1<=8 (式2)
參數的取值范圍: 0<=h2<=8 (式3)
最佳回答:
#include<iostream>
#include<cmath>
using namespace std;
void main()
{
double h1 = 0,h2 = 0,w1 = 0;
double minw1 = 1e300;
for(h1 = 0;h1<=8;h1=h1+0.01)
for(h2=0;h2<=8;h2=h2+0.01)
{
w1 = sqrt( ( (8-h1-h2+5-h1)*(8-h1-h2+5-h1) + 15*15 ) +h1 )*7.2 + 27.2 * sqrt(h2*h2+25);
if(w1<minw1)
{
printf("%f \t %f \t %f \t \n",h1,h2,w1);
minw1 = w1;
}
}
}
這個是最笨的方法。好的方法是用優化設計的思想求解。這個相當於暴力破解。
h1=6.36,h2=0.02,w1=245.532850