📄 rls.c
字号:
#include "stdlib.h"
#include "stdio.h"
#include "math.h"
void rls(x,d,n,w,m,r)
int m,n;
double r,x[],d[],w[];
{int i,j,k;
double a,s,*g,*u,*px,*p;
g=malloc(m*sizeof(double));
u=malloc(m*sizeof(double));
px=malloc(m*sizeof(double));
p=malloc(m*m*sizeof(double));
for(i=0;i<m;i++)
for(j=0;j<m;j++)
{p[i*m+j]=0.0;}
for(i=0;i<m;i++)
{p[i*m+i]=1.0e+8;}
for(i=0;i<m;i++)
{px[i]=0.0;}
for(k=0;k<n;k++)
{px[0]=x[k];
for(j=0;j<m;j++)
{u[j]=0.0;
for(i=0;i<m;i++)
{u[j]=u[j]+(1/r)*p[j*m+i]*px[i];}
}
s=1.0;
for(i=0;i<m;i++)
{s=s+u[i]*px[i];}
for(i=0;i<m;i++)
{g[i]=u[i]/s;}
x[k]=0.0;
for(i=0;i<m;i++)
{x[k]=x[k]+w[i]*px[i];}
a=d[k]-x[k];
for(i=0;i<m;i++)
{w[i]= w[i]+g[i]*a;}
for(j=0;j<m;j++)
for(i=0;i<m;i++)
{ p[j*m+i]= (1/r)*p[j*m+i]-g[j]*u[i];}
for(i=(m-1);i>=1;i--)
{px[i]=px[i-1];}
}
free(g);
free(u);
free(px);
free(p);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -