Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Методические указания и пример расчета

Читайте также:
  1. E. Примерные темы рефератов
  2. frac34; Методические основы идентификации типа информационного метаболизма психики.
  3. I. Организационно-методические указания
  4. II. Данные для расчета расходов бюджета
  5. II. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ
  6. II.1. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ПОДГОТОВКЕ И ПРОВЕДЕНИЮ ЛЕКЦИЙ
  7. III. Методические рекомендации для преподавателей

Задание 2

 

 

Исследование равновесия твердого тела

 

Определить реакции опор твердого тела под действием заданных активных сил. При нахождении неизвестных сил сотавить уравнения равновесия и представить их в матричной форме. Решить систему линейных уравнений с помощью алгоритмической программы. Выполнить проверку путем составления и решения системы уравнений для новой системы координат.

 

Методические указания и пример расчета

Дано: Плита, закрепленная на шести стержнях, находится в равновесии под действием двух активных сил: составляющей угол с осью x в плоскости (z,x) и силы тяжести Известны размеры

Определить: усилия в стержнях

Выполнить проверку.

 

 

Рис. 1 Схема заданных сил и закрепления плиты

 

Решение:

Полагая стержни растянутыми, приложим к плите усилия со стороны отброшенной части стержней с нижними опорами (Рис. 2). Обозначим два острых угла , которые наклонные стержни составляют с вертикалью. Определим их значения в градусах:

 

Рис. 2 Схема заданных сил и реакций связей

Составим систему уравнения равновесия в осях (x,y,z):

Перенесем активные силы в правую часть уравнений, меняя при этом знак.

 

Представим систему уравнений равновесия в матричной форме

 

 

Обозначим матрицу в левой части системы

 

 

;

 

вектор-столбец в правой части системы

 

;

и вектор-столбец неизвестных

 

Тогда система уравнений запишется в компактной форме

 

Решение системы сводится к отысканию вектор-столбца неизвестных реакций стержней Для определения реакций стержней воспользуемся методом Гаусса решения систем линейных уравнений методом исключения. Существуют стандартные программы решения системы линейных алгебраических уравнений методом Гаусса без нахождения обратной матрицы к матрице жесткости (SIMQ “Fortrun”). Используем аналогичную подпрограмму на языке C#. Текст кода, размещенного в отдельном классе, добавленном в проект, выглядит так:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Равновесие_системы_сил

{

class ClassSIMQ

{

double[] A, B;

 

public void SIMQ(double[,] K, ref double[] P, int N, ref int KS)

{

 

A = new double[N * N + 1];

B = new double[N + 1];

int sd = 0;

for (int i = 0; i < N; i++)

{

B[i + 1] = P[i];

for (int j = 0; j < N; j++)

{

sd++;

A[sd] = K[j, i];

}

}

int JY, IT, J, IJ, IMAX = 0, I, I1, k, I2, IQS, IX, JX, IXJX, JJX, IXJ, NY, IB, IA, IC;

double TOL = 0, BIGA = 0, SAVE;

KS = 0;

int JJ = -N;

for (J = 1; J <= N; J++)

{

JY = J + 1;

JJ = JJ + N + 1;

BIGA = 0.0;

IT = JJ - J;

for (I = J; I <= N; I++)

{

IJ = IT + I;

if (Math.Abs(BIGA) - Math.Abs(A[IJ]) < 0)

{

BIGA = A[IJ];

IMAX = I;

}

}//30

if (Math.Abs(BIGA) - TOL <= 0)

{

KS = 1;

return;

}

I1 = J + N * (J - 2);

IT = IMAX - J;

for (k = J; k <= N; k++)

{

I1 = I1 + N;

I2 = I1 + IT;

SAVE = A[I1];

A[I1] = A[I2];

A[I2] = SAVE;

A[I1] = A[I1] / BIGA;

}//50

SAVE = B[IMAX];

B[IMAX] = B[J];

B[J] = SAVE / BIGA;

if ((J - N) == 0)

{

break;

}

IQS = N * (J - 1);

for (IX = JY; IX <= N; IX++)

{

IXJ = IQS + IX;

IT = J - IX;

for (JX = JY; JX <= N; JX++)

{

IXJX = N * (JX - 1) + IX;

JJX = IXJX + IT;

A[IXJX] = A[IXJX] - A[IXJ] * A[JJX];

}

B[IX] = B[IX] - B[J] * A[IXJ];

}

}//65

NY = N - 1;

IT = N * N;

for (J = 1; J <= NY; J++)

{

IA = IT - J;

IB = N - J;

IC = N;

for (k = 1; k <= J; k++)

{

B[IB] = B[IB] - A[IA] * B[IC];

IA = IA - N;

IC = IC - 1;

}

}//80

 

for (int i = 0; i < N; i++)

{

P[i] = B[i + 1];

}

 

}

 

}

}

 

