ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:17.71KB ,
资源ID:26153377      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26153377.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(机械优化设计黄金分割法 外推法.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

机械优化设计黄金分割法 外推法.docx

1、机械优化设计黄金分割法 外推法郑州大学机械优化设计部分程序1.外推法2.黄金分割法3.二次插值法4.坐标轮换法5.随机方向法6.四杆机构优化设计1.外推法源程序:#include#include#define R double fun(double x) double m; m=x*x-10*x+36;return m;void main()double h0=R,y1,y2,y3,x1,x2,x3,h;x1=0;h=h0;x2=h;y1=fun(x1);y2=fun(x2);if(y2y1)h=-h;x3=x1;y3=y1;x1=x2;y1=y2;x2=x3;y2=y3;x3=x2+h;y3

2、=fun(x3);while(y3y2)h*=;x1=x2;y1=y2;x2=x3;y2=y3;x3=x2+h;y3=fun(x3); printf(fun(%f)=%f,fun(%f)=%f,fun(%f)=%fn,x1,y1,x2,y2,x3,y3);运行过程及结果:fun=,fun=,fun=2.黄金分割法源程序:#include#include#define f(x) x*x*x*x-5*x*x*x+4*x*x-6*x+60 double hj(double *a,double *b,double e,int *n) double x1,x2,s; if(fabs(*b-*a)/(*b

3、)f(x2) *a=x1; else *b=x2; *n=*n+1; s=hj(a,b,e,n); return s; void main() double s,a,b,e,m; int n=0; printf(输入a,b值和精度e值n);scanf(%lf %lf %lf,&a,&b,&e); s=hj(&a,&b,e,&n); m=(a+b)/2; printf(a=%lf,b=%lf,s=%lf,m=%lf,n=%dn,a,b,s,m,n); 运行过程及结果:输入a,b值和精度e值-35a=,b=,s=,m=,n=213.二次插值法源程序:#include#includeint main

4、(void) double a1,a2,a3,ap,y1,y2,y3,yp,c1,c2,m; double j3; int i,h=1; void finding(double a3); finding(j); a1=j0; a2=j1; a3=j2; m=; 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=*(a1+a3-c1/c2); yp=f(ap); if(fabs(y2-yp)/y2)0) i

5、f(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; elsea1=ap;y1=yp; double x,y; if(y2y0) h=-h; a2=a0;y2=y0; do a0=a1;a1=a2; y0=y1;y1=y2; a2=a1+h;y2=f(a2); h=2*h; while(y2=1;i+) a2=a1+h;y2=f(a2); if(y2=y1) break; h=2*h; a0=a1;y0=y1; a1=a2;y1=y2; return;运行过程及

6、结果:a*=y*=4.坐标轮换法源程序:#include #include #include float fun1(float x,float a,float b) float y; y=x+a*b; return y; float fun2(float x,float y) float z; z=4*(x-5)*(x-5)+(y-6)*(y-6); return z; main() float d1003,x1003,xx3,ax1003; float a1,a2,a3,h,t,y1,y2,y3,e,a,b,l,fi; int i,k; printf(输入初始点坐标n); scanf(%f%

7、f,&x01,&x02); e=; l=; x21=x01; x22=x02; k=0; k-; do x01=x21; x02=x22; k+; for(i=1;iy1) h=-h; a3=a1; y3=y1; a1=a2; a2=a3; y1=y2; y2=y3; a3=a2+h; xi1=fun1(xi-11,di1,a3); xi2=fun1(xi-12,di2,a3); y3=fun2(xi1,xi2); do a1=a2; y1=y2; a2=a3; y2=y3; a3=a2+h; xi1=fun1(xi-11,di1,a3); xi2=fun1(xi-12,di2,a3); y3

8、=fun2(xi1,xi2); while(y3a3;) t=a3; a3=a1; a1=t; t=y1; y3=y1; y1=t; a=a1; b=a3; a1=b-l*(b-a); a2=a+l*(b-a); xi1=fun1(xi-11,di1,a1); xi2=fun1(xi-12,di2,a1); y1=fun2(xi1,xi2); xi1=fun1(xi-11,di1,a2); xi2=fun1(xi-12,di2,a2); y2=fun2(xi1,xi2); if(be;) if(y1=y2) a=a1; a1=a2; y1=y2; a2=a+l*(b-a); xi1=fun1(

9、xi-11,di1,a2); xi2=fun1(xi-12,di2,a2); y2=fun2(xi1,xi2); else b=a2; a2=a1; y2=y1; a1=b-l*(b-a); xi1=fun1(xi-11,di1,a1); xi2=fun1(xi-12,di2,a1); y1=fun2(xi1,xi2); else for(;fabs(b-a)/b)=e|fabs(y2-y1)/y2)=e;) if(y1=y2) a=a1; a1=a2; y1=y2; a2=a+l*(b-a); xi1=fun1(xi-11,di1,a2); xi2=fun1(xi-12,di2,a2); y

