📄 main.cpp
字号:
#include <iostream>
#include <stdlib.h>
#include <math.h>
#define Nmax 100
using namespace std;
float F(double a)
{
return pow(10.0,a)-2;
}
float F1(float a)
{
return log10(a+2);
}
float Fn(float a)
{
return a - (a-pow(10.0,(double)a) + 2)/(1-2.302585*pow(10,a));
}
int main(int argc, char *argv[])
{
//X -10^X +2 = 0 => Xn = 10^Xn-1 -2
int a = 0,b = 1;
float e = 0.0001;
float X0 = 0.5;
float X ;
for(int i=0; i<Nmax; i++)
{
X = F1(X0);
if(fabs(X-X0)<e)
{
printf("方程的正根为:%5f\n",X);
break;
}
X0 = X;
if(i==Nmax-1)
printf("迭代不收敛!\n");
}
X0 = -1.0;
for(int i=0; i<Nmax; i++)
{
X = F(X0);
if(fabs(X-X0)<e)
{
printf("方程的负根为:%5f\n",X);
break;
}
X0 = X;
if(i==Nmax-1)
printf("迭代不收敛!\n");
}
printf("Newton--------------------------\n");
X0 = 0.5;
for(int i=0; i<Nmax; i++)
{
X = Fn(X0);
if(fabs(X-X0)<e)
{
printf("方程的负根为:%5f\n",X);
break;
}
X0 = X;
if(i==Nmax-1)
printf("迭代不收敛!\n");
}
X0 = -1.0;
for(int i=0; i<Nmax; i++)
{
X = Fn(X0);
if(fabs(X-X0)<e)
{
printf("方程的负根为:%5f\n",X);
break;
}
X0 = X;
if(i==Nmax-1)
printf("迭代不收敛!\n");
}
system("PAUSE");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -