📄 lud.cpp
字号:
#include "iostream.h"
#include "math.h"
double r(int,int,int,int,double []);
void main()
{
const int n=1;
const int N=8;
double C[n+1],l[n+1],b[n+1],fe[n+1],st[n+1];
double R[n+1][n+1],L[n+1][n+1];
int i,j;
double a=0;
double x[N] ;
cout<<"请输入数据:"<<endl; //输入观测数据
for(i=0;i<N;i++)
{cin>>x[i];}
for(i=0;i<(n+1);i++)
{ a=0;
a=r(i,n,n,N,x);
C[i]=a;
}
for(i=0;i<(n+1);i++)
for(j=0;j<(n+1);j++)
{
R[i][j]=r(i,j,n,N,x);
}
L[0][0]=sqrt(R[0][0]);
for(i=0;i<n;i++)
for(j=0;j<i+2;j++)
{
l[j]=C[j]/L[i][j];
b[j]=sqrt(r(j,j,n,N,x)-l[j]*l[j]);
if((i+1)!=j)
L[i+1][j]=l[j];
else
L[i+1][j]=b[j];
}
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
L[i][j]=0;
}
double s;
fe[0]=1/L[0][0];
for(i=1;i<n+1;i++) //求解方程
{
for(j=0;j<i;j++)
{
s=0;
s=s+(fe[j]*L[i][j])/L[i][i];
}
fe[i]=-s;
}
double sum;
st[n]=fe[n]/L[n][n];
for(i=n-1;i>=0;i--) //求解方程
{
for(j=i+1;j<n+1;j++)
{ sum=0;
sum=sum+L[j][i]*st[j];
}
st[i]=fe[i]-sum/L[i][i];
}
for(j=0;j<n+1;j++)
cout<<st[j]/st[0]<<endl; //输出结果
}
double r(int h,int k,int m,int p,double y[]) //求r(i,j)
{
int t;
double s2[20][20];
double s1;
for(int J=0;J<(m+1);J++)
for(int K=0;K<(m+1);K++)
{ s1=0;
for(t=m+1;t<p+1;t++)
{
s1=s1+y[t-J]*y[t-K]+y[t-m+J]*y[t-m+K];
}
s2[J][K]=s1;
}
return s2[h][k];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -