本科实验报告
课程名称:计算机数值方法
实验项目:计算机数值方法实验
实验地点:虎峪校区致远楼B401
专业班级:软件学院1217班学号:201200xxxx 学生姓名:xxx
指导教师:xxx
2014 年 5 月21 日
太原理工大学学生实验报告
学院名称软件学院专业班级1217班学号201200xxxx 学生姓名xx 实验日期2014.05.21 成绩
课程名称数值计算方法实验题目实验一方程求解
一、实验目的和要求
熟悉使用、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。选择上述方法中的两种方法求方程:二分法f(x)=x3+4x2-10=0在[1,2]内的一个实根,且要求满足精度|x*-x n|<0.5×10-5
二、主要设备
笔记本 HP ProBook 6470b 一台
编译软件:VC++6.0
三、实验内容和原理
函数f(x)在区间(x,y)上连续,先在区间(x,y)确定a与b,若f(a),f(b)异号,说明在区间(a,b)内存在零点,然后求f[(a+b)/2]。
假设F(a)<0,F(b)>0,a
①如果f[(a+b)/2]=0,该点即为零点;
②如果f[(a+b)/2]<0,则区间((a+b)/2,b)内存在零点,(a+b)/2≥a;
③如果f[(a+b)/2]>0,则区间(a,(a+b)/2)内存在零点,(a+b)/2≤b;
返回①重新循环,不断接近零点。通过每次把f(x)的零点所在区间收缩一半的方法,使区间内的两个端点逐步逼近函数零点,最终求得零点近似值。
四、操作方法与实验步骤
1. 二分法:
#include
#include
#include
int main()
{
double a=1.0, b=2.0;
double x,s;
printf(" An\t\tBn\t\tF(Xn)\n");
while(1)
{
x=(a+b)/2;
s=pow(x,3)+4*x*x-10;
if (-0.000005 < s && s < 0.000005)
{
break;
}
else if(s < 0)
{
a=x;
}
else if(s > 0)
{
b=x;
}
printf("%f\t%f\t%f\n",a,b,s);
}
printf("X的值为:%f\n",x);
printf("误差:\t%f\n",s);
return 0;
}
2. 割线法:
#include"stdio.h"
#include"math.h"
int main()
{
float c,a=1.0,b=2.0;
printf("每次得到的X的近似值:\n");
while(1)
{
c=b-(b*b*b+4*b*b-10)*(b-a)/(b*b*b+4*b*b-(a*a*a+4*a*a));
if(fabs(b-c)<0.5*0.00001)break;
b=c;
printf("%f\n",b);
}
printf("X的值为:%f\n",c);
}
五、实验结果与分析
二分法割线法分析:
由程序知,使用二分法和割线法均能计算出方程的根,但利用割线法要比二分法计算的次数少,并且能够较早的达到精度要求。
相比之下,割线法程序代码量较少,精简明了。
六、讨论、心得
本次数值计算方法程序设计实验从习题练习中跳脱出来,直接面对实用性较强的程序代码编写。效果很好,不仅加深对二分法、割线法的理解,还加强了实际用运能力。将理论知识成功地转化成实践结果。
实验地点虎峪校区致远楼B401指导教师xx
太原理工大学学生实验报告
学院名称 软件学院 专业班级 1217班 学号 201200xxxx
学生姓名 xx 实验日期 2014.05.28
成绩
课程名称
数值计算方法
实验题目
实验二 线性方程组的直接解法
一、实验目的和要求
合理利用Gauss 消元法、LU 分解法、追赶法求解下列方程组: ①
??
??
?
?????=????????????????????1381414
2
21032
1321x x x
② ?
????????
???=??
????????????????
??????
?
?
--?-2178.4617.5911
2
1
259
2.1121130
.6291
.51314.59103.0432115
x x x x
③
?
?
?
???
??????----=????????????????????????377220116
12
6384102
785124
4321x x x x ④ ??
?
?
?
?
??????????----=???????
????????????????????????
?-555721
121
121
12
121
n n x x x x (n=5,10,100,…)
二、主要设备
笔记本 HP ProBook 6470b 一台 编译软件:VC++6.0 三、实验内容和原理
高斯消元法:
将原方程组化为三角形方阵的方程组:
l ik =a ik /a kk
a ij = a ij - l ik * a kj
( k=1,2,…,n-1 i=k+1,k+2, …,n j=k+1,k+2, …,n+1 )
由回代过程求得原方程组的解:
x n = a nn+1/ a nn
x k =( a kn+1-∑a kj x j )/ a kk
LU 分解法:
将系数矩阵A转化为A=L*U,L为单位下三角矩阵,U为普通上三角矩阵,然后通过解方程组l*y=b,u*x=y,来求解x。
四、操作方法与实验步骤
1. 完全主元素消元法:
#include
#include
#include"math.h"
float a[100][101];
float x[10];
int N;
void shuchu()
{
for(int i=1;i<=N;i++)
{
for(int j=1;j<=N+1;j++)
{