Лабораторная работа №3 / tpr 3
.doc
Практическая работа №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 графиком функции.