📄 diedai.cpp
字号:
#include"stdio.h"
#include "math.h"
#define PI 3.141592
double fun1(double x)
{
double f1=pow((sin(x)-x/2.0), 2);
return f1;
}
double fun2(double x)
{
double f2 = 2*(sin(x)-x/2.0)*(cos(x)-0.5);
return f2;
}
double fun3(double x)
{
double f3=((cos(x)-0.5)*(2*cos(x)-1)+(sin(x)-x/2.0)*(2.0*sin(x)))/pow((2.0*cos(x)-1),2);
return f3;
}
double fun4(double x)
{
double f4=(sin(x)-x/2.0)/(2*cos(x)-1);
return f4;
}
double fun5(double x)
{
double f5=x*x-6.0;
return f5;
}
double fun6(double x)
{
double f6=x * x * x / 3 -x;
return f6;
}
double fun7(double x)
{
double f7=x * x - 1;
return f7;
}
void main()
{
// double x = PI / 2;
double Tol=0.0001;
//牛顿重根迭代
double x = 0.5;
while(fabs(fun6(x))>=Tol)
{
int k = 0;
double a = 1.0 / (pow(2,k));
printf("x0=%f\t",x);
x=x-a*fun6(x)/fun7(x);
printf("x1=%f\t e=%f\n",x,fun6(x));
k++;
}
/*
while(fabs(fun4(x))>=Tol)
{
printf("x0=%f\t",x);
x=x-fun4(x)/fun3(x);
printf("x1=%f\t e=%f\n",x,fun4(x));
}
*/
/*
//双点弦割法
double x0 = 1.0;
double x1 = 2.5;
double x2 = 0.0;
while(fabs(fun5(x2))>=Tol)
{
printf("x0=%f\t",x0);
printf("x1=%f\t",x1);
x2=x1-fun5(x1)*(x0-x1)/(fun5(x0)-fun5(x1));
x0 = x1;
x1 = x2;
printf("x2=%f\t e=%f\n",x2,fun5(x2));
}
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -