问题描述:设计程序用迭代法求方程: 3 x 3 − 2 x 2 − 5 x − 7 = 0 3x^{3}-2x^{2}-5x-7=0 3x3−2x2−5x−7=0在1附近的一个根,精确达到 1 0 − 6 10^{-6} 10−6,牛顿迭代公式为 x = x − f ( x ) / f ′ ( x ) x=x-f(x)/f'(x) x=x−f(x)/f′(x)。要求定义两个函数分别求 f ( x ) f(x) f(x)和 f ′ ( x ) f'(x) f′(x)的值。
#include <iostream> #include <math.h> using namespace std; double qf(double x){ double fx; fx=3*x*x*x-2*x*x+5*x-7; return fx; } double qf1(double x){ double fx1; fx1=9*x*x-4*x+5; return fx1; } void newton(double x0, double e){ double a=x0; double x=a-qf(a)/qf1(a); int i=0; while(fabs(x-a)>e){ cout<<"第"<<i+1<<"次迭代结果为:"<<x<<endl; a=x; i++; x=a-qf(a)/qf1(a); if (i>50) {break; cout<<"迭代失败!"<<endl;} } if (i<=50) {cout<<"迭代成功!"<<endl;} } int main() { double x0; double e=pow(10,-6); cout<<"please input the initial iteration value: "; cin>>x0; newton(x0,e); return 0; }结果展示:
问题描述:设计程序,分别用宏定义和函数求圆的面积,其中圆的半径可以为表达式。 (宏定义)代码:
#include <iostream> #include <math.h> #define S(r) r*r*M_PI using namespace std; int main() { double r,k; cout<<"please input the radius of the circle:"; cin>>r; k=S(r); cout<<"The area of the circle is:"<<k<<endl; return 0; }结果展示: (函数定义法)代码:
#include <iostream> #include <math.h> using namespace std; double area(double r){ double S; S=r*r*M_PI; return S; } int main() { double r,k; cout<<"please input the radius of the circle:"; cin>>r; k=area(r); cout<<"The area of the circle is:"<<k<<endl; return 0; }结果展示如上图。