import numpy as np
from scipy.optimize import minimize_scalar
# Define profit function
def profit( p) :
return p * ( 2 / ( 3 * p) ) - 0.1 * ( 2 / ( 3 * p) )
# Find the maximum of the profit function using the bisection method
result = minimize_scalar( lambda p: - profit( p) , bounds= ( 0.01 , 10 ) , method= 'bounded' )
# Optimal price p*
optimal_price = result.x
# Quantity x* at the optimal price
x_star = 2 / ( 3 * optimal_price)
# Calculate revenue and cost at the optimal price
revenue = optimal_price * x_star
cost = 0.1 * x_star
# Calculate net utility received by the EU and money received by the ISP
net_utility = 0.4 * revenue
money_received_ISP = 0.6 * revenue
# Print the results
print( "Price that maximizes profit (p*):" , optimal_price)
print( "Quantity created and delivered (x*):" , x_star)
print( "Maximum profit of the CP:" , - result.fun ) # Minimization result is negative of profit
print( "Net utility received by the EU:" , net_utility)
print( "Money received by the ISP:" , money_received_ISP)
aW1wb3J0IG51bXB5IGFzIG5wCmZyb20gc2NpcHkub3B0aW1pemUgaW1wb3J0IG1pbmltaXplX3NjYWxhcgoKIyBEZWZpbmUgcHJvZml0IGZ1bmN0aW9uCmRlZiBwcm9maXQocCk6CiAgICByZXR1cm4gcCAqICgyLygzKnApKSAtIDAuMSAqICgyLygzKnApKQoKIyBGaW5kIHRoZSBtYXhpbXVtIG9mIHRoZSBwcm9maXQgZnVuY3Rpb24gdXNpbmcgdGhlIGJpc2VjdGlvbiBtZXRob2QKcmVzdWx0ID0gbWluaW1pemVfc2NhbGFyKGxhbWJkYSBwOiAtcHJvZml0KHApLCBib3VuZHM9KDAuMDEsIDEwKSwgbWV0aG9kPSdib3VuZGVkJykKCiMgT3B0aW1hbCBwcmljZSBwKgpvcHRpbWFsX3ByaWNlID0gcmVzdWx0LngKCiMgUXVhbnRpdHkgeCogYXQgdGhlIG9wdGltYWwgcHJpY2UKeF9zdGFyID0gMiAvICgzICogb3B0aW1hbF9wcmljZSkKCiMgQ2FsY3VsYXRlIHJldmVudWUgYW5kIGNvc3QgYXQgdGhlIG9wdGltYWwgcHJpY2UKcmV2ZW51ZSA9IG9wdGltYWxfcHJpY2UgKiB4X3N0YXIKY29zdCA9IDAuMSAqIHhfc3RhcgoKIyBDYWxjdWxhdGUgbmV0IHV0aWxpdHkgcmVjZWl2ZWQgYnkgdGhlIEVVIGFuZCBtb25leSByZWNlaXZlZCBieSB0aGUgSVNQCm5ldF91dGlsaXR5ID0gMC40ICogcmV2ZW51ZQptb25leV9yZWNlaXZlZF9JU1AgPSAwLjYgKiByZXZlbnVlCgojIFByaW50IHRoZSByZXN1bHRzCnByaW50KCJQcmljZSB0aGF0IG1heGltaXplcyBwcm9maXQgKHAqKToiLCBvcHRpbWFsX3ByaWNlKQpwcmludCgiUXVhbnRpdHkgY3JlYXRlZCBhbmQgZGVsaXZlcmVkICh4Kik6IiwgeF9zdGFyKQpwcmludCgiTWF4aW11bSBwcm9maXQgb2YgdGhlIENQOiIsIC1yZXN1bHQuZnVuKSAgIyBNaW5pbWl6YXRpb24gcmVzdWx0IGlzIG5lZ2F0aXZlIG9mIHByb2ZpdApwcmludCgiTmV0IHV0aWxpdHkgcmVjZWl2ZWQgYnkgdGhlIEVVOiIsIG5ldF91dGlsaXR5KQpwcmludCgiTW9uZXkgcmVjZWl2ZWQgYnkgdGhlIElTUDoiLCBtb25leV9yZWNlaXZlZF9JU1ApCg==