牛顿迭代法解高次方程和超越方程,新手求教
用迭代法求
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编辑过]




