C语言编写程序解erf方程

请利用C语言编写程序求解方程的解
输入要求:
共两行。
第一行,一个整数 n,表示需要计算的次数。0<n<1000。
第 2 行至第 n+1 行,每行一个浮点数a ,0<a <1。

img

原理可以搜索二分法求浮点数平方根,这个问题类似

#include <stdio.h>

void cal(double* vec,int n) {
    for (int i = 0; i < n; ++i) {
        double mid = 0;
        double l = 0, r = 10;
        while (r - l > 1e-14) {
            mid = (r + l) / 2;
            double res = 0.5 - 0.5*erf(mid / sqrt(2)) - vec[i];
            if (res < 1e-14)
                r = mid;
            else
                l = mid;
        }
        vec[i] = mid;
    }
}

void main()
{
    int n;
    scanf("%d", &n);
    double* src = new double[n];
    for (int i = 0; i < n; ++i) {
        scanf("%lf", &src[i]);
    }
    cal(src, n);
    for (int i = 0; i < n; ++i) {
        printf("%.8lf\n", src[i]);
    }
    system("pause");
    
}

运行结果截图

img


望采纳,谢谢。