


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验五 常用算法:枚举法 递推法 迭代法一、实验目的掌握枚举法,递推法、迭代法这3种常用算法。n个a二、实验内容1. 编程求和:s=a+aa+aaa+aaa,其中a是19中的一个数字。提示 令各项为b0,b1,b2,bn则b0 = a b1 = b010+a b2 = b110+a 即每一项由前一项乘以10加a递推得到,然后求和。2. 编程求出所有的“水仙花数”,所谓“水仙花数”是指一个三位数, 其各位数字的立方和等于该数本身,例如153是一个“水仙花数”,因为15313+53+33。要求采用枚举法。3. 范例:设函数f(x)定义在区间a,b上,f(x)连续且满足f(a) f(b)0,求f(x)在a,b上的根。采用割线法,迭代公式为:xi+1= xi+( xi-1- xi)/(f(xi)-f(xi-1)*f(xi)其代换规律为:首先用两端点函数值的绝对值较大者的对应点作为xi-1,较小者作为xi,即如果|f(a)|f(b)|,则将a赋给xi-1,将b赋给xi。用迭代公式得出xi+1,f(xi+1)。误差定义为:x =( xi-1- xi)/(f(xi)-f(xi-1)*f(xi)当x 或f(xi+1)=0则结束运算。否则用(xi,f(xi)代替(xi-1,f(xi-1),(xi+1,f(xi+1)代替(xi,f(xi),继续迭代。求解方程:x*lg(x)=1的实根的近似值,误差不超过0.001。提示令 f(x)=xlgx-1,则f(2)-0.3980,由此可知根在2与3之间。#include #include using namespace std;const max=30;double a=2,b=3,ep=0.001;int main()int maxit,j;double x1,x2,temp,f1,f2,dx; f1=a*log10(a)-1; f2=b*log10(b)-1;if(f1*f2=0)cout初值错!endl;return 0; if(fabs(f1)fabs(f2) x1=a; x2=b;else x1=b; x2=a; temp=f1; f1=f2; f2=temp; for(j=1;j=max;j+) dx=(x1-x2)*f2/(f2-f1);coutdx;temp=x2;x2=x2+dx;x1=temp;f1=f2;f2=x2*log10(x2)-1;couttx2endl; if(fabs(dx)ep)|(f2=0)cout方程的根为:x2endl;return 0; cout 迭代次数过多!endl;return 1;4. 范例:由0到4五个数字,组成五位数,每个数字用一次,但十位和百位不能为3(当然万位不能为0),输出所有可能的五位数。#includeusing namespace std;int main()int i,j,k,l,m,count=0;for(i=1;i=4;i+)for(j=0;j=4;j+)if(j=i) continue;for(k=0;k=4;k+)if(k=3|k=i|k=j) continue;for(l=0;l=4;l+)if(l=3|l=i|l=j|l=k) continue;for(m=0;m=4;m+)if(m=i|m=j|m=k|m=l) continue;coutijklmt;count+;if(count%5=0) coutendl; return 0;穷举法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论