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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(广东工业大学实验报告.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

广东工业大学实验报告.docx

1、广东工业大学实验报告广东工业大学实验报告 应用数学 学院 09信息计算 专业 (2) 班 成绩评定_学号 3109008538 姓名 刘艳明 教师签名_实验 题目 P150E9 第 9 周 星期 五 第12节编写:用牛顿、平分、成功失败法、黄金分割法和进退法求函数f(x)的极小点的计算程序,并求解1.牛顿法: #includeusing namespace std;class Newtondouble x;double f;double e;public:Newton(double x1,double e1)x=x1;e=e1;f=x*x*x*x+-16*x*x*x+30*x*x+-24*x+

2、8;void set(double x1,double e1)x=x1;e=e1; f=3*x*x*x*x-16*x*x*x+30*x*x-24*x+8;double getfirstf(double x) return (12*x*x*x-48*x*x+60*x-24);double getsecondf(double x)return (36*x*x-96*x+60);int main()double x0=3;int i=0;Newton a=Newton(x0,0.01);double f1=a.getfirstf(x0);double f2=a.getsecondf(x0);doub

3、le x1=x0-f1/f2;while(x1-x0)0.01|(x0-x1)0.01) i+;x0=x1;a.set(x0,0.01); f1=a.getfirstf(x0); f2=a.getsecondf(x0); coutthe x0 is:x0endl; coutthe x1 is:x1endl; x1=x0-f1/f2;couteeeeeeeeeeeeeeeeeeeeendl;coutthe last x0 is:x0endl;coutthe last x1 is:x1endl;cout迭代次数为:iendl;return 0;2.平分法:#includeusing namespa

4、ce std;double f2(double l,double o,double v,double e);double a,b,eps,sita;int maxstep=30;double x30;int main() couta; coutendl; coutb; coutendl; couteps; coutendl; coutsita; coutendl; f2(a,b,eps,sita); return 0;double f2(double l,double o,double v,double e) for(int i=0;imaxstep;i+) xi=(a+b)/2; cout

5、a ,b endl x*=: xiendl0) b=xi; else a=xi; while(abs(df1)eps|abs(b-a)sita) coutendl x*= xi; return 0; 3.成功失败法#includeusing namespace std;double funtion1(double b,double u,double g);double funtion2(double x);double chong;double h;double eps;double maxstep=30;int main() coutchong; coutendl; cout0): ; ci

6、nh; coutendl; cout0) : ; cineps; coutendl; funtion1(chong,h,eps); return 0;double funtion1(double b,double u,double g) double x0=chong; double f0=funtion2(x0); for(int i=0;imaxstep;i+) double f1=funtion2(x0+h); / cout h= hendl; couti+1step x0= x0 f0= f0 f1= f1endl; if(f1f0) x0=x0+h; f0=f1; h=2*h; el

7、se if(abs(h)eps) coutchongchong: the answer is that you want 0.0 x* = x0endlMin f(x)=funtion2(x0); return 0; else h=-0.25*h; double funtion2(double x) double f2=x*x*x*x*x+2*x*x*x*x-4*x*x*x+x*x+x+2; return f2;4.黄金分割#includeusing namespace std;double goldivide(double c,double h,double o);double f(doub

8、le x);double a30;double b30;double u30;double v30;double eps;int maxstep=30;int main() couta0; coutb0; couteps; goldivide(a0,b0,eps); return 0;double goldivide(double c,double h,double o) u0=a0+(1-0.618)*(b0-a0); v0=a0+0.618*(b0-a0); for(int k=0;kmaxstep;k+) coutak= ak bk= bkendl; if(bk-ak)eps) doub

9、le x0=0.5*(bk+ak); coutk step needendlx0=x0; cout f(x0)=f(vk) ak+1=uk; bk+1=bk; uk+1=vk; vk+1=ak+1+0.618*(bk+1-ak+1); f(vk+1); else ak+1=ak; bk+1=vk; vk+1=uk; uk+1=ak+1+(1-0.618)*(bk+1-ak+1); f(uk+1);double f(double x) double f1=x*x*x*x*x+2*x*x*x*x-4*x*x*x+x*x+x+2; return f1;5.不确定精度一维搜索#includedoubl

10、e f(double x1,double x2);double f1(double x1,double x2);double f2(double x1,double x2);int xk2=-1,1;int sk2=1,1;double xk12;double c1=0.1;double c2=0.5;double a=0;double b;double r=1;int main() using namespace std; double fk=f(xk0,xk1); double gk2=f1(xk0,xk1),f2(xk0,xk1); double gkTsk=gk0*sk0+gk1*sk

11、1; coutfk=fk; cout gkTsk=gkTskendl; for(;) xk10=xk0+r*sk0; xk11=xk1+r*sk1; double fk1=f(xk10,xk11); double gk12=f1(xk10,xk11),f2(xk10,xk11); double gk1Tsk=gk10*sk0+gk11*sk1; coutr=r; cout f(k+1)=fk1; cout g(k+1)Tsk=gk1Tsk=-c1*r*gkTsk) if(gk1Tsk=c2*gkTsk) double rk=r; coutrk=: rk; cout x(k+1)=: (xk10

12、,xk11); return 0; else a=r;r=min(2*r,0.5*(r+b); else b=r;r=0.5*(r+a); double f(double x1,double x2) double zf=100*(x2-x1*x1)*(x2-x1*x1)+(1-x1)*(1-x1); return zf;double f1(double x1,double x2) double zf1=-400*(x2-x1*x1)*x1-2*(1-x1); return zf1;double f2(double x1,double x2) double zf2=200*(x2-x1*x1);

13、 return zf2;6.进退法#includeusing namespace std;double dilemma(double z,double c);double f(double x);double t30;double h;double a;double b;int maxstep=30;int main() coutt0; coutendlh; dilemma(t0,h); return 0;double dilemma(double z,double c) coutf(t0)=f(t0)endl; t2=t0+h; coutf(t2)=f(t2)f(t0) h=-h; for(;) t1=t0+h; f(t1); coutf(t1)=f(t1)endl; if(f(t1)=f(t0) h=2*h; t2=t0; t0=t1; else coutf(t0) the endendl; a=min(t1,t2); b=max(t1,t2); break; coutits the answer you want :oa,b; cout and t0=0.5*(a+b); return 0; double f(double x) double f1=x*x*x*x*x+2*x*x*x*x-4*x*x*x+x*x+x+2; return f1;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2