курсачи / Otchet_po_kurs_rab
.docxМИНОБРНАУКИ РОССИИ
Государственное образовательное учреждение
высшего профессионального образования
Санкт-Петербургский государственный электротехнический университет
«ЛЭТИ» им. В.И. Ульянова ( Ленина)
ФАКУЛЬТЕТ ЭЛЕКТРОНИКИ (ФЭЛ)
КАФЕДРА Радиотехнической электроники
КУРСОВАЯ РАБОТА (ПРОЕКТ)
По дисциплине: ПРОГРАММНЫЕ СРЕДСТВА МОДЕЛИРОВАНИЯ ЭЛЕКТРОННОЙ КОМПОНЕНТНОЙ БАЗЫ
На тему: Разработка модуля программы анализа электронного прибора
(указывается обобщенная тема)
Вариант № 19
Выполнил |
|
|
Оценка |
|
студент гр. № |
5201 |
|
Проверил |
Синев А. Е. |
|
Сулейменов Д. |
|
|
(ФИО) |
|
(ФИО) |
|
Дата |
|
САНКТ-ПЕТЕРБУРГ
2019 г.
ЗАДАНИЕ на курсовую работу
По дисциплине: ПРОГРАММНЫЕ СРЕДСТВА МОДЕЛИРОВАНИЯ ЭЛЕКТРОННОЙ КОМПОНЕНТНОЙ БАЗЫ
9
Название курсовой работы: |
Модуль численного расчёта траекторий усовершенствованным методом Эйлера с определением времени пролёта через ячейку конечно-разностной сетки. |
Содержание работы: |
Разработка алгоритма и программы на С++ для численного расчёта траекторий усовершенствованным методом Эйлера с определением времени пролёта через параллелепипед. |
Исходные данные: |
1) Размеры ячейки-параллелепипеда. 2) Электрическое и магнитное поле, зависящие от координат. 3) Начальные параметры траектории (координаты точки старта и вектор начальной скорости) |
Результаты работы: |
1. Программа расчёта траекторий и времени пролёта через ячейку. 2. Методика тестирования и отладки программы. |
Литература: |
1. Internet. 2. В. М. Вержбицкий Основы численных методов. Учебник для вузов. – М.: Высш. Шк., 2002. |
Модуль численного расчёта траекторий усовершенствованным методом Эйлера с определением времени пролёта через ячейку конечно-разностной сетки.
Цель работы: разработка программного кода в среде С++ для расчета траекторий усовершенствованным методом Эйлера с определением времени пролета через ячейку конечно-разностной сетки.
Теоретические данные:
Основной задачей работы является расчет траектории и времени пролета электрона в ячейке, в которой задано электрическое поле. Размеры ячейки параллелепипеда задаются пользователем, за точку страта принята точка с координатами (0;0;0), также пользователем задается начальный вектор скорости электрона. Расчет траектории осуществляется по усовершенствованной формуле Эйлера, которая выглядит как:
, где
При начальном условии координаты (задача Коши) находятся координаты следующей точки, рассматриваемой данной формулой для функции отдельно для каждой оси по времени (введенная нами скорость).
Программный код в С++:
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
double f(double x, double Vx,double y, double Vy,double z, double Vz,double tx,double ty,double tz )
{
return(x*Vx-y*Vy);
}
int main(void){
int i;
double x,y,z,Vx,Vy,Vz,h,h1,h2,endx,endy,endz,step,u,tx,ty,tz,x1,y1,z1,tpox,tpoy,tpoz;
cout <<"enter grid size x y z"<<endl;
cin >>endx>>endy>>endz;
x=0;
y=0;
z=0;
tx=0;
ty=0;
tz=0;
x1=0;
y1=0;
z1=0;
tpox=0;
tpoy=0;
tpoz=0;
cout <<"Enter speed(Vx,Vy,Vz)"<<endl;
cin>>Vx>>Vy>>Vz;
cout <<"Enrer step"<<endl;
cin>>step;
h=endx/step;
h1=endy/step;
h2=endz/step;
for(i=1;i<=step;i++)
{x+=h;
Vx+=h*f(x+0.5*h,Vx+0.5*h*f(x,Vx,0,0,0,0,0,0,0),0,0,0,0,0,0,0);
tx+=x*sqrt(1/((sqrt((x*Vx-y*Vy)*(x*Vx-y*Vy))*1.055e11)));
y+=h1;
Vx+=h*f(0,0,y+0.5*h1,Vy+0.5*h1*f(0,0,y,Vy,0,0,0,0,0),0,0,0,0,0);
ty+=y*sqrt(1/((sqrt((x*Vx-y*Vy)*(x*Vx-y*Vy))*1.055e11)));
z+=h2;
Vx+=h*f(0,0,0,0,z+0.5*h2,f(0,0,0,0,z,Vy,0,0,0),0,0,0);
tz+=z*sqrt(1/((sqrt((x*Vx-y*Vy)*(x*Vx-y*Vy))*1.055e11)));
tpox+=tx;
tpoy+=ty;
tpoz+=tz;
x1+=Vx*tx;
y1+=Vy*ty/tx;
z1+=Vz*tz/tx;
if (x1>0&&x1<endx&&y1>0&&y1<endy&&z1>0&&z1<endz)
{cout<<"x,y,z:("<<x<<"; "<<y<<"; "<<z<<"); "
<<"Vx,Vy,Vz:("<<Vx<<"; "<<Vy<<"; "<<Vz<<"); "
<<endl
<<"tx,ty,tz:("<<tx<<"; "<<ty<<"; "<<tz<<"); ";
cout<<"x1,y1,z1:("<<x1<<";"<<y1<<";"<<z1<<"); "
<<endl;}
} ;
if (tpox<=tpoy&&tpox<=tpoz) cout<<"Vremya prohozhdenya elektronom yacheiki="<<tpox<<";";
else if (tpoy<=tpox&&tpoy<=tpoz) cout<<"Vremya prohozhdenya elektronom yacheiki="<<tpoy<<";";
else if (tpoz<=tpox&&tpoz<=tpoy) cout<<"Vremya prohozhdenya elektronom yacheiki="<<tpoz<<";";
cin>>u;
}
В полученном коде рассматриваются точки, которые входят в множество точек параллелепипеда, остальные точки отсеиваются программой.
Результаты отладки программы:
В данном случае заданы размеры ячейки
if (x1>0&&x1<endx&&y1>0&&y1<endy&&z1>0&&z1<endz)
{ cout<<"x1,y1,z1:("<<x1<<";"<<y1<<";"<<z1<<"); "
<<endl;}
} ;