实 验 报 告
课程名称: 计算方法
院 系: 数学科学系
专业班级:
学 号:
学生姓名:
指导教师:
开课时间:2012至2013学年第一学期
一、学生撰写要求
按照实验课程培养方案的要求,每门实验课程中的每一个实验项目完成后,每位参加实验的学生均须在实验教师规定的时间内独立完成一份实验报告,不得抄袭,不得缺交。
学生撰写实验报告时应严格按照本实验报告规定的内容和要求填写。字迹工整,文字简练,数据齐全,图表规范,计算正确,分析充分、具体、定量。
二、教师评阅与装订要求
1.实验报告批改要深入细致,批改过程中要发现和纠正学生实验报告中的问题,给出评语和实验报告成绩,签名并注明批改日期。实验报告批改完成后,应采用适当的形式将学生实验报告中存在的问题及时反馈给学生。
2.实验报告成绩用百分制评定,并给出成绩评定的依据或评分标准(附于实验报告成绩登记表后)。对迟交实验报告的学生要酌情扣分,对缺交和抄袭实验报告的学生应及时批评教育,并对该次实验报告的分数以零分处理。对单独设课的实验课程,如学生抄袭或缺交实验报告达该课程全学期实验报告总次数三分之一以上,不得同意其参加本课程的考核。
3.各实验项目的实验报告成绩登记在实验报告成绩登记表中。本学期实验项目全部完成后,给定实验报告综合成绩。
4.实验报告综合成绩应按课程教学大纲规定比例(一般为10-15%)计入实验课总评成绩;实验总评成绩原则上应包括考勤、实验报告、考核(操作、理论)等多方面成绩;
5.实验教师每学期负责对拟存档的学生实验报告按课程、学生收齐并装订,按如下顺序装订成册:实验报告封面、实验报告成绩登记表、实验报告成绩评定依据、实验报告(按教学进度表规定的实验项目顺序排序)。装订时统一靠左侧按“两钉三等分”原则装订。
第二篇:实验1 计算方法
《计算方法》实验报告
学 院: 计算机学院
专 业: 计算机科学与技术
指导教师: 爨莹
班级学号: 计1202 201207010229
姓 名: 图尔荪托合提
实验一 非线性方程的迭代数值解法
1、 实验目的:
1) 熟悉用牛顿迭代法解非线性方程和弦截法求解非线性方程的过程。
2) 编程实现牛顿迭代法、弦截法求非线性方程的根。
2、 实验要求:
1) 认真分析题目的条件和要求,选择适当的解决方案和算法;
2) 编写上机实验程序,作好上机前的准备工作;
3) 上机调试程序,并试算各种方案,记录计算的结果(包括必要的中间结果);
4) 分析和解释计算结果;
5) 按照要求书写实验报告;
3、 实验内容:
1)用牛顿迭代法求解的根,取初始值为10。
2) 用弦截法求解数学方程。
4、题目、原理、程序及结论:
(1)牛顿迭代法解非线性方程:用牛顿法求解的根,取初始值为10。
原理:
牛顿迭代法:设r是方程f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x轴交点的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r的二次近似值。重复以上过程,得r的近似值序列,其中x(n+1)=x(n)-f(x(n))/f'(x(n)),称为r的n+1次近似值,这就是牛顿迭代法的原理。
程序:
#include <stdio.h>
#include <math.h>
float f(float x)
{ return x*x*x-155; }
float f1(float x)
{ return 3*x*x; }
void main()
{ float eps,x0,x1=10;
printf("输入精度为: ");
scanf("%f",&eps);
printf(" x值 \t 误差\n");
do
{ x0=x1;
x1=x0-f(x0)/f1(x0);
printf("x=%f ",x1);
printf("误差=%f\n",x1-x0);
}while(fabs(x1-x0)>eps);
printf("\nx的近似值为x=%f\n",x1);
}
运行结果:
(2)用弦截法求解数学方程:
原理:
弦截法:设方程f(x) = 0的根在两个数x1,x2之间,连接这两点所对应的函数值,连线与x轴的交点为新的x,若同号,则x当作新x1,将新的x1与x2连接,如此循环,如果异号,则把x当作新的x2,将x1与新的x2连接,如此循环,直到满足误差要求求出解,这就是弦截法的原理。
程序:
单点弦截法:
#include <stdio.h>
#include <math.h>
float f(float x)
{
return 0.002*9.81-1.4*1e-5*x*sqrt(x)-1.15*1e-5*x*x;
}
void main()
{
float eps,x0,x1,x;
printf("请输入精度: ");
scanf("%f",&eps);
printf("请输入初始值: ");
scanf("%f,%f",&x0,&x1);
x=x0-((x1-x0)/(f(x1)-f(x0))*f(x0));
printf(" x值 \t 误差\n");
while(fabs(x-x1)>eps)
{
x1=x;
x=x0-((x1-x0)/(f(x1)-f(x0))*f(x0));
printf("x=%f ",x);
printf("误差为%f \n",x-x1);
}
printf("\n近似值x= %f\n",x);
运行结果:
双点弦截法
#include <stdio.h>
#include <math.h>
float f(float x)
{
return 0.002*9.81-1.4*1e-5*x*sqrt(x)-1.15*1e-5*x*x;
}
void main()
{
float eps,x0,x1,x;
int i=0;
printf("请输入精度: ");
scanf(" %f",&eps);
printf("请输入初始值:");
scanf("%f,%f",&x0,&x1);
printf(" x值 \t 误差\n");
for(i;fabs(x1-x0)>=eps;i++)
{
x=(x0*f(x1)-x1*f(x0))/(f(x1)-f(x0));
printf("%f ",x);
x0=x1;x1=x;
printf(" 误差=%f\n",x1-x0);
}
printf("\n近似值x=%f\n",x);
}
运行结果:
5、实验体会:
这是计算方法的第一次上机,在这次上机中我发现了自己存在着很多问题,比如对计算方法的编程不熟练,搞不清实验目的,编写的程序需要很多次的改动才能运算出结果,发现了自己的动手能力差点儿。有些语句不熟练,没有学好C语言程序设计。总之在以后的上机课上我会好好的体会上机编程的方法。努力去做好下次试验。