Редактирование: Простейшая колебательная система с двумя степенями свободы
Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 3: | Строка 3: | ||
Рассматривается простейшая колебательноя система, состоящая из двух тел разных масс и двух пружин разных жесткостей. | Рассматривается простейшая колебательноя система, состоящая из двух тел разных масс и двух пружин разных жесткостей. | ||
− | [[Файл:system222.jpg]] | + | [[Файл:system222.jpg]] <math> |
− | + | m_{1} \ddot{x_{1}} = -c_{2}x_{1}+c_{2}x_{2}-c_{2}l_{20}-c_{1}x_{1}+c_{1}l_{10} // | |
− | + | m_{2} \ddot{x_{2}} = -c_{2}x_{2}+c_{2}x_{1}+c_{2}l_{20} | |
− | |||
− | |||
− | |||
− | m_{1} \ddot{x_{1}} = -c_{2}x_{1}+c_{2}x_{2}-c_{2}l_{20}-c_{1}x_{1}+c_{1}l_{10} | ||
− | |||
− | |||
− | |||
</math> | </math> | ||
Строка 20: | Строка 13: | ||
Скачать [[Медиа:Vers21.rar|Vers21.rar]]. | Скачать [[Медиа:Vers21.rar|Vers21.rar]]. | ||
− | + | Текст программы на языке JavaScript (разработчик [[Ванюшкина Валентина]]): <toggledisplay status=hide showtext="Показать↓" hidetext="Скрыть↑" linkstyle="font-size:default"> | |
− | |||
Файл '''"particle_in_well_2.js"''' | Файл '''"particle_in_well_2.js"''' | ||
− | < | + | <source lang="javascript" first-line="1"> |
function MainParticle(canvas, canvas_gr, canvas_gr2) { | function MainParticle(canvas, canvas_gr, canvas_gr2) { | ||
// Предварительные установки | // Предварительные установки | ||
Строка 39: | Строка 31: | ||
const k0 = 2 * Pi / T0; // масштаб частоты | const k0 = 2 * Pi / T0; // масштаб частоты | ||
const C0 = m0 * k0 * k0; // масштаб жесткости | const C0 = m0 * k0 * k0; // масштаб жесткости | ||
− | var scale1 = | + | var scale1 = 0.2; |
var scale2 = 0.2; | var scale2 = 0.2; | ||
− | |||
Строка 57: | Строка 48: | ||
var c2 = 100; // "жесткость" пружинки 1 | var c2 = 100; // "жесткость" пружинки 1 | ||
var vx0 = 0 * a0/T0; //начальная скорость | var vx0 = 0 * a0/T0; //начальная скорость | ||
− | var delt = | + | var delt = 0*a0; //начальное смещение |
var E = 0; //энергия системы | var E = 0; //энергия системы | ||
− | + | var Vmax = 0; var Mmin = 0; var Vprov = 0; | |
Строка 112: | Строка 103: | ||
var b = []; | var b = []; | ||
var time = 1; | var time = 1; | ||
− | b.x = l1 | + | b.x = l1; b.y = h / 2; // расчетные координаты шара |
b.x_ = b.x; b.y_ = b.y; | b.x_ = b.x; b.y_ = b.y; | ||
b.fx = 0; b.vx = 0; // начальная скорость | b.fx = 0; b.vx = 0; // начальная скорость | ||
Строка 176: | Строка 167: | ||
delt = b.x - l1; | delt = b.x - l1; | ||
b.vx = 0; c.vx = 0; | b.vx = 0; c.vx = 0; | ||
− | |||
console.log(b.x); | console.log(b.x); | ||
Text_delt.value = delt; | Text_delt.value = delt; | ||
Строка 206: | Строка 196: | ||
this.set_delt = function(input) | this.set_delt = function(input) | ||
{ | { | ||
− | delt = Number(input); | + | delt = Number(input); //записываем значение начального смещения |
− | time = | + | time = 1; |
b.x = l1 + delt; c.x = l1+l2; //изменение начальных координат шаров | b.x = l1 + delt; c.x = l1+l2; //изменение начальных координат шаров | ||
b.x_ = b.x; | b.x_ = b.x; | ||
Строка 213: | Строка 203: | ||
Text_delt.value = delt; | Text_delt.value = delt; | ||
Slider_delt.value = Text_delt.value; | Slider_delt.value = Text_delt.value; | ||
− | + | context.clearRect(0, 0, w * scale, h* scale); | |
context_gr.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | context_gr.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | ||
context_gr2.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | context_gr2.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | ||
Строка 221: | Строка 211: | ||
this.set_m1 = function(input) | this.set_m1 = function(input) | ||
{ | { | ||
− | m1 = Number(input); | + | m1 = Number(input); |
− | time = | + | time = 1; |
− | + | context.clearRect(0, 0, w * scale, h* scale); | |
− | |||
context_gr.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | context_gr.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | ||
context_gr2.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | context_gr2.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | ||
Строка 231: | Строка 220: | ||
this.set_c1 = function(input) | this.set_c1 = function(input) | ||
{ | { | ||
− | c1 = Number(input); | + | c1 = Number(input); |
− | time = | + | time = 1; |
− | + | context.clearRect(0, 0, w * scale, h* scale); | |
− | |||
context_gr.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | context_gr.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | ||
context_gr2.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | context_gr2.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | ||
Строка 242: | Строка 230: | ||
this.set_m2 = function(input) | this.set_m2 = function(input) | ||
{ | { | ||
− | m2 = Number(input); | + | m2 = Number(input); |
− | time = | + | time = 1; |
− | + | context.clearRect(0, 0, w * scale, h* scale); | |
− | |||
context_gr.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | context_gr.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | ||
context_gr2.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | context_gr2.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | ||
Строка 252: | Строка 239: | ||
this.set_c2 = function(input) | this.set_c2 = function(input) | ||
{; | {; | ||
− | c2 = Number(input); | + | c2 = Number(input); |
− | time = | + | time = 1; |
− | + | context.clearRect(0, 0, w * scale, h* scale); | |
− | |||
context_gr.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | context_gr.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | ||
context_gr2.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | context_gr2.clearRect(0, 0, w1 * scale_gr, h1 * scale_gr); | ||
} | } | ||
− | this.set_scale1 = function(input) | + | /*this.set_scale1 = function(input) |
{ | { | ||
− | scale1 = Number(input); | + | //scale1 = Number(input); |
+ | var Cmax = Math.max(c1, c2); var Mmax = Math.max(m1, m2); | ||
+ | scale1 = h*Mmax/(Cmax*delt); | ||
console.log(scale1); | console.log(scale1); | ||
− | + | time = 1; | |
− | time = | + | context.clearRect(0, 0, w * scale, h * scale); |
− | |||
context_gr.clearRect(0, 0, w * scale, h * scale); | context_gr.clearRect(0, 0, w * scale, h * scale); | ||
context_gr2.clearRect(0, 0, w * scale, h * scale); | context_gr2.clearRect(0, 0, w * scale, h * scale); | ||
} | } | ||
− | + | this.set_scale2 = function(input) | |
{ | { | ||
− | scale2 = Number(input); | + | scale2 = Number(input); |
time = 1; | time = 1; | ||
− | + | context.clearRect(0, 0, w * scale, h * scale); | |
context_gr.clearRect(0, 0, w * scale, h * scale); | context_gr.clearRect(0, 0, w * scale, h * scale); | ||
context_gr2.clearRect(0, 0, w * scale, h * scale); | context_gr2.clearRect(0, 0, w * scale, h * scale); | ||
Строка 315: | Строка 302: | ||
context.beginPath(); | context.beginPath(); | ||
context.moveTo(b.x*scale, b.y*scale); | context.moveTo(b.x*scale, b.y*scale); | ||
− | + | context.lineTo(wall1.x*scale, wall1.y*scale); | |
// линия, соединяющая первую частицу со второй | // линия, соединяющая первую частицу со второй | ||
context.moveTo(b.x*scale, b.y*scale); | context.moveTo(b.x*scale, b.y*scale); | ||
− | + | context.lineTo(c.x*scale, c.y*scale); | |
// стенка | // стенка | ||
context.moveTo(wall1.x*scale, (wall1.y + a0)*scale ); | context.moveTo(wall1.x*scale, (wall1.y + a0)*scale ); | ||
− | + | context.lineTo(wall1.x*scale, (wall1.y - a0)*scale ); | |
context.closePath(); | context.closePath(); | ||
context.stroke(); | context.stroke(); | ||
Строка 332: | Строка 319: | ||
//частица первая | //частица первая | ||
context.fillStyle = 'blue'; | context.fillStyle = 'blue'; | ||
− | + | context.beginPath(); | |
context.arc(b.x * scale, b.y * scale, 0.5*r * scale, 0, 2*Math.PI, false); | context.arc(b.x * scale, b.y * scale, 0.5*r * scale, 0, 2*Math.PI, false); | ||
context.fill(); | context.fill(); | ||
Строка 343: | Строка 330: | ||
function draw_gr() // Определение функции, рисующей первый график | function draw_gr() // Определение функции, рисующей первый график | ||
{ | { | ||
− | scale2 = h / | + | scale2 = h /5* delt; |
Graph1(c, 'red'); //график для второго шара | Graph1(c, 'red'); //график для второго шара | ||
Graph(b, 'blue'); //график для первого шара | Graph(b, 'blue'); //график для первого шара | ||
Строка 361: | Строка 348: | ||
context_gr.lineTo( (time+1)*scale2/3, (b.x_- l1)*scale*2*scale2 + h1*scale/2); | context_gr.lineTo( (time+1)*scale2/3, (b.x_- l1)*scale*2*scale2 + h1*scale/2); | ||
context_gr.stroke(); | context_gr.stroke(); | ||
− | + | context_gr.closePath(); | |
} | } | ||
Строка 375: | Строка 362: | ||
context_gr.moveTo(0, (h1/2)*scale); | context_gr.moveTo(0, (h1/2)*scale); | ||
context_gr.lineTo((w1)*scale, (h1/2)*scale); | context_gr.lineTo((w1)*scale, (h1/2)*scale); | ||
− | + | context_gr.closePath(); | |
context_gr.stroke(); | context_gr.stroke(); | ||
Строка 395: | Строка 382: | ||
function draw_gr2() // Определение функции, рисующей второй график | function draw_gr2() // Определение функции, рисующей второй график | ||
{ | { | ||
− | + | ||
+ | var Mmax= Math.max(m1, m2); | ||
+ | scale1 = 6* (h1*Mmax)/( (c1+c2)*delt*delt); | ||
GraphVel(b, 'blue'); //график для первого шара | GraphVel(b, 'blue'); //график для первого шара | ||
GraphVel2(c, 'red'); //график для второго шара | GraphVel2(c, 'red'); //график для второго шара | ||
GraphAxex2('black'); //оси | GraphAxex2('black'); //оси | ||
− | + | ||
} | } | ||
Строка 417: | Строка 406: | ||
context_gr2.stroke(); | context_gr2.stroke(); | ||
− | + | ||
} | } | ||
Строка 435: | Строка 424: | ||
− | + | ||
} | } | ||
Строка 448: | Строка 437: | ||
context_gr2.moveTo(0, (h1/2)*scale); | context_gr2.moveTo(0, (h1/2)*scale); | ||
context_gr2.lineTo((w1)*scale, (h1/2)*scale); | context_gr2.lineTo((w1)*scale, (h1/2)*scale); | ||
− | + | context_gr2.closePath(); | |
context_gr2.stroke(); | context_gr2.stroke(); | ||
} | } | ||
− | </ | + | } |
+ | </source> | ||
Файл '''"1_2.html"''' | Файл '''"1_2.html"''' | ||
− | < | + | <source lang="html" first-line="1"> |
<!DOCTYPE html> | <!DOCTYPE html> | ||
<html> | <html> | ||
Строка 553: | Строка 543: | ||
<div style="width:450px"> | <div style="width:450px"> | ||
Номер эксперимента<br>(наведите на кнопку,чтобы увидеть описание):<br> | Номер эксперимента<br>(наведите на кнопку,чтобы увидеть описание):<br> | ||
− | <input type="button" title="Одинаковые массы шаров и жесткости пружин" style="width: 40px" name="" onclick="app.set_c1(100); app.set_c2(100);app.set_m1(5);app.set_m2(5);app.set_delt( | + | <input type="button" title="Одинаковые массы шаров и жесткости пружин" style="width: 40px" name="" onclick="app.set_c1(100); app.set_c2(100);app.set_m1(5);app.set_m2(5);app.set_delt(0); |
document.getElementById('Slider_m2').value = 5;document.getElementById('Slider_m1').value = 5;document.getElementById('Slider_c1').value = 100;document.getElementById('Slider_c2').value = 100; | document.getElementById('Slider_m2').value = 5;document.getElementById('Slider_m1').value = 5;document.getElementById('Slider_c1').value = 100;document.getElementById('Slider_c2').value = 100; | ||
document.getElementById('Text_m2').value = 5;document.getElementById('Text_m1').value = 5;document.getElementById('Text_c1').value = 100;document.getElementById('Text_c2').value = 100;" value="1"/> | document.getElementById('Text_m2').value = 5;document.getElementById('Text_m1').value = 5;document.getElementById('Text_c1').value = 100;document.getElementById('Text_c2').value = 100;" value="1"/> | ||
− | <input type="button" title="Одинаковые массы шаров, но жесткость первой пружины больше второй жесткости в 10 раз" style="width: 40px" name="" onclick="app.set_c1(100); app.set_c2(10);app.set_m1(5);app.set_m2(5);app.set_delt( | + | <input type="button" title="Одинаковые массы шаров, но жесткость первой пружины больше второй жесткости в 10 раз" style="width: 40px" name="" onclick="app.set_c1(100); app.set_c2(10);app.set_m1(5);app.set_m2(5);app.set_delt(0); |
document.getElementById('Slider_m2').value = 5;document.getElementById('Slider_m1').value = 5;document.getElementById('Slider_c1').value = 100;document.getElementById('Slider_c2').value = 10; | document.getElementById('Slider_m2').value = 5;document.getElementById('Slider_m1').value = 5;document.getElementById('Slider_c1').value = 100;document.getElementById('Slider_c2').value = 10; | ||
document.getElementById('Text_m2').value = 5;document.getElementById('Text_m1').value = 5;document.getElementById('Text_c1').value = 100;document.getElementById('Text_c2').value = 10;" value="2"/> | document.getElementById('Text_m2').value = 5;document.getElementById('Text_m1').value = 5;document.getElementById('Text_c1').value = 100;document.getElementById('Text_c2').value = 10;" value="2"/> | ||
− | <input type="button" title="Одинаковые массы шаров, но жесткость первой пружины больше второй жесткости в 100 раз" style="width: 40px" name="" onclick="app.set_c1(100); app.set_c2(1);app.set_m1(5);app.set_m2(5);app.set_delt( | + | <input type="button" title="Одинаковые массы шаров, но жесткость первой пружины больше второй жесткости в 100 раз" style="width: 40px" name="" onclick="app.set_c1(100); app.set_c2(1);app.set_m1(5);app.set_m2(5);app.set_delt(0); |
document.getElementById('Slider_m2').value = 5;document.getElementById('Slider_m1').value = 5;document.getElementById('Slider_c1').value = 100;document.getElementById('Slider_c2').value = 1; | document.getElementById('Slider_m2').value = 5;document.getElementById('Slider_m1').value = 5;document.getElementById('Slider_c1').value = 100;document.getElementById('Slider_c2').value = 1; | ||
document.getElementById('Text_m2').value = 5;document.getElementById('Text_m1').value = 5;document.getElementById('Text_c1').value = 100;document.getElementById('Text_c2').value = 1;" value="3"/> | document.getElementById('Text_m2').value = 5;document.getElementById('Text_m1').value = 5;document.getElementById('Text_c1').value = 100;document.getElementById('Text_c2').value = 1;" value="3"/> | ||
− | <input type="button" title="Одинаковые массы шаров, но жесткость второй пружины больше первой жесткости в 10 раз" style="width: 40px" name="" onclick="app.set_c1(10); app.set_c2(100);app.set_m1(5);app.set_m2(5);app.set_delt( | + | <input type="button" title="Одинаковые массы шаров, но жесткость второй пружины больше первой жесткости в 10 раз" style="width: 40px" name="" onclick="app.set_c1(10); app.set_c2(100);app.set_m1(5);app.set_m2(5);app.set_delt(0); |
document.getElementById('Slider_m2').value = 5;document.getElementById('Slider_m1').value = 5;document.getElementById('Slider_c1').value = 10;document.getElementById('Slider_c2').value = 100; | document.getElementById('Slider_m2').value = 5;document.getElementById('Slider_m1').value = 5;document.getElementById('Slider_c1').value = 10;document.getElementById('Slider_c2').value = 100; | ||
document.getElementById('Text_m2').value = 5;document.getElementById('Text_m1').value = 5;document.getElementById('Text_c1').value = 10;document.getElementById('Text_c2').value = 100;" value="4"/> | document.getElementById('Text_m2').value = 5;document.getElementById('Text_m1').value = 5;document.getElementById('Text_c1').value = 10;document.getElementById('Text_c2').value = 100;" value="4"/> | ||
Строка 573: | Строка 563: | ||
document.getElementById('Text_m2').value = 5;document.getElementById('Text_m1').value = 5;document.getElementById('Text_c1').value = 1;document.getElementById('Text_c2').value = 100;" value="5"/> | document.getElementById('Text_m2').value = 5;document.getElementById('Text_m1').value = 5;document.getElementById('Text_c1').value = 1;document.getElementById('Text_c2').value = 100;" value="5"/> | ||
− | <input type="button" title="Масса первого шара больше массы второго шара в 10 раз, жесткости одинаковые" style="width: 40px" name="" onclick="app.set_c1(100); app.set_c2(100);app.set_m1(10);app.set_m2(1);app.set_delt( | + | <input type="button" title="Масса первого шара больше массы второго шара в 10 раз, жесткости одинаковые" style="width: 40px" name="" onclick="app.set_c1(100); app.set_c2(100);app.set_m1(10);app.set_m2(1);app.set_delt(0); |
document.getElementById('Slider_m2').value = 1;document.getElementById('Slider_m1').value = 10;document.getElementById('Slider_c1').value = 100;document.getElementById('Slider_c2').value = 100; | document.getElementById('Slider_m2').value = 1;document.getElementById('Slider_m1').value = 10;document.getElementById('Slider_c1').value = 100;document.getElementById('Slider_c2').value = 100; | ||
document.getElementById('Text_m2').value = 1;document.getElementById('Text_m1').value = 10;document.getElementById('Text_c1').value = 100;document.getElementById('Text_c2').value = 100;" value="6"/> | document.getElementById('Text_m2').value = 1;document.getElementById('Text_m1').value = 10;document.getElementById('Text_c1').value = 100;document.getElementById('Text_c2').value = 100;" value="6"/> | ||
− | <input type="button" title="Масса первого шара больше массы второго шара в 100 раз, жесткости одинаковые" style="width: 40px" name="" onclick="app.set_c1(100); app.set_c2(100);app.set_m1(10);app.set_m2(0.1);app.set_delt( | + | <input type="button" title="Масса первого шара больше массы второго шара в 100 раз, жесткости одинаковые" style="width: 40px" name="" onclick="app.set_c1(100); app.set_c2(100);app.set_m1(10);app.set_m2(0.1);app.set_delt(0); |
document.getElementById('Slider_m2').value = 0.1;document.getElementById('Slider_m1').value = 10;document.getElementById('Slider_c1').value = 100;document.getElementById('Slider_c2').value = 100; | document.getElementById('Slider_m2').value = 0.1;document.getElementById('Slider_m1').value = 10;document.getElementById('Slider_c1').value = 100;document.getElementById('Slider_c2').value = 100; | ||
document.getElementById('Text_m2').value = 0.1;document.getElementById('Text_m1').value = 10;document.getElementById('Text_c1').value = 100;document.getElementById('Text_c2').value = 100;" value="7"/> | document.getElementById('Text_m2').value = 0.1;document.getElementById('Text_m1').value = 10;document.getElementById('Text_c1').value = 100;document.getElementById('Text_c2').value = 100;" value="7"/> | ||
Строка 585: | Строка 575: | ||
document.getElementById('Text_m2').value = 10;document.getElementById('Text_m1').value = 1;document.getElementById('Text_c1').value = 100;document.getElementById('Text_c2').value = 100;" value="8"/> | document.getElementById('Text_m2').value = 10;document.getElementById('Text_m1').value = 1;document.getElementById('Text_c1').value = 100;document.getElementById('Text_c2').value = 100;" value="8"/> | ||
− | <input type="button" title="Масса второго шара больше массы первого шара в 100 раз, жесткости одинаковые" style="width: 40px" name="" onclick="app.set_c1(200); app.set_c2(200);app.set_m1(0.1);app.set_m2(10);app.set_delt( | + | <input type="button" title="Масса второго шара больше массы первого шара в 100 раз, жесткости одинаковые" style="width: 40px" name="" onclick="app.set_c1(200); app.set_c2(200);app.set_m1(0.1);app.set_m2(10);app.set_delt(0); |
document.getElementById('Slider_m2').value = 10;document.getElementById('Slider_m1').value = 0.1;document.getElementById('Slider_c1').value = 200;document.getElementById('Slider_c2').value = 200; | document.getElementById('Slider_m2').value = 10;document.getElementById('Slider_m1').value = 0.1;document.getElementById('Slider_c1').value = 200;document.getElementById('Slider_c2').value = 200; | ||
document.getElementById('Text_m2').value = 10;document.getElementById('Text_m1').value = 0.1;document.getElementById('Text_c1').value = 200;document.getElementById('Text_c2').value = 200;" value="9"/> | document.getElementById('Text_m2').value = 10;document.getElementById('Text_m1').value = 0.1;document.getElementById('Text_c1').value = 200;document.getElementById('Text_c2').value = 200;" value="9"/> | ||
Строка 601: | Строка 591: | ||
</body> | </body> | ||
</html> | </html> | ||
− | </ | + | </source> |
− | </ | + | </toggledisplay> |
− | |||
[[Category: Виртуальная лаборатория]] | [[Category: Виртуальная лаборатория]] |