计算机上机报告
更新时间:2024-05-04 15:28:01 阅读量: 综合文库 文档下载
计算方法上机实验报告
上课时间:2014-2015学年秋学期,6~14周
一.拉格朗日插值------------------------------------------------------1
二.牛顿插值------------------------------------------------------------3
三.改进欧拉法---------------------------------------------------------5
四.四阶龙格-库塔-----------------------------------------------------7
五.牛顿迭代------------------------------------------------------------9
六.复化Simpson公式------------------------------------------------11
七.Romberg算法------------------------------------------------------14
八. Seidel迭代法------------------------------------------------------17
九. Gauss列主元消去法----------------------------------------------20
一.拉格朗日插值 1.程序代码
#include
int i=0;
double a[10],b[10],L,L1,L2,L3,L4,x; cout<<\
for(i=0;i<4;i++) {
cin>>a[i]; }
cout<<\ for(i=0;i<4;i++) {
cin>>b[i]; }
cout<<\ cin>>x;
L1=(x-a[1])*(x-a[2])*(x-a[3])*b[0]/(a[0]-a[1])/(a[0]-a[2])/(a[0]-a[3]);
L2=(x-a[0])*(x-a[2])*(x-a[3])*b[1]/(a[1]-a[0])/(a[1]-a[2])/(a[1]-a[3]);
L3=(x-a[0])*(x-a[1])*(x-a[3])*b[2]/(a[2]-a[0])/(a[2]-a[1])/(a[2]-a[3]);
L4=(x-a[0])*(x-a[1])*(x-a[2])*b[3]/(a[3]-a[0])/(a[3]-a[1])/(a[3]-a[2]);
L=L1+L2+L3+L4; cout<<\}
void main() {
Lagrange(); cout< } 2.例子 3.运行结果 二.牛顿插值 1.程序代码 #include int n,i,j; double A[50][50],*x,*y; cout<<\请输入插值节点数:\ cin>>n; x=new double[n]; y=new double[n]; cout<<\请输入这\个插值节点(xi,yi):\ for(i=0;i<=n-1;i++) cin>>x[i]>>y[i]; double K=1,xx,N=0,P; for(i=0;i<=n-1;i++) { A[i][0]=x[i]; A[i][1]=y[i]; } for(j=2;j<=n;j++) for(i=1;i<=n-1;i++) { A[i][j]=(A[i][j-1]-A[i-1][j-1])/(A[i][0]-A[i-j+1][0]); } for(i=0;i<=n-1;i++) cout<<\输出第\阶差商为:\ cout<<\请输入预求值x=\ cin>>xx; for(i=0;i K*=xx-x[i]; N+=A[i+1][i+2]*K; P=A[0][1]+N; } cout<<\插值结果为:y=\ getch(); } 2.例子 3.运行结果 三.改进欧拉法 1.程序代码 #include double fun(double x,double y) { return(-0.9*y/(1+2*x)); } void main() { double a,b,*y,h,*x,yp,yc; int n,k; cout<<\常微分方程为y'=-0.9*y/(1+2*x)\ cout<<\其中0<=x<=1\ cout<<\初值为y(0)=1\ cout<<\请输入计算区间(a,b):\ cin>>a>>b; cout<<\请输入步长h:\ cin>>h; cout<<\请输入计算次数:\ cin>>n; y=new double[n]; x=new double[n]; cout<<\请输入初值y(0)=\ cin>>y[0]; x[0]=a; for(k=0;k<=n;k++) { yp=y[k]+h*fun(x[k],y[k]); yc=y[k]+h*fun(x[k]+h,yp); y[k+1]=0.5*(yp+yc); x[k+1]=x[k]+h; } cout<<\迭代结果为:\ for(k=0;k<=n;k++) cout<<\ getch(); } 2.例子 3.运行结果 四.四阶龙格-库塔 1.程序代码 #include double fun(double x,double y) { return(x-y); } void main() { double a,b,*y,h,x,k1,k2,k3,k4; int n,k; cout<<\常微分方程为y'=x-y\ cout<<\其中0<=x<=1\ cout<<\初值为y(0)=0\ cout<<\请输入计算区间(a,b):\ cin>>a>>b; cout<<\请输入步长h:\ cin>>h; cout<<\请输入计算次数:\ cin>>n; y=new double[n]; cout<<\请输入初值y(0):\ cin>>y[0]; x=a; cout<<\迭代法结果为:\ cout<<\ for(k=0;k<=n-1;k++) { k1=fun(x,y[k]); k2=fun(x+h/2,y[k]+k1*h/2); k3=fun(x+h/2,y[k]+k2*h/2); k4=fun(x+h,y[k]+k3*h); y[k+1]=y[k]+(h/6)*(k1+2*(k2+k3)+k4); cout<<\ x=x+h; } getch(); } 2.例子 3.运行结果 五.牛顿迭代法 1.程序代码(C++代码) #include using namespace std; double newtondiedai(double a,double b,double c,double d,double x); int main() { double a,b,c,d; double x=1.5; cout<<\请依次输入方程四个系数:\cin>>a>>b>>c>>d; x=newtondiedai(a,b,c,d,x); cout< double newtondiedai(double a,double b,double c,double d,double x) { while(abs(a*x*x*x+b*x*x+c*x+d)>0.000001) { x=x-(a*x*x*x+b*x*x+c*x+d)/(3*a*x*x+2*b*x+c); } return x; } 2.例子 3.运行结果 六.复化Simpson公式 1.程序代码(C++代码) #include double function1(double x)//被积函数 { double s; s=x/(4+x*x); return s; } double function2(double x)//被积函数 { double s; s=sqrt(x); return s; } double ReiterationOfSimpson(double a,double b,double n,double f(double x))//复化Simpson公式 { double h,fa,fb,xk,xj; h=(b-a)/n; fa=f(a); fb=f(b); double s1=0.0; double s2=0.0; for(int k=1;k xk=a+k*h; s1=s1+f(xk); } for(int j=0;j xj=a+(j+0.5)*h; s2=s2+f(xj); } double sn;//和 sn=h/6*(fa+fb+2*s1+4*s2);//复化Simpson公式 return sn; } main() {double a,b,Result,n; cout<<\请输入积分下限:\ cin>>a; cout<<\请输入积分上限:\ cin>>b; cout<<\请输入分割区间数n:\ cin>>n; cout<<\复化Simpson公式计算结果:\ Result=ReiterationOfSimpson(a, b, n,function1); cout< 2.例子 (I??06x4?x2dx(n?3)) 3.运行结果 七.Romberg算法 1.程序代码(C++代码) #include using namespace std; #define f(x) (4/(1+x*x)) #define epsilon 0.0001 #define MAXREPT 10 double Romberg(double aa,double bb) { int m,n; double h,x; double s,q; double ep; double *y =new double[MAXREPT]; double p; h=bb-aa; y[0]=h*(f(aa)+f(bb))/2.0; m=1; n=1; ep=epsilon+1.0; while((ep>=epsilon)&&(m for(int i=0;i p=(y[0] + h*p)/2.0; s=1.0; for(int k=1;k<=m;k++) { s=4.0*s; q=(s*p-y[k-1])/(s-1.0); y[k-1]=p; p=q; } p=fabs(q-y[m-1]); m=m+1; y[m-1]=q; n=n+n;h=h/2.0; } return (q); } int main() {double a,b; cout<<\积分,请输入积分范围a,b:\ cin>>a>>b; cout<<\积分结果:\ system(\ return 0; } 2.例子(I??1?014x2dx) 3.运行结果 八.Seidel迭代法 1.程序代码(C++代码) # include float a[3][3]={{10,-1,-2},{-1,10,-2},{-1,-1,5}}; float b[3]={7.2,8.3,4.2}; float x[3]={0,0,0}; float y[3]; float S(int m) {int n; float S=0; float y; for(n=0;n<3;n++) {if(m==n){} else {S+=a[m][n]*x[n]; } }y=(b[m]-S)/a[m][m]; return y; } void main() {int i; int F,T=1,k=1; do {F=0; if(T) {T=0;} else {k++; for(i=0;i<3;i++) {x[i]=y[i]; } } for(i=0;i<3;i++) {y[i]=S(i); } for(i=0;i<3;i++) {if(fabs(x[i]-y[i])>EPS) {F=1; } }printf(\ }while(((F==1)&&k!=max)); printf(\迭代次数:%d\\n\ for(i=0;i<3;i++) {printf(\} } ?10x1?x2?2x3?7.22.例子(???x1?10x2?2x3?8.3) ??x1?x2?5x3?4.2? 3.运行结果 九.Gauss列主元消去法 1.程序代码(C++代码) #include #define max_dimension 20 int n; static float a[max_dimension][max_dimension]; static float b[max_dimension]; static float x[max_dimension]; void main() {int i; int j; int d; int row; float temp; float known_items; float l[max_dimension][max_dimension]; printf(\请输入阶数:\scanf(\printf(\ printf(\请输入系数矩阵的值: \printf(\ for(i=0; i { printf(\输入第%d行的值:\ for (j=0; j scanf(\ } printf(\} printf(\请输入常数项的值: \for(i=0; i for(d=0; d for(i=d+1; i {if(fabs(a[i][d])>fabs(a[row][d])) row=i; } if(row!=d) {for(j=d; j temp=b[row]; b[row]=b[d]; b[d]=temp; } for(i=d+1; i {l[i][d]=-a[i][d]/a[d][d]; for (j=d; j {a[i][j]=a[i][j]+a[d][j]*l[i][d]; } b[i]=b[i]+b[d]*l[i][d]; } } printf(\ for (i=n-1; i>-1; i--) {known_items=0; for(j=1; j {known_items=known_items+a[i][i+j]*x[i+j]; } x[i]=(b[i]-known_items)/a[i][i]; } printf(\方程组的根为:\\n\\n\for(i=0; i printf(\printf(\getch(); } 2.例子 3.运行结果
正在阅读:
计算机上机报告05-04
2016-2022年中国物料搬运机械行业发展现状及十三五投资定位分析03-18
元空卦与罗盘的关系06-04
第六章 钢的热处理参考答案12-20
幼儿园卫生保健制度完整版05-24
党员思想汇报:加强党性修养01-05
基坑支护工程施工组织设计05-09
心理安全感综述06-08
液压传动系统试题 - 图文10-16
马概真题分章练习第六章答案10-03
- 清真菜谱
- 我国国民经济和社会发展十二五规划纲要(全文)
- 高三物理机械振动和机械波复习2
- 浙江省公路山岭隧道机械化装备应用指导手册 doc - 图文
- 2018届高三数学文科二轮复习:专题检测(九) 导数的简单应用
- 2015年上海市公务员录用考试《行政职业能力测验》试卷(B类)
- 七年级道德与法制下册
- 大班户外游戏教案
- 病虫害预警 - 图文
- 某养鱼场为了提高经营管理水平
- 汉中市勉县尧柏余热汽机规程 10
- 烹饪试卷
- 事业单位考试公共基础知识专项分类题库训练
- 语文:第2课 走一步,再走一步 课堂导学案(人教版 七上)
- 天汉使用手册
- 人教版小学三年级数学下册教学计划
- 房地产销售管理完全操作手册122页
- 2009年评审通过具有中学高级教师专业技术资格人员名单...
- 《15秋公共关系学》作业1
- 2017最新版监理公司三标一体管理手册
- 上机
- 计算机
- 报告
- Inversion(倒置法) 学生材料
- 博后基金体会
- 2012西南政法大学宪法专业考研——王人博宪法讲义
- LCS-600F系列测控装置说明书
- 《马克思主义基本原理概论》试卷一
- 基于蓝牙的家庭控制器设计
- 南京财经大学校内休闲茶吧营销策划书-储定稿
- 计算机组装与维修实验指导书 doc
- 留点空白1
- 清华大学《大学物理》期中考试题
- 2016年新能源汽车行业分析报告
- 【股票指标公式下载】-【通达信】主升猎股王(清仓、出货、高抛、
- 峰 源 乡- 丽水市莲都区政府门户网站
- 九年级历史上册材料分析题复习
- PPT密码解除等经典技巧看完你就是高手 - 图文
- 1010110110关于综合表彰菏泽市第二十二次社会科学
- LTE MIMO预编码、OFDM信号产生、资源块映射
- Oracle备份与恢复案例
- 16所高校发布在京高考招生计划
- 全新版大学英语综合教程 第二册 课文原文及翻译 (免费的哦 亲)