Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
8 var.docx
Скачиваний:
2
Добавлен:
07.09.2019
Размер:
89.88 Кб
Скачать

Постановка задачи 3.

Разработать алгоритм и программу для решения нелинейного уравнения с параметрами методом половинного деления. С помощью программы вычислить все корни уравнений в соответствии с указанным вариантом и заданной точностью ε=10-4. Параметр а задать самостоятельно методом перебора. Определить для каких а уравнение имеет 1,2,3,4,5 действительных корней.

8

Построить таблицу которая должна иллюстрировать количество корней уравнения для F(x,Z)=0 (ограничиться 5-тью корнями при заданном). Построить график F(x,Z) от x для параметров Z соответствующего наибольшему количеству корней найденных в задании.

Блок-схема программы 3.

Начало

Открытие файла

Otvet. txt

а=0; h:=0.1; h1:=0.1;

Ввод в файл

При а=

d=0

x=0

Z<100

8

7

x>0 и

a>0 и

x<100

d=d+1

funk (x,a)

5 да нет

д

Ввод в файл

x=

funk (x,a)=0

а нет

funk (x,a)* funk(x+h1,a)<0

да нет

1 2 3 6

1

Zbs(yk-yn)>ε

Not(koren)

да нет

да нет

Zbs(yk-yn)<ε

да нет

4

4 2 3 6 8

7 5

x=x+h1

x <100

a=a+h

Z

Конец

=100

закрытие

файла

Блок-схема подпрограммы-функции funk

Начало

funk:= a*sin(x)/cos(x)+a*ln(sin(x))+a*ln(sin(x)/cos(x))+a*a*a*cos(x)+a

Конец

Программа 3.

progrZm F1;

uses crt;

vZr

m,yn,yk,e,y,Z,h,x,h1:extended;

d:integer;

koren:booleZn;

f:text;

function Funk (x,Z:reZl):reZl;

begin

funk:= Z*sin(x)/cos(x)+Z*ln(sin(x))+Z*ln(sin(x)/cos(x))+Z*Z*Z*cos(x)+Z;

end;

begin

clrscr;

Zssign(f,'otvet.txt');

rewrite(f);

Z:=0;h:=0.1;h1:=0.1;

while Z<100 do begin

writeln(f,'pri Z=',Z:8:4);

d:=0; x:=0;

while x<=100 do begin

if ((x+Z)>0) Znd ((x-5*x*x*x)>0) Znd (Z>0) Znd((x*x*x-2*Z)<>0)

then begin Funk (x,Z);

if funk (x,Z)=0 then begin

d:=d+1;

writeln(f,'x=',x:8:4);

end;

if funk (x,Z)* funk (x+h1,Z)<0 then

begin d:=d+1;

yn:=x;

yk:=x+h1;

e:=0.0001;

koren:=fZlse;

while (Zbs(yk-yn)>e) Znd (not(koren)) do begin

y:=(yk+yn)/2;

if funk (y,Z)=0 then koren:=true

else if funk (yn,Z)* funk (y,Z)<0 then

yk:=y

else yn:=y;

end;

if koren=true then writeln(f,'x=',y:8:4)

else writeln(f,'x=',yn:8:4);

end;

end;

x:=x+h1;

end;

writeln(f,'kopHey ',d);

Z:=Z+h;

end;

close(f);

end.

Результаты счета:

pri Z= 9.8700

kopHey 0

pri Z= 9.8800

x= 1.5898

x= 1.5909

x= 4.7696

x= 4.7703

kopHey 4

pri Z= 9.8900

x= 1.2695

x= 1.2705

x= 4.1295

x= 4.1302

kopHey 4

pri Z= 9.9000

x= 4.7599

x= 4.7607

kopHey 2

pri Z= 9.9100

x= 2.2191

x= 2.2200

x= 3.1692

x= 3.1701

x= 6.3396

x= 6.3402

x= 9.5099

x= 9.5103

kopHey 8

pri Z= 9.9200

x= 1.8991

x= 1.9002

x= 3.7995

x= 3.8003

x= 5.6998

x= 5.7005

kopHey 6

pri Z= 9.9300

x= 0.9491

x= 0.9502

x= 6.9596

x= 6.9602

kopHey 4

pri Z= 9.9400

x= 3.1596

x= 3.1605

kopHey 2

pri Z= 9.9500

x= 4.4195

x= 4.4203

kopHey 2

pri Z= 9.9600

x= 0.6297

x= 0.6308

x= 3.4696

x= 3.4704

x= 7.5695

x= 7.5701

kopHey 6

pri Z= 9.9700

x= 0.6290

x= 0.6302

x= 1.2594

x= 1.2604

x= 1.8897

x= 1.8906

kopHey 6

pri Z= 9.9800

x= 7.8697

x= 7.8702

kopHey 2

pri Z= 9.9900

Вывод

По данным полученным при решении нелинейного уравнения в интегральной среде BorlZnd PZSCZL можно сделать вывод что на всем участке а=[0..10] нет корней уравнения которые удовлетворяют области определения а график F(x,Z) от x для параметров Z соответствующего наибольшему количеству корней найденных в задании будет иметь вид прямой линии и в построении не нуждается