华北电力大学科技学院数值计算方法上机分析报告Word下载.docx
- 文档编号:21902695
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:24
- 大小:1.41MB
华北电力大学科技学院数值计算方法上机分析报告Word下载.docx
《华北电力大学科技学院数值计算方法上机分析报告Word下载.docx》由会员分享,可在线阅读,更多相关《华北电力大学科技学院数值计算方法上机分析报告Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
c);
x[0]);
//初值
printf("
****倒数表****\n"
);
for(i=0;
i<
N;
i++)//牛顿迭代法
x[i+1]=x[i]*x[i]*c/(2*c*x[i]-1);
printf("
k=%d\tx(%d)=%.5f\n"
i,i,x[i]);
if(fabs(x[i+1]-x[i])<
=0.0005)
break;
else
continue;
printf("
i+1,i+1,x[i]);
\n计算结果:
\n1/%f=%.3f\n\n"
c,x[i+1]);
}
实验二#include"
#defineN10
{inti,j,k,l,n;
floatb[N],a[N][N],t,d,det=1.0;
//***数据输入*/
输入n\n"
);
scanf("
%d"
n);
输入Ai\n"
n;
i++)
for(j=0;
j<
j++)
scanf("
a[i][j]);
输入bi\n"
b[i]);
//***************************高斯消去*/
//************************消元*/
//****************************列选主元函数*/
for(k=0;
k<
n-1;
k++)//从第一次消元到第N-1次消元
d=a[k][k];
l=k;
for(i=k+1;
i++)//找出绝对值最大的a[i][k]和i行
if(fabs(a[i][k])>
fabs(d))
{d=a[i][k];
i=l;
if(i==n)//判断是否奇异,不奇异进行行交换
if(d==0)
奇异"
//如果所有行的"
首列"
都为0,为奇异
if(l!
=k)//如果第k行的"
并不是最大
det=det*(-1);
for(j=k;
=n;
j++)//交换系数矩阵中的两行
{t=a[l][j];
a[l][j]=a[k][j];
a[k][j]=t;
t=b[l];
b[l]=b[k];
b[k]=t;
//交换右端常向量中的两行
//************列选主元函数*/
i++)//第(k+1)次消元要得到N-(k+1)个乘数
a[i][k]=a[i][k]/a[k][k];
for(j=k+1;
j++)//第(i+1)行各列向量对应该行与第(k+1)行各列向量的减法
a[i][j]=a[i][j]-a[i][k]*a[k][j];
b[i]=b[i]-a[i][k]*b[k];
//右端常向量
//*****************消元*/
//*回代*/
b[n-1]=b[n-1]/a[n-1][n-1];
//计算x(N)的解
for(i=n-2;
i>
=0;
i--)//从倒数第二项开始依次回代N-1次
t=0;
for(j=i+1;
{t=t+a[i][j]*b[j];
b[i]=(b[i]-t)/a[i][i];
//*************高斯消去*/
//*******************数据输出*/
i++)//输出方程组的解
x(%d)=%.4f\n"
i+1,b[i]);
det=det*a[i][i];
detA=%.4f\n"
det);
//输出系数矩阵行列式的值
//**********************数据输出*/
实验三//例3-10
iostream"
cmath"
inti,j,r,k,n;
floata[N][N]={0},s;
输入矩阵\n"
scanf("
i++)//输入单位阵
j=i+n;
a[i][j]=1;
//***************************LU分解*/
for(i=1;
i++)//r=0时:
"
1"
区间不变化,"
2"
区间变化。
a[i][0]=a[i][0]/a[0][0];
i++)//第二行列至末行列进行变化时
for(j=i;
2*n;
j++)//第"
2(r+1)-1"
区间的变化行
s=0.0;
i;
k++)//对应行列元素的乘积进行求和
s+=a[i][k]*a[k][j];
a[i][j]=a[i][j]-s;
j++)//"
2(r+1)"
区间的变化列
s+=a[k][i]*a[j][k];
a[j][i]=(a[j][i]-s)/a[i][i];
}//现在已将AI--->
LUY
//**************************************LU分解*/
//************************************高斯约当法解Ux=Y*/
//********************提取UY减少计算*/
j++)a[i][j]=0;
//*************************提取UY减少计算*/
//***************消元*/
j++)//首行归一化
a[0][j]=a[0][j]/a[0][0];
}
a[0][0]=1;
//第一列其余行已为零
i++)//(n-1)次归一消元
j++)//第i+1行的各列进行归一化
a[i][j]=a[i][j]/a[i][i];
a[i][i]=1;
for(r=0;
r<
r++)//对第一行至第i-1行的i列进行置零
for(j=r+2;
j++)//r行的各列与第r+1行的对应列进行减法运算
a[r][j]=a[r][j]-a[i][j]*a[r][r+1];
//第r+1行归一后,乘数即为要置零处的值
a[r][r+1]=0;
//乘数用完之后置零即可
//*****************************************消元*/
//********************高斯约当法解Ux=Y*/
//************************************数据输出*/
A的逆矩阵为\n"
{printf("
|"
%.4f"
a[i][j+n]);
|\n"
//************************************数据输出*/
实验四
//例4-6
#include"
#defineN50
intn,i,j,k;
floatxx=0.0,yy=0.0,t,x[N],y[N],c[N],A[N];
voidmain()
{printf("
输入n\n"
//n=4
输入x\n"
%f,%f"
x[i]);
输入f(x)\n"
y[i]);
输入待求数\n"
xx);
//要计算的值
k++)//拉格朗日插值
t=1.0;
k;
t=(xx-x[j])*t/(x[k]-x[j]);
yy=yy+t*y[k];
\nx=%.7f处的函数值为:
y=%.7f\n"
xx,yy);
实验五
//习题5-2
#include"
inti,n,k,j,l;
floatx[N],y[N],z[N];
//定义输入变量
floatAT[3][N];
//定义A的转置
floatX[3][3],Y[3];
//定义中间变量ATA和ATy
floats,t,d;
输入n:
\n"
依次输入X\n"
依次输入Y\n"
依次输入Z\n"
z[i]);
//
i++)//为AT赋值;
AT[0][i]=1;
AT[1][i]=x[i];
AT[2][i]=y[i];
3;
k++)//中间变量ATA
s+=AT[k][i]*AT[j][i];
X[k][j]=s;
k++)//中间变量ATy
{s+=AT[k][i]*z[i];
Y[k]=s;
//****************************计算
//*****************************************高斯消去*/
n=3;
d=X[k][k];
i++)//找出绝对值最大的X[i][k]和i行
if(fabs(X[i][k])>
{d=X[i][k];
{t=X[l][j];
X[l][j]=X[k][j];
X[k][j]=t;
t=Y[l];
Y[l]=Y[k];
Y[k]=t;
X[i][k]=X[i][k]/X[k][k];
{X[i][j]=X[i][j]-X[i][k]*X[k][j];
Y[i]=Y[i]-X[i][k]*Y[k];
Y[n-1]=Y[n-1]/X[n-1][n-1];
{t=t+X[i][j]*Y[j];
Y[i]=(Y[i]-t)/X[i][i];
//***************************高斯消去*/
所求参数为:
\na=%.4f\nb=%.4f\nc=%.4f\n"
Y[1],Y[2],Y[0]);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华北 电力大学 科技学院 数值 计算方法 上机 分析 报告