Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "mlisp.h"
- double a=0.;
- double b=2;
- double xmin=0.;
- double tolerance=0.00001;
- double mphi=(3.-sqrt(5))/2.;
- double xa;
- double xb;
- double ya;
- double yb;
- double fun(double x){
- x=x-105./106.;
- return (x*atan(x)-1./3.);
- }
- double golden__section__search(double a, double b);
- double golden__start(double a,double b);
- double _VVV_try(double a,double b,double xa,double ya,double xb,double yb);
- double close__enough_Q(double x,double y);
- double golden__start(double a,double b){
- xa=a+mphi*(b-a);
- xb=b-mphi*(b-a);
- return _VVV_try(a,b,xa,fun(xa),xb,fun(xb));
- }
- double golden__section__search(double a, double b){
- (a<b)? xmin=golden__start(a,b): xmin=golden__start(b,a);
- newline();
- return xmin;
- }
- double close__enough_Q(double x,double y){
- return abs(x-y)<tolerance;
- }
- double _VVV_try(double a,double b,double xa,double ya,double xb,double yb){
- close__enough_Q(a,b)? ((a+b)*0.5):(
- display("+"),
- (ya<yb)?(
- b=xb,
- xb=xa,
- yb=ya,
- xa=a+mphi*(b-a),
- _VVV_try(a,b,xa,fun(xa),xb,yb)
- ):
- (
- a=xa,
- xa=xb,
- ya=yb,
- xb=b-mphi*(b-a),
- _VVV_try(a,b,xa,ya,xb,fun(xb))
- )
- );
- }
- int main(){
- xmin=golden__section__search(a,b);
- display("interval=\t[");
- display(a);
- display(" , ");
- display(b);
- display("]\n");
- display("xmin=\t\t");
- display(xmin);
- newline();
- display("f(xmin)=\t");
- display(fun(xmin));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement