计算方法-1.1and1.2

来源:互联网 发布:淘宝网有电子吹管吗? 编辑:程序博客网 时间:2024/04/27 06:09

1.1

#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>using namespace std;const double value = 0.5;double f( double x ){return x * x * x - value;}double f_( double x ){//一次导函数return 3.0 * x * x;}int solve_bisection( double x1, double x2, double exps ){printf( "\nbisection method : \n" );int iteration = 0;double x3;do{iteration++;x3 = ( x1 + x2 ) / 2;printf( "iteration %d : x3: %lf\terror: %lf\n", iteration, x3, f( x3 ) );if( f( x3 ) == 0 ){break;}else if( f( x3 ) * f( x1 ) < 0 ){x2 = x3;}else{x1 = x3;}}while( abs( f( x3 ) ) > exps );printf( "solution : %lf\n", x3 );return 0;}int solve_secant( double x1, double x2, double exps ){printf( "\nLinear interpolation and secant methods : \n" );int iteration = 0;double x3;do{iteration++;x3 = ( x1 * f( x2 ) - x2 * f( x1 ) ) / ( f( x2 ) - f( x1 ) );printf( "iteration %d : x3: %lf\terror: %lf\n", iteration, x3, f( x3 ) );if( f( x3 ) == 0 ){break;}else if( f( x3 ) * f( x1 ) < 0 ){x2 = x3;}else{x1 = x3;}}while( abs( f( x3 ) ) > exps );printf( "solution : %lf\n", x3 );return 0;}int solve_Newton_Raphson( double x0, double exps ){ printf( "\nNewton-Raphson methods : \n" );printf( "starting from : %lf \n", x0 );int iteration = 0;double x = x0;do{iteration++;x = x - f( x ) / f_( x );printf( "iteration %d : x3: %lf\terror: %lf\n", iteration, x, f( x ) );}while( abs( f( x ) ) > exps );printf( "solution : %lf\n", x );return 0;}int main(){solve_bisection( 0, 1, 1e-4 );solve_secant( 0, 1, 1e-4 );solve_Newton_Raphson( 1, 1e-4 );//solve_Newton_Raphson( 0, 1e-4 );solve_Newton_Raphson( 3, 1e-4 );return 0;}

1.2

#include <iostream>#include <cstring>#include <cstdio>#include <cmath>using namespace std;const double PI = 3.1415926;double f( double x ){return sin( x ) - 0.5;}double g( double x ){return x + sin( x ) - 0.5;}int solve_Direct_iteration( double x0, double exps ){double pre = x0 , x = x0;int iteration = 0;do{iteration++;pre = x;x = g( x );printf( "iteration %d : x: %lf\terror: %.7lf\n", iteration, x, f( x ) );}while( abs( x - pre ) > exps );printf( "solution : %lf\n", x );return 0;}int main(){solve_Direct_iteration( PI / 2.0, 1e-6 );return 0;}


0 0
原创粉丝点击