#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 20 14:05:40 2024

@author: sam
"""

import numpy as np

minimum = [] #list for minimums

'''functions'''
def f(x):
    return x*np.cos(x) + x*np.sin(x/2)

def minbracket(f,a,b,N):
    h = (b-a)/N #width of each segment
    for i in range(1,int(N)): #iterate through segments
        x = a+h*i #change lower bound
        if f(x)<f(x-h) and f(x)<f(x+h): #checks minimum
            minimum.append([x-h,x+h]) #adds points that bracket minimum to list of minimums
        else:
            continue



'''run code'''
a = -10
b = 10
N = 1e5

minbracket(f,a,b,N) #calls function
for i in range(len(minimum)):
    print(minimum[i]) #prints list