已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计性实验报告课程名称: 最优化 实验名称: 牛顿法 实验地点: 指导老师: 实验时间: 提交时间: 班级: 姓 名: 座号: 一、实验目的和要求 1 掌握非线性方程的极小点基本求解算法;2 通过实例掌握用MATLAB或C语言求非线性方程的极小点方法;3 编程实现2种或以上算法并进行比较掌握牛顿法原理,并能够用程序实现二、实验环境、内容和方法1写出非线性方程的极小点基本求解算法的程序框架2.用C语言或matlab编写实现所设计算法3. 构造一个非线性方程,用所设计的程序实现,比较各个算法的迭代速度,求解的精度,运行的时间。另改变初值,分析初值对解的影响。4. 可采用二分法,Newton迭代,黄金分割法。编制程序,用牛顿迭代法、二分法、黄金分割法三种不同的方法求解函数 的最优解。 求解区间为 -8,8解法一:二分法在C+ 软件中输入如下程序:#includeusing namespace std;double f(double x)return x*x*x*x-4*x*x*x-6*x*x-16*x+4;int main()double left=-8;double right=8;double mid;while(right-left)0.005)mid=(left+right)/2;if(f(mid)=0)break;if(f(mid)*f(left)0)left=mid;elseright=mid;coutmidendl; system(pause);return 0;运行程序的结果为:我们知道,在极小点处,并且当时,函数时递减的,即;而当时,函数递增,即。如果找到一个区间,具有性质,则在之间必有的极小点,并且。 为了找到,我们取,若,则在区间中有极小点。这时以作为新的区间;若,则在中有极小点,因此以作为新的区间。继续这个过程,逐步将区间换小,当区间充分小时,即可取到极小点的近似。解法二:牛顿迭代法在C+ 软件中输入如下程序:#include #include #define eps 0.01 double fun(double x) return x*x*x*x-4*x*x*x-6*x*x-16*x+4; double diff_fun(double x) return 4*x*x*x-12*x*x-12*x-16; double diff_2_fun(double x) return 12*x*x-24*x-12;double diff_3_fun(double x) return 24*x-24; double newton(double a,double b) double result = (a+b)/2; double t = 0.0; while(true) t = result - (diff_fun(result)/diff_2_fun(result); if(fabs(t-result) eps) return result; else result =t; int main() double a =0.0; double b =6.0; double x= newton(a,b); cout求解的结果是 x = xendl; cout此时f(x) = fun(x)endl; return 0; 输出程序得到方程的最优解为: 当输入初值为,当=-156时,求出此时方程的根为=4.00066。我们知道输入不同的初值,在不同的迭代次数得到方程的解是不一样的。由于牛顿法是一种函数逼近法,它的基本思想是,在迭代点附近用二阶泰勒多项式近似目标函数,进而求出极小点的估计值。在一定条件下,这个点列收敛于最优解且具有二阶收敛速度。 运用牛顿法时,初值点的选择显得十分重要。如果初始点靠近极小点,则收敛可能很快;如果收敛点原理极小点,则迭代产生的点列还有可能不收敛于极小点。解法三:黄金分割法在C+软件中输入如下程序:#include #include double f(double x);/函数声明/主函数void main() double a=-8,b=8,e=0.01; double x1=0,x2=0,x3=0,f1=0,f2=0,f3=0; x1=a+0.382*(b-a); x2=a+0.618*(b-a); f1=f(x1); /调用f函数 f2=f(x2); /调用f函数/在没有达到误差限情况下就循环 while(fabs(a-b)=e) if(fabs(f1-0)fabs(f2-0) b=x2;x2=x1;f2=f1;x1=a+0.382*(b-a);f1=x1*x1*x1*x1-4*x1*x1*x1-6*x1*x1-16*x1+4; else a=x1; x1=x2; f1=f2; x2=a+0.618*(b-a); f2=x2*x2*x2*x2-4*x2*x2*x2-6*x2*x2-16*x2+4; x3=(a+b)/2;f3=f(x3); cout方程为:f(x)=x*x*x*x-4*x*x*x-6*x*x-16*x+4endl; coutendl; cout误差限为:e=0.01endl; coutendl; cout方程的根为: x=x3endl; coutendl; cout方程的值为:f=f3endl; coutendl;/定义函数double f(double x) double y; y=x*x*x*x-4*x*x*x-6*x*x-16*x+4; return y;结果如下图所示: 0.618法适用于单峰函数,即在所论区间a,b上,函数只有一个极小值点 在极小值得左边,函数单调下降;在极小值得右边,函数单调上升。但在实际问题中,目标函数在其定义域内不一定是单峰的,因此需要先确定单峰区间,然后再使用0.618法的计算公式。在现有的0.168法的程序中,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年二手车买卖安全合同范本
- 2025建筑工程材料设备租赁合同范本
- 2025企业办公房屋租赁合同模板
- 2025关于货车转让合同的范本
- 2025企业注册设备租赁合同
- 西安工业大学《材料专业基础实验(2)》2024-2025学年第一学期期末试卷
- 2025租房合同范本样式
- 2025-2030中国漂洗助剂行业并购重组案例与资本运作模式解析
- 西点师裱花考试题及答案
- 2025-2030中国液体化工物流标准化体系建设现状与实施路径报告
- 自然灾害后的心理调适指南
- 客源合作协议书范本
- 2021年新《经济法基础》-第10章-税收征收管理法律制度
- 眩晕综合征护理常规
- 质量管理体系文件培训
- 机械原理 课件 第4章 连杆机构及其设计
- 飞行体验游旅行合同
- 《急性心力衰竭急救》课件
- 《结直肠癌外科学》课件
- 2025年江苏南京鼓楼城市管养集团有限公司招聘笔试参考题库含答案解析
- 消毒供应质量控制指标(2024年版)
评论
0/150
提交评论