请教高手解决看看这程序有什么问题。此问题是用坐标轮换法求解函数f=x1*x1+4*x1+x2*x2+4*x2+x1*x2的最值问

请教高手解决看看这程序有什么问题。此问题是用坐标轮换法求解函数f=x1*x1+4*x1+x2*x2+4*x2+x1*x2的最值问,第1张

怎么会知道

2你自己的网站的URL我们怎么会知道?

3百度需要提交数据的意思是需要你提交你们的URL连接,这些链接只有你自己知道 因为网站的自定义插件代码 是你自己弄上去的 所以 解铃还需系铃人

另外,虚机团上产品团购,超级便宜

0618法求极值的程序吧,我给你改了改,可以用了,最优值 q=-1499756,修改后的代码如下

program main

implicit none

real,parameter:: k= 000001

real:: a=-50 , b=00

real:: x,y,fx,fy

real, external :: func

do while (b-a>k)

x=a+0382(b-a)

y=a+0618(b-a)

fx=func(x)

fy=func(y)

if (fx>=fy) then

a=x

x=y

y=a+0618(b-a)

else

b=y

y=x

x=a+0382(b-a)

end if

end do

write (,) "q=",(b+a)/2

stop

end program

real function func(x)

real x

func=x2+3x+4

end function

1 亲,你要把golden函数写在一个单独的goldenm中,然后再写一个mainm调用之,不要混在一起写。示例(mainm):

a=-3;

b=5;

e=000001;

f=@(x)x^2+2x;

xmin=golden(f,a,b,e)

2 在golden中,fmin=subs(f,xmin) 句改成fmin=f(x);更好些。其余调用f的地方也是。

3 a1和a2这两个量在函数中没定义过。请更正。

#include<iostreamh>

#include<mathh>

/黄金分割法求最小值的C++程序,部分变量及函数书写并不规范/

//δ为题给精度

int n = (lnδ/ln0618 + 1) + 1;

int i;

float f(float ai, float bi)

{

a(i + 1) = ai + 0618(bi - ai);

return ai + 1;

}

float g(float ai, float bi)

{

b(i + 1) = ai + 0382(bi - ai);

return b(i + 1);

}

float F(float ai, float bi)

{

//题给的f(x)函数式;

return ;

}

float A(float ai, float bi)

{

int i = 1;

float result;

L: do

{

a(i + 1) = f(float ai, float bi);

b(i + 1) = g(float ai, float bi);

float F1 = F(float ai, float bi);

float F2 = F(float a(i + 1), float b(i + 1));

ai = ai, bi = b(i + 1);

i ++;

}while(i <= n && F1 >= F2)

if(i < n)

{

B(float ai, float bi);

}

else

result = F2;

return result;

}

float B(float ai, float bi)

{

do

{

a(i + 1) = f(float ai, float bi);

b(i + 1) = g(float ai, float bi);

float F1 = F(float ai, float bi);

float F2 = F(float a(i + 1), float b(i + 1));

ai = a(i + 1), bi = bi;

i ++;

}while(i <= n && F1 <= F2)

if(i < n)

{

goto L;

}

else

result = F1;

return result;

}

void main()

{

int i = 1;

float A(float ai, float bi);

cout<<"最小值为:"<<result<<endl;

#include#includefloat getequation(float x)

{

return xx-2x+2;

}

void main()

{

float a=0;

float b=6;

float result = 0;

do {

float c=a+0618(b-a);

float d=a+b-c;

if(fabs(getequation(c)) < fabs(getequation(d)))

{

a=d;

result = c;

}

else

{

b=c;

result = d;

}

} while(fabs(getequation(result)) > 001);

printf("f(a)=aa-7a+10\n");

printf("a=%f\n",result);

}

扩展资料

C语言编写程序求最大值

#include<stdioh>

double Max(doublep,int n)

{

double max=p;

for(int i=0;i<n;i++)

if((p+i)>max)

max=(p+i);

return max;

}

double Min(double p,int n)

{

double min=p;

for(int i=0;i<n;i++)

if((p+i)<min)

min=(p+i);

return min;

}

double Average(double p,int n)

{

double sum=0;

for(int i=0;i<n;i++)

sum+=(p+i);

return sum/n;

}

int main()

{

double a[10];

printf("请输入10个实数:\n");

for(int i=0;i<10;i++)

scanf("%f",&a[i]);

printf("这10个数中最大值为:%f\n",Max(a,10));

printf("这10个数中最小值为:%f\n",Min(a,10));

printf("这10个数的平均值为:%f\n",Average(a,10));

return 0;

private void prove()

{

double pre = 1;//前一项

double back = 1;//后一项

double current = 1;//当前新值

double ratio = 00;//比例

for (double i = 1; i < 100; i++)

{

current = pre + back;

ratio = back / current;

pre = back;

back = current;

}

}

以上就是关于请教高手解决看看这程序有什么问题。此问题是用坐标轮换法求解函数f=x1*x1+4*x1+x2*x2+4*x2+x1*x2的最值问全部的内容,包括:请教高手解决看看这程序有什么问题。此问题是用坐标轮换法求解函数f=x1*x1+4*x1+x2*x2+4*x2+x1*x2的最值问、fortran编程出现错误,怎么修改啊、黄金分割法matlab程序错误等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9818325.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存