Единственная форма проекта в конструкторе имеет вид:

 

Рис. 3 Форма проекта в конструкторе

 

При запуске проекта на выполнение и подстановке исходных данных результат расчетов появляется в нижней таблице:

 

Рис. 4 Форма проекта при запуске программы

 

Клиентский код формы:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

 

namespace Равновесие_системы_сил

{

public partial class Form1: Form

{

double[,] MatrA;

double[] MatrB;

 

int i, j;

int m = 6;

string st;

List<string> list_st = new List<string>();

string[] St;

public Form1()

{

InitializeComponent();

}

 

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

Close();

}

 

private void сохранитьВФайлToolStripMenuItem_Click(object sender, EventArgs e)

{

// Сохранение в файл исходной матрицы

 

 

MatrA = new double[m, m];

 

for (i = 0; i < m; i++)

{

for (j = 0; j < m; j++)

MatrA[i, j] = Convert.ToDouble(dataGridView3.Rows[i].Cells[j].Value);

 

}

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

FileStream FS = saveFileDialog1.OpenFile() as FileStream;

StreamWriter SR = new StreamWriter(FS);

 

for (i = 0; i < m; i++)

{

st = null;

for (j = 0; j < m; j++)

{

st = st + MatrA[i, j].ToString() + " ";

}

SR.WriteLine(st);

}

SR.Close();

FS.Close();

}

 

}

 

private void считатьИзФайлаToolStripMenuItem_Click(object sender, EventArgs e)

{

// Считывание из файла исходной матрицы

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

FileStream FS = openFileDialog1.OpenFile() as FileStream;

StreamReader SR = new StreamReader(FS);

 

dataGridView3.Rows.Clear();

 

list_st.Clear();

while (SR.Peek() > 0)

{

list_st.Add(SR.ReadLine());

//dataGridView1

dataGridView3.Rows.Add();

}

St = list_st.ToArray();

 

MatrA = new double[m, m];

 

 

for (i = 0; i < m; i++)

{

 

St[i] = St[i].Replace(".", ",");;

//Разбиение строки St на подстроки aa

string[] aa = St[i].Split(" \t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

 

 

for (j = 0; j < m; j++)

{

//Заполнение матрицы и таблицы

MatrA[i, j] = Convert.ToDouble(aa[j]);

dataGridView3.Rows[i].Cells[j].Value = MatrA[i, j];

}

}

 

SR.Close();

FS.Close();

}

}

 

private void cToolStripMenuItem_Click(object sender, EventArgs e)

{

// Считывание из файла вектор-столбца

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

FileStream FS = openFileDialog1.OpenFile() as FileStream;

StreamReader SR = new StreamReader(FS);

 

dataGridView2.Rows.Clear();

 

list_st.Clear();

while (SR.Peek() > 0)

{

list_st.Add(SR.ReadLine());

//dataGridView1

dataGridView2.Rows.Add();

}

St = list_st.ToArray();

 

MatrB = new double[m];

 

 

for (i = 0; i < m; i++)

{

 

St[i] = St[i].Replace(".", ",");;

 

//Заполнение матрицы и таблицы

MatrB[i] = Convert.ToDouble(St[i]);

dataGridView2.Rows[i].Cells[0].Value = MatrB[i];

}

SR.Close();

FS.Close();

}

 

}

 

private void сохранитьВВайлToolStripMenuItem_Click(object sender, EventArgs e)

