数值计算方法实验报告
2如果f[(a+b)/2]<0,则区间((a+b)/2,b)内存在零点,(a+b)/2≥a;
3如果f[(a+b)/2]>0,则区间(a,(a+b)/2)内存在零点,(a+b)/2≤b;
返回①重新循环,不断接近零点。通过每次把f(x)的零点所在区间收缩一半的方法,使区间内的两个端点逐步逼近函数零点,最终求得零点近似值。
{
int z[10];
int maxi,maxj;
initdata();
for(int i=1;i<=N;i++)
z[i]=i;
for(int k=1;k<N;k++)
{
maxi=k;maxj=k;float maxv=abs(a[k][k]);
for(i=k;i<=N;i++)
for(int j=k;j<=N;j++)
34;请输入矩阵阶数:"<<endl;
cin>>N;
cout<<"请输入矩阵各项:"<<endl;
for(int i=1;i<=N;i++)
for(int j=1;j<=N+1;j++)
{
cin>>a[i][j];
}
cout<<endl;
}
void main()
{
for(i=1;i<=N;i++)
{
float t=a[i][k];a[i][k]=a[i][maxj];a[i][maxj]=t;
}
int t=z[k];z[k]=z[maxj];z[maxj]=t;
}
for(int i=k+1;i<=N;i++)
{
float l=a[i][k]/a[k][k];
本科实验报告
课程名称:数值计算方法
实验地点:计算机科学与技术学院506
专业班级:学号:
学生姓名:
指导教师:王峥
年月日
太原理工大学学生实验报告
学院名称
计算机科学与技术
专业班级
学号
学生姓名
实验日期
成绩
课程名称
数值计算方法
实验题目
实验一方程求解
一、实验目的和要求
熟悉使用、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。选择上述方法中的两种方法求方程:二分法f(x)=x3+4x2-10=0在[1,2]内的一个实根,且要求满足精度|x*-xn|<0.5×10-5
实验地点
北区多学科综合楼4506
指导教师
王峥
太原理工大学学生实验报告
学院名称
计算机科学与技术
专业班级
学号
学生姓名
实验日期
成绩
课程名称
数值计算方法
实验题目
实验二线性方程组的直接解法
一、实验目的和要求
合理利用Gauss消元法、LU分解法、追赶法求解下列方程组:
1 (n=5,10,100,…)
二、主要设备
for(int j=k;j<=N+1;j++)
四、操作方法与实验步骤
1.二分法:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
double a=1.0, b=2.0;
double x,s;
while(1)
{
x=(a+b)/2;
s=pow(x,3)+4*x*x-10;
if (-0.000005 < s && s < 0.000005)
二、主要设备
PC,Windows操作系统,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<b,
1如果f[(a+b)/2]=0,该点即为零点;
int main()
{
float c,a=1.0,b=2.0;
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("%f\n",c);
{
break;
}
else if(s < 0)
{
a=x;
}
else if(s > 0)
{
b=x;
}
printf("%f\t%f\n",a,b);
}
printf("%f\n",x);
printf("%f\n",s);
return 0;
}
2.割线法:
#include"stdio.h"
#include"math.h"
}
五、实验结果与分析
二分法割线法
分析:
使用二分法和割线法均能计算出方程的根,但利用割线法要比二分法计算的次数少,并且能够较早的达到精度要求。
并且割线法程序代码量较少,精简明了。
六、讨论、心得
本次数值计算方法程序设计实验是在不断的习题练习中跳脱出来,直接面对实用性较强的程序代码编写。效果很好,不仅加深对二分法、割线法的理解,还加强了实际用运能力。将理论成功地转化成实践结果。
#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++)
{
cout<<a[i][j]<<" "<<" ";
}
cout<<endl;
}
}
xk=( akn+1-∑akjxj)/ akk
完全主元素消元法流程图: 列主元素消元法:
LU分解法:
将系数矩阵A转化为A=L*U,L为单位下三角矩阵,U为普通上三角矩阵,然后通过解方程组l*y=b,u*x=y,来求解x。
四、操作方法与实验步骤
1.完全主元素消元法:
#include<stdio.h>
#include<iostream.h>
PC,Windows操作系统,VC++6.0编程平台;
三、实验内容和原理
高斯消元法:
将原方程组化为三角形方阵的方程组:
lik=aik/akk
aij= aij- lik* akj
(k=1,2,…,n-1i=k+1,k+2, …,n j=k+1,k+2, …,n+1)
由回代过程求得原方程组的解:
xn= ann+1/ ann
if(abs(a[i][j])>maxv)
{
maxv=abs(a[i][j]);maxi=i;maxj=j;
}
if(maxi!=k)
{
for(int j=1;j<=N+1;j++)
{
float t=a[k][j];a[k][j]=a[maxi][j];a[maxi][j]=t;
}
}
if(maxj!=k)