求解线性方程组迭代法与插值法.doc
文本预览下载声明
数值分析实验报告三
求解线性方程组的迭代方法和插值法(2学时)
班级专业:11信科一班 姓名:黄文康 学号:16
一 实验目的
1.掌握求解线性方程组的简单迭代法;
2. 掌握求解线性方程组的赛德尔迭代法。
3. 掌握不等距节点下的牛顿插值公式以及拉格朗日插值公式。
二 实验内容
1.使用简单迭代法求解方程组(精度要求为):
2.使用赛德尔迭代法求解上述方程组(精度要求为):
3.已知函数表:
x 1.45 1.36 1.14 y 3.14 4.15 5.65 用拉格朗日插值公式计算所对应的近似值。
4. 已知函数表:
X 93.0 96.2 100.00 104.2 108.7 Y 11.38 12.80 14.70 17.07 19.91 用牛顿插值公式求的近似值。
三 实验步骤(算法)与结果
1
简单迭代法(雅可比迭代法)
#include stdio.h
#include stdlib.h
#include conio.h
#include math.h
#define N 10
int main()
{
int k,i,j,n;
float a[N][N]={0},b[N],p[N]={0},x2[N]={0},x1[N]={0},sum=0,g[N][N]={0};
printf(方程组为:\n\t20*x1+2*x2+3*x3=24 \n\tx1+8*x2+x3=12 \n\t2*x1-3*x2+15*x3=30);
printf(\n转换后的迭代式:\n\tx1=-0.1*x1-0.15*x3+1.2 \n\tx2=-.125*x1-0.125*x2+1.5 \n\tx3=2.0/15*x1+0.2*x2+2);
printf(\n输入根的个数:\n);
scanf(%d,n);
printf(输入系数矩阵:\n);
for(i=1;i=n;i++)
for(j=1;j=n;j++)
scanf(%f,a[i][j]);
printf(输入b[i]:\n);
for(i=1;i=n;i++)
{
scanf(%f,b[i]);
p[i]=a[i][i];
}
//开始求解
for(i=1;i=n;i++)
for(j=1;j=n;j++)
{
if(i!=j)
g[i][j]=-a[i][j]/p[i];
else
g[i][i]=0;
}
for(i=1;i=n;i++)
b[i]=b[i]/p[i];
for(k=1;k=6;k++)
{
for(i=1;i=n;i++)
{sum=0;
for(j=1;j=n;j++)
sum+=g[i][j]*x1[j];
x1[i]=sum+b[i];
}
}
for(i=1;i=n;i++)
printf(x[%d]=%-9.6f,i,x1[i]);
printf(\n);
return 0;
}
2
赛德尔迭代法
#include stdio.h
#include stdlib.h
#include conio.h
#include math.h
#define N 10
int main()
{
int k,i,j,n;
float a[N][N]={0},b[N],p[N]={0},x2[N]={0},x1[N]={0},sum=0,g[N][N]={0};
printf(方程组为:\n\t20*x1+2*x2+3*x3=24 \n\tx1+8*x2+x3=12 \n\t2*x1-3*x2+15*x3=30);
printf(\n转换后的迭代式:\n\tx1=-0.1*x1-0.15*x3+1.2 \n\tx2=-.125*x1-0.125*x2+1.5 \n\tx3=2.0/15*x1+0.2*x2+2);
printf(\n输入根的个数:\n);
scanf(%d,n);
printf(输入系数矩阵:\n);
for(i=1;i=n;i++)
for(j=1;j=n;j++)
scanf(%f,a[i][j]);
printf(输入b[i]:\n);
for(i=1;i=n;i++)
{
scanf(%f,b[i]);
p[i]=a[
显示全部