Скачиваний:
8
Добавлен:
01.05.2014
Размер:
148.99 Кб
Скачать

Практическая работа №3

Вариант 3.15

В эксперименте по определению заселенности возбужденного состояния Ne был зарегистрирован следующий профиль спектральной линии (представлен в таблице). Предполагая, что линия имеет профиль Лоренца A = Ao /(1 + 10(λ – λo)2), где Ao – амплитуда в условных единицах, λo – центр линии в условных единицах. Определить параметры λo , пользуясь критерием наименьших квадратов. Оценить разброс экспериментальных значений.

λ

0,4

0,5

0,9

1

1,4

1,8

2,1

2,3

2,6

3

A

0,08

0,1

0,19

0,22

0,51

1,69

1,87

1,06

0,44

0,19

Ao=1,95

Использовать метод Пауэлла.

Спектр линии:

Так как значения параметра λo определяются в соответствии с критерием наименьших квадратов на основе экспериментальных данных, представленных в таблице, то целевой функцией будет являться функция:

где λi,Ai-данные из таблицы, λ0-основная переменная.

График зависимости целевой функции от основной переменной:

Листинг программы:

#include <stdio.h>

#include <math.h>

double x[10] = {0.4,0.5,0.9,1,1.4,1.8,2.1,2.3,2.6,3};

double A[10] = {0.08,0.1,0.19,0.22,0.51,1.69,1.87,1.06,0.44,0.19};

double An[10];

// vi4islenie funkcii

double F (double x, double x0)

{

double A;

A = 1.95/(1+10*((x-x0)*(x-x0)));

return A;

}

//vi4islenie celevoi funcii

double CF (double x0)

{

double W = 0;

int i;

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

{

An[i] = F(x[i], x0);

W = W + ((An[i] - A[i])*(An[i] - A[i]));

}

return W;

}

void main (void)

{

double d = 0.0001;

double X1= 1;

double Xmin, Wxx, xx, A1, A2, Wmin, W1, W2, W3, X3, X2;

do

{

X2=X1+d;

W1=CF(X1);

W2=CF(X2);

if (W1 > W2) X3=X1+2*d;

if ((W1<W2) || (W1=W2)) X3=X1-d;

W3=CF(X3);

//nahodim minimalnoe W

Wmin=W1;

Xmin=X1;

if (W2<W1) Wmin=W2, Xmin=X2;

if (Wmin>W3) Wmin=W3, Xmin=X3;

//ispolzovanie kvadrati4eskoy aproksimacii

A1= (W2-W1)/(X2-X1);

A2= ((W3-W1)/(X3-X1)-(W2-W1)/(X2-X1))/(X3-X2);

xx=0.5*(X1+X2-A1/A2);

Wxx=CF(xx);

X1=xx;

}

//proverka okon4aniya

while (fabs(Wmin-Wxx)>d || fabs(Xmin-xx)>d);

printf("L0 = %f\n", xx);//osnovnaya peremennaya

printf("W = %f\n", CF(xx));//celevaya funkciya

}

Данные полученные программой: L0=1.955400, W=0.116146.

Эти данные сопоставимы с построенным в MS Excel графиком функции.

3

Соседние файлы в папке Лабораторная работа №3