机械优化设计黄金分割法 外推法(3)

时间:2026-01-17

运行过程及结果:

输入a,b值和精度e值

-3 5

0.0001

a=3.279466,b=3.279793,s=22.659008,m=3.279629,n=21

3.二次插值法

源程序:

#include<stdio.h> #include<math.h> int main(void) {

double a1,a2,a3,ap,y1,y2,y3,yp,c1,c2,m; double j[3]; int i,h=1;

void finding(double a[3]); finding(j);

a1=j[0];

a2=j[1]; a3=j[2];

m=0.001;

double f(double x);

y1=f(a1); y2=f(a2); y3=f(a3);

for(i=1;1>=1;i++) {

c1=(y3-y1)/(a3-a1);

c2=((y2-y1)/(a2-a1)-c1)/(a2-a3); ap=0.5*(a1+a3-c1/c2); yp=f(ap);

if(fabs((y2-yp)/y2)<m) break;

else if((ap-a2)*h>0) {

if(y2>=yp){ a1=a2;y1=y2; a2=ap;y2=yp;} else{

a3=ap;y3=yp;}

}

else if(y2>=yp){ a3=a2;y3=y2; a2=ap;y2=yp;} else{a1=ap;y1=yp;} }

double x,y; if(y2<=yp){ x=a2;y=y2;} else{

x=ap;y=yp;}

printf("a*=%f\n",x); printf("y*=%f\n",y);

return 0; }

double f(double x) {

double y;

y=x*x-10*x+36; return y; }

void finding(double a[3]) {

int h,i;

double y[3]; a[0]=0; h=1;

a[1]=h;

y[0]=f(a[0]);y[1]=f(a[1]); if(y[1]>y[0]) {

h=-h;

a[2]=a[0];y[2]=y[0]; do{

a[0]=a[1];a[1]=a[2]; y[0]=y[1];y[1]=y[2]; a[2]=a[1]+h;y[2]=f(a[2]); h=2*h;

}while(y[2]<y[1]); }

else{

for(i=1;i>=1;i++){

a[2]=a[1]+h;y[2]=f(a[2]); if(y[2]>=y[1]) break;

机械优化设计黄金分割法 外推法(3).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:4.9 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:19元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219