Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.cpp
- // lab2
- //
- // Created by kosha on 17/02/2020.
- // Copyright © 2020 kosha. All rights reserved.
- //
- #include <iostream>
- #include "mlisp.h"
- double xmin= 0.;
- double xa, xb, ya, yb;
- double tolerance= 0.00001;
- double mphi = (3. - sqrt(5.)) /2.;
- double a = 3.;
- double b = 4.;
- double fun( double x ){
- x = x - 100./101.;
- return (x + sin(2*x - 0.25*pi) + log(x+1) - 0.5);
- }
- double close__enough_Q(double x,double y);
- double close__enough_Q(double x,double y){
- return ( abs(x - y) < tolerance);
- }
- double _CNA_try(double a, double b, double xa, double ya, double xb, double yb);
- double _CNA_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)), _CNA_try(a,b,xa,fun(xa),xb,yb)) : ( a= xa, xa =xb, yb = ya, xb = (b = mphi*(b-a)), _CNA_try(a,b, xa, ya, xb, fun(xb))
- ));
- }
- double golden_start(double a, double b);
- double golden_start(double a, double b){
- xa = a + mphi * (b-a);
- xb = b - mphi * (b-a);
- return _CNA_try (a, b, xa, fun(xa), xb, fun(xb));
- }
- double golden_section_search(double a, double b);
- double golden_section_search(double a, double b){
- {
- (a < b) ? xmin = golden_start(a,b) : xmin = golden_start (b,a);
- }
- newline();
- return xmin;
- }
- int main(){
- xmin = golden_section_search(a,b);
- display("interval=\t");
- display(a);
- display(" , ");
- display(b);
- display("]\n");
- display("xmin=\t\t");
- display(xmin);
- display("f(xmin)=\t");
- fun(xmin);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement