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

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Министерство Образования и профессионального обучения РФ.
Санкт-Петербургский Государственный Электротехнический
Университет им. В.И.Ульянова (Ленина)
«ЛЭТИ»
Кафедра Биомедицинской электроники и охраны среды.
Отчет по курсовой работе.
Раздел «Программирование».
Тема: «Создание программы для статистических расчетов в фармакологии и токсикологии».
Ст.гр. |
4541 |
23.05 |
Ковалевская Д.В. |
Преподаватель |
К.т.н. |
2005 |
Бельтюков М.В. |
С-Пб
2005г.
Введение
Курсовая работа по программированию выполнена в среде Borland Delphi 7 и предназначена для статистических расчетов в токсикологии ( показатели, определяющиеся в работе соответствуют также фармакологическим ).
При анализе действия различных препаратов необходимо рассчитывать эффективные дозы, действующие в 50% случаев (ЕД-50), а также токсические дозы: ЛД-16, ЛД-50, ЛД-84 и ЛД-100. Кроме того, принято для ЛД-50 находить стандартную ошибку показателя SЛД-50. С помощью данной программы можно производить расчет вышеуказанных параметров.
Вычисление ЛД-16, ЛД-50, ЛД-84 и ЛД-100.
Расчет данных токсикологических показателей производится по методу наименьших квадратов с использованием данных эксперимента
y = ax+b. (1)
При пробит-анализе доза ЛД-16 соответствует пробите 4, доза ЛД-50 - пробите 5, а доза ЛД-84 пробите 6. Эти числа подставляют вместо х в формуле (1), а показатели a и b находятся по формуле:
a=
b=
Параметры y и z входные данные, которые автоматически определяются программой, и зависящие от тех величин, которые пользователь вводит непосредственно при работе с помощью двух элементов SpinEdit: число животных в группе и количество особей, у которых наблюдается эффект от препарата.
Показатель ЛД-100 находят по формуле:
ЛД-100 = ЛД-84 + 0.5 (ЛД-84 ЛД-50) (4)
Вычисление стандартной ошибки ЛД-50.
Этот показатель находят по следующей формуле:
SЛД-50 =
Вычисление коэффициента кумуляции.
В практике токсикологических исследований необходимо проводить оценку кумулятивного действия различных химических соединений. Подобная оценка отражается через коэффициент кумуляции.
К=
Работа программы
Текст программы.
unit Statistika;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, Buttons, StdCtrls, Spin, Menus;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
BitBtn1: TBitBtn;
SEAll: TSpinEdit;
SEOne: TSpinEdit;
Label1: TLabel;
Label2: TLabel;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Label3: TLabel;
Label4: TLabel;
ESLD: TEdit;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
koef: TLabel;
Ekoef: TEdit;
SEN: TSpinEdit;
Label5: TLabel;
LResalt: TLabel;
procedure Button2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure StringGrid1Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
F1, F2, F3, s, c : Real;
y, z : Real;
I, J : Integer;
SEAll, SEOne : Integer;
T: array [0..5,0..5] of real;
K, P ,W : Real;
a1, a2, a3 : Real;
b1, b2, b3 : Real;
m, n : Integer ;
H1, Hn : real;
d,v : real;
SEN : Integer;
Q : array [0..9,0..6] of real;
const
x1= 4; x2= 5; x3= 6; {çíà÷åíèå ïðîáèòû ñîîòâåòñòâåííî ËÄ}
e1= 600;
e2= 700;
e3= 850;
implementation
{$R *.dfm}
uses math;
procedure TForm1.Button2Click(Sender: TObject);
begin
J:= SEOne.Value;
I:= SEAll.Value;
T[3,0]:= 3.62;
T[3,1]:= 4.57;
T[3,2]:= 5.43;
T[3,3]:= 6.38;
T[3,4]:= 0 ; // конец первой строки
T[4,0]:= 3.47;
T[4,1]:= 4.33;
T[4,2]:= 5.00;
T[4,3]:= 5.67;
T[4,4]:= 6.53;
T[4,5]:= 0; // конец второй строки
T[5,0]:= 3.36;
T[5,1]:= 4.16;
T[5,2]:= 4.75;
T[5,3]:= 5.25;
T[5,4]:= 5.84;
T[5,5]:= 6.64;// конец третьей строки
y:= T[I,J];
n:= Trunc(y);
m:= trunc((y-trunc(y))*10);
Q[0,3]:=1.0;
Q[0,4]:=3.5;
Q[0,5]:=5.0;
Q[0,6]:=3.5; // конец первого столбца
Q[1,3]:=1.2;
Q[1,4]:=3.7;
Q[1,5]:=4.9;
Q[1,6]:=3.2; // конец второго столбца
Q[2,3]:=1.4;
Q[2,4]:=3.9;
Q[2,5]:=4.8;
Q[2,6]:=2.9; // конец третьего столбца
Q[3,3]:=1.6;
Q[3,4]:=4.1;
Q[3,5]:=4.7;
Q[3,6]:=2.6; // конец первого столбца
Q[4,3]:=1.8;
Q[4,4]:=4.3;
Q[4,5]:=4.6;
Q[4,6]:=2.3; //êîíåö ïÿòîãî ñòîëáöà
Q[5,3]:=2.0;
Q[5,4]:=4.5;
Q[5,5]:=4.5;
Q[5,6]:=2.0; // êîíåö øåñòîãî ñòîëáöà
Q[6,3]:=2.3;
Q[6,4]:=4.6;
Q[6,5]:=4.3;
Q[6,6]:=1.8; // êîíåö ñåäüìîãî ñòîëáöà
Q[7,3]:=2.6;
Q[7,4]:=4.7;
Q[7,5]:=4.1;
Q[7,6]:=1.6; // êîíåö âîñüìîãî ñòîëáöà
Q[8,3]:=2.9;
Q[8,4]:=4.8;
Q[8,5]:=3.9;
Q[8,6]:=1.4; // êîíåö äåâÿòîãî ñòîëáöà
Q[9,3]:=3.2;
Q[9,4]:=4.9;
Q[9,5]:=3.7;
Q[9,6]:=1.2; // êîíåö äåñÿòîãî ñòîëáöà
z:=Q[m,n];
{ðåçóëüòàò äëÿ ËÄ-16}
b1:=((z*e1*y)-(e1*Y))/((z*(sqr(e1)))-(sqr(e1)));
a1:=((y-e1)*b1)/(z);
F1:=a1*x1+b1;
{ðåçóëüòàò äëÿ ËÄ-50}
b2:=((z*e2*y)-(e2*Y))/((z*(sqr(e2)))-(sqr(e2)));
a2:=((y-e2)*b2)/(z);
F2:=a2*x2+b2;
{ðåçóëüòàò äëÿ ËÄ-84}
b3:=((z*e3*y)-(e3*Y))/((z*(sqr(e3)))-(sqr(e3)));
a3:=((y-e3)*b3)/(z);
F3:=a3*x3+b3;
c:=F3+(F3-F2)/2; {ðåçóëüòàò äëÿ ËÄ-100}
{Âûâîä ðåç-îâ â òàáëèöó}
StringGrid1.Cells[1,1]:=FloatToStr(f1);
StringGrid1.Cells[2,1]:=FloatToStr(f2);
StringGrid1.Cells[3,1]:=FloatToStr(f3);
StringGrid1.Cells[4,1]:=FloatToStr(c);
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
s:=(F3-F1)/sqrt(2*(SEAll.Value)); {âû÷èñëåíèå ñòàíäàðòíîé îøèáêè ËÄ-50}
ESLD.text:=FloatToStr(s);
end;
procedure TForm1.StringGrid1Click(Sender: TObject);
begin
//óñòàíîâêà ñâîéñòâ òàáëèöû
SEOne.MaxValue := SEAll.Value;
StringGrid1.Cells[1,0]:='ËÄ-16';
StringGrid1.Cells[2,0]:='ËÄ-50';
StringGrid1.Cells[3,0]:='ËÄ-84';
StringGrid1.Cells[4,0]:='ËÄ-100';
StringGrid1.Options:=[goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine,
goRangeSelect, goAlwaysShowEditor, goEditing];
end;
procedure TForm1.N5Click(Sender: TObject);
begin
close;
if closeQuery then close;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
{ðåçóëüòàò äëÿ ËÄ-16}
b1:=((z*e1*y)-(e1*Y))/((z*(sqr(e1)))-(sqr(e1)));
a1:=((y-e1)*b1)/(z);
F1:=a1*x1+b1;
{ðåçóëüòàò äëÿ ËÄ-50}
b2:=((z*e2*y)-(e2*Y))/((z*(sqr(e2)))-(sqr(e2)));
a2:=((y-e2)*b2)/(z);
F2:=a2*x2+b2;
{ðåçóëüòàò äëÿ ËÄ-84}
b3:=((z*e3*y)-(e3*Y))/((z*(sqr(e3)))-(sqr(e3)));
a3:=((y-e3)*b3)/(z);
F3:=a3*x3+b3;
c:=F3+(F3-F2)/2; {ðåçóëüòàò äëÿ ËÄ-100}
H1:=((F3/F2)+(F2/F1))/2;
Hn:= (IntPower(d,SEN.Value)+IntPower(v,SEN.Value))/2;
K:=(F2-H1)/(IntPower(F2,SEN.Value)-Hn);
Begin
W:=K;
If (W<=1) then
LResalt.Visible := true
LResalt.Caption:='Äîçà ïðåïàðàòà âûçûâàåò ïðèâûêàíèå ó æèâîòíûõ'
else
LResalt.Caption:= 'Äîçà ïðåïàðàòà ñîîòâåòñòâóåò íîðìå';
end;
Ekoef.text:=FloatToStr(K);
end;
end.