Аппроксимация зависимости ширины запрещенной зоны полупроводников от температуры

Автор работы: Пользователь скрыл имя, 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

Работа состоит из  1 файл

Записка.doc

— 694.50 Кб (Скачать документ)

Пусть дано решить систему уравнений:

число которых более числа неизвестных x, у, z… Чтобы решить их по способу наименьших квадратов, составляют новую систему уравнений, число которых равно числу неизвестных и которые затем решаются по обыкновенным правилам алгебры. Эти новые, или так называемые нормальные, уравнения составляются по следующему правилу: умножают сперва все данные уравнения на коэффициенты у первой неизвестной х и, сложив почленно, получают первое нормальное уравнение, умножают все данные уравнения на коэффициенты у второй неизвестной у и, сложив почленно, получают второе нормальное уравнение и т. д. Если означить для краткости:

то нормальные уравнения представятся в следующем простом виде:

Легко заметить, что коэффициенты нормальных уравнений весьма легко составляются из коэффициентов данных, и притом коэффициент у первой неизвестной во втором уравнении равен коэффициенту у второй неизвестной в первом, коэффициент у первой неизвестной в третьем уравнении равен коэффициенту у третьей неизвестной в первом и т. д.

1.3. Требования к техническому и программному обеспечению

Разрабатываемая программа должна соответствовать следующим минимальным требованиям, обусловленным заданием к проекту.

1.3.1. Требования к программному обеспечению

 ОС — Windows NT/2000/XP/2003;

 Framework 3.5.

1.3.2. Требования к техническому обеспечению

 IBM-совместимый компьютер с МП Intel Pentium II или AMD K6 с тактовой частотой 300 МГц и выше;

 32 MB ОЗУ;

 НЖМД со свободным пространством 500 КБ;

 видеокарта, поддерживающая разрешение 800*600.

2. РАБОЧИЙ ПРОЕКТ

2.1. Общие сведения работе программы

Разработанная программа координирует действия пользователя, в зависимости от решаемой задачи. Также она обеспечивает дружественный пользовательский интерфейс, что делает работу более приятной и интересной. Для запуска программы необходимо запустить файл «kyrs.exe». Для корректной работы программы необходимо, чтобы на компьютере был установлен Framework 3.5.

2.2.Структура программы

Программа представляет собой совокупность окон, которые все вмести создают  «дружественный интерфейс».

При запуске программы на экране появляется главное окно, элементами которого являются следующие компоненты: «Label», «TextBox», «Button», «PictureBox» (рис. 2.1).

2.3. Описание программы

Работа программы начинается с появления главной формы, на которой расположено несколько элементов управления, позволяющие задавать различные настройки. Главное окно программы изображено на рис. 2.1.

 

Рис. 2.1. Главное окно программы

 

              Для начала работы необходимо заполнить следующие поля:

  • Графа «T1», нижняя граница температуры;
  • Графа «R1», сопротивление полупроводника при температуре «T1»;
  • Графа «T2», верхняя граница температуры;
  • Графа «R2», сопротивление полупроводника при температуре «T2»;
  • Графа «Порядок аппроксимации», указывает количество переменных при составлении системы уравнений.

После ввода всех необходимых начальных данных, при нажатии на кнопку «Построить», если была допущена ошибка при заполнении данных, появится сообщение об ошибке (рис. 2.2).

 

Рис. 2.2. Сообщение об ошибке

 

Если все данные были введены правильно, то будут произведены все необходимые вычисления и представлен результат вычислений в виде графика (рис. 2.3).

 

Рис. 2.3. Результат работы программы

 

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

2.3. Алгоритм работы программы

              Работа программы начинается с инициализации формы, при запуске программы вызывается функция «DrawInit», которая очищает пространство рисунка и рисует лини оси, а так же инициализирует переменные необходимые в дальнейшей работе программы.

              После выполнения функции «DrawInit» происходит отображение главного окна программы на дисплее монитора, Исходный код функции «DrawInit» представлен в приложении.

              При вводе начальных данных и нажатии кнопки «Построить», вызывается функции отрабатывающая нажатие кнопки.

На первом этапе проверяется корректность введенных данных, для это используется функции «CheckValue», которая в случае корректных данных возвращает 1, а иначе 0. Исходный код функции «CheckValue» представлен в приложении.

Из исходного кода функции «CheckValue» видно, что для исходных данных введены следующие ограничения:

       ;

       0 R2 1000;

       0 T1 1000;

  • 0 T2 1000.

После проверки корректности введенных начальных данных, происходит инициализация графика и необходимых переменных, для этого вызывается функция «DrawInit», исходный код которой представлен выше.

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

Функция «InitMatrix» используется для подготовки переменных к аппроксимации функции, для этого в качестве входных параметров функции передаются шаг по оси изменения температуры и массив значения функции в точках. Исходный  код функции «InitMatrix» представлен в приложении.

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

Функция «DrawResult» отображает полученные результаты в виде графика, для этого данной функции необходимо передать два параметра: способ, которым был получен результат и массив содержащих значения функции в точках. Исходный код функции, отображающий результат работы программы представлен в приложении.

2.4. Системные требования  к компьютеру

Аппаратные требования

       Процессор 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.

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

ЛИТЕРАТУРА

  1. А.Я. Архангельский. «Программирование в Visual Basic 6.0.» Москва «Издательство БИНОМ», 2005 г.

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(PictureBox1.Image)

        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.Text) - Convert.ToInt32(TextBox_T1.Text)) / 10

        Dim value_step_R As Double = ((Convert.ToInt32(TextBox_R2.Text) - Convert.ToInt32(TextBox_R1.Text)) / (Convert.ToInt32(TextBox_T2.Text) - Convert.ToInt32(TextBox_T1.Text))) * value_step_T

        Dim temp_R As Double

        Dim temp_T As Integer

        temp_T = Convert.ToInt32(TextBox_T1.Text)

        temp_R = Convert.ToDouble(TextBox_R1.Text)

        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.Text)

        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.Text)

            Dim R2 As Integer = Convert.ToInt32(TextBox_R2.Text)

            Dim T1 As Integer = Convert.ToInt32(TextBox_T1.Text)

            Dim T2 As Integer = Convert.ToInt32(TextBox_T2.Text)

            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.Text)

        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)

Информация о работе Аппроксимация зависимости ширины запрещенной зоны полупроводников от температуры