Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ_гр.220201_МихайловА.Д. варNo.20_ver_1.0.6.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.48 Mб
Скачать

Файл print.Erl

-module(print).

-compile(export_all).

cout([XA,YA,XB,YB,XC,YC,XD,YD])->

io:format("

_______________________________________________________________

| ^ y |

| | b c |

| | --------o---------------------o-------| |

| | | / \\ | |

| | | / \\ | |

| | | / \\ | |

| | | / \\ | |

| | | / \\ | |

| | | / \\ | |

| | |/ \\| x |

| |------о-------------------------------------o-------> |

| 0 a d |

| |

|______________________________________________________________|

~n"),

io:format("A = {~w,~w}~nB = {~w,~w}~nC = {~w,~w}~nD = {~w,~w}~n~n",[XA,YA,XB,YB,XC,YC,XD,YD]),

io:format("Точная площадь трапеции: ~w~n",[trunc(monte:sq_trap({XA,YA},{XB,YB},{XC ,YC},{XD,YD}))]),

io:format("Точная площадь прямоугольника: ~w ~n ",[monte:sq_ABCD({XA , XD},{YA,YB})]),

io:format("

________________________________________________________________________

|№ | N | Попавших | Площадь | Время,ms |Погрешность,%|

"),

str({{XA,YA},{XB,YB},{XC,YC},{XD,YD}},1000,1),

str({{XA,YA},{XB,YB},{XC,YC},{XD,YD}},10000,2),

str({{XA,YA},{XB,YB},{XC,YC},{XD,YD}},100000,3),

str({{XA,YA},{XB,YB},{XC,YC},{XD,YD}},1000000,4),

str({{XA,YA},{XB,YB},{XC,YC},{XD,YD}},10000000,5).

str({{XA,YA},{XB,YB},{XC,YC},{XD,YD}},N,N1)->

[_Sq_ABCD,Sq_trap,T,Essen,Enter,_SQR_PARAL]=monte:start2({XA,YA},{XB,YB},{XC,YC},{XD,YD},N),

io:format("|~w |~s |~s|~s|~s| ~w ~n",[N1,optz(N),optz(Enter),optz(Sq_trap),optz(T),Essen]).

optz(N)->

Length=length(integer_to_list(N)),

integer_to_list(N)++delim(12-Length).

delim(N)->

delim(N,[]).

delim(0,List)->

List;

delim(N,List)->

delim(N-1,List++" ").

Файл monte_carlo.Html(web приложение на базе скриптов)

<html><head>

<title>Метод Монте-Карло</title>

<script language = javascript>

var Ax, Ay, Bx, By, Cx, Cy, Dx, Dy,square,bool=false;

function testcoord()

{

if(cont_form.Axx.value==""||cont_form.Ayy.value==""||cont_form.Bxx.value==""||cont_form.Byy.value==""||cont_form.Cxx.value==""||cont_form.Dxx.value=="")

{

window.alert("Данные введены не полностью!!!!!!!!!!!!!");

return false;

}

else

{

Ax = parseInt(cont_form.Axx.value);

Ay = parseInt(cont_form.Ayy.value);

Bx = parseInt(cont_form.Bxx.value);

By = parseInt(cont_form.Byy.value);

Cx = parseInt(cont_form.Cxx.value);

Dx = parseInt(cont_form.Dxx.value);

Cy = parseInt(cont_form.Cyy.value);

Dy = parseInt(cont_form.Dyy.value);

square = (By-Ay)*(Dx-Ax);

if(Ax >= Bx || Bx >= Cx || Cx >= Dx || Ay >= By)

{

window.alert("Проверьте введеные данные");

return false;

}

else

{

bool=true;

}

}

if(bool==true)

{

document.write("<title>Результаты работы </title>");

document.write("<html><center><h1 align = center>Результат вычислений</h1><table border= 1 width = 80%><tr>");

document.write("<td align=center>Общее количествоо точек</td>");

document.write("<td align=center>Количествово попавших точек</td>");

document.write("<td align=center>Точная площадь трапеции</td>");

document.write("<td align=center>Посчитаная площадь трапеции </td>");

document.write("<td align=center>Погрешность, %</td>");

document.write("<td align=center>Время выполнения, мс </td></tr>");

var line1,line2,sq_ABCD,sq_trap,cont,iter=1000,x,y,square_method,pogreshn,not;

sq_ABCD=(Dx-Ax)*(By-Ay);

sq_trap=(0.5*((Dx-Ax)+(Cx-Bx))*(By-Ay));

for(var i = 0; i < 5;i++)

{

var Start=0,Finish=0;

TimeStart = new Date();

Start=TimeStart.getTime();

sq_ABCD=(Dx-Ax)*(By-Ay);

sq_trap=0.5*(((Dx-Ax)+(Cx-Bx))*(By-Ay));

cont = 0;

not=0;

for(var k = 0; k < iter; k++)

{

x = (Math.random()*(Dx - Ax)) + Ax;

y = (Math.random()*(By - Ay)) + Ay;

line1 = (Ay-By)*(x-Bx)/(Ax-Bx)+By ;

line2 = (Cy-Dy)*(x-Dx)/(Cx-Dx)+Dy ;

if (line1 >= y && line2 >= y)

cont++;

}

square_method = sq_ABCD*(cont/iter);

pogreshn=(square_method/sq_trap)*100-100;

TimeFinish = new Date();

Finish=TimeFinish.getTime();

document.write("<tr><td align=center>"+iter+"</td>");

document.write("<td align=center>"+cont+"</td>");

document.write("<td align=center>"+sq_trap+"</td>");

document.write("<td align=center>"+square_method.toFixed(2)+"</td>");

document.write("<td align=center>"+Math.abs(pogreshn.toFixed(3))+"</td>");

document.write("<td align=center>"+(Finish - Start)+"</td></tr></center>");

iter=iter*10;

}

document.write("</table>");

document.write("<h2>Нажмите Ctrl+R для нового расчета</h2></html>");

return true;

}

else

{

window.alert("Проверьте корректность введенных данных");

return false;

}

}

function func()

{

if(document.cont_form.chek[0].checked==true)

{

cont_form.Axx.value='';

cont_form.Bxx.value='';

cont_form.Cxx.value='';

cont_form.Dxx.value='';

cont_form.Ayy.value='';

cont_form.Byy.value='';

cont_form.Cyy.value='';

cont_form.Dyy.value='';

cont_form.square.value='';

}

if(document.cont_form.chek[2].checked==true)

{

cont_form.Axx.value=100;

cont_form.Bxx.value=200;

cont_form.Cxx.value=300;

cont_form.Dxx.value=400;

cont_form.Ayy.value=100;

cont_form.Byy.value=200;

Ay()

By()

}

if(document.cont_form.chek[1].checked==true)

{

cont_form.Axx.value=Math.floor(Math.random()*(20));

cont_form.Bxx.value=Math.floor(Math.random()*(30))+parseInt(cont_form.Axx.value)+1;

cont_form.Cxx.value=Math.floor(Math.random()*(40))+parseInt(cont_form.Bxx.value)+1;

cont_form.Dxx.value=Math.floor(Math.random()*(50))+parseInt(cont_form.Cxx.value)+1;

cont_form.Ayy.value=Math.floor(Math.random()*(20));

cont_form.Byy.value=Math.floor(Math.random()*(30))+parseInt(cont_form.Ayy.value)+1;

Ay()

By()

}

}

function By()

{

cont_form.Cyy.value=(cont_form.Byy.value);

}

function Ay()

{

cont_form.Dyy.value=(cont_form.Ayy.value);

}

function Cy()

{

cont_form.Byy.value=(cont_form.Cyy.value);

}

function Dy()

{

cont_form.Ayy.value=(cont_form.Dyy.value);

}

</script>

</head>

<body>

<h1 align = center>Метод Монте-Карло</h1>

<img src = "image.gif" alt = "Картинка не лежит в папке страницы, попробуйте обратиться к системному администратору">

<figcaption>Трапеция abcd</figcaption>

<h2>Введите координаты вершин</h2>

<h3>Для правильной работы программы нужно, чтобы <mark>Ах < Bx < Cx < Dx и Ay < By</mark></h3>

<form action = "monte_carlo.html" method = post name = "cont_form">

<table>

<tr><td><input type="radio" name="chek" Checked onClick="func()"></td><td>Ввод координат</td></tr>

<tr><td><input type="radio" name="chek" onClick="func()"></td><td>Рандомные координаты</td></tr>

<tr><td><input type="radio" name="chek" onClick="func()"></td><td>Пример</td></tr>

</table>

<table>

<tr><td><center>X</center></td><td><center>Y</center></td></tr>

<tr><td>A:

<input type="text" name="Axx" size="20"autofocus="autofocus"></td>

<td>

<input type="text" name="Ayy" onKeyUp="Ay();" size="20"></td></tr>

<tr><td>B:

<input type="text" name="Bxx" size="20"></td>

<td>

<input type="text" name="Byy" onKeyUp="By();" size="20"></td></tr>

<tr><td>C:

<input type="text" name="Cxx" size="20"></td>

<td>

<input type="text" name="Cyy" onKeyUp="Cy();" size="20"></td></tr>

<tr><td>D:

<input type="text" name="Dxx" size="20"></td>

<td>

<input type="text" name="Dyy" onKeyUp="Dy();" size="20"></td></tr>

<tr><td><input type="button" value="Расчет >>" onclick = "testcoord() ">

</td></tr>

</table>

</form>

</body></html>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]