Monop q1 labels
by Javier Puértolas
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsxgraph/1.8.0/jsxgraphcore.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jsxgraph/1.8.0/jsxgraphcore.css">
<div id="divid" class="jxgbox" style="width:480px; height:550px">
document.getElementById(divid).classList.remove("jxgbox"); /* Remove the default style. */
document.getElementById(divid).innerHTML = "<table style='width:100vw;height:100vh;'>"
+ "<tr><td><div id='box1'> </div></td></tr> <tr><td><div id='box2'> </div></td></tr>"
+ "</table>";
</div>
JavaScript
for (var i = 1; i <= 2; i++) {
var el = document.getElementById("box" + i)
el.classList.add("jxgbox")
/* You will have to do some random tuning of the margins and sizes as the default iframe might not have enough space.
el.style.width="48vw";
el.style.height="96vh"; */
el.style.width = "460px"
el.style.height = "260px"
}
/* qale de [10, 11, 12, 14, 15, 16, 18, 20, 21, 22
pted [1/2, 2/3, 3/4, 1, 5/4, 3/2, 4/3, 5/3, 2]] */
/* valores que vienen de STACK, aleatorios */
/* Para la demanda */
var qale = 12
var pted = 5 / 4
/* Para los costes */
var tipoini = 1
var cflin = 20
var blin = 5
var cfcuad = cflin / 2
var bcuad = blin / 10
/* Definición de funciones */
var ctotlin = function (q) {
return cflin + blin * q
}
var cmglin = function (q) {
return blin
}
var cmelin = function (q) {
return ctotlin(q) / q
}
var ctotcuad = function (q) {
return cfcuad + bcuad * q * q
}
var cmgcuad = function (q) {
return 2 * bcuad * q
}
var cmecuad = function (q) {
return ctotcuad(q) / q
}
var deminv = function (q) {
return qale * pted + blin - pted * q
}
var demcv = qale * pted + blin
var dem = function (p) {
return (demcv - p) / pted
}
var demch = dem(0)
var itot = function (q) {
return q * deminv(q)
}
var img = function (q) {
return qale * pted + blin - 2 * pted * q
}
var beneflin = function (q) {
return q * deminv(q) - ctotlin(q)
}
var benefcuad = function (q) {
return q * deminv(q) - ctotcuad(q)
}
/* Dimensiones de las figuras */
var th = (1.7 + Math.random() / 3) * demch
var tv = (1.2 + Math.random() / 3) * demcv
var tv2 = (1.1 + Math.random() / 3) * itot(demch / 2)
JXG.Options.axis.ticks.minorTicks = 0
/* Primera figura. Funciones unitarias */
var board = JXG.JSXGraph.initBoard("box1", {
boundingbox: [-0.1 * th, tv, th, -0.15 * tv],
axis: false,
grid: false,
showNavigation: false,
showCopyright: false,
pan: { enabled: false },
zoom: { enabled: false },
})
var xaxis = board.create(
"axis",
[
[0, 0],
...