牛顿法50分求调
查看原帖
牛顿法50分求调
1054383
c_legg楼主2024/8/7 20:47
#include <bits/stdc++.h>
using namespace std;

int a, b, c, d;
double f(double x) {
	return a*x*x*x+b*x*x+c*x+d;
}

double sea(double l, double r) {
	double mid;
	while(abs(l-r)!=0) {
		mid=(l+r)/2.0;
		double n=f(mid);
		if(n>0) 
			r=mid;
		else if(n<0)
			l=mid;
		else
			return mid;
		//cout<<mid<<endl;
	}
	return mid;
}

void solve() {
	cout<<setiosflags(ios::fixed)<<setprecision(2);
	for(double l=-100; l<=100; l+=0.5) {
		if(f(l)*f(l+0.5)<0) {
			cout<<sea(l, l+0.5)<<" ";
		}else if(f(l)==0) {
			cout<<l<<" ";
		}
	}
}

int main() {
	cin>>a>>b>>c>>d;
	solve();
	return 0;
}
2024/8/7 20:47
加载中...