误差函数 c语言代码
时间: 2023-11-11 15:57:45 浏览: 43
下面是一个简单的计算均方误差(MSE)的C语言函数代码示例:
```
#include <math.h>
double calc_mse(double *predictions, double *labels, int n) {
double mse = 0.0;
for (int i = 0; i < n; i++) {
double diff = predictions[i] - labels[i];
mse += diff * diff;
}
mse /= n;
return mse;
}
```
其中,`predictions`是模型预测的值,`labels`是真实标签值,`n`是数据样本数。函数的返回值是均方误差。
相关问题
复化Simpson公式求定积分及其函数调用次数和误差的C语言代码
下面是使用复化Simpson公式求定积分及其函数调用次数和误差的C语言代码:
```c
#include <stdio.h>
#include <math.h>
double f(double x) {
return sin(x); // 定义被积函数
}
double simpson(double a, double b, int n) {
double h = (b - a) / n;
double sum = f(a) + f(b);
int i;
for (i = 1; i < n; i += 2) {
sum += 4 * f(a + i * h);
}
for (i = 2; i < n - 1; i += 2) {
sum += 2 * f(a + i * h);
}
return sum * h / 3;
}
int main() {
double a, b, eps, I1, I2;
int n = 2;
printf("请输入积分区间[a, b]和误差限eps:\n");
scanf("%lf %lf %lf", &a, &b, &eps);
I2 = simpson(a, b, n);
do {
n *= 2;
I1 = I2;
I2 = simpson(a, b, n);
} while (fabs(I2 - I1) > eps);
printf("积分值为:%.6lf\n", I2);
printf("函数调用次数为:%d\n", n + 1);
printf("误差为:%.6lf\n", fabs(I2 - I1) / 15);
return 0;
}
```
其中,`f` 函数定义了被积函数,`simpson` 函数实现了复化Simpson公式的计算,`main` 函数中通过输入区间和误差限,利用循环不断增加计算区间数,直到误差满足要求为止。程序输出积分值、函数调用次数和误差。
复化Simpson公式求定积分及其误差的C语言代码,并求函数调用次数
下面是复化Simpson公式求定积分及其误差的C语言代码,并且计算了函数调用次数:
```c
#include <stdio.h>
#include <math.h>
double f(double x) { // 被积函数
return sin(x) / x;
}
double Simpson(double a, double b, double (*f)(double), int n, int* cnt) { // 复化Simpson公式
double h = (b - a) / n;
double sum = 0;
for (int i = 1; i < n; i += 2) {
sum += f(a + i * h) * 4;
(*cnt)++;
}
for (int i = 2; i < n - 1; i += 2) {
sum += f(a + i * h) * 2;
(*cnt)++;
}
return (f(a) + f(b) + sum) * h / 3;
}
int main() {
double a, b, eps;
int n = 2, cnt = 0;
printf("请输入积分区间[a, b]: ");
scanf("%lf%lf", &a, &b);
printf("请输入误差限eps: ");
scanf("%lf", &eps);
double I1, I2 = 0;
do {
I1 = I2;
I2 = Simpson(a, b, f, n, &cnt);
n *= 2;
} while (fabs(I2 - I1) >= eps);
printf("积分值: %lf\n", I2);
printf("误差: %lf\n", fabs(I2 - I1) / 15);
printf("函数调用次数: %d\n", cnt);
return 0;
}
```
其中,`f` 函数为被积函数,`Simpson` 函数为复化Simpson公式,`main` 函数为主函数,实现输入积分区间和误差限,输出积分值、误差和函数调用次数。主要修改是增加了一个 `cnt` 变量,用于记录函数调用次数,并且在 `Simpson` 函数中通过指针方式将 `cnt` 传递进去,每次调用函数时增加 `cnt` 的值。