Колебание системы с двумя степенями свободы — различия между версиями

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск
(Решение)
(Решение)
Строка 9: Строка 9:
  
 
{{#widget:Iframe |url= http://tm.spbstu.ru/htmlets/SakevichTS/K2.html |width=1250 |height=850}}
 
{{#widget:Iframe |url= http://tm.spbstu.ru/htmlets/SakevichTS/K2.html |width=1250 |height=850}}
 +
 +
'''Текст программы на языке JavaScript:''' <div class="mw-collapsible-content">
 +
window.addEventListener("load", program_code, false) ;
 +
function program_code(){ 
 +
var ctx=canvas_example.getContext("2d");
 +
var w=canvas_example.width;
 +
var l=canvas_example.height;
 +
ctx.strokeRect(0,0,w,l);
 +
function draw2() //оси
 +
{
 +
Y0=250;
 +
X0=160;
 +
ctx.strokeStyle = 'lightgrey';
 +
        ctx.beginPath();
 +
        ctx.moveTo(0, Y0);
 +
        ctx.lineTo(canvas_example.width, Y0);
 +
        ctx.moveTo(X0, 0);
 +
        ctx.lineTo(X0, canvas_example.height);
 +
        ctx.stroke();
 +
        ctx.fillStyle = 'black';
 +
        ctx.font = "20px Times";
 +
        ctx.fillText("0",163, 330);
 +
        ctx.font = "italic 20px Times";
 +
        ctx.fillText("t",1150,330);
 +
        ctx.fillText("x",150, 20);
 +
}
 +
draw2();
 +
function count()
 +
{
 +
var m1 = parseFloat(input_m1.value);
 +
    var m2 = parseFloat(input_m2.value);
 +
var R= parseFloat(input_R.value);
 +
var l= parseFloat(input_l.value);
 +
var q0=parseFloat(input_q0.value);
 +
var v0= parseFloat(input_v0.value);
 +
var ix= parseFloat(input_ix.value);
 +
var c1= parseFloat(input_c1.value);
 +
var c2= parseFloat(input_c2.value);
 +
var t= parseFloat(input_t.value)
 +
 +
var a1=0.75*m2;
 +
var a2=m1*ix*ix;
 +
 +
var Q=9.8*m1*l+c1*l*l+4*c2*R*R;
 +
var P=2.45*m2/R+c2;
 +
var G=-4*c2*R;
 +
 +
var k1=(a1*P+a2*Q +Math.sqrt((a1*P+a2*Q)*(a1*P+a2*Q)-4*a1*a2*(Q*P-G*G)))/(2*a1*a2);
 +
var k2=(a1*P+a2*Q -Math.sqrt((a1*P+a2*Q)*(a1*P+a2*Q)-4*a1*a2*(Q*P-G*G)))/(2*a1*a2);
 +
 +
var A1=q0;
 +
var A2=v0/k1
 +
 +
dt=0.02;
 +
q=[];
 +
q[0]=q0;
 +
n=t/dt;
 +
var T=0;
 +
for (var i=0; i<n; i++) {
 +
T+=dt;
 +
 +
q[i]=10*(A1*Math.sin(k1*T)+A2*Math.sin(k2*T));
 +
 +
}
 +
 +
}
 +
function draw()
 +
{
 +
ctx.strokeRect(0,0,w,l);
 +
draw2();
 +
ctx.strokeStyle = 'black';
 +
    ctx.beginPath()
 +
for (var i=0; i<n; i++) {
 +
ctx.lineTo((i/(n-1)*w)+X0,(l-q[i]*l)/50+Y0);
 +
ctx.stroke();
 +
}
 +
    }
 +
 +
button_alert.onclick=function(){
 +
ctx.clearRect(0,0,w,l);
 +
count();
 +
draw();
 +
    }
 +
}
 +
 +
</div>

Версия 01:16, 31 мая 2018

Выполнила Сакевич Татьяна

Формулировка задачи

Определить частоты малых свободных колебаний и формы главных колебаний системы с двумя степенями свободы, пренебрегая силами сопротивления, массами пружин и моментами инерции скручиваемых валов.

Решение

[ Скачать курсовую работу]

Текст программы на языке JavaScript:

window.addEventListener("load", program_code, false) ;

function program_code(){   
var ctx=canvas_example.getContext("2d");

var w=canvas_example.width; var l=canvas_example.height; ctx.strokeRect(0,0,w,l); function draw2() //оси { Y0=250; X0=160; ctx.strokeStyle = 'lightgrey';

       ctx.beginPath();
       ctx.moveTo(0, Y0);
       ctx.lineTo(canvas_example.width, Y0);
       ctx.moveTo(X0, 0);
       ctx.lineTo(X0, canvas_example.height);
       ctx.stroke();
       ctx.fillStyle = 'black';
       ctx.font = "20px Times";
       ctx.fillText("0",163, 330);
       ctx.font = "italic 20px Times";
       ctx.fillText("t",1150,330);
       ctx.fillText("x",150, 20);

} draw2(); function count() { var m1 = parseFloat(input_m1.value); var m2 = parseFloat(input_m2.value); var R= parseFloat(input_R.value); var l= parseFloat(input_l.value); var q0=parseFloat(input_q0.value); var v0= parseFloat(input_v0.value); var ix= parseFloat(input_ix.value); var c1= parseFloat(input_c1.value); var c2= parseFloat(input_c2.value); var t= parseFloat(input_t.value)

var a1=0.75*m2; var a2=m1*ix*ix;

var Q=9.8*m1*l+c1*l*l+4*c2*R*R; var P=2.45*m2/R+c2; var G=-4*c2*R;

var k1=(a1*P+a2*Q +Math.sqrt((a1*P+a2*Q)*(a1*P+a2*Q)-4*a1*a2*(Q*P-G*G)))/(2*a1*a2); var k2=(a1*P+a2*Q -Math.sqrt((a1*P+a2*Q)*(a1*P+a2*Q)-4*a1*a2*(Q*P-G*G)))/(2*a1*a2);

var A1=q0; var A2=v0/k1

dt=0.02; q=[]; q[0]=q0; n=t/dt; var T=0; for (var i=0; i<n; i++) { T+=dt;

q[i]=10*(A1*Math.sin(k1*T)+A2*Math.sin(k2*T));

}

} function draw() { ctx.strokeRect(0,0,w,l); draw2(); ctx.strokeStyle = 'black'; ctx.beginPath() for (var i=0; i<n; i++) { ctx.lineTo((i/(n-1)*w)+X0,(l-q[i]*l)/50+Y0); ctx.stroke(); } }

button_alert.onclick=function(){ ctx.clearRect(0,0,w,l); count(); draw();

   }

}