已知方程组107.1425(0.5 + *m0) * v * v =9.945000和v = (187/280E4)/(sqrt(m0)*(pow(10,0.57-0.5/sqrt(m0)) - 1/1400))其中m0初始值为0.001利用迭代法来求解的c语言程序
时间: 2023-12-15 12:06:22 浏览: 39
以下是利用迭代法求解的C语言程序:
```c
#include <stdio.h>
#include <math.h>
#define EPS 1e-8 // 定义误差限
double f(double m0, double v) // 定义函数f
{
return 107.1425 * (0.5 + m0) * v * v - 9.945000;
}
double df(double m0, double v) // 定义函数f的导数
{
return 107.1425 * (0.5 + m0) * 2 * v;
}
int main()
{
double m0 = 0.001; // 初始值
double v = (187.0 / 280E4) / (sqrt(m0) * (pow(10, 0.57 - 0.5 / sqrt(m0)) - 1 / 1400));
double delta = f(m0, v) / df(m0, v);
while (fabs(delta) > EPS) // 迭代过程
{
m0 -= delta; // 更新m0
v = (187.0 / 280E4) / (sqrt(m0) * (pow(10, 0.57 - 0.5 / sqrt(m0)) - 1 / 1400));
delta = f(m0, v) / df(m0, v);
}
printf("m0 = %.10f\n", m0); // 输出结果
return 0;
}
```
程序中定义了函数f和函数f的导数df,利用牛顿迭代法进行迭代求解,直到误差小于预设的误差限EPS为止。最终输出结果m0。