C++编写程序用牛顿迭代法求一元方程5x^3—3x^2+2x—8=0 在x=1.1附近的根要求的精
发布网友
发布时间:2022-05-27 15:40
我来回答
共3个回答
热心网友
时间:2023-10-31 12:58
#include "stdafx.h"
#include "iostream"
#include "math.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
double x = 1.1;
while(fabs(5*x*x*x-3*x*x+2*x-8)>0.000001)
x = x - (5*x*x*x-3*x*x+2*x-8)/(15*x*x-6*x+2);
cout<<"方程的解为"<<x<<endl;
system("pause");
return 0;
}
热心网友
时间:2023-10-31 12:59
#include "iostream"
#include "math.h"
using namespace std;
typedef double (*func) (double);
double y(double x){
return ((5*x-3)*x+2)*x-8;
}
double dy(double x) {
return (15*x-6)*x+2;
}
double newton(double x, func fy, func fdy) {
double x0;
do {
x0 = x;
if (fabs(fdy(x)) < 1e-100) break;
x = x - fy(x)/fdy(x);
cout << fy(x) << " " << x << endl;
} while (fabs(x-x0) > 1e-6);
return x0;
}
int main() {
cout << newton(1.1, y, dy);
return 0;
}
热心网友
时间:2023-10-31 12:59
嘎嘎追答我写过类似的啊