#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
void NewtonIteration();//牛顿迭代法求解方程
void DichotomySolving();//二分法求解方程
int main ()
{
NewtonIteration();
DichotomySolving();
}
//牛顿迭代法:y=f(x0)+f'(x0)(x-x0)-> 0=f+f'(x-x0)->x=x0-f/f'
void NewtonIteration()
{
int a = 3, b = 2, c = 1, d = -6;//系数
float x1 = 1, x0;
float f0, f1;//f0是原方程 f1是方程的一阶导
do
{
x0 = x1;
f0 = ((a * x0 + b) * x0 + c) * x0 + d;//即a*x^3+b*x^2+c*x+d
f1 = (3 * a * x0 + 2 * b) * x0 + c;//一阶导数
x1 = x0 - f0/f1;
}while(fabs(x1 - x0) >= 1e-4);
printf("(%d)x^3+(%d)x^2+(%d)x+(%d) = 0\n", a, b, c, d);
cout << "方程的解为:" << x1 << endl;
}
void DichotomySolving()//二分法求解方程
{
float x, x1 = 0, x2 = 2;
[算法设计与分析]4.1.3迭代法解方程(牛顿迭代法+二分法解方程)
最新推荐文章于 2023-04-06 22:31:51 发布
本文介绍了使用牛顿迭代法和二分法解决方程的方法。通过C++代码实现,展示了解析过程,直至达到预设精度。牛顿迭代法通过迭代更新求解,而二分法则利用区间不断缩窄来找到方程根。
摘要由CSDN通过智能技术生成