Колебание системы с двумя степенями свободы

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск

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

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

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

Решение

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

Текст программы на языке 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();

   }

}