c - 最小二乘回归线和误差的 C 程序
问题描述
我想创建一个程序来计算一些给定数据的回归线以及错误,这样我就可以在我的大学作业中使用。这是以下程序:
#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;
}
我有两个问题。
- 尽管给 N 一个值,程序运行,所以我只能给 x 一个值,给 y 一个值。为什么以及错误在哪里?
- 打印 "Enter x[%d]" 时,显示 x[11],最后打印 "x[%d] = %lf\t%lf = y[%d]" 时,显示 x[0 ]。再次为什么以及错误在哪里?
谢谢您的帮助!
解决方案
发布几天后,我发现了这个程序的主要问题,修复方法是删除 ; 来自 for 命令,以及其他一些小改动。我想我可以添加这个评论让你知道,现在它就像一个魅力。即使是训练有素的眼睛,最简单的错误也会愚弄。在我发现这个之后,我很震惊,没有人注意到这个错误。
推荐阅读
- ios - 转换来自 Sign in with Apple 的令牌请求从 Django REST 社交身份验证返回 HTTP 400
- vue.js - 文件名与仅在casing.Vetur(1149)中已包含的文件名不同
- php - 如何使用 mysql 查询填充 html texbox?
- c# - 如何在不产生 y 旋转抖动的情况下统一使用触摸输入来钳制游戏对象的 z 旋转
- python-3.x - Python Sounddevice 回调返回一个带零的数组
- jasper-reports - 如何在 Jasper 报告中创建重复父元素值的表
- swift - 如何使用 RealityKit 进行缩小?
- angular - Angular:离线代码分析器,用于发现可观察到的基于订阅的内存泄漏
- django - 更改覆盖模板的 URL
- sql-server - 如果条件满足,则取最新行,否则取上一行