c语言include后面跟的顺便写吗,C语言下的卡尔曼滤波程序,编译有错啊,比如 #include "rinv.c"这个文件在哪儿?还有整个程序没有函数体?...

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

Liugc383

2013.04.12

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:42%    等级:12

已帮助:10864人

给你“rinv.c ”

不知道是不是你要的,随便找了个数值分析算法里头的

#include "stdlib.h"

#include "math.h"

#include "stdio.h"

int rinv(n,a)

int n;

double a[];

{ int *is,*js,i,j,k,l,u,v;

double d,p;

is=malloc(n*sizeof(int));

js=malloc(n*sizeof(int));

for (k=0; k=n-1; k++)

{ d=0.0;

for (i=k; i=n-1; i++)

for (j=k; j=n-1; j++)

{ l=i*n+j; p=fabs(a[l]);

if (p>d) { d=p; is[k]=i; js[k]=j;}

}

if (d+1.0==1.0)

{ free(is); free(js); printf("err**not inv\n");

return(0);

}

if (is[k]!=k)

for (j=0; j=n-1; j++)

{ u=k*n+j; v=is[k]*n+j;

p=a[u]; a[u]=a[v]; a[v]=p;

}

if (js[k]!=k)

for (i=0; i=n-1; i++)

{ u=i*n+k; v=i*n+js[k];

p=a[u]; a[u]=a[v]; a[v]=p;

}

l=k*n+k;

a[l]=1.0/a[l];

for (j=0; j=n-1; j++)

if (j!=k)

{ u=k*n+j; a[u]=a[u]*a[l];}

for (i=0; i=n-1; i++)

if (i!=k)

for (j=0; j=n-1; j++)

if (j!=k)

{ u=i*n+j;

a[u]=a[u]-a[i*n+k]*a[k*n+j];

}

for (i=0; i=n-1; i++)

if (i!=k)

{ u=i*n+k; a[u]=-a[u]*a[l];}

}

for (k=n-1; k>=0; k--)

{ if (js[k]!=k)

for (j=0; j=n-1; j++)

{ u=k*n+j; v=js[k]*n+j;

p=a[u]; a[u]=a[v]; a[v]=p;

}

if (is[k]!=k)

for (i=0; i=n-1; i++)

{ u=i*n+k; v=i*n+is[k];

p=a[u]; a[u]=a[v]; a[v]=p;

}

}

free(is); free(js);

return(1);

}

02分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值