计算方法程序_第1页
计算方法程序_第2页
计算方法程序_第3页
计算方法程序_第4页
计算方法程序_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、对分法1、#include"math.h"main() float a3=-3.0,1.0,0.0,b3=-2,0,1,c3;float f(float x);int i;for(i=0;i<3;i+)do ci=(ai+bi)/2.0; if(f(ci)=0) exit(0);else if(f(ci)*f(ai)<0) bi=ci; else ai=ci; while(bi-ai)>1e-5); ci=ai; printf("the roots are:"); for(i=0;i<3;i+)printf("%f&

2、quot;,ci);printf("2.000000");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); 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

3、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、用对分法求出方程x-2x-4x-7=0在区间【3,4】内的根,精度要求为10。#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);/*找到方

4、程的根*/ else if(f(c)*f(a)<0) b=c; else a=c; while(b-a)>1e-5);printf("the root is %f",a);float f(float x)float y;y=x*x*x-2*x*x-4*x-7;return(y);对分法的算法:扫描法的算法:4、对分法和扫描结合求方程x-5x+x+2=0的实根的上、下界,实现根的隔离,并用对分法求出所有的实根,精度要求为10。此方程的4个实根分别为:root=2.246979 root=0.554956 root=0.801941 root=2.000000#in

5、clude "math.h"float f(float x) float y;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,p5,q5,n;scanf("%f%f",&a,&b) ;x=a; while(x<b) if(f(x)*f(x+h)<=0) pi=x;qi=x+h;i=i+1;printf("%f,%fn", pi, qi); x=x+h; n=i; for(i=0;i<n;i+) a=pi;b=

6、qi; while(b-a>1e-5) c=(a+b)/2; if(f(c)=0) printf("%fn",c);exit(0); else if(f(a)*f(c)<0) b=c; else a=c; printf("%fn",c) ; 二、秦九韶算法使用秦九韶算法计算多项式的值ax+ax+ax+a 例如计算3x+2x+1,当x=-1时值为2。main()float aa20,y,x; int i,n;printf("input duo xiang shi ci shu n:n" ) ;scanf("%d&q

7、uot;,&n);printf("input duo xiang shi de xi shun");for(i=0;i<=n;i+) scanf("%f",&aai);printf("input xn");scanf("%f",&x);y=aa0;for(i=1;i<=n;i+) y=y*x+aai;printf("pn=%fn",y);秦九韶算法:三、牛顿法1、编写牛顿法求方程根的通用程序,精度要求为10。(x-x-2x-3=0 初值 x=2)#includ

8、e"math.h"main()float f(float x);float fd(float x);float x,x0,x1;x1=2.0;do x0=x1; x1=x0-f(x0)/fd(x0); while(fabs(x1-x0)>1e-5);printf("the root is%fn",x1);float f(float x)return x*x*x-x*x-2*x-3;float fd(float x)return 3*x*x-2*x-2;2、用牛顿法求a的立方根,精度要求为0.000005。#include"math.h&q

9、uot;main()double x0,x1;int a;printf("input an");scanf("%d",&a);if(a=0)printf("a=0n");exit(0);x1=a;do x0=x1; x1=x0-(x*x*x-a)/(3*x*x); while(fabs(x1-x0)>=0.5e-5);printf("the root is%fn",x1);printf("root=%fn",x1);3、用牛顿法求方程x-e=0(x-exp(-x)=0)在1附近的根

10、,精度要求为0.00001。#include"math.h"main()float x0,x1;x1=1.0;do x0=x1;x1=x0-(x-exp(-x)/(1+exp(-x);while(fabs(x1-x0)>1e-5);printf("the root is%fn",x1);牛顿法的算法:四、列主元高斯消元法(通用程序)#include"math.h"#define M 3#define N 3main()float aMN+1,xN,temp,l,s;int i,j,k,r;printf("please

11、input the date:n");for(i=0;i<M;i+) for(j=0;j<N+1;j+) scanf("%f",&aij);for(k=0;k<N-1;k+) r=k; for(i=k+1;i<=M-1;i+) if(fabs(aik)>fabs(ark) r=i; if(ark=0) printf("QYn"); exit(0); else if(r!=k) for(j=k;j<=N;j+) temp=akj; akj=arj; arj=temp; for(i=k+1;i<=N

12、-1;i+) l=aik/akk;for(j=k+1;j<=N;j+) aij=aij-l*akj; for(k=N-1;k>=0;k-) s =0.0; for(j=k+1;j<=N-1;j+) s = s +akj*xj; xk=(akN- s)/akk; for(i=0;i<=N-1;i+)printf("x%d=%fn",i,xi); 列主元高斯消元法的算法:五、LU分解法用LU分解法解线性方程组,系数矩阵由二维数组a给出,右端由b数组给出。#include"math.h"main()int i,j,k,m,n=4;flo

13、at t;float b4=1,1,-1,-1;float a44=4,3,2,1,3,4,3,2,2,3,4,3,1,2,3,4;for(k=0;k<n;k+) for(j=k;j<n;j+) t=0; for(m=0;m<=k-1;m+) t=t+akm*amj; akj=akj-t; for(i=k+1;i<n;i+) t=0; for(m=0;m<=k-1;m+) t=t+aim*amk; aik=(aik-t)/akk; for(i=0;i<n;i+) t=0; for(j=0;j<=i-1;j+) t=t+aij*bj; bi=bi-t;

14、for(i=n-1;i>=0;i-) t=0; for(k=i+1;k<n;k+) t=t+aik*bk; bi=(bi-t)/aii; for(i=0;i<n;i+) printf("%10.4f",bi);LU分解法的算法:六、雅可比迭代法1、通用程序#define N 4#include"math.h"float cha(x,y)float xN,yN;float z;int i,k;z=fabs(y0-x0);for(i=1;i<N;i+)if(fabs(yi-xi)>z) z=fabs(yi-xi);return

15、(z);main()float aNN,bN,xN,yN,h;int i,j,k;float t=0,s;for(i=0;i<N;i+) for(j=0;j<N;j+) scanf("%f",&h); aij=h; for(i=0;i<N;i+) scanf("%f",&h); bi=h;yi=0; for(i=0;i<N;i+) if(aii=0) printf("QIYI");exit(0); printf("Jacobin"); for(k=1;k<=30;k+)

16、 for(i=0;i<N;i+) xi=yi; for(i=0;i<N;i+) t=0; for(j=0;j<N;j+) if(j!=i) t=t+aij*xj; yi=(bi-t)/aii; if(cha(x,y)<1e-6) printf("xunhuancishu:k=%dn",k); for(i=0;i<N;i+) printf("%10f",xi);printf("n"); break; if(k>30)printf("fasannn");2、实验书第4题#includ

17、e"math.h"float cha(x,y)float x3,y3;float z;int i,k,n=3;z=fabs(y0-x0);for(i=1;i<n;i+)if(fabs(yi-xi)>z) z=fabs(yi-xi);return (z);main()float a33=10,-2,-1,-2,10,-1,-1,-2,5;float b3=3,15,10,y3=0,0,0,x3;float t=0,s;int i,j,k,n=3;printf("Gauss-Seideln");for(k=1;k<=30;k+) for(i

18、=0;i<n;i+) xi=yi; for(i=0;i<n;i+) t=0; for(j=0;j<n;j+) if(j!=i) t=t+aij*xj; yi=(bi-t)/aii; if(cha(x,y)<1e-6) printf("xunhuancishu:k=%dn",k); for(i=0;i<n;i+) printf("%10f",yi); printf("n"); break; if(k>30)printf("fasannn");七、高斯-塞德尔迭代法1、通用程序#de

19、fine N 3#include"math.h"float cha(x,y)float xN,yN;float z;int i,k;z=fabs(y0-x0);for(i=1;i<N;i+) if(fabs(yi-xi)>z) z=fabs(yi-xi);return (z);main()float aNN,bN,xN,yN,h;int i,j,k;float t=0,s;for(i=0;i<N;i+) for(j=0;j<N;j+) scanf("%f",&h); aij=h; for(i=0;i<N;i+) sc

20、anf("%f",&h); bi=h;xi=0; for(i=0;i<N;i+) if(aii=0) printf("QIYI");exit(0); printf("Gauss-Seideln"); for(k=1;k<=30;k+) for(i=0;i<N;i+) yi=xi; for(i=0;i<N;i+) t=0; for(j=0;j<N;j+) if(j!=i) t=t+aij*xj; xi=(bi-t)/aii; if(cha(x,y)<1e-6) printf("xun

21、huancishu:k=%dn",k); for(i=0;i<N;i+) printf("%10f",yi);printf("n"); break; if(k>30)printf("fasannn");2、实验书第4题#include"math.h"float cha(x,y)float x3,y3;float z;int i,k,n=3;z=fabs(y0-x0);for(i=1;i<n;i+)if(fabs(yi-xi)>z) z=fabs(yi-xi);return (z);

22、main()float a33=10,-2,-1,-2,10,-1,-1,-2,5;float b3=3,15,10,x3=0,0,0,y3;float t=0,s;int i,j,k,n=3;printf("Gauss-Seideln");for(k=1;k<=30;k+) for(i=0;i<n;i+) yi=xi; for(i=0;i<n;i+) t=0; for(j=0;j<n;j+) if(j!=i) t=t+aij*xj; xi=(bi-t)/aii; if(cha(x,y)<1e-6) printf("xunhuanci

23、shu:k=%dn",k); for(i=0;i<n;i+) printf("%10f",yi); printf("n"); break; if(k>30)printf("fasannn");雅可比迭代法的算法:高斯-塞德尔迭代法的算法:八、牛顿基本插值公式(实验书第三题)main()int i,k,n;float x20,y20,t,h,p;scanf("%d",&n);for(i=0;i<=n;i+)scanf("%f%f",&xi,&yi

24、);scanf("%f",&t);for(k=1;k<=n;k+) for(i=n;i>=k;i-) yi=(yi-yi-1)/(xi-xi-k); printf("%10.5f",yi); printf("n"); p=y0;h=1;for(i=1;i<=n;i+) h=h*(t-xi-1); p+=h*yi; printf("p=%fn",p);牛顿基本插值公式算法:九、Lagarange全程插值算法(实验书第一题)main()int i,k,n;float x20,y20,t,s,p

25、;p=0;scanf("%d",&n);for(i=0;i<=n;i+)scanf("%f%f",&xi,&yi);scanf("%f",&t);for(k=0;k<=n;k+)s=1;for(i=0;i<=n;i+) if(i!=k) s=s*(t-xi)/(xk-xi); p=yk*s+p; printf("%f",p);Lagarange全程插值算法:十、复合辛普森求积公式的算法1、编制复合Simpson公式求积分的通用程序,设N=8,试算dx、#includ

26、e"math.h"float f(float x) return 1/(x*x+1);main() int i; float a=0,b=1,h,x,s,T1,T2; h=b-a; T1=h*(f(a)+f(b)/2; do s=0; x=a+h/2; s=s+f(x); T2=T1/2+h*s/2; while(fabs(T2-T1)>1e-5); 十一、多项式型经验公式算法设实验数据如下:X0.10.20.30.40.50.60.7Y5.12345.30535.56845.93786.42707.07987.94493求其二次拟合多项式#define N 7#define m 2#include "math.h"main() int i,j,k; float xN+1=0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,d,l; float yN+1=0,5.1234,5.3053,5.5684,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论