📄 main.cpp
字号:
#include<iostream>
using namespace std;
double foo(double x,double c3,double c2,double c1,double c0)
{
return c3*x*x*x+c2*x*x+c1*x+c0;
}
void CurveCut();
void NewTon();
int main(int args,char* argv[])
{
//x(k+1) = x(k)-f(xk)/f'(xk);
//
cout<<"请选择 解方程的方法 :";
cout<<endl<<"1---NewTon ,2----弦割法";
int method = 1;
cin>>method;
switch(method)
{
case 1:
NewTon();
break;
case 2:
CurveCut();
break;
default:
break ;
}
return 0;
/* double c3,c2,c1,c0;
cout<<"请按次序输入 三次多项式的系数"<<endl;
cout<<"例如y=(x)^3-3x-1,请按顺序输入 1 空格 0 控制 -3 空格 -1 空格 ";
cin>>c3>>c2>>c1>>c0;
//求导数
double cd2,cd1,cd0;
cd2 = 3*c3;
cd1 = 2*c2;
cd0 = c1;
double xk = 2;
cout<<"请输入初始迭值 x0=";
cin>>xk;
double df = 2.0;
while (df > 0.0001 )
{
df = foo(xk,c3,c2,c1,c0) / foo(xk,0,cd2,cd1,cd0);
xk -= df;
}
cout<<"\n结果是x"<<xk;
cout<<endl;
//下面执行弦割法
double xk_1 = 1.9;
xk = 2.0;
return 0;*/
}
void NewTon()
{
double c3,c2,c1,c0;
cout<<"请按次序输入 三次多项式的系数"<<endl;
cout<<"例如y=(x)^3-3x-1,请按顺序输入 1 空格 0 控制 -3 空格 -1 空格\n ";
cin>>c3>>c2>>c1>>c0;
//求导数
double cd2,cd1,cd0;
cd2 = 3*c3;
cd1 = 2*c2;
cd0 = c1;
double xk = 2;
cout<<"请输入初始迭值 x0=";
cin>>xk;
double df = 2.0;
while (df > 0.0001 )
{
df = foo(xk,c3,c2,c1,c0) / foo(xk,0,cd2,cd1,cd0);
xk -= df;
}
cout<<"\n结果是 x = "<<xk;
cout<<endl;
}
void CurveCut()
{
double c3,c2,c1,c0;
cout<<"请按次序输入 三次多项式的系数"<<endl;
cout<<"例如y=(x)^3-3x-1,请按顺序输入 1 空格 0 控制 -3 空格 -1 空格 \n";
cin>>c3>>c2>>c1>>c0;
//求导数
double cd2,cd1,cd0;
cd2 = 3*c3;
cd1 = 2*c2;
cd0 = c1;
double xk = 2;
cout<<"请输入初始迭值 x0=";
cin>>xk;
double xk_1 = 2;
cout<<"请输入初始迭值 x1=";
cin>>xk_1;
double df = 2.0;
while (df > 0.0001 )
{
double fxk = foo(xk,c3,c2,c1,c0) ;
double fxk_1= foo(xk_1,c3,c2,c1,c0) ;
df = (xk-xk_1)*(fxk/(fxk-fxk_1)) ;
xk_1 = xk;
xk -= df;
}
cout<<"\n结果是 x = "<<xk;
cout<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -