- •Министерство Образования Республики Беларусь Белорусский национальный технический университет
- •Курсовой проект
- •Решение задачи 1:
- •Блок-схема задачи 1.
- •Программа задачи 1.
- •Результаты счета.
- •Постановка задачи 2.
- •Блок-схема задачи 2.
- •Программа задачи 2.
- •Результаты счета:
- •Постановка задачи 3.
- •Блок-схема программы 3.
- •Программа 3.
- •Результаты счета:
Результаты счета:
vivodit max i min matrici i ih indeksi
i=23 j=22 max= 0.297
i= 6 j= 8 min=-0.298
Постановка задачи 3.
Разработать алгоритм и программу для решения нелинейного уравнения с параметрами методом половинного деления. С помощью программы вычислить все корни уравнений в соответствии с указанным вариантом и заданной точностью ε=10-4. Параметр а задать самостоятельно методом перебора. Определить для каких а уравнение имеет 1,2,3,4,5 действительных корней.
5 |
|
Построить таблицу которая должна иллюстрировать количество корней уравнения для F(x,a)=0 (ограничиться 5-тью корнями при заданном). Построить график F(x,a) от x для параметров a соответствующего наибольшему количеству корней найденных в задании.
Блок-схема программы 3.
а=0; h:=0.1; h1:=0.1;
d=0
x=0
8
7
x<100
d=d+1
funk (x,a)
д а нет
да нет
1 2 3 6
1
Abs(yk-yn)>ε
Not(koren)
да нет
да нет
Abs(yk-yn)<ε
да нет
4
4 2 3 6 8
7 5
x=x+h1
x <100
a=a+h
a =100
Блок-схема подпрограммы-функции funk
Программа 3.
program F1;
uses crt;
var
m,yn,yk,e,y,a,h,x,h1:real;
d:integer;
koren:boolean;
f:text;
function funk (x,a:real):real;
begin
funk:=exp(4*ln(ln(a*x)))+exp(3.4*ln(x))*a*a+a*a*a*x*x*x*x-sqrt(a*a*a)*cos(x)+a;
end;
begin
clrscr;
assign(f,'otvet.txt');
rewrite(f);
a:=0;h:=0.1;h1:=0.1;
while a<100 do begin
writeln(f,'pri a=',a:8:4);
d:=0; x:=0;
while x<=100 do begin
if (x>0) and (cos(x*a)<>0) and ((sin(a*x)/cos(a*x))>0) and (ln(x)>0) then begin funk (x,a);
if funk (x,a)=0 then begin
d:=d+1;
writeln(f,'x=',x:8:4);
end;
if funk(x,a)*funk(x+h1,a)<0 then
begin d:=d+1;
yn:=x;
yk:=x+h1;
e:=0.0001;
koren:=false;
while (abs(yk-yn)>e) and (not(koren)) do begin
y:=(yk+yn)/2;
if funk(y,a)=0 then koren:=true
else if funk(yn,a)*funk(y,a)<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);
a:=a+h;
end;
close(f);
end.