请问这个C语言程序哪里出了问题? 50
一个最小二乘法拟合函数,如何修改能够得到结果。现在的结果出来是0.000000#include<stdio.h>#include<math.h>voidfunc(doub...
一个最小二乘法拟合函数,如何修改能够得到结果。现在的结果出来是0.000000
#include<stdio.h>
#include<math.h>
void func (double d[],double e[],int n);
double a0=0,a1=0;
main()
{
double a[6]={-1.00,-0.75,-0.50,-0.25,0.00,0.25};
double b[6]={-0.2209,0.3295,0.8826,1.4392,2.003,2.5645};
int c=6;
void func(double a,double b,int c);
printf("y=%f+%fx",a0,a1);
}
void func (double d[],double e[],int n)
{
int i=1;
double u=0,v=0,w=0,x=0,y,z;
double f[2];
for(i=1;i<n;i++)
{
u=u+d[i-1];//total x
v=v+e[i-1];//total y
w=w+d[i-1]*e[i-1];//total x*y
x=x+d[i-1]*d[i-1];//total x*x
}
u=u/n;
v=v/n;
w=w/n;
x=x/n;
a1=(w-u*v)/(x-u*u);
a0=v-y*u;
} 展开
#include<stdio.h>
#include<math.h>
void func (double d[],double e[],int n);
double a0=0,a1=0;
main()
{
double a[6]={-1.00,-0.75,-0.50,-0.25,0.00,0.25};
double b[6]={-0.2209,0.3295,0.8826,1.4392,2.003,2.5645};
int c=6;
void func(double a,double b,int c);
printf("y=%f+%fx",a0,a1);
}
void func (double d[],double e[],int n)
{
int i=1;
double u=0,v=0,w=0,x=0,y,z;
double f[2];
for(i=1;i<n;i++)
{
u=u+d[i-1];//total x
v=v+e[i-1];//total y
w=w+d[i-1]*e[i-1];//total x*y
x=x+d[i-1]*d[i-1];//total x*x
}
u=u/n;
v=v/n;
w=w/n;
x=x/n;
a1=(w-u*v)/(x-u*u);
a0=v-y*u;
} 展开
2个回答
展开全部
C语言参数不能传入数组,数组也不能作为返回值,只能使用指针,如果是Java或C#是可以将数组作为返回值,或作为参数
追问
没传数组,用的全局变量。能仔细说下怎么改吗?
追答
void func (double d[],double e[],int n)这个方法参数里面没使用参数做数组?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询