太原理工大学数值实验报告[精品].doc
文本预览下载声明
(实验报告的首页)
本科实验报告
课程名称: 计算机数值方法
实验项目: 方程求根、解方程、迭代求解、插值、拟合
实验地点: 逸夫302
专业班级: 学号:
学生姓名:
指导教师: 李志
2013年 04 月 23 日
学生姓名 实验成绩 实验名称 实验一 方程求根 实验目的和要求(必填) (1) 培养理论联系实际的思路,训练综合运用已经学过的理论和实际知识去分析和解决实际问题的能力。
(2) 帮助学生全面消化已学的相关课程内容,深刻理解计算数值方法课程的内涵,培养使用电子计算机进行科学计算和解决问题的能力。
(3) 进行基本技能训练和巩固。使学生得到选择算法、编写程序、分析数值结果、写数值试验报告、课堂讨论等环节的综合训练。 实验内容和原理(必填) 内容:熟悉使用二分法、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。
原理:增值法基本思想是,从初始值x0开始,按规定的一个初始步长h来增值。Xn+1=Xn+h(
n=0,1,2,……).在增值的计算过程中可能遇到三种情形:
?(Xn+1)=0,此时Xn+1即为方程的根x*.
?( Xn )和?(Xn+1)同符号,这说明区间[Xn,Xn+1]内无根。
?(Xn)和?(Xn+1)异号,即有?(Xn)* ?(Xn+1)0
此时,当? (x)在区间[Xn,Xn+1]上连续时,方程?(x)=0在[Xn,Xn+1]一定有根。
二分法:设?(x)在区间[a,b]上连续,且?(a)*?(b)0,则由连续函数性质可知,方程?(x)=0在(a,b)内至少有一实根。
主要仪器设备 笔记本计算机 实验记录(写出实验内容中的程序代码和运行结果)(可分栏或加页)
Y //二分法方程求根
#include stdafx.h
#include iostream
#include math.h
using namespace std;
class equation
{
public:
equation();
double bsolve();
double value(double );
private:
double var[10],cof[10];
int k;
double low,high,mid,bor;
};
/*构造函数,即输入方程,x,y,bor*/
equation::equation()
{
int i;
coutplease input the equation number:endl;
cink;
coutPlease input the var and cof: endl;
for(i=0;ik;i++)
{
cout[;
cinvar[i];
cout];
coutx^;
cout[;
cincof[i];
cout] + ;
}
coutPlease input the low and high vaulty: endl;
coutthe low: ;
cinlow;
coutthe high: ;
cinhigh;
coutPlease input the border vaulty: endl;
cinbor;
}
/*二分求解过程*/
double equation::bsolve()
{
double a=0,b=0,c=0;
do
{
a=value(low); //求出a 的值
b=value(high); //求出b 的值
mid=(low+high)/2; //求中间值
c=value(mid);
if(c==0) //若c=0则输出mid
return mid;
if(c*b0)
a=c;
else
b=c;
}while(b-aborb-a-bor);//当所求的x在要求精度范围内时输出x
return mid;
};
/*求出f(x)的值*/
double equation::value(double x)
{
int i;
double y=0;
for(i=0;ik;i++)
{
y+=var[i]*pow(x,cof[i]); //即f(x)=a[0]*x^[n]+……
}
return y;
};
void main()
{
equatio
显示全部