Advertisement
Konark

Laba 2

Nov 2nd, 2016
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>Лабораторная №2 - Нечеткая логика - Спесивец В.</title>
  6.     <style>
  7.         body {
  8.             background: url(http://adobe-master.ru/wp-content/uploads/2014/06/fon-lvl-script.jpg);
  9.         }
  10.        
  11.         .content {
  12.             margin: 0 auto;
  13.             width: 700px;
  14.             height: 610px;
  15.             background-color: #fff;
  16.             margin: 0 auto;
  17.             padding-top: 10px;
  18.             padding-bottom: 10px;
  19.         }
  20.  
  21.         .input-inf {
  22.             width: 300px;
  23.             height: 150px;
  24.             border: dashed 1px;
  25.             margin: 0 auto;
  26.             text-align: center;
  27.  
  28.         }
  29.  
  30.         .result-inf {
  31.             width: 300px;
  32.             height: 90px;
  33.             border: dashed 1px;
  34.             margin: 0 auto;
  35.             text-align: center;
  36.         }
  37.  
  38.         .result-x {
  39.             padding-top: 10px;
  40.             width: 300px;
  41.             height: 150px;
  42.             border: dashed 1px;
  43.             margin: 0 auto;
  44.             text-align: center;
  45.         }
  46.  
  47.         .answer_a {
  48.             width: 233px;
  49.             height: 150px;
  50.             float:left;
  51.         }
  52.  
  53.         .answer_b {
  54.             width: 233px;
  55.             height: 150px;
  56.             float:left;
  57.         }
  58.  
  59.         .answer_c {
  60.             width: 233px;
  61.             height: 150px;
  62.             float:left;
  63.            
  64.         }
  65.  
  66.         .answers {
  67.             padding-left: 25px;
  68.             padding-right: 25px;
  69.             padding-top: 10px;
  70.             width: 700px;
  71.             height: 150px;
  72.            
  73.  
  74.         }
  75.  
  76.         canvas {
  77.             display: block;
  78.             margin: 0 auto;
  79.             border: solid 1px;
  80.     }
  81.     </style>
  82. </head>
  83. <body onload="graph()">
  84.     <div class="content">
  85.     <form id="calc" name="calc">
  86.         <div class="input-inf">
  87.             <p>Нечеткое число А:</p>
  88.             <input type="text" size="3" id="a1" name="a1"> <input type="text" size="3" id="a2" name="a2"> <input type="text" size="3" id="a3" name="a3">
  89.             <p>Нечеткое число B:</p>
  90.             <input type="text" size="3" id="b1" name="b1"> <input type="text" size="3" id="b2" name="b2"> <input type="text" size="3" id="b3" name="b3">
  91.         </div>
  92.         <div class="result-inf">
  93.             <p>Результат:</p>
  94.             <input type="text" size="3" id="c1" name="c1" readonly> <input type="text" size="3" id="c2" name="c2" readonly> <input type="text" size="3" id="c3" name="c3" readonly>
  95.         </div>
  96.         <div class="result-x">
  97.             Значение Х: <input type="text" size="3" id="x1" name="x1" readonly> <input type="button" id="search" name="search" onclick="search_x()" disabled="1" value="Найти">
  98.             <p id="ax_1">μА(х):</p>
  99.             <p id="bx_1">μB(х):</p>
  100.             <p id="cx_1">μC(х):</p>
  101.         </div>
  102.         <div class="answers">
  103.             <div class="answer_a">
  104.                 <p>μА(х):</p>
  105.                 <p id="ax" class="ax"></p>
  106.             </div>
  107.             <div class="answer_b">
  108.                 <p>μB(х):</p>
  109.                 <p id="bx" class="bx"></p>
  110.             </div>
  111.             <div class="andwer_c">
  112.                 <p>μC(х):</p>
  113.                 <p id="cx" class="cx"></p>
  114.             </div>
  115.         </div><br/>
  116.         <center><input type="button" onclick="calculating()" value="Обчислить" > <input type="button" onclick="clearConv()" value="Очистить график"></center>
  117.         </form>
  118.     </div>
  119.  
  120. <canvas id="canv" width="700px" height="400px"></canvas>
  121.     <script type="text/javascript">
  122.         function graph(){
  123.             canvas = document.getElementById("canv");
  124.             context = canvas.getContext("2d");
  125.             context.moveTo(0,370);
  126.             context.lineTo(700, 370);
  127.             context.moveTo(350,0);
  128.             context.lineTo(350, 700);
  129.             context.moveTo(0,100);
  130.             context.lineTo(700, 100);
  131.             context.strokeText("1", 352, 93);
  132.             context.strokeText("0", 352, 380);
  133.             context.strokeStyle = "#000000";
  134.             context.stroke();
  135.         }
  136.  
  137.         function clearConv(){
  138.             canvas.width = canvas.width;
  139.             graph();
  140.         }
  141.  
  142.         function paint(){
  143.             //a
  144.             res_graph_a1 = 350 + (a1*10);
  145.             context.strokeText(a1, res_graph_a1, 380);
  146.             res_graph_a2 = 350 + (a2*10);
  147.             context.strokeText(a2, res_graph_a2, 380);
  148.             res_graph_a3 = 350 + (a3*10);
  149.             context.strokeText(a3, res_graph_a3, 380);
  150.             average_a = ((res_graph_a1+res_graph_a3)/2);
  151.             context.moveTo(res_graph_a1, 370);
  152.             context.lineTo(average_a, 100);
  153.             context.moveTo(average_a, 100);
  154.             context.lineTo(res_graph_a3, 370);
  155.             //context.strokeStyle = "#9ACD32";
  156.             context.stroke();
  157.        
  158.             //b
  159.             res_graph_b1 = 350 + (b1*10);
  160.             context.strokeText(b1, res_graph_b1, 380);
  161.             res_graph_b2 = 350 + (b2*10);
  162.             context.strokeText(b2, res_graph_b2, 380);
  163.             res_graph_b3 = 350 + (b3*10);
  164.             context.strokeText(b3, res_graph_b3, 380);
  165.             average_b = ((res_graph_b1+res_graph_b3)/2);
  166.             context.moveTo(res_graph_b1, 370);
  167.             context.lineTo(average_b, 100);
  168.             context.moveTo(average_b, 100);
  169.             context.lineTo(res_graph_b3, 370);
  170.             //context.strokeStyle = "#FF8C00";
  171.             context.stroke();
  172.             //c
  173.             res_graph_c1 = 350 + (c1*10);
  174.             context.strokeText(c1, res_graph_c1, 380);
  175.             res_graph_c2 = 350 + (c2*10);
  176.             context.strokeText(c2, res_graph_c2, 380);
  177.             res_graph_c3 = 350 + (c3*10);
  178.             context.strokeText(c3, res_graph_c3, 380);
  179.             average_c = ((res_graph_c1+res_graph_c3)/2);
  180.             context.moveTo(res_graph_c1, 370);
  181.             context.lineTo(average_c, 100);
  182.             context.moveTo(average_c, 100);
  183.             context.lineTo(res_graph_c3, 370);
  184.             //context.strokeStyle = "#FF0000";
  185.             context.stroke();
  186.         }
  187.  
  188.         function search_x(){
  189.             x = parseFloat(document.getElementById("x1").value);
  190.             var a_text2 = document.getElementById("ax_1");
  191.             var b_text2 = document.getElementById("bx_1");
  192.             var c_text2 = document.getElementById("cx_1");
  193.             var result;
  194.             //Ax
  195.             if (x < a1 || x > a3){
  196.                 a_text2.innerHTML = "μА(х): 0";
  197.             }else if (x >= a1 && x <= a2){
  198.                 result = ((x - a1) / (a2 - a1));
  199.                 a_text2.innerHTML = "μА(х): " + result.toFixed();
  200.             }else if (x > a2 && x <= a3){
  201.                 result = ((a3 - x) / (a3 - a2));
  202.                 a_text2.innerHTML = "μА(х): " + result.toFixed();
  203.             }else{
  204.                 alert("Ошибка");
  205.             }
  206.             //Bx
  207.             if (x < b1 || x > b3){
  208.                 b_text2.innerHTML = "μА(х): 0";
  209.             }else if (x >= b1 && x <= b2){
  210.                 result = ((x - b1) / (b2 - b1));
  211.                 b_text2.innerHTML = "μА(х): " + result.toFixed();
  212.             }else if (x > b2 && x <= b3){
  213.                 result = ((b3 - x) / (b3 - b2));
  214.                 b_text2.innerHTML = "μА(х): " + result.toFixed();
  215.             }else{
  216.                 alert("Ошибка");
  217.             }
  218.             //Cx
  219.             if (x < c1 || x > c3){
  220.                 c_text2.innerHTML = "μА(х): 0";
  221.             }else if (x >= c1 && x <= c2){
  222.                 result = ((x - c1) / (c2 - c1));
  223.                 c_text2.innerHTML = "μА(х): " + result.toFixed();
  224.             }else if (x > c2 && x <= c3){
  225.                 result = ((c3 - x) / (c3 - c2));
  226.                 c_text2.innerHTML = "μА(х): " + result.toFixed();
  227.             }else{
  228.                 alert("Ошибка");
  229.             }
  230.             var res_x = 350 + (x*10);
  231.             context.strokeText(x, res_x, 380);
  232.             context.moveTo(res_x, 370);
  233.             context.lineTo(res_x, 100);
  234.             context.stroke();
  235.         }
  236.  
  237.         function calculating(){
  238.             a1 = parseFloat(document.getElementById("a1").value);
  239.             a2 = parseFloat(document.getElementById("a2").value);
  240.             a3 = parseFloat(document.getElementById("a3").value);
  241.             b1 = parseFloat(document.getElementById("b1").value);
  242.             b2 = parseFloat(document.getElementById("b2").value);
  243.             b3 = parseFloat(document.getElementById("b3").value);
  244.             if ((a2 < a1 && a3 < a1) || a2 < a1 || a3 < a1 || (b2 < b1 && b2 < b1) || b2 < b1 || b3 < b1){
  245.                 alert("Введите корректные данные");
  246.             } else if (a2 > a3 || b2 > b3){
  247.                 alert("Введите корректные данные");
  248.             }else{
  249.                 c1 = a1 + b1;
  250.                 c2 = a2 + b2;
  251.                 c3 = a3 + b3;
  252.                 document.getElementById("c1").value = c1;
  253.                 document.getElementById("c2").value = c2;
  254.                 document.getElementById("c3").value = c3;
  255.                 document.calc.x1.readOnly = false;
  256.                 document.calc.search.disabled = 0;
  257.                 var a_text = document.getElementById("ax");
  258.                 var b_text = document.getElementById("bx");
  259.                 var c_text = document.getElementById("cx");
  260.                 a_text.innerHTML = "0, при Х < " + a1 + " или X > " + a3 + "<br/>(x - " + a1 + ")/" + (a2-a1) + " при " + a1 +
  261.                 " <= х <= " + a2 + "<br/><br/>А(α) = [ " + a1 + " + α" + (a2-a1) + ", " + a3 + " - α" + (a3-a2) + " ]";
  262.                 b_text.innerHTML = "0, при Х < " + b1 + " или X > " + b3 + "<br/>(x - " + b1 + ")/" + (b2-b1) + " при " + b1 +
  263.                 " <= х <= " + b2 + "<br/><br/>А(α) = [ " + b1 + " + α" + (b2-b1) + ", " + b3 + " - α" + (b3-b2) + " ]";
  264.                 c_text.innerHTML = "0, при Х < " + c1 + " или X > " + c3 + "<br/>(x - " + c1 + ")/" + (c2-c1) + " при " + c1 +
  265.                 " <= х <= " + c2 + "<br/><br/>А(α) = [ " + c1 + " + α" + (c2-c1) + ", " + c3 + " - α" + (c3-c2) + " ]";
  266.                 paint();
  267.             }
  268.         }
  269.     </script>
  270. </body>
  271. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement