?? 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<<"請按次序輸入 三次多項式的系數(shù)"<<endl;
cout<<"例如y=(x)^3-3x-1,請按順序輸入 1 空格 0 控制 -3 空格 -1 空格 ";
cin>>c3>>c2>>c1>>c0;
//求導(dǎo)數(shù)
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結(jié)果是x"<<xk;
cout<<endl;
//下面執(zhí)行弦割法
double xk_1 = 1.9;
xk = 2.0;
return 0;*/
}
void NewTon()
{
double c3,c2,c1,c0;
cout<<"請按次序輸入 三次多項式的系數(shù)"<<endl;
cout<<"例如y=(x)^3-3x-1,請按順序輸入 1 空格 0 控制 -3 空格 -1 空格\n ";
cin>>c3>>c2>>c1>>c0;
//求導(dǎo)數(shù)
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結(jié)果是 x = "<<xk;
cout<<endl;
}
void CurveCut()
{
double c3,c2,c1,c0;
cout<<"請按次序輸入 三次多項式的系數(shù)"<<endl;
cout<<"例如y=(x)^3-3x-1,請按順序輸入 1 空格 0 控制 -3 空格 -1 空格 \n";
cin>>c3>>c2>>c1>>c0;
//求導(dǎo)數(shù)
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結(jié)果是 x = "<<xk;
cout<<endl;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -