南航数值分析本科生大作业.docx
- 文档编号:23633538
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:12
- 大小:60.55KB
南航数值分析本科生大作业.docx
《南航数值分析本科生大作业.docx》由会员分享,可在线阅读,更多相关《南航数值分析本科生大作业.docx(12页珍藏版)》请在冰豆网上搜索。
南航数值分析本科生大作业
数值分析与应用软件编程
南京航空航天大学
机电学院
051030333
张大军
1.已知Leonardo方程在区间
内有且只有一个实根方程,
,
用牛顿法求解此实根,要求
#include
voidmain()
{
doublex0,e,L=60,x1;
doubleF,DY;
cout<<"请输入迭代初值x0:
(范围在1到2之间)"<<'\n';
cin>>x0;
cout<<"请输入精度要求e:
"<<'\n';
cin>>e;
F=x0*x0*x0+2*x0*x0+10*x0-20;
DY=3*x0*x0+4*x0+10;
do
{
if(DY+1.0==1.0||1.0-DY==1.0)
{
L=0;
cout<<"计算失败"<<'\n';
break;
}
else
{
x1=x0-F/DY;
F=x1*x1*x1+2*x1*x1+10*x1-20;
DY=3*x1*x1+4*x1+10;
}
if(x1-x0>=e||x0-x1>=e||F>=e||F<=(-e))
{
L=L-1;
x0=x1;
if(L==0)
{
cout<<"计算失败"<<'\n';
break;
}
}
else
{
cout<<"实根近似为:
"< break; } }while(L! =0);} 2.用Crout分解非对称矩阵,并求出相应的线性方程的解;(编写出程序并用算例进行计算) #include #include #defineN4 voidmain() { doublea[N][N],l[N][N]={0},u[N][N]={0}; doubleb[N]; inti,j,m; doublesum1(doubleL[][N],doubleU[][N],int,int); doublesum2(doubleL[][N],doubleU[][N],int,int); voidLU(doubleL[][N],doubleU[][N]); voidjie(doubleL[][N],doubleU[][N],doubleB[]); cout<<"请输入"< cout<<"注意是按行输入"< for(i=0;i { for(j=0;j { cin>>a[i][j]; } } cout<<"请输入"< for(m=0;m cin>>b[m]; for(i=0;i { for(j=0;j l[i][j]=a[i][j]-sum1(l,u,i,j); for(j=i+1;j u[i][j]=(a[i][j]-sum2(l,u,i,j))/l[i][i]; } for(i=0;i u[i][i]=1; LU(l,u); jie(l,u,b); } doublesum1(doubleL[][N],doubleU[][N],intx,inty) { intk;doubleS=0; for(k=0;k S+=L[x][k]*U[k][y]; return(S); } doublesum2(doubleL[][N],doubleU[][N],intx,inty) { intk;doubleS=0; for(k=0;k S+=L[x][k]*U[k][y]; return(S); } voidLU(doubleL[][N],doubleU[][N]) { inti,j; cout<<"L矩阵为"< for(i=0;i { for(j=0;j cout< cout< } cout<<"U矩阵为"< for(i=0;i { for(j=0;j cout< cout< } } doublesum3(doubleM[][N],doubleY[],intx) { doubleS=0; inti; for(i=0;i S+=M[x][i]*Y[i];return(S); } doublesum4(doubleM[][N],doubleY[],intx) { doubleS=0; inti; for(i=x+1;i S+=M[x][i]*Y[i]; return(S); } voidjie(doubleL[][N],doubleU[][N],doubleB[]) {inti; doubley[N],x[N]; y[0]=B[0]/L[0][0]; for(i=1;i y[i]=(B[i]-sum3(L,y,i))/L[i][i]; x[N-1]=y[N-1]/U[N-1][N-1]; for(i=N-2;i>=0;i--) x[i]=(y[i]-sum4(U,x,i))/U[i][i]; cout<<"y解为"< for(i=0;i cout< cout<<'\n'; cout<<"最终x解为"< for(i=0;i cout< 3.地球卫星轨道是一个椭圆,椭圆的周长计算公式为 其中 是椭圆的半长轴, 是地球中心与轨道中心(椭圆中心)的距离,记 为近地点距离, 为远地点距离, (km)为地球半径,则 . 我国第一颗人造卫星近地点距离 (km),远地点距离 (km),利用复合梯形公式和复合Simpson求卫星轨道的周长. #include #include #definep3.1415 #defineR6371 #defineN100 voidmain() { doubleH,h,a,c; voidTs(double,double); voidSs(double,double); cout<<"请输入H值(远地点距地球的距离): "< cin>>H; cout<<"请输入h值(近地点距地球的距离): "< cin>>h; a=(H+h+2*R)/2; c=(H-h)/2; Ts(a,c); Ss(a,c); } doublef(doublex,doubley,doublez) { doublem; m=sqrt(1-(y/z)*(y/z)*sin(x)*sin(x)); return(m); } doublesum(doubley,doublez) { inti;doublem=0; for(i=1;i m+=f(i*(p/2-0)/N,y,z); returnm; } doublesum2(doubley,doublez) { inti;doublem=0; for(i=1;i m+=f(i*(p/2-0)/N*2,y,z); returnm; } doublesum3(doubley,doublez) { inti;doublem=0; for(i=1;i m+=f((i-1/2)*(p/2-0)/N*2,y,z); returnm; } voidTs(doublex,doubley) { doubleT,s; T=(p/2-0)/(2.0*N)*(f(p/2,y,x)+f(0,y,x)+2*sum(y,x)); s=4*x*T; cout<<"复合梯形公式得: "< } voidSs(doublex,doubley) { doubleS,s; S=(p/2-0)/(6.0*N/2)*(f(p/2,y,x)+f(0,y,x)+2*sum2(y,x)+4*sum3(y,x)); s=4*x*S; cout<<"复合辛普森公式得: "< }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 本科生 作业