Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Лабораторная №2 - Нечеткая логика - Спесивец В.</title>
- <style>
- body {
- background: url(http://adobe-master.ru/wp-content/uploads/2014/06/fon-lvl-script.jpg);
- }
- .content {
- margin: 0 auto;
- width: 700px;
- height: 610px;
- background-color: #fff;
- margin: 0 auto;
- padding-top: 10px;
- padding-bottom: 10px;
- }
- .input-inf {
- width: 300px;
- height: 150px;
- border: dashed 1px;
- margin: 0 auto;
- text-align: center;
- }
- .result-inf {
- width: 300px;
- height: 90px;
- border: dashed 1px;
- margin: 0 auto;
- text-align: center;
- }
- .result-x {
- padding-top: 10px;
- width: 300px;
- height: 150px;
- border: dashed 1px;
- margin: 0 auto;
- text-align: center;
- }
- .answer_a {
- width: 233px;
- height: 150px;
- float:left;
- }
- .answer_b {
- width: 233px;
- height: 150px;
- float:left;
- }
- .answer_c {
- width: 233px;
- height: 150px;
- float:left;
- }
- .answers {
- padding-left: 25px;
- padding-right: 25px;
- padding-top: 10px;
- width: 700px;
- height: 150px;
- }
- canvas {
- display: block;
- margin: 0 auto;
- border: solid 1px;
- }
- </style>
- </head>
- <body onload="graph()">
- <div class="content">
- <form id="calc" name="calc">
- <div class="input-inf">
- <p>Нечеткое число А:</p>
- <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">
- <p>Нечеткое число B:</p>
- <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">
- </div>
- <div class="result-inf">
- <p>Результат:</p>
- <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>
- </div>
- <div class="result-x">
- Значение Х: <input type="text" size="3" id="x1" name="x1" readonly> <input type="button" id="search" name="search" onclick="search_x()" disabled="1" value="Найти">
- <p id="ax_1">μА(х):</p>
- <p id="bx_1">μB(х):</p>
- <p id="cx_1">μC(х):</p>
- </div>
- <div class="answers">
- <div class="answer_a">
- <p>μА(х):</p>
- <p id="ax" class="ax"></p>
- </div>
- <div class="answer_b">
- <p>μB(х):</p>
- <p id="bx" class="bx"></p>
- </div>
- <div class="andwer_c">
- <p>μC(х):</p>
- <p id="cx" class="cx"></p>
- </div>
- </div><br/>
- <center><input type="button" onclick="calculating()" value="Обчислить" > <input type="button" onclick="clearConv()" value="Очистить график"></center>
- </form>
- </div>
- <canvas id="canv" width="700px" height="400px"></canvas>
- <script type="text/javascript">
- function graph(){
- canvas = document.getElementById("canv");
- context = canvas.getContext("2d");
- context.moveTo(0,370);
- context.lineTo(700, 370);
- context.moveTo(350,0);
- context.lineTo(350, 700);
- context.moveTo(0,100);
- context.lineTo(700, 100);
- context.strokeText("1", 352, 93);
- context.strokeText("0", 352, 380);
- context.strokeStyle = "#000000";
- context.stroke();
- }
- function clearConv(){
- canvas.width = canvas.width;
- graph();
- }
- function paint(){
- //a
- res_graph_a1 = 350 + (a1*10);
- context.strokeText(a1, res_graph_a1, 380);
- res_graph_a2 = 350 + (a2*10);
- context.strokeText(a2, res_graph_a2, 380);
- res_graph_a3 = 350 + (a3*10);
- context.strokeText(a3, res_graph_a3, 380);
- average_a = ((res_graph_a1+res_graph_a3)/2);
- context.moveTo(res_graph_a1, 370);
- context.lineTo(average_a, 100);
- context.moveTo(average_a, 100);
- context.lineTo(res_graph_a3, 370);
- //context.strokeStyle = "#9ACD32";
- context.stroke();
- //b
- res_graph_b1 = 350 + (b1*10);
- context.strokeText(b1, res_graph_b1, 380);
- res_graph_b2 = 350 + (b2*10);
- context.strokeText(b2, res_graph_b2, 380);
- res_graph_b3 = 350 + (b3*10);
- context.strokeText(b3, res_graph_b3, 380);
- average_b = ((res_graph_b1+res_graph_b3)/2);
- context.moveTo(res_graph_b1, 370);
- context.lineTo(average_b, 100);
- context.moveTo(average_b, 100);
- context.lineTo(res_graph_b3, 370);
- //context.strokeStyle = "#FF8C00";
- context.stroke();
- //c
- res_graph_c1 = 350 + (c1*10);
- context.strokeText(c1, res_graph_c1, 380);
- res_graph_c2 = 350 + (c2*10);
- context.strokeText(c2, res_graph_c2, 380);
- res_graph_c3 = 350 + (c3*10);
- context.strokeText(c3, res_graph_c3, 380);
- average_c = ((res_graph_c1+res_graph_c3)/2);
- context.moveTo(res_graph_c1, 370);
- context.lineTo(average_c, 100);
- context.moveTo(average_c, 100);
- context.lineTo(res_graph_c3, 370);
- //context.strokeStyle = "#FF0000";
- context.stroke();
- }
- function search_x(){
- x = parseFloat(document.getElementById("x1").value);
- var a_text2 = document.getElementById("ax_1");
- var b_text2 = document.getElementById("bx_1");
- var c_text2 = document.getElementById("cx_1");
- var result;
- //Ax
- if (x < a1 || x > a3){
- a_text2.innerHTML = "μА(х): 0";
- }else if (x >= a1 && x <= a2){
- result = ((x - a1) / (a2 - a1));
- a_text2.innerHTML = "μА(х): " + result.toFixed();
- }else if (x > a2 && x <= a3){
- result = ((a3 - x) / (a3 - a2));
- a_text2.innerHTML = "μА(х): " + result.toFixed();
- }else{
- alert("Ошибка");
- }
- //Bx
- if (x < b1 || x > b3){
- b_text2.innerHTML = "μА(х): 0";
- }else if (x >= b1 && x <= b2){
- result = ((x - b1) / (b2 - b1));
- b_text2.innerHTML = "μА(х): " + result.toFixed();
- }else if (x > b2 && x <= b3){
- result = ((b3 - x) / (b3 - b2));
- b_text2.innerHTML = "μА(х): " + result.toFixed();
- }else{
- alert("Ошибка");
- }
- //Cx
- if (x < c1 || x > c3){
- c_text2.innerHTML = "μА(х): 0";
- }else if (x >= c1 && x <= c2){
- result = ((x - c1) / (c2 - c1));
- c_text2.innerHTML = "μА(х): " + result.toFixed();
- }else if (x > c2 && x <= c3){
- result = ((c3 - x) / (c3 - c2));
- c_text2.innerHTML = "μА(х): " + result.toFixed();
- }else{
- alert("Ошибка");
- }
- var res_x = 350 + (x*10);
- context.strokeText(x, res_x, 380);
- context.moveTo(res_x, 370);
- context.lineTo(res_x, 100);
- context.stroke();
- }
- function calculating(){
- a1 = parseFloat(document.getElementById("a1").value);
- a2 = parseFloat(document.getElementById("a2").value);
- a3 = parseFloat(document.getElementById("a3").value);
- b1 = parseFloat(document.getElementById("b1").value);
- b2 = parseFloat(document.getElementById("b2").value);
- b3 = parseFloat(document.getElementById("b3").value);
- if ((a2 < a1 && a3 < a1) || a2 < a1 || a3 < a1 || (b2 < b1 && b2 < b1) || b2 < b1 || b3 < b1){
- alert("Введите корректные данные");
- } else if (a2 > a3 || b2 > b3){
- alert("Введите корректные данные");
- }else{
- c1 = a1 + b1;
- c2 = a2 + b2;
- c3 = a3 + b3;
- document.getElementById("c1").value = c1;
- document.getElementById("c2").value = c2;
- document.getElementById("c3").value = c3;
- document.calc.x1.readOnly = false;
- document.calc.search.disabled = 0;
- var a_text = document.getElementById("ax");
- var b_text = document.getElementById("bx");
- var c_text = document.getElementById("cx");
- a_text.innerHTML = "0, при Х < " + a1 + " или X > " + a3 + "<br/>(x - " + a1 + ")/" + (a2-a1) + " при " + a1 +
- " <= х <= " + a2 + "<br/><br/>А(α) = [ " + a1 + " + α" + (a2-a1) + ", " + a3 + " - α" + (a3-a2) + " ]";
- b_text.innerHTML = "0, при Х < " + b1 + " или X > " + b3 + "<br/>(x - " + b1 + ")/" + (b2-b1) + " при " + b1 +
- " <= х <= " + b2 + "<br/><br/>А(α) = [ " + b1 + " + α" + (b2-b1) + ", " + b3 + " - α" + (b3-b2) + " ]";
- c_text.innerHTML = "0, при Х < " + c1 + " или X > " + c3 + "<br/>(x - " + c1 + ")/" + (c2-c1) + " при " + c1 +
- " <= х <= " + c2 + "<br/><br/>А(α) = [ " + c1 + " + α" + (c2-c1) + ", " + c3 + " - α" + (c3-c2) + " ]";
- paint();
- }
- }
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement