Лабораторная работа №3:

advertisement
ФГБОУ ВПО «Брянский государственный технический университет»
Предмет: «Моделирование систем, модели и методы
анализа проектных решений»
Лабораторная работа №3:
«Численные
уравнений»
методы
решения
систем
нелинейных
Выполнили:
Студенты группы 08-САПР
Попов И. С.
Семченко Е. В.
Преподаватель:
Филиппова Л. Б.
Брянск 2011
Цель работы: изучение численных методов решения нелинейных
уравнений и приобретение навыков решения практических задач с
использованием программного средства MathCAD.
Задание. Погонные потери мощности в прямоугольном металлическом
волноводе, выполненном из меди, для основного типа волны H10 определяются
по формуле:
2

2b    
0.14 1 

 
a  2a  



 
2
b  1   / 2a 
где потери α определяются в дБ/м (децибел на
метр); a и b − поперечные размеры волновода; λ −
длина волны. Величины a, b и λ в формулу следует подставлять в
сантиметрах.
Задавшись указанными в таблице размерами a и b, определите
длину волны λ, удовлетворяющую заданному значению α и условию a < λ <
2a.
Параметр
a, cм
b, см
α, дБ/м
17-1
2,3
1
0,4
Вариант
17-3
17-4
1,3
1,1
0,65
0,55
0,5
0,4
17-2
1,6
0,8
0,3
17-5
0,9
0,45
0,7
17-6
0,72
0,34
1,2
Теоретическая часть
Метод половинного деления
Графически процедура поиска корня уравнения f(x) методом
половинного деления показана на рис 1.
f(x)
исходный интервал (b-a)
1 шаг: интервал (b-a)/2
2 шаг: (b-a)/4
3 шаг: (b-a)/8
а
xc2
xc3
xc1
b x
Рис.1. Графическое представление метода половинного делания
Вначале на концах исходного отрезка [a, b], содержащего корень,
вычисляют значения функции f(a) и f(b). Затем находят точку, делящую [a,
b] на две равные части, по итерационной формуле xc=(a+b)/2 (6) и
вычисляют значение функции f(xc). Далее по перемене знака функции
выбирают ту половину [a, b], в которой расположен корень. Если знаки f(xc)
и f(a) совпадают, то в дальнейшем полагают a = xc и f(a) = f(xc).
Если же, напротив, знаки f(xc) и f(a) различаются, а знаки f(xc) и f(b)
совпадают, то полагают b = xc и f(b) = f(xc). В результате этих действий
получают новый отрезок, содержащий корень. Этот отрезок имеет длину в
два раза меньше, чем исходный.
Блок-схема алгоритма метода половинного деления(рис.2).
Начало
Ввод
[a,b]
Вычисление
fa=f(a)
fb=f(b)
Вычисление
xc=(a+b)/2
fc=f(xc)
Одинаковы ли
знаки fc и fa?
нет
да
a=xc
fa=fc
нет
b=xc
fb=fc
fc<|(b-a)/xc|
да
Вывод
xc и f c
Конец
Рис.2. Алгоритм метода половинного деления
Готовая программа представлена на рис.3.
Рис.3. Программа
Код программы описан в приложении 1.
Решение задачи с помощью программы и специализированного
пакета (MathCAD и т. п.), сравнение результатов.
aa  2.3
bb  1
al  0.4
0.14  1 
f ( x) 
2 bb 


2


aa   2 aa 

 al
2
x 
bb  x 1  

 2 aa 
x
a  aa
b  2 aa
e  0.000000001
pol( f a b e) 
while
ba e
c
ab
2
b  c if f ( a)  f ( c)  0
a  c otherwise
c
pol( f a b e)  4.408
f ( pol( f a b e) )  al  0.4
Вывод: В ходе выполнения лабораторной работы получили результаты по
исходным данным методом половинного деления. Были использованы
программы такие как: MathCAD и Turbo Delphi .
Приложение 1.
Код программы
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,x,e,tmp:real;
i:integer;
begin
a:=2.3;
b:=4.6;
e:=0.00000001;
tmp:=1;
i:=0;
while tmp>e do begin
tmp:=x;
x:=(a+b)/2;
if F(x)*F(a)<0 then b:=x
else a:=x;
if i<>0 then tmp:=abs(x-tmp) else tmp:=1;
i:=i+1;
end;
edit1.text := floattostr(x);
edit2.text := floattostr(F(x)+0.4);
edit3.text := floattostr(i);
end;
Function F(_x:real):real;
begin
F:=0.14*(1+2*1/2.3*(_x/(2*2.3))*(_x/(2*2.3)))/(1*sqrt(_x)*sqrt(1(_x/2/2.3)*(_x/2/2.3)))-0.4;
end;
end.
Download