用牛顿法求方程f(x)=0的近似解

C++语言 码拜 7年前 (2015-11-02) 1474次浏览
已知f(x)=cos(x)-x,x的初始值为3.14159/4;用牛顿法求方程f(x)=0的近似解,要求精度到10^-6,f(x)的牛顿法为
Xn+1=Xn-(cos(Xn)-Xn)/(sin(Xn)-1)            一直算不出解
# include <iostream.h>
# include <iomanip.h>
# include <math.h>
# include <conio.h>
int main()
{
double a,b;
b=3.14159 / 4;
a=b-(cos(b)-b)/(sin(b)-1);
while (fabs(b-a)>1e-6)
{
b=a;
a=b-(cos(b)-b)/(sin(b)-1);
}
cout << “方程的解为” <<setiosflags(ios::fixed)<<setprecision(10)<< b << endl;
return 0;
}
解决方案:15分
你这个牛顿公式有问题吧。 cos求导后是-sin.
解决方案:15分
//已知f(x)=cos(x)-x,x的初始值为3.14159/4;用牛顿法求方程f(x)=0的近似解,要求精度到10^-6,f(x)的牛顿法为
//Xn+1=Xn-(cos(Xn)-Xn)/(-sin(Xn)-1)
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
#include <conio.h>
int main() {
    double x1,x;
    x=3.14159 / 4;
    x1=x-(cos(x)-x)/(-sin(x)-1.0);
    while (fabs(x-x1)>1e-6) {
        x=x1;
        x1=x-(cos(x)-x)/(-sin(x)-1.0);
    }
    cout << "方程的解为" <<setiosflags(ios::fixed)<<setprecision(10)<< x << endl;
    return 0;
}
//方程的解为0.7390851781
//

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明用牛顿法求方程f(x)=0的近似解
喜欢 (0)
[1034331897@qq.com]
分享 (0)