鲍威尔法c语言程序求方程,鲍威尔法C源程序.doc

《鲍威尔法C源程序.doc》由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关《鲍威尔法C源程序.doc》文档请在天天文库搜索。

1、鲍威尔法C++源程序———————————————————————————————— 作者:———————————————————————————————— 日期:#include #include #include #include #include #include #define n1 2#define tt 0.005#define ad 0.0000001//定义常量//tt  初始迭代步长//ad  收敛精度float ia;float fny(float *x){ float f; f=10*pow((x[0]+x[1]-5),2)+pow((x[0]-x[1]),2); //目标函数 return(f);}float *iterate(float *x,float a, float *s){ float *x1; x1=(float *)malloc(n1 * sizeo。

2、f(float)); for (int i=0;i

3、; t=t/2; ia=1; } } for (i=0;;i++) { a[2]=a[1]+t; f[2]=func(xk,a[2],s); if (f[2]>f[1]) break; t=2*t; a[0]=a[1]; f[0]=f[1]; a[1]=a[2]; f[1]=f[2]; } if (a[0]>a[2]) { a1=a[0]; f1=f[0]; a[0]=a[2]; f[0]=f[2]; a[2]=a1; f[2]=f1; } return;}//second insertfloat lagrange(float *xk,float *ft,float *s){ float a[3],f[3]; float b,c,d,aa; finding (a,f,xk,s); for (int i=0;;i++) { if (ia==1) { aa=a[1]; *ft=f[。

4、1]; break; } d=(pow(a[0],2)-pow(a[2],2))*(a[0]-a[1])-(pow(a[0],2)-pow(a[1],2))*(a[0]-a[2]); if(fabs(d)==0) break; c=((f[0]-f[2])*(a[0]-a[1])-(f[0]-f[1])*(a[0]-a[2]))/d; if(fabs(c)==0) break; b=((f[0]-f[1])-c*(pow(a[0],2)-pow(a[1],2)))/(a[0]-a[1]); aa=-b/(2*c); *ft=func(xk,aa,s); if (fabs(aa-a[1])f[1]) aa=a[1]; break; } if (aa>a[1]) { if (*ft>f[1]) { a[2]=aa; f[2]=*ft; } else if (*ftf[1]) { a。

5、[0]=aa; f[0]=*ft; } else if (*ftf[1]) { aa=a[1]; *ft=f[1]; } return (aa);}float *powell(float *xk){ float h[n1][n1],s[n1]={0,0},ff[n1+1]={0,0,0}; float f1,f3,aa; float dk[n1],*x0,xk1[n1]; int m=0,i,j; for (i=0;i

6、ange(xk,&ff[i+1],s); xk=iterate(xk,aa,s); } for (i=0;i

7、+) h[i][j]=h[i+1][j]; for (j=0;j=f3) xk=xk1; } float xq=0; for (i=0;i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值