数值试验 主要包括高斯追赶法变步长拉格狼日牛顿Word格式文档下载.docx
- 文档编号:20500410
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:14
- 大小:17.36KB
数值试验 主要包括高斯追赶法变步长拉格狼日牛顿Word格式文档下载.docx
《数值试验 主要包括高斯追赶法变步长拉格狼日牛顿Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数值试验 主要包括高斯追赶法变步长拉格狼日牛顿Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
='
#'
)
{
i++;
scanf("
}
n=int(sqrt(i));
if(i==n*(n+1))
flag=true;
else
printf("
------输入矩阵不规范,重新输入:
-----\n"
i=0;
}
for(i=0;
i<
n;
i++)
for(j=0;
j<
n+1;
j++)
a[i][j]=b[i*(n+1)+j];
起始矩阵:
i++){
%lf\t"
a[i][j]);
printf("
-----------------------------\n\n"
Gauss(a,n);
show(a,n);
}
voidGauss(floata[][N+1],intn)
for(intk=0;
k<
k++)
floatmax=0;
intt=k;
for(inti=k;
{
if(max<
fabs(a[i][k]))
{
max=a[i][k];
t=i;
}
floatp;
for(i=k;
p=a[k][i];
a[k][i]=a[t][i];
a[t][i]=p;
p=a[k][k];
a[k][i]=a[k][i]/p;
for(i=k+1;
p=a[i][k];
for(intj=k;
a[i][j]-=p*a[k][j];
for(k=n-2;
k>
=0;
k--)
for(intj=k+1;
a[k][n]=a[k][n]-a[k][j]*a[j][n];
voidshow(floata[][N+1],intn)
{
转换矩阵:
for(inti=0;
for(intj=0;
结果集:
\tX%d=%lf\n"
i+1,a[i][n]);
追赶
#defineN10
voidPresue(floata[][N+1],floatL[][N],floatU[][N],intn);
voidShow(floata[][N+1],floatL[][N],floatU[][N],intn);
//floata[4][5]={3,1,0,0,1,2,3,1,0,0,0,2,3,1,1,0,0,1,3,0},L[4][4]={0},U[4][4]={0};
floata[N][N+1]={0},L[N][N]={0},U[N][N]={0};
n=i/4+1;
if(i==6+(n-2)*4)
/*for(i=0;
2;
a[0][i]);
for(i=1;
4;
for(j=i-1;
i+2&
&
a[i][j]);
请输入方程的常数f:
a[i][4]);
*/
a[0][i]=b[i];
a[0][n]=b[2];
intt=3;
a[i][j]=b[t];
t++;
a[i][n]=b[t];
t++;
原推广矩阵为:
---------------------\n"
Presue(a,L,U,n);
Show(a,L,U,n);
voidPresue(floata[][N+1],floatL[][N],floatU[][N],intn)
inti;
//Crout分解
L[0][0]=a[0][0];
U[0][0]=1;
U[0][1]=a[0][1]/L[0][0];
L[i][i-1]=a[i][i-1];
L[i][i]=a[i][i]-L[i][i-1]*U[i-1][i];
U[i][i]=1;
if((i+1)<
n)
U[i][i+1]=a[i][i+1]/L[i][i];
//求解Ly=f
a[0][n]/=L[0][0];
a[i][n]=(a[i][n]-L[i][i-1]*a[i-1][n])/L[i][i];
//求解Ux=y
a[n-1][n]=a[n-1][n];
for(i=n-2;
i>
i--)
a[i][n]=a[i][n]-U[i][i+1]*a[i+1][n];
voidShow(floata[][N+1],floatL[][N],floatU[][N],intn)
inti,j;
分解后L矩阵:
L[i][j]);
分解后U矩阵:
U[i][j]);
方程的解是:
X%d:
%lf\n"
i,a[i][n]);
拉格朗日
#defineN6
floatLagrange(floatX[],floatY[],intn,floatt);
floatX[N]={0},Y[N]={0},p=0;
inti=0,j=0,k=0;
boolflag=true;
请输入条件,以'
结束:
while(flag)
p);
if(i%2==0)
X[j++]=p;
else
Y[k++]=p;
if(i%2==0)
flag=false;
else
j=0;
k=0;
x与y不匹配,请重新输入:
请输入要求解的数:
scanf("
---------f(%lf)=%lf\n"
p,Lagrange(X,Y,i/2,p));
floatLagrange(floatX[],floatY[],intn,floatt)
floatl=1,sum=0;
if(i==j)
continue;
l*=(t-X[j])/(X[i]-X[j]);
sum+=l*Y[i];
l=1;
returnsum;
牛顿
doubleNewton(doubleX[][N],intn,intp,doublet);
doubleX[2][N]={0},p;
%lf"
X[0][j++]=p;
X[1][k++]=p;
f(%lf)=%lf\n"
p,Newton(X,2,i/2,p));
doubleNewton(doubleX[][N],intn,intp,doublet)
inti,j,k;
doublet1,t3,t2=X[1][0];
p;
t3=X[1][i-1];
for(j=i;
t1=(X[1][j]-t3)/(X[0][j]-X[0][j-i]);
t3=X[1][j];
X[1][j]=t1;
t3=1;
for(k=0;
i;
t3*=(t-X[0][k]);
t2+=X[1][i]*t3;
returnt2;
变步长
math.h>
doublevarstep(doublea,doubleb,doubleeps);
doublea=0,b=1,eps=0.000001;
请输入积分范围:
%lf%lf"
a,&
b);
请输入精度值:
eps);
sin(x)/x在(%lf,%lf)上的积分是:
%lf\n"
a,b,varstep(a,b,eps));
doublevarstep(doublea,doubleb,doubleeps)
doublet1,t2,h,n=1,p;
h=(b-a)/n;
if(a==0)
t1=h/2*(1+sin(b)/b);
else
t1=h/2*(sin(a)/a+sin(b)/b);
p=1;
while(p>
=eps)
t2=0;
for(inti=0;
t2+=h/2*(sin(a+(i+0.5)*h)/(a+(i+0.5)*h));
t2+=t1/2;
n*=2.0;
h/=2.0;
p=fabs(t2-t1);
t1=t2;
龙贝格
doublef(doublex)
if(x==0)
return1;
returnsin(x)/x;
doubleRomberg(doublea,doubleb,doublee)
doubleh=b-a;
intk=0,j;
doubleT[10][10];
T[0][0]=(f(a)+f(b))*h/2;
for(k=1;
;
k++)
doubletemp=0;
for(inti=1;
i<
=pow(2,k-1);
i++)
temp+=f(a+(i-1.0/2)*h);
T[0][k]=1.0/2*(T[0][k-1]+h*temp);
for(j=1;
j<
=3&
=k;
j++)
T[j][k-j]=(pow(4,j)*T[j-1][k-j+1]-T[j-1][k-j])/(pow(4,j)-1);
if(fabs(T[j-1][k-j+1]-T[j-2][k-j+2])<
=e)
returnT[j-1][k-j+1];
break;
h=h/2;
}
voidmain(void)
doublea,b,e;
输入积分范围:
输入精度:
e);
sin(x)/x在范围(%lf,%lf)的积分是:
a,b,Romberg(a,b,e));
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值试验 主要包括高斯追赶法变步长拉格狼日牛顿 数值 试验 主要 包括 追赶 步长 拉格狼日 牛顿