资源描述:
《【精品】《数值分析》上机题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《数值分析》上机实习题秦九韶算法1.源程序#include#include〃输出文件指针FILE*stream=NULL;typedeffloat*pFloat;〃和丿IJ户交互输入多项式各系数boolInputParam(int&n,pFloat&a,float&x){cout«,嗪九韶算法”;cout«"请输入最高次数n:";cin»n;if(n<=0)returnfalse;a=newfloat[n+IJ;for(inti=0;i<=n;i++){cout«n请输入a[u«i«,,]:H;cin»a[i];}COUl
2、VV”请输入X的值:";cin»x;returntrue;)〃按照格式打卬多项式到文件中voidOutputTheMultinomial(intn.pFloata,floatx){fprintf(stream,H此多项式为:”);fprintf(stream,',P(x)=,');for(inti=n;i>=2;i—){fprintf(streain,"(%f)*x**%d+",a[i],i);}Q)rintf(stream;,(%f)*x+(%f),,,a[l],a[OJ);fprintf(stream,"x=%f,,,x);}〃根据多项式各系数及给定的x值
3、计算floatQinJiuShao(intn,pFloata,floatx)floatr=a[n];for(inti=n-l;i>=0;i—)r=x*r+a[i];}returnr;}〃计算第一题voidCalculate1(){fprintf(stream,”秦九韶计算结果l");intn=0;float乜=NULL;//指向存放多项式系数的指针floatx=0;charnext='Y';//和川户交互进行输入并计算while(next=='Y'IInext='y'){if(InputParam(n,a,x))(〃输出多项式OutputTheMultinomia
4、l(n,a,x);〃输出结果fprintf(stream,"计算结果为:P(%f)=%t,',x,QinJiuShao(n,a,x));if(a){delete[]a;a=NULL;))coutvv“是否进行下一次运算?(Y/N):“;cin»next;}}〃计算第二题voidCalculate2(){fprintf(stream,H^九韶计算结果2");〃多项式系数floata[]={2.0f,-3.36f,2.81f,-2.74f,-3.27f,0.22f};intn=5;floatx=0;〃按每次递增0.05计算for(inti=0;i<=20;i+
5、+)x=0.8+0.()5*i;〃输出多项式OutputTheMultinomial(n,a,x);〃输出结果fprintf(stream,u计算结果为:P(%f)=%fH,x,QinJiuShao(n,a,x));}}voidmain(){〃打开输出结果文件if((stream=fopen("result.txt","w"))==NULL){primf(“打不开输出文件n);return;}〃通过川户输入计算第一题Calculate1();〃通过循坏牛成x值计算第二题Calculate2();〃关闭文件if(stream)fclose(stream);}
6、1.输出结果秦九韶计算结果1此多项式为:P(x)=(7.540000)*x**4+(11.080000)*x**3+(3.820000)*x**2+(0.440000)*x+(-0.480000)x=3.250000计算结果为:P(3.25OOOO)=1262.865112此多项式为:P(x)=(2.790000)*x**4+(9.850000)*x**3+(14.150000)*x**2+(5.380000)*x+(7.240000)x=3.25OOOO计算结果为:P(3.250000)=823.586670此多项式为:P(x)=(9.360000)*x**4+(1
7、2.690000)*x**3+(l4.390000)*x**2+(0.750000)*x+(-0.940000)x=3.25(X)00计算结果为:P(3.2500(X))=1633.377319此多项式为:P(x)=(3.450000)*x**4+(-2.910000)*x**3+(3.710000)*x**2+(-6.750000)*x+(-2.380000)x=3.250000计算结果为:P(3.250000)=299.878632此多项式为:P(x)=(l2.780000)*x**4+(14.350000)*x**3+(17.190001)*x