请利用C语言编写程序求解方程的解
输入要求:
共两行。
第一行,一个整数 n,表示需要计算的次数。0<n<1000。
第 2 行至第 n+1 行,每行一个浮点数a ,0<a <1。
原理可以搜索二分法求浮点数平方根,这个问题类似
#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");
}
运行结果截图