C++:牛顿迭代法和用宏定义求圆的面积

    技术2022-07-11  75

    两个简单的C++代码

    牛顿迭代法

    问题描述:设计程序用迭代法求方程: 3 x 3 − 2 x 2 − 5 x − 7 = 0 3x^{3}-2x^{2}-5x-7=0 3x32x25x7=0在1附近的一个根,精确达到 1 0 − 6 10^{-6} 106,牛顿迭代公式为 x = x − f ( x ) / f ′ ( x ) x=x-f(x)/f'(x) x=xf(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; }

    结果展示如上图。

    Processed: 0.011, SQL: 9