📄 code5_2.cpp
字号:
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
#define MAX 100
#define e 1e-4
double coef[MAX];
double x[MAX];
double f(double x,double t[])
{
double temp=t[0];
for(int i=1;i<=MAX;i++)
{
if(t[i]==99999)
break;
temp += t[i]*pow(x,i);
}
return temp;
}
int xianjie(double x0,double x1)
{
int k;
x[0] = x0;
x[1] = x1;
for(k=1;k<=MAX;k++)
{
x[k+1] = x[k]-f(x[k],coef)*(x[k]-x[k-1])/(f(x[k],coef)-f(x[k-1],coef));
if(x[k+1]-x[k]<e&&x[k+1]-x[k]>-e||f(x[k+1],coef)<e&&f(x[k+1],coef)>-e)
break;
}
if(k==MAX)
return -1;
else
return k+1;
}
int main()
{
cout.precision(8);
cout.setf(ios::fixed);
int i;
cout<<"请输入原函数的系数,按照低次向高次的顺序!并且在完成之后输入99999! 记得系数为0的输入0!"<<endl;
for(i=0;i<=MAX;i++)
{
cin>>coef[i];
if(coef[i] == 99999)
break;
}
int k;
double x0,x1;
cout<<"请输入x0和x1:"<<endl;
cin>>x0;cin>>x1;
k = xianjie(x0,x1);
double error[MAX];
for(i=0;i<=k;i++)
{
double t1,t2,t3,temp;
t1 = x[i]-0;
t2 = sqrt(3)-x[i];
t3 = -sqrt(3)-x[i];
if(t1<0) t1 = -t1;
if(t2<0) t2 = -t2;
if(t3<0) t3 = -t3;
if(t1<=t2)
temp = t1;
else temp = t2;
if(temp>t3)
temp = t3;
error[i] = temp;
}
cout<<"用弦截法做出的结果为:"<<endl;
cout<<"k"<<" x[k] f(x) error"<<endl;
for(i=0;i<=k;i++)
{
cout<<i<<" "<<x[i]<<" "<<f(x[i],coef)<<" "<<error[i]<<endl;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -