gpt4 book ai didi

最小二乘回归线和误差的 C 程序

转载 作者:行者123 更新时间:2023-11-30 19:28:56 24 4
gpt4 key购买 nike

我想创建一个程序来计算某些给定数据的回归线以及错误,以便我可以在大学作业中使用。这是以下程序:

#include <stdio.h>
#include <math.h>
int main(void)
{
int i,n,N;
double x[n],y[n],a=0.0,b=0.0,c=0.0,d=0.0,D,P=0.0,p,Sx,A,B,dA,dB;
printf("Give the number of data you want to input for x : ");
scanf("\n%d", &N);
printf("\nGive the values of x : ");
for (i=1; i<=N; i++);
{
printf("\n Enter x[%d] = ", i);
scanf("%lf", &x[i]);
a+=x[i];
b+=pow(x[i],2);
}
printf("\nGive the values of y : ");
for (i=1; i<=N; i++);
{
printf("\n Enter y[%d] = ", i);
scanf("%lf", &y[i]);
c+=y[i];
}
D=N*b-pow(a,2);
A=(b*c-a*d)/D;
B=(N*d-a*c)/D;
for (i=1; i<=N; i++);
{
d+=x[i]*y[i];
p=y[i]-A-B*x[i];
P+=pow(p,2);
}
Sx=sqrt(P/N-2);
dA=Sx*sqrt(b/D);
dB=Sx*sqrt(N/D);
printf("\n x \t \t \t y");
for (i=1; i<=N; i++);
printf("\nx[%d] = %lf\t%lf = y[%d]", x[i],y[i]);
printf("\nA = %lf\t B = %lf", A,B);
printf("\nThe errors of A & B are dA = %lf and dB = %lf", dA,dB);
printf("\nThe equation of the regression line is y=%lfx+(%lf)", B,A);
return 0;
}

我有两个问题。

  1. 尽管为 N 赋予了一个值,但程序运行时我只能为 x 赋予一个值,为 y 赋予一个值。为什么以及错误在哪里?
  2. 打印“Enter x[%d]”时,显示x[11],打印“x[%d] = %lf\t%lf = y[%d]”时,最后显示x[0]。再说一遍,为什么以及错误在哪里?
<小时/>

感谢您的帮助!

最佳答案

  1. 您正在尝试用 C 创建动态数组。

为此,您需要使用 mallocfree 进行动态内存分配。因此,您的代码应如下所示:

int N;
double *x;

printf("Give the number of data you want to input for x :\n");
scanf("%d", &N);

x = malloc(sizeof(double) * N);

然后,在程序结束时,您需要释放内存:

free(x);

如果您不想处理手动内存管理(或由于某种原因不能),您可以使用静态最大数组大小,如下所示:

#define MAX_N_X  100

int main(void) {
int N;
double x[MAX_N_X];

printf("Give the number of data you want to input for x :\n");
scanf("%d", &N);

if (N > MAX_N_X) {
printf("Can't handle that many inputs! Maximum %d\n", MAX_N_X);
return 0;
}
}
  • 您只是错过了 printf 的两个参数。
  • 哟写道:

    printf("\nx[%d] = %lf\t%lf = y[%d]", x[i],y[i]);

    但应该是:

    printf("\nx[%d] = %lf\t%lf = y[%d]", i, x[i], y[i], i);

    关于最小二乘回归线和误差的 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53457842/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com