РефератыИнформатикаАлАлгоритмизация и программирование разветвляющихся процессов

Алгоритмизация и программирование разветвляющихся процессов

Министерство Образования Республики Беларусь
Белорусский национальный технический университет

Кафедра: «Машины и технологии литейного производства»


Курсовой проект


на тему:


1.«Алгоритмизация и программирование разветвляющихся процессов»


2.«Методы решения нелинейных уравнений»


Минск 2010г.


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

Разработать алгоритм и программу для вычисления функции Z(x), заданной интервально на различных промежутках. Если функция Z(x) неопределенна при каких-либо значениях x, то в программе необходимо предусмотреть вывод сообщения “При данном X функция неопределенна” и вывести значение X. Общий вид задания функции:


где ,


,


,


,



Значения a,b,c,d вычисляются по формулам:


,,


,, где n – номер варианта.


Листинг программы №1


Program kursovoj_Braginec_DA;


var j:integer;


a,b,c,d,x,x4,x7,x11,x15,x25:real;


i,n:integer;


z:extended;


Begin


a:=0;b:=0;c:=0;n:=3;


for j:=1 to n+3 do begin


a:=a+sin(j); c:=c+j*j*j+j; end;


for j:=2 to n+3 do begin


b:=b+1/ln(j);end; d:=a+b+c;


x4:=5*4-80;x7:=5*7-80; x11:=5*11-80; x15:=5*15-80; x25:=5*25-80;


writeln('Vvedite znachenie x=');


readln(x);


if x<=x4 then begin


if (x>1) and (a>1) then begin


z:=b*SQRT(x)+SQRT(ln(a*x))+c*x*x*x+d*exp((1/10)*ln(x));


writeln('x=',x:6:2,' Z=',z:12:3);


end


else writeln('x=',x:6:2,' Z=net znacheniy');


end;


if (x4<x)and(x<=x7) then begin


if (x>0) then begin


z:=a*exp(3*ln(cos(ABS(x))))+b*sin(d*x)+exp(4*(sin(x)/cos(x)))+d*ln(x)*ln(x);


writeln('x=',x:6:2,' Z=',z:12:3);end else


writeln('x=',x:6:2,' Z=net znacheniy');


end;


if (x7<x)and(x<=x11) then begin


if (x>0) and (x/d>=0) then begin


z:=ln(abs(a*x))+b*cos(x*x*x*x)*sin(1/(x*x*x))-c*ln(x)*ln(x)*ln(x)+sqrt(x/d);


writeln('x=',x:6:2,' Z=',z:12:3);;


end


else writeln('x=',x:6:2,' Z=net znacheniy');


end;


if (x11<x)and(x<=x15) then begin


if (x-5*x*x*x>0) and (d>0) and (x*x*x-2*d<>0) and (exp(3*ln(x+c))>=0) then begin


z:=a*exp(-4*x)+b*ln(x-5*x*x*x)+c*SQRT(exp(3*ln(x+c)))+ln(d)/(x*x*x-2*d);


writeln('x=',x:6:2,' Z=',z:12:3);;


end


else writeln('x=',x:6:2,' Z=net znacheniy');


end;


if (x15<x)and(x<=x25) then begin


if (x<>0) and (x-d>0) and (d>=0) then begin


z:=a*exp(3/8*ln(ln(ABS(x))))+b*sin(b*exp(-b/x))+(x-c)+d*sin(x*x*x)*sin(x*x*x)/(cos(x*x*x)*cos(x*x*x)*ln(x-d));


writeln('x=',x:6:2,' Z=',z:12:3);


end


else


writeln('x=',x:6:2,' Z=net znacheniy');


end;


if x>x25 then begin


z:=0;


writeln('x=',x:6:2,' Z=',z:12:3);end;


End.


Результаты задачи №1


Vvedite znachenie x=23


x= 23.00 Z=net znacheniy


Vvedite znachenie x=-37


x=-37.00 Z=net znacheniy


Vvedite znachenie x=-100


x=-100.00Z=net znacheniy


Vvedite znachenie x=-7


x= -7.00 Z=-149327123808.531


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

.

Разработать алгоритм и программу формирования одномерного массива A[i] по условию A[i]=Z(x), заданной интервально на различных промежутках. Если функция Z(x) неопределенна при каких-либо значениях x, то в программе необходимо предусмотреть вывод сообщения «При данном Х функция неопределенна» и вывести значение Х. Вид задания функции:


где ,


,


,


,



Значения a,b,c,d вычисляются по формулам:


,,


,, где n – номер варианта.


При формировании функции массива A[i] можно выбрать несколько вариантов шага, но при условии, чтобы на каждом из интервалов было взято не менее 10-ти значений


При выполнении задачи шаг по x можно брать нецелым числом. В программе необходимо организовать вывод всех элементов A[i] и числа их значений на монитор.


Блок-схема для задачи №2.


Листинг программы №2


Program Kursovoj_Braginec_DA;


uses crt;


var j:integer;


a,b,c,d,x4,x7,x11,x15,x25:real;


i,n,x:integer;


f:text;


z:extended;


Begin


clrscr;


assign(f,'Otvet.txt');


rewrite(f);


a:=0;b:=0;c:=0;n:=3;


for j:=1 to n+3 do begin


a:=a+sin(j); c:=c+j*j*j+j; end;


for j:=2 to n+3 do begin


b:=b+1/ln(j);end; d:=a+b+c;


x4:=5*4-80;x7:=5*7-80; x11:=5*11-80; x15:=5*15-80; x25:=5*25-80;x:=-80; for i:=1 to 131 do begin


if x<=x4 then begin


if (x>1) and (a>1) then begin


z:=b*SQRT(x)+SQRT(ln(a*x))+c*x*x*x+d*exp((1/10)*ln(x));


writeln(f,'x=',x:6,' A[',i,']=',z:6:3);


end


else writeln(f,'x=',x:6,' A[',i,']=net znacheniy');


end;


if (x4<x)and(x<=x7) then begin


if (x>0) then begin


z:=a*exp(3*ln(cos(ABS(x))))+b*sin(d*x)+exp(4*(sin(x)/cos(x)))+d*ln(x)*ln(x);


writeln(f,'x=',x:6,' A[',i,']=',z:6:3);end else


writeln(f,'x=',x:6,' A[',i,']=net znacheniy');


end;


if (x7<x)and(x<=x11) then begin


if (x>0) and (x/d>=0) then begin


z:=ln(abs(a*x))+b*cos(x*x*x*x)*sin(1/(x*x*x))-c*ln(x)*ln(x)*ln(x)+sqrt(x/d);


writeln(f,'x=',x:6,' A[',i,']=',z:6:3); end


else


writeln(f,'x=',x:6,' A[',i,']=net znacheniy');


end;


if (x11<x)and(x<=x15) then begin


if (x-5*x*x*x>0) and (d>0) and (x*x*x-2*d<>0) and (exp(3*ln(x+c))>=0) then begin


z:=a*exp(-4*x)+b*ln(x-5*x*x*x)+c*SQRT(exp(3*ln(x+c)))+ln(d)/(x*x*x-2*d);


writeln(f,'x=',x:6,' A[',i,']=',z:6:3);


end


else


writeln(f,'x=',x:6,' A[',i,']=net znacheniy');


end;


if (x15<x)and(x<=x25) then begin


if (x<>0) and (x-d>0) and (d>=0) then begin


z:=a*exp(3/8*ln(ln(ABS(x))))+b*sin(b*exp(-b/x))+(x-c)+d*sin(x*x*x)*sin(x*x*x)/(cos(x*x*x)*cos(x*x*x)*ln(x-d));


writeln(f,'x=',x:6,' A[',i,']=',z:6:3);


end


else


writeln(f,'x=',x:6,' A[',i,']=net znacheniy');


end;


if x>x25 then begin


z:=0;


writeln(f,'x=',x:6,' A[',i,']=',z:6:3);end;


x:=x+1;


end;


End.


Результаты задачи №2.


x= -80 A[1]=net znacheniy


x= -79 A[2]=net znacheniy


x= -78 A[3]=net znacheniy


x= -77 A[4]=net znacheniy


x= -76 A[5]=net znacheniy


x= -75 A[6]=net znacheniy


x= -74 A[7]=net znacheniy


x= -73 A[

8]=net znacheniy


x= -72 A[9]=net znacheniy


x= -71 A[10]=net znacheniy


x= -70 A[11]=net znacheniy


x= -69 A[12]=net znacheniy


x= -68 A[13]=net znacheniy


x= -67 A[14]=net znacheniy


x= -66 A[15]=net znacheniy


x= -65 A[16]=net znacheniy


x= -64 A[17]=net znacheniy


x= -63 A[18]=net znacheniy


x= -62 A[19]=net znacheniy


x= -61 A[20]=net znacheniy


x= -60 A[21]=net znacheniy


x= -59 A[22]=net znacheniy


x= -58 A[23]=net znacheniy


x= -57 A[24]=net znacheniy


x= -56 A[25]=net znacheniy


x= -55 A[26]=net znacheniy


x= -54 A[27]=net znacheniy


x= -53 A[28]=net znacheniy


x= -52 A[29]=net znacheniy


x= -51 A[30]=net znacheniy


x= -50 A[31]=net znacheniy


x= -49 A[32]=net znacheniy


x= -48 A[33]=net znacheniy


x= -47 A[34]=net znacheniy


x= -46 A[35]=net znacheniy


x= -45 A[36]=net znacheniy


x= -44 A[37]=net znacheniy


x= -43 A[38]=net znacheniy


x= -42 A[39]=net znacheniy


x= -41 A[40]=net znacheniy


x= -40 A[41]=net znacheniy


x= -39 A[42]=net znacheniy


x= -38 A[43]=net znacheniy


x= -37 A[44]=net znacheniy


x= -36 A[45]=net znacheniy


x= -35 A[46]=net znacheniy


x= -34 A[47]=net znacheniy


x= -33 A[48]=net znacheniy


x= -32 A[49]=net znacheniy


x= -31 A[50]=net znacheniy


x= -30 A[51]=net znacheniy


x= -29 A[52]=net znacheniy


x= -28 A[53]=net znacheniy


x= -27 A[54]=net znacheniy


x= -26 A[55]=net znacheniy


x= -25 A[56]=net znacheniy


x= -24 A[57]=-5.08366015838512507E+0040


x= -23 A[58]=net znacheniy


x= -22 A[59]=net znacheniy


x= -21 A[60]=net znacheniy


x= -20 A[61]=net znacheniy


x= -19 A[62]=net znacheniy


x= -18 A[63]=-1919150107529503510000000000000.000


x= -17 A[64]=-35150460342785758200000000000.000


x= -16 A[65]=-643803138411235418000000000.000


x= -15 A[66]=-11791665798573937500000000.000


x= -14 A[67]=-215971892663317589000000.000


x= -13 A[68]=-3955663196137779530000.000


x= -12 A[69]=-72450498665911326200.000


x= -11 A[70]=-1326977170869205140.000


x= -10 A[71]=-24304434670875825.700


x= -9 A[72]=-445151244453472.912


x= -8 A[73]=-8153225056674.438


x= -7 A[74]=-149327123808.531


x= -6 A[75]=-2730605050.098


x= -5 A[76]=-45581616.828


x= -4 A[77]=net znacheniy


x= -3 A[78]=net znacheniy


x= -2 A[79]=net znacheniy


x= -1 A[80]=net znacheniy


x= 0 A[81]=net znacheniy


x= 1 A[82]=net znacheniy


x= 2 A[83]=net znacheniy


x= 3 A[84]=net znacheniy


x= 4 A[85]=net znacheniy


x= 5 A[86]=net znacheniy


x= 6 A[87]=net znacheniy


x= 7 A[88]=net znacheniy


x= 8 A[89]=net znacheniy


x= 9 A[90]=net znacheniy


x= 10 A[91]=net znacheniy


x= 11 A[92]=net znacheniy


x= 12 A[93]=net znacheniy


x= 13 A[94]=net znacheniy


x= 14 A[95]=net znacheniy


x= 15 A[96]=net znacheniy


x= 16 A[97]=net znacheniy


x= 17 A[98]=net znacheniy


x= 18 A[99]=net znacheniy


x= 19 A[100]=net znacheniy


x= 20 A[101]=net znacheniy


x= 21 A[102]=net znacheniy


x= 22 A[103]=net znacheniy


x= 23 A[104]=net znacheniy


x= 24 A[105]=net znacheniy


x= 25 A[106]=net znacheniy


x= 26 A[107]=net znacheniy


x= 27 A[108]=net znacheniy


x= 28 A[109]=net znacheniy


x= 29 A[110]=net znacheniy


x= 30 A[111]=net znacheniy


x= 31 A[112]=net znacheniy


x= 32 A[113]=net znacheniy


x= 33 A[114]=net znacheniy


x= 34 A[115]=net znacheniy


x= 35 A[116]=net znacheniy


x= 36 A[117]=net znacheniy


x= 37 A[118]=net znacheniy


x= 38 A[119]=net znacheniy


x= 39 A[120]=net znacheniy


x= 40 A[121]=net znacheniy


x= 41 A[122]=net znacheniy


x= 42 A[123]=net znacheniy


x= 43 A[124]=net znacheniy


x= 44 A[125]=net znacheniy


x= 45 A[126]=net znacheniy


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

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





3

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


Листинг программы №3.


Program Kursovoj_Braginec_DA;


uses crt;


var


yn,yk,e,y,a,x,h,h1:real;


d:integer;


koren:boolean;


f:text;


function funk (x,a:real):real;


begin


funk:=ln(x*a)+exp(2*ln(cos(a*x)))/sin(a*x)+SQRT((x+7)/a)+(x+7)+a;


end;


Begin


clrscr;


assign(f,'Otvet.txt');


rewrite(f);


a:=0;h:=0.001;h1:=0.001;


while a<4 do begin


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


d:=0;


while x<=10 do begin


if (sin(a*x)<>0) and (x*a>0) and ((x+7)/a>=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.


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


pria= -1.1000


kopHey 1


x=-9.9990


pri a= -5.0000


kopHey 2


x= -7. 6670


x= -7.0740


pri a= -7.0100


kopHey 3


x= -9.8300


x= -11.6230


x= -18.9510


pri a= -11.2020


kopHey 4


x= -7.0010


x= -9.4230


x= -7.1030


x= -10.4930


pri a= -13.9320


kopHey 5


x= -7.1726


x= -9.2348


x= -9.3293


x= -10.7739


x= -11.3739

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Алгоритмизация и программирование разветвляющихся процессов

Слов:1293
Символов:15752
Размер:30.77 Кб.