Автор работы: Пользователь скрыл имя, 15 Марта 2012 в 09:21, курсовая работа
Целью данного курсового проекта является изучение методов приближенного вычисления и разработка учебно-демонстрационной программы аппроксимации зависимости ширины запрещенной зоны от температуры. Курсовой проект выполнен в среде Microsoft Visual Studio 2008.
Разработка проекта проходила в несколько стадий, заключавшихся в изучении предметной области задачи, изучении метода наименьших квадратов, разработке учебно-демонстрационной программы, включающей в себя возможности указания параметров полупроводника и порядка аппроксимации.
ВВЕДЕНИЕ 3
1. ТЕХНИЧЕСКИЙ ПРОЕКТ 4
1.1. Предметная область 4
1.2. Метод наименьших квадратов 8
1.3. Требования к техническому и программному обеспечению 10
1.3.1. Требования к программному обеспечению 11
1.3.2. Требования к техническому обеспечению 11
2. РАБОЧИЙ ПРОЕКТ 12
2.1. Общие сведения работе программы 12
2.3. Описание программы 12
2.3. Алгоритм работы программы 14
2.4. Системные требования к компьютеру 15
ЗАКЛЮЧЕНИЕ 17
ЛИТЕРАТУРА 18
ПРИЛОЖЕНИЕ 19
Пусть дано решить систему уравнений:
число которых более числа неизвестных x, у, z… Чтобы решить их по способу наименьших квадратов, составляют новую систему уравнений, число которых равно числу неизвестных и которые затем решаются по обыкновенным правилам алгебры. Эти новые, или так называемые нормальные, уравнения составляются по следующему правилу: умножают сперва все данные уравнения на коэффициенты у первой неизвестной х и, сложив почленно, получают первое нормальное уравнение, умножают все данные уравнения на коэффициенты у второй неизвестной у и, сложив почленно, получают второе нормальное уравнение и т. д. Если означить для краткости:
то нормальные уравнения представятся в следующем простом виде:
Легко заметить, что коэффициенты нормальных уравнений весьма легко составляются из коэффициентов данных, и притом коэффициент у первой неизвестной во втором уравнении равен коэффициенту у второй неизвестной в первом, коэффициент у первой неизвестной в третьем уравнении равен коэффициенту у третьей неизвестной в первом и т. д.
Разрабатываемая программа должна соответствовать следующим минимальным требованиям, обусловленным заданием к проекту.
ОС — Windows NT/2000/XP/2003;
Framework 3.5.
IBM-совместимый компьютер с МП Intel Pentium II или AMD K6 с тактовой частотой 300 МГц и выше;
32 MB ОЗУ;
НЖМД со свободным пространством 500 КБ;
видеокарта, поддерживающая разрешение 800*600.
Разработанная программа координирует действия пользователя, в зависимости от решаемой задачи. Также она обеспечивает дружественный пользовательский интерфейс, что делает работу более приятной и интересной. Для запуска программы необходимо запустить файл «kyrs.exe». Для корректной работы программы необходимо, чтобы на компьютере был установлен Framework 3.5.
2.2.Структура программы
Программа представляет собой совокупность окон, которые все вмести создают «дружественный интерфейс».
При запуске программы на экране появляется главное окно, элементами которого являются следующие компоненты: «Label», «TextBox», «Button», «PictureBox» (рис. 2.1).
Работа программы начинается с появления главной формы, на которой расположено несколько элементов управления, позволяющие задавать различные настройки. Главное окно программы изображено на рис. 2.1.
Рис. 2.1. Главное окно программы
Для начала работы необходимо заполнить следующие поля:
После ввода всех необходимых начальных данных, при нажатии на кнопку «Построить», если была допущена ошибка при заполнении данных, появится сообщение об ошибке (рис. 2.2).
Рис. 2.2. Сообщение об ошибке
Если все данные были введены правильно, то будут произведены все необходимые вычисления и представлен результат вычислений в виде графика (рис. 2.3).
Рис. 2.3. Результат работы программы
На графике отображается две линии, линия красного цвета отображает график функции, вычисленный по исходной формуле, линия зеленого цвета отображает график той же функции, но вычисленный методами приближенного вычисления, с помощью аппроксимации функции. На полученном графике наглядно видно погрешность приближенный методов вычисления.
Работа программы начинается с инициализации формы, при запуске программы вызывается функция «DrawInit», которая очищает пространство рисунка и рисует лини оси, а так же инициализирует переменные необходимые в дальнейшей работе программы.
После выполнения функции «DrawInit» происходит отображение главного окна программы на дисплее монитора, Исходный код функции «DrawInit» представлен в приложении.
При вводе начальных данных и нажатии кнопки «Построить», вызывается функции отрабатывающая нажатие кнопки.
На первом этапе проверяется корректность введенных данных, для это используется функции «CheckValue», которая в случае корректных данных возвращает 1, а иначе 0. Исходный код функции «CheckValue» представлен в приложении.
Из исходного кода функции «CheckValue» видно, что для исходных данных введены следующие ограничения:
;
0 R2 1000;
0 T1 1000;
После проверки корректности введенных начальных данных, происходит инициализация графика и необходимых переменных, для этого вызывается функция «DrawInit», исходный код которой представлен выше.
После подготовки глобальных переменных и графика, происходит вычисление вспомогательных переменных, используемых для определения шага по обеим осям, и задается начальное положение. После этого происходит вычисление значений исходной функции, а затем вычисление с помощью методов приближенного вычисления.
Функция «InitMatrix» используется для подготовки переменных к аппроксимации функции, для этого в качестве входных параметров функции передаются шаг по оси изменения температуры и массив значения функции в точках. Исходный код функции «InitMatrix» представлен в приложении.
После инициализации всех необходимых переменных происходит вычисление полинома удовлетворяющего значениям аппроксимируемых значений в точке, в этого используется метод наименьших квадратов.
Функция «DrawResult» отображает полученные результаты в виде графика, для этого данной функции необходимо передать два параметра: способ, которым был получен результат и массив содержащих значения функции в точках. Исходный код функции, отображающий результат работы программы представлен в приложении.
Аппаратные требования
Процессор Intel или AMD с тактовой частотой 133 MHz или выше;
16Mb ОЗУ;
1 Mb свободного места на винчестере.
Системные требования
Microsoft Windows 95/98/NT/2000/XP/ME;
Framework 3.5.
Курсовой проект выполнен в среде Microsoft Visual Studio 2008.
Разработка проекта проходила в несколько стадий, заключавшихся в изучении предметной области задачи, изучении метода наименьших квадратов, разработке учебно-демонстрационной программы, включающей в себя возможности указания параметров полупроводника и порядка аппроксимации.
В течение разработки курсовой работы были изучены основные вопросы, посвящённые работе с приближенными методами вычисления, а также были изучены основы работы в среде Microsoft Visual Studio 2008.
Результатом проектирования стал программный продукт, позволяющий автоматизировать и облегчить процесс вычисления ширины запрещенной зоны. Программа легка в использовании и удовлетворяет всем необходимым требованиям. Внедрение подобных простейших программ в процессы математического моделирования сильно облегчит работу научным деятелям.
2. Боуман Дж., Эмерсон С «Практическое руководство по Visual Studio 2008», «БХВ-Петербург», 2000 г.
3. Глушаков С.В., Третьяков Ю.В., Головаш О.А. «Приближенные методы вычисления». – Харьков: Фолио, 2003.
4. Девис Чепмен «Математика в примерах»: Пер. с англ.Изд. Дом «Вильямс», 2002.
5. Страуструп Б. «Программирование на Basic», Санкт-Петербург «БХВ-Петербург», 2001 г.
6. Тимофеев В.В. «Математические модели». -М: ООО «Бином-Пресс», 2004г.
Листинг программы
Private Sub DrawInit()
PictureBox1.Image = New Bitmap(PictureBox1.Width, PictureBox1.Height)
Dim g As Graphics = Graphics.FromImage(
Dim drawFont As Font = New Font("Arial", 12)
Dim drawBrush As Brush = New SolidBrush(Color.Black)
g.Clear(Color.White)
Dim pen As Pen = New Pen(Color.Black, 2)
g.DrawLine(pen, 20, PictureBox1.Height - 10, 20, 20)
g.DrawLine(pen, 10, PictureBox1.Height - 20, PictureBox1.Width - 20, PictureBox1.Height - 20)
g.DrawLine(pen, 20, 20, 20 - 5, 20 + 10)
g.DrawLine(pen, 20, 20, 20 + 5, 20 + 10)
g.DrawLine(pen, PictureBox1.Width - 20, PictureBox1.Height - 20, PictureBox1.Width - 20 - 10, PictureBox1.Height - 20 - 5)
g.DrawLine(pen, PictureBox1.Width - 20, PictureBox1.Height - 20, PictureBox1.Width - 20 - 10, PictureBox1.Height - 20 + 5)
g.DrawString("E", drawFont, drawBrush, 5, 5)
g.DrawString("T", drawFont, drawBrush, PictureBox1.Width - 15, PictureBox1.Height - 25)
g.Dispose()
For i As Integer = 0 To 20
A(i) = 0
B(i) = 0
For j As Integer = 0 To 20
summ(i, j) = 0
Next
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If CheckValue() = 0 Then
Return
End If
DrawInit()
Dim values(10) As Double
Dim value_step_T As Integer = (Convert.ToInt32(TextBox_T2.
Dim value_step_R As Double = ((Convert.ToInt32(TextBox_R2.
Dim temp_R As Double
Dim temp_T As Integer
temp_T = Convert.ToInt32(TextBox_T1.
temp_R = Convert.ToDouble(TextBox_R1.
For i As Integer = 1 To 10
values(i - 1) = 0.172 * ((Math.Log(temp_R + value_step_R) - Math.Log(temp_R)) / ((1000 / (temp_T + value_step_T)) - (1000 / temp_T)))
temp_R += value_step_R
temp_T += value_step_T
Next
InitMatrix(value_step_T, values)
For tmp_k As Integer = 0 To K
For i As Integer = tmp_k + 1 To K
Dim M As Double = summ(i, tmp_k) / summ(tmp_k, tmp_k)
For j As Integer = tmp_k To K
summ(i, j) -= M * summ(tmp_k, j)
Next
B(i) -= M * B(tmp_k)
Next
Next
For i As Integer = K To 0 Step -1
Dim s As Double = 0
For j As Integer = i To K
s += summ(i, j) * A(j)
Next
A(i) = (B(i) - s) / summ(i, i)
Next
DrawResult(1, values)
temp_T = Convert.ToInt32(TextBox_T1.
For i As Integer = 1 To 10
values(i) = 0
For j As Integer = 0 To K
values(i) += Math.Pow(temp_T, j) * A(j)
Next
temp_T += value_step_T
Next
DrawResult(2, values)
End Sub
Private Function CheckValue() As Integer
Dim result_value = 1
Try
Dim R1 As Integer = Convert.ToInt32(TextBox_R1.
Dim R2 As Integer = Convert.ToInt32(TextBox_R2.
Dim T1 As Integer = Convert.ToInt32(TextBox_T1.
Dim T2 As Integer = Convert.ToInt32(TextBox_T2.
Dim tmp_K As Integer = Convert.ToInt32(TextBox5.Text)
If R1 < 0 Or R1 > 1000 Then
result_value = 0
ElseIf R2 < 0 Or R1 > 1000 Then
result_value = 0
ElseIf T1 < 0 Or T1 > 1000 Then
result_value = 0
ElseIf T2 < 0 Or T2 > 1000 Then
result_value = 0
ElseIf tmp_K < 0 Or tmp_K > 10 Then
result_value = 0
End If
If result_value = 0 Then
MessageBox.Show("Ошибка заполнения данных", "Сообщение")
End If
Catch ex As Exception
result_value = 0
MessageBox.Show(ex.Message, "Ошибка")
End Try
Return result_value
End Function
Private Sub InitMatrix(ByVal value_step_T As Integer, ByVal ParamArray y() As Double)
Dim x(10) As Double
x(0) = Convert.ToInt32(TextBox_T1.
For i As Integer = 1 To 10
x(i) = x(i - 1) + value_step_T
Next
K = Convert.ToInt32(TextBox5.Text)
For i As Integer = 0 To K
For j As Integer = 0 To K
summ(i, j) = 0
For tmp_k As Integer = 0 To 9
summ(i, j) += Math.Pow(x(tmp_k), i + j)
Next
Next
Next
For i As Integer = 0 To K
B(i) = 0
For tmp_k As Integer = 0 To 9
B(i) += Math.Pow(x(tmp_k), i) * y(tmp_k)
Next
Next
Dim temp2 As Double
For i As Integer = 1 To K
If summ(i, i) = 1 Then
For j As Integer = 1 To K
If i = j Then
Continue For
End If
If summ(i, j) <> 0 And summ(j, i) <> 0 Then
For tmp_k As Integer = 0 To K
temp2 = summ(j, tmp_k)
summ(j, tmp_k) = summ(i, tmp_k)
summ(i, tmp_k) = temp2
Next
temp2 = B(i)
B(i) = B(j)
B(j) = temp2
Exit For
End If
Next
End If
Next
End Sub
Private Sub DrawResult(ByVal typePen As Integer, ByVal ParamArray result() As Double)
Информация о работе Аппроксимация зависимости ширины запрещенной зоны полупроводников от температуры