Диплом, курсовая, контрольная работа
Помощь в написании студенческих работ

Численное решение уравнения Фредгольма 1-го рода в задачах сопротивления материалов

Курсовая Купить готовую Узнать стоимостьмоей работы

Гауссаfor (int k = i; k = 0; i—){Answer = RightPart; for (int j = (int)(RowCount — 1); j > i; j—)Answer -= Matrix * Answer; Answer = (double)Answer/Matrix… Читать ещё >

Содержание

  • 1. РАСЧЕТ НАПРЯЖЕННОГО СОСТОЯНИЯ КОЛЬЦА
    • 1. 1. Постановка задачи
    • 1. 2. Математическая модель распределения давлений
    • 1. 3. Результаты численного расчета задачи
  • Литература
  • ПРИЛОЖЕНИЕ 1

Численное решение уравнения Фредгольма 1-го рода в задачах сопротивления материалов (реферат, курсовая, диплом, контрольная)

size ();intColumCount = Matrix[0]. size ();double *Answer = newdouble[RowCount]; for (inti = 0; i < RowCount — 1; i++){SortRows (i, Matrix, RightPart);for (int j = i + 1; j < RowCount; j++){if (Matrix[i][i] ≠ 0) //если главный элемент не 0, то производим вычисления{doubleMultElement = (double)Matrix[j][i] / Matrix[i][i]; //Прямойходметода.

Гауссаfor (int k = i; k < ColumCount; k++)Matrix[j][k] -= Matrix[i][k] * MultElement;RightPart[j] -= RightPart[i] * MultElement;}//для нулевого главного элемента просто пропускаем данный шаг}}//ищем решение//Обратный ход метода Гауссаfor (inti = (RowCount — 1); i >= 0; i—){Answer[i] = RightPart[i]; for (int j = (int)(RowCount — 1); j > i; j—)Answer[i] -= Matrix[i][j] * Answer[j]; Answer[i] = (double)Answer[i]/Matrix[i][i]; }Vectorresult;//Помещаем массив в векторfor (inti = 0; i < RowCount; i++)result.push_back (Answer[i]);returnresult; //Возвращение результата}Model.h#ifndef MODEL_H#defineMODEL_H#include" IntegralEquation. h" //Класс интегрального уравнения первого родаclassFirstKindEquation: publicIntegralEquation{public://МетодрешенияинтегральногоуравненияvirtualVectorSolve (KernelFunction &, Function &);};#endifModel.cpp#include" Model. h" VectorFirstKindEquation: Solve (KernelFunction &Kernel, Function &Fun){MatrixGenMatr;//Подготовкапараметровquad->HigherLimit = HigherLimit;quad->LowerLimit = LowerLimit;quad->Size = Size;//Дискретизация интегрального уравнения. В итоге получается матрица, последняя строка которой — правая часть,//остальное перед ней — матрица из элементов квадратуры интеграла GenMatr = quad->Run (Kernel, Fun);//Разделение общей матрицы на главную и столбец правой частиint size_ = GenMatr. size ();MatrixMainMatrix;VectorVect;//Заполнение главной матрицы//Добавляем первые size_-1 строк из исходной матрицыfor (inti = 0; i < size_-1; i++){MainMatrix.push_back (GenMatr[i]);}doublereg_param = 1e-10;for (inti = 0; i < MainMatrix. size (); i++)MainMatrix[i][i] += reg_param;//Правая часть СЛАУ как последняя строка матрицыVect = GenMatr[size_ - 1]; //Решение интегрального уравнения как решение СЛАУVector sol;sol = solver->Solve (MainMatrix, Vect);returnsol;}test.cpp//Элементы.

ИУ (4)#include" CircleFunctions. h" //Библиотека для интегрального уравнения второго рода#include" SecondKindEquation. h" //Библиотека для интегрального уравнения первого рода#include" Model. h" //Используемые решатель и вид аппроксимации#include" GaussSolver. h" #include" RectQuad. h" #include<iostream>#include<clocale>#include<fstream>usingnamespacestd;constdouble Pi = 3.1 415 926;intmain (){setlocale (LC_CTYPE, «»);Vectorsol;//Параметры кольца//Коэффициент Пуассонаdouble nu;//Модульупругостиdouble E;//Радиус кольцаdouble R;//Шаг сеткиdoublestep;//Центральный угол, градусы doublebeta;//Число узлов в сеткеdoubleSize;//Величина зазора между обоймой и кольцомdoubleeps;//Ввод параметровcout<< «Задайте радиус кольца» << endl;cin >> R;cout<< «Задайте коэффициент Пуассона кольца» << endl;cin >> nu;cout<< «Задайте модуль упругости кольца» << endl;cin >> E;cout<< «Задайте центральный угол разреза кольца, градусы «<< endl;cin >> beta;cout<< «Задайте число узлов сетки «<< endl;cin >> Size;cout<< «Задайте зазор между обоймой и кольцом «<< endl;cin >> eps;IntegralEquation *eq;//Объект.

ИУ 1-городаeq= newFirstKindEquation ();//Объектрешателя.

СЛАУGaussSolver *Solver = newGaussSolver ();//ОбъектквадратурыRectQuad *Quad = newRectQuad ();//Перевод в радианыbeta = (double)beta*Pi / 180;//Пределы интегрированияdouble Min = -0.5*Pi+beta;double Max = 1.5*Pi — beta;//Шагсеткидляядра.

ИУstep = (double)(Max — Min) / (Size — 1);//Параметры уравненияeq->LowerLimit = Min;eq->HigherLimit = Max;eq->Size = Size; //Числоузловсетки//Настройка типа аппроксимации интегралаeq->quad = Quad;//Настройка типа решателяeq->solver = Solver;//Функции ядра и правой части ИУCircleKernel Kernel_;Kernel_.E = E;Kernel_.nu = nu;Kernel_.R = R;Kernel_.step = step;CircleFuncFunc_;Func_.epsilon = eps;//Решаем.

ИУ 2-городаsol = eq->Solve (Kernel_, Func_);double step_ = (double)(Max — Min) / (eq->Size — 1);double x=Min;ofstream f («I:sol.txt»);//Выводрешенияfor (inti = 0; i < sol. size (); i++){x = Min + i*step_;cout << «x=» << x << «u (x)=» << sol[i] << endl;f << x << «» << sol[i] << endl;}f.close ();system («pause»);}.

Показать весь текст

Список литературы

  1. И.А. Биргер, Б. Ф. Шорр, Г. Б. Иосилевич. Расчет на прочность деталей машин: Справочник. М.: Машиностроение, 1993 г. — 640 с.
  2. Механика контактных взаимодействий. Под редакцией Воровича И. И., Александрова В. М. М.: Физматлит, 2001. — 671 с.
  3. К. Механика контактного взаимодействия. Пер. с англ. М.: Мир, 1989. — 510 с.
  4. С.А. Механика контактного взаимодействия / С. А. Кузнецов. — Казань: Казан. ун-т, 2014. — 72 с.
  5. И.К., Щерица О. В. Численные методы решения задач математической физики: метод. указания к лаб. работам по курсу «Методы вычислений» / Под ред. М. П. Галанина. [Электронный ресурс] — М.: МГТУ им. Н. Э. Баумана, 2014. — 64 с.
Заполнить форму текущей работой
Купить готовую работу

ИЛИ