{

// Сохранение в файл вектор-столбца

 

 

MatrB = new double[m];

 

for (i = 0; i < m; i++)

{

 

MatrB[i] = Convert.ToDouble(dataGridView2.Rows[i].Cells[0].Value);

 

}

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

FileStream FS = saveFileDialog1.OpenFile() as FileStream;

StreamWriter SR = new StreamWriter(FS);

 

for (i = 0; i < m; i++)

{

st = null;

 

st = MatrB[i].ToString() + " ";

 

SR.WriteLine(st);

}

SR.Close();

FS.Close();

}

}

 

private void вычислениеНеизвестныхToolStripMenuItem_Click(object sender, EventArgs e)

{

int KS = 0;

double[] MB = new double[6];

for (i = 0; i < m; i++)

{

 

MB[i]=MatrB[i];

 

}

ClassSIMQ S = new ClassSIMQ();

S.SIMQ(MatrA, ref MB, m, ref KS);

label1.Text = "Код ошибки равен " + KS.ToString();

for (i = 0; i < m; i++)

{

 

//Заполнение таблицы S

 

dataGridView1.Rows[0].Cells[i].Value = MB[i];

}

}

}

}

 

 

Для проверки правильности решения задачи перенесем систему координат в нижний ярус конструкции и составим новую систему уравнений в осях :

 

 

Возможно использовать эти уравнения для подстановки в них найденных сил, при правильном решении, уравнения должны обращаться в тождества. Другой способ проверки заключается в повторном нахождении неизвестных из новых уравнений равновесия в системе координат и сравнении их с ранее найденными в системе координат . Используем второй способ.

Перенесем активные силы в правую часть уравнений, меняя при этом знак.

 

 

Представим систему уравнений равновесия в матричной форме

 

 

 

Обозначим матрицу в левой части системы

 

 

;

 

вектор-столбец в правой части системы

 

;

Результат вычислений представлен на форме:

 

Рис. 5 Форма проекта с проверкой

 

Есть отклонения в результатах расчетных усилий , , которые менее 0,2 % от усредненных значений искомых сил.

 

Варианты заданий

Варианты: 1, 2, 3, 4 (Рис. 6)

Дано: Плита, закрепленная на шести стержнях, находится в равновесии под действием двух активных сил: составляющей угол с осью x и лежащей в плоскости параллельной плоскости (z,x) и силы тяжести Известны размеры

Вариант 1: Сила F приложена в точке A;

Вариант 2: Сила F приложена в точке B;

Вариант 3: Сила F приложена в точке C;

Вариант 4: Сила F приложена в точке D

 

Определить: усилия в стержнях

Выполнить проверку.

 

 

Рис. 6. Схема к вариантам заданий 1,2,3,4.

 

 

Варианты: 5,6,7,8 (Рис. 7)

Дано: Плита, закрепленная на шести стержнях, находится в равновесии под действием двух активных сил: составляющей угол с осью y и лежащей в плоскости параллельной плоскости (y,z) и силы тяжести Известны размеры

Вариант 5: Сила F приложена в точке A;

Вариант 6: Сила F приложена в точке B;

Вариант 7: Сила F приложена в точке C;

Вариант 8: Сила F приложена в точке D

 

Определить: усилия в стержнях

Выполнить проверку.

 

Рис. 7. Схема к вариантам заданий 5,6,7,8.

 

Варианты: 9,10,11,12. (Рис. 8)

Дано: Плита, закрепленная на шести стержнях, находится в равновесии под действием двух активных сил: составляющей угол с осью xи лежащей в плоскости (x,y) и силы тяжести Известны размеры

Вариант 9: Сила F приложена в точке A;

Вариант 10: Сила F приложена в точке B;

Вариант 11: Сила F приложена в точке C;

Вариант 12: Сила F приложена в точке D

 

Определить: усилия в стержнях

Выполнить проверку.

 

 

 

Рис. 8. Схема к вариантам заданий 9,10,11,12.

 

Содержание отчета

1. Постановка задачи для конкретного варианта.

2. Расчетные уравнения в развернутой и в матричной форме (в символьном виде и с подстановкой численных значений). Сопровождая уравнения подробными расчетными схемами.

3. Текст клиентского кода программы.

4. Результаты выполнения программы.


Дата добавления: 2015-11-26; просмотров: 47 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.045 сек.)