资源描述:
《计算方法及程序实现.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、对分法 1、#include"math.h" main() { float a[3]={-3.0,1.0,0.0},b[3]={-2,0,1},c[3]; float f(float x); int i; for(i=0;i<3;i++) {do{ c[i]=(a[i]+b[i])/2.0; if(f(c[i])==0) exit(0); else if(f(c[i])*f(a[i])<0) b[i]=c[i]; else a[i]=c[i]; } while((b[i]-a[i])>1e
2、-5); }c[i]=a[i]; printf("the roots are:"); for(i=0;i<3;i++) printf("%f",c[i]);printf("2."); } float f(float x) { float y; y=x*x*x-2*x*x-4*x-7; return(y); }3、对分部分函数调用(题目要求如2) #include "math.h" float f(float x) { float y; y=x*x*x-2*x*x-4*x-7; return(y);}
3、 float f1(float a ,float b) { float c; do{ c=(a+b)/2; if(f(c)==0) exit(0); else if(f(a)*f(c)<0) b=c; else a=c;} while((b-a)>1e-5); return(a);} main() { float a=3.0,b=4.0,s; s=f1(a,b); printf("the root is %f",s);} 2、用对分法求出方程x3-2x2-4x
4、-7=0在区间【3,4】内的根,精度要求为105-。 #include"math.h" main() { float a=3.0,b=4.0,c; float f(float x); do{ c=(a+b)/2.0; if(f(c)==0){printf("the root is %f",c); exit(0);/*找到方程的根*/ } else if(f(c)*f(a)<0) b=c; else a=c; } while((b-a)>1e-5); printf("
5、the root is %f",a); } float f(float x) { float y; y=x*x*x-2*x*x-4*x-7; return(y); }对分法的算法: 扫描法的算法:4、对分法和扫描结合 求方程x4-5x2+x+2=0的实根的上、下界,实现根的隔离,并用对分法求出所有的实根,精度要求为105-。此方程的4个实根分别为:root=2. root=0. root=0. root=2. #include "math.h" float f(float x) { float y;
6、 y=x*x*x*x-5*x*x+x+2; return y; } main() {float a,b,c; int i=0; float x,h=0.001,p[5],q[5],n; scanf("%f%f",&a,&b) x=a; while(x
7、or(i=0;i1e-5) { c=(a+b)/2; if(f(c)==0) {printf("%f",c);exit(0);} else if(f(a)*f(c)<0) b=c; else a=c; } printf("%f",c) } } 二、秦九韶算法 使用秦九韶算法
8、计算多项式的值a0xn+a1x1-n+……a1-nx+an 例如计算3x2+2x+1,当x=-1时值为2。 main() { float aa[20],y,x; int i,n; printf("input duo xiang shi ci shu n:" ) scanf("%d",&n); printf("input