北航数值分析实习第三题文档格式.docx

上传人:wj 文档编号:13036579 上传时间:2022-10-03 格式:DOCX 页数:30 大小:326.52KB
下载 相关 举报
北航数值分析实习第三题文档格式.docx_第1页
第1页 / 共30页
北航数值分析实习第三题文档格式.docx_第2页
第2页 / 共30页
北航数值分析实习第三题文档格式.docx_第3页
第3页 / 共30页
北航数值分析实习第三题文档格式.docx_第4页
第4页 / 共30页
北航数值分析实习第三题文档格式.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

北航数值分析实习第三题文档格式.docx

《北航数值分析实习第三题文档格式.docx》由会员分享,可在线阅读,更多相关《北航数值分析实习第三题文档格式.docx(30页珍藏版)》请在冰豆网上搜索。

北航数值分析实习第三题文档格式.docx

比较时可以比较相对误差和绝对误差。

1.4补充—计算逆矩阵

计算系数矩阵时,需要求解一些矩阵的逆矩阵。

这里采用列主元Gauss消去法来求解,即将原矩阵初等变换为单位阵,同样的变换可以把单位阵变为原矩阵的逆矩阵。

2C++程序

#include"

stdio.h"

math.h"

doublete[11][21]={0};

doubleue[11][21]={0};

doubleze[11][21]={0};

doublex[11]={0};

doubley[21]={0};

doubleinv[10][10]={0};

doubleC[10][10]={0};

doublers=0;

doublefanshu(double*p)//求向量的无穷范数

{

inti=0;

doublemax=fabs(p[1]);

for(i=1;

i<

=4;

i++)

{if(fabs(p[i])>

max)

max=fabs(p[i]);

}

return(max);

}

voidinverse(doubleX[10][10],intN)//采用列主元Gauss消去法求逆矩阵

{ doublematrix[10][10];

doubleI[10][10]={0};

inti,j;

intk,ik,cnt,count;

doublem;

doubletemp;

=N;

for(j=1;

j<

j++)

matrix[i][j]=X[i][j];

I[i][i]=1;

//单位阵

for(k=1;

k<

=N-1;

k++)

{

ik=k;

for(cnt=k;

cnt<

cnt++)//选最大元素行号

{

if(fabs(matrix[cnt][k])>

fabs(matrix[ik][k]))

{

ik=cnt;

}

}

for(cnt=1;

cnt++)//交换

{

temp=matrix[k][cnt];

matrix[k][cnt]=matrix[ik][cnt];

matrix[ik][cnt]=temp;

temp=I[k][cnt];

I[k][cnt]=I[ik][cnt];

I[ik][cnt]=temp;

}

for(cnt=k+1;

cnt++)//消去了

m=matrix[cnt][k]/matrix[k][k];

for(count=1;

count<

count++)

matrix[cnt][count]=matrix[cnt][count]-m*matrix[k][count];

I[cnt][count]=I[cnt][count]-m*I[k][count];

}

}

for(i=1;

i++)//把上对角矩阵化为单位阵的相同步骤就可把经过变形的I变成原矩阵的逆矩阵

{

inv[N][i]=I[N][i]/matrix[N][N];

for(k=N-1;

k>

=1;

k--)

temp=0;

cnt++)

temp+=matrix[k][cnt]*inv[cnt][i];

inv[k][i]=(I[k][i]-temp)/matrix[k][k];

}

voidnewton(doublex[11],doubley[11])//牛顿法求解非线性方程组

{

doublet=0;

doubleu=0;

doublew=0;

doublev=0;

doubledF[5][5]={0};

//F的导数

doubleF[5]={0};

doubled[5]={0};

inti,j,k;

intik;

intcnt,count;

doubletemp=0;

doublem=0;

doublejie[4]={0};

for(i=0;

11;

for(j=0;

21;

{ t=1;

u=1;

w=1;

v=1;

do

{dF[1][1]=-0.5*sin(t);

dF[1][2]=1;

dF[1][3]=1;

dF[1][4]=1;

dF[2][1]=1;

dF[2][2]=0.5*cos(u);

dF[2][3]=1;

dF[2][4]=1;

dF[3][1]=0.5;

dF[3][2]=1;

dF[3][3]=-sin(v);

dF[3][4]=1;

dF[4][1]=1;

dF[4][2]=0.5;

dF[4][3]=1;

dF[4][4]=cos(w);

F[1]=-(0.5*cos(t)+u+v+w-x[i]-2.67);

//这里实际是-F

F[2]=-(t+0.5*sin(u)+v+w-y[j]-1.07);

F[3]=-(0.5*t+u+cos(v)+w-x[i]-3.74);

F[4]=-(t+0.5*u+v+sin(w)-y[j]-0.79);

for(k=1;

=3;

k++)//列主元Gauss消去法求解dF*△x=-F

ik=k;

for(cnt=k;

{

if(fabs(dF[cnt][k])>

fabs(dF[ik][k]))

{

ik=cnt;

}

}

temp=F[k];

F[k]=F[ik];

F[ik]=temp;

for(cnt=k;

temp=dF[k][cnt];

dF[k][cnt]=dF[ik][cnt];

dF[ik][cnt]=temp;

for(cnt=k+1;

m=dF[cnt][k]/dF[k][k];

for(count=k+1;

dF[cnt][count]=dF[cnt][count]-m*dF[k][count];

F[cnt]=F[cnt]-m*F[k];

d[4]=F[4]/dF[4][4];

for(k=4-1;

temp=0;

for(cnt=k+1;

temp+=dF[k][cnt]*d[cnt];

d[k]=(F[k]-temp)/dF[k][k];

t=t+d[1];

u=u+d[2];

v=v+d[3];

w=w+d[4];

te[i][j]=t;

ue[i][j]=u;

jie[1]=t;

jie[2]=u;

jie[3]=v;

jie[4]=w;

}while(fanshu(d)/fanshu(jie)>

1e-12);

//引用求范数的函数

voideryuanchazhi(doublete[11][21],doubleue[11][21])//分片二次代数插值求z=f(x,y)

{ inti,j,ii,jj,m;

intr[11][21]={0};

intk[11][21]={0};

doubleu[6]={0,0.4,0.8,1.2,1.6,2};

doublet[6]={0,0.2,0.4,0.6,0.8,1.0};

doublez[6][6]={{-0.5,-0.34,0.14,0.94,2.06,3.5},

{-0.42,-0.5,-0.26,0.3,1.18,2.38},

{-0.18,-0.5,-0.5,-0.18,0.46,1.42},

{0.22,-0.34,-0.58,-0.5,-0.1,0.62},

{0.78,-0.02,-0.5,-0.66,-0.5,-0.02},

{1.5,0.46,-0.26,-0.66,-0.74,-0.5}};

=10;

=20;

if(te[i][j]<

=0.3)//选择t的插值点,考察是边界还是中间的

r[i][j]=1;

elseif(te[i][j]>

=0.7)

r[i][j]=4;

else

{for(m=2;

m<

m++)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 动物植物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1