牛顿迭代法解高次方程和超越方程,新手求教
用迭代法求
x*sin(x)=1的解
及其
x^41+x^3+1=0 在 -1 附近的根
我用了 xn+1 = xn - f(xn)/f'(xn)的公式
这段是x*sin(x)=1的代码
程序代码:
# include <stdio.h> # include <math.h> # define eps 1e-6 int main(void) { float x0, x1; x0 = 1.0; x1 = (1 + x0*x0*cos(x0)) / (sin(x0) + x0*cos(x0)); do { x0 = x1; x1 = (1 + x0*x0*cos(x0)) / (sin(x0) + x0*cos(x0)); }while(fabs(x0 - x1) > eps); printf("%f", x1); return 0; }
结果是 1.114157 带回方程不成立
而且当初值是2的时候 结果是 -9.317243, 带回方程也不成立
每次初值改变结果都改变了?
这段是x^41+x^3+1=0的代码
程序代码:
# include <stdio.h> # include <math.h> # define eps 1e-6 int main(void) { float x0, x1; x0 = 1.0; x1= x0 - ((pow(x0, 41) + pow(x0, 3) + 1) / (pow(x0, 40) + 3*pow(x0, 2))); do { x0 = x1; x1= x0 - ((pow(x0, 41) + pow(x0, 3) + 1) / (pow(x0, 40) + 3*pow(x0, 2))); }while (fabs(x1 - (-1)) > eps); printf("%f\n", x1); return 0; }
结果是 -1.#IND00 据说是 0 作为除数了??
请教大家了!!!!万分感谢!!!
[此贴子已经被作者于2017-11-5 20:03编辑过]