10、2=fun2(xi1,xi2); else b=a2; a2=a1; y2=y1; a1=b-l*(b-a); xi1=fun1(xi-11,di1,a1); xi2=fun1(xi-12,di2,a1); y1=fun2(xi1,xi2); axki=*(a+b); xi1=fun1(xi-11,di1,axki); xi2=fun1(xi-12,di2,axki); while(sqrt(pow(x21-x01),2)+pow(x22-x02),2)=1e-6); xx1=x21; xx2=x22; fi=fun2(xx1,xx2);printf(最优解为nx1*=%fnx2*=%fnf*

11、=%fnk=%dn,xx1,xx2,fi,k); 运行过程及结果:输入初始点坐标89最优解为x1*=x2*=f*=k=25.随机方向法源程序:#include#include#includefloat f(float x,float y) float z; z=(x-2)*(x-2)+(y-1)*(y-1); return z;float g1(float x,float y) float z; z=x*x-y; return z;float g2(float x,float y) float z; z=x+y-2; return z; void main() int i,j; float k

12、=8,c=,a0=-3,b0=3,a1=-3,b1=3; float x10,x010,xl10,e10,r10,d10,h,fl,f0,fx; while(g1(x00,x01)0|g2(x00,x01)0) x00=a0+(rand()/*(b0-a0); x01=a1+(rand()/*(b1-a1); fl=f(x00,x01); f0=f(x00,x01); while(1) h=; j=1; r0=-1+(rand()/*(1-(-1); r1=-1+(rand()/*(1-(-1); e0=r0/sqrt(r0*r0+r1*r1); e1=r1/sqrt(r0*r0+r1*r1)

13、; x0=x00+h*e0; x1=x01+h*e1; if(g1(x0,x1)=0&g2(x0,x1)=0) fx=f(x0,x1); if(fxfl) fl=fx; for(i=0;i2;i+) di=ei;xli=xi; while(j=k) j+; r0=-1+(rand()/*(1-(-1); r1=-1+(rand()/*(1-(-1); e0=r0/sqrt(r0*r0+r1*r1); e1=r1/sqrt(r0*r0+r1*r1); x0=x00+h*e0; x1=x01+h*e1; if(g1(x0,x1)=0&g2(x0,x1)=0) fx=f(x0,x1); if(fxf

14、l) fl=fx; for(i=0;i0|g2(x0,x1)0) break; fx=f(x0,x1); if(fxfl) fl=fx; else break; do x0=x0-h*d0; x1=x1-h*d1; h=*h; if(h0|g2(x0,x1)0) continue; fx=f(x0,x1); while(fx=fl); if(fabs(f0-fx)/f0)=c) x00=x0; x01=x1; fl=fx; f0=fx; else break; printf(输出最优解为nx1*=%f,x2*=%f,y*=%fn,x0,x1,fx);运行过程及结果:输出最优解为x1*=,x2*

15、=,y*=6.四杆机构优化设计源程序:#include#include#include#define Pai int g(float l1,float l2) if(-l1=0) &(-l2=0) &(6-l1-l2=0) &(1-l2-4=0) &(l2-l1-4=0) &(l1*l1+l2*l1*l2-16=0) &(36-l1*l1-l2*l1*l2=0) return (1); else return (0);float fun(float x02) floatf, a31,b31,r31,p31,q31,w31,x12; int i; p0=acos(1+x00)*(1+x00)-x

16、01*x01+25)/(10+10*x00); q0=acos(1+x00)*(1+x00)-x01*x01-25)/(10*x01); f=0; for(i=1;i=30;i+) pi=p0+(Pai/60)*i; ri=sqrt(26-10*cos(pi); ai=acos(ri*ri+x01*x01-x00*x00)/(2*ri*x01); bi=acos(ri*ri+24)/(10*ri); qi=Pai-ai-bi; wi=q0+(2*(pi-p0)*(pi-p0)/(3*Pai); f=f+(Pai/60)*(qi-wi)*(qi-wi)*(pi-pi-1); return f;v

17、oid main() float a,q,f,fl,f0,l2,z2,d0100,d1100,x2,xi2,fx,m0,m1,e; int i,j,n,k; printf(输入精度); scanf(%f,&e); doz0=0+5*(rand()/; z1=0+5*(rand()/; while(g(z0,z1)=0); for(i=0;i=99;i+) d0i=-1+2*(rand()/; for(j=0;j=99;j+) d1j=-1+2*(rand()/; f0=fun(z); fl=fun(z);ss: a=; for(i=0,j=0;i=99&j=99;i+,j+) n=1/sqrt

18、(d0i)*(d0i)+d1j*d1j); d0i=n*d0i; d1j=n*d1j; x0=z0+a*d0i; x1=z1+a*d1j; if(g(x0,x1)=1) f=fun(x); if(ffl) fl=f; m0=d0i; m1=d1j; l0=x0; l1=x1; x0=l0;x1=l1;doa=*a; x0=x0+a*m0; x1=x1+a*m1; if(g(z0,z1)=0) break; f=fun(x); if(ffl) fl=f; else break; while(g(z0,z1)=1); do x0=x0-a*m0; x1=x1-a*m1; a=*a; if(a=fl); if(fabs(f0-f)/f0)e) xi0=x0;xi1=x1; fx=f; printf(最优解为nx1*=%fnx2*=%fnfx=%fn,xi0,xi1,fx); else f0=f; fl=f; z0=x0; z1=x1; goto ss; 运行过程及结果:输入精度最优解为x1*=x2*=fx=

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1