var
t,o:array [1..30] of integer;
d,s,i:integer;
begin
randomize;
writeln ('Kol-vo osadkov: ');
for i:=1 to 30 do begin
o[i]:=random(20);
write (o[i],' ,');
if i=15 then writeln;
end;
writeln;
writeln ('Temperatura vozduxa: ');
for i:=1 to 30 do begin
t[i]:=random(26)-15;
if (t[i]>0) and (o[i]<>0) then d:=d+o[i] else
if (t[i]<0) and (o[i]<>0) then s:=s+o[i];
write (t[i],',');
if i=15 then writeln;
end;
writeln;
writeln ('Kol-vo osadkov v vide snega: ',s);
writeln ('Kol-vo osadkov v vide dozhdya: ',d);
readln;
end.
Задание 3 (двухмерный массив)
var
a:array [1..10,1..7] of integer;
k,i,j:integer;
begin
randomize;
for i:=1 to 10 do begin
for j:=1 to 7 do begin
a[i,j]:=random(9)+1;
write (a[i,j]:4);
if a[i,j] mod 2 <> 0 then k:=k+1;
end;
writeln;
end;
writeln ('Количество нечетных элементов массива = ',k);
readln;
end.
Задание 2 (двухмерный массив)
uses crt;
const
a:array [1..5,1..5] of integer = ((100,101,102,103,104),
(200,201,202,203,204),
(300,301,302,303,304),
(400,401,402,403,403),
(500,501,502,503,504));
var
i,j:integer;
begin
clrscr;
for i:=1 to 5 do begin
for j:=1 to 5 do
if j mod 2 = 0 then begin
textcolor (12);
write (a[i,j]:4);
textcolor (7);
end else begin
textcolor (9);
write (a[i,j]:4);
textcolor (7);
end;
writeln;
end;
readln;
end.
Задание 1 (одномерный массив)
uses crt;
var
a:array [1..7] of integer;
i,sum:integer;
begin
clrscr;
for i:=1 to 7 do begin
write ('A[',i,'] = ');readln(a[i]);
if a[i]>0 then sum:=sum+a[i];
end;
for i:=1 to 7 do
if a[i]>0 then begin
textcolor (red);
write (a[i]:4);
end else begin
textcolor (blue);
write (a[i]:4);
end;
writeln;
textcolor (darkgray);
writeln ('Сумма положительных элементов = ',sum);
readln;
end.
Задание 4 (одномерный массив)
uses crt;
var
a:array [1..12] of integer;
i,buf,min,max:integer;
begin
clrscr;
randomize;
a[1]:=random(14)+1;
min:=1;
max:=2;
writeln ('Исходный массив: ');
write (a[1]:4);
for i:=2 to 12 do begin
a[i]:=random(14)+1;
write (a[i]:4);
if a[i]>a[max] then max:=i else
if a[i]<a[min] then min:=i;
end;
writeln;
{смена 1-ого и последнего эл}
buf:=a[1];
a[1]:=a[12];
a[12]:=buf;
{смена 2-ого и мин эл}
buf:=a[2];
a[2]:=a[min];
a[min]:=buf;
{смена 1-ого и макс эл}
buf:=a[1];
a[1]:=a[max];
a[max]:=buf;
writeln ('Результирующий массив:: ');
for i:=1 to 12 do write (a[i]:4);
writeln;
readln;
end.
Задание 3 (одномерный массив)
var
a,b:array [1..10] of integer;
i,j:integer;
s1,s2:real;
begin
randomize;
s1:=0;
s2:=0;
writeln;
for i:=1 to 10 do begin
a[i]:=random(11)-5;
b[i]:=random(19)-9;
write (a[i]:4);
s1:=s1+a[i];
s2:=s2+b[i];
end;
writeln;
for i:=1 to 10 do write (b[i]:4);
writeln;
s1:=s1/10;
s2:=s2/10;
if s1>s2 then writeln ('S1 > S2') else
if s1<s2 then write ('S1 < S2') else writeln ('S1 = S2');
readln;
end.
Для функции F(x) должен быть определен интервал изоляции корня [a;b], такой что на нем:
а) F(a) и F(b) имеют разные знаки;
б) F(x) определена и непрерывна;
в) F'(x) ≠ 0
г) F"(x) определена всюду и имеет постоянный знак
1. Перепишем уравнение в более привычном виде и сделаем преобразования, необходимые для нахождения интервала изоляции корня [a;b], а также проверки выполнения на нем условий а) - г)
Степенная функция при натуральном основании и вещественном показателе степени всюду положительна, является непрерывной и монотонно возрастающей. Комбинация показательных функций будет также обладать этими свойствами.
При х=0 (считать удобно) F(x) = 11+3-0.9 = 13.1
При х=-1 (тоже удобно) F(x) = 11/20 +3/5 - 9/10 = 1/4 (почти ноль!)
При х=-2 F(x) = 11/400 + 3/25 - 9/10 = -301/400 ≈ - 0.7525
Условие а) выполнено, интервал изоляции корня найден, a=-2, b=-1.
Прочие условия на этом интервале также выполняется в соответствии с написанным выше.
2. В качестве начального приближения выберем точку, находящуюся в середине интервала изоляции. х₀ = -1.5
3. Зададимся максимальной погрешностью решения, равной 10⁻⁶
4. Определим условие завершения поиска корня.
В соответствии с известной формулой (например, см. стр. 41 в книге Гловацкая А.П. Методы и алгоритмы вычислительной математики. Учеб. пособие для вузов. - М.: Радио и связь, 1999), длина интервала изоляции корня связана с погрешностью следующим образом:
F'(a) = 11/400*ln(20)+3/25*ln(5) ≈ 0.275515187014827;
F"(b) = 11/20*ln(20)²+3/5*ln(5)² ≈ 6.49010075653527
Величина интервала для х при ε=10⁻⁶ будет составлять приблизительно 0.0002914.
5. Составим программу на языке программирования PascalABC.NET 3.3. и найдем корень уравнения.
// PascalABC.NET 3.3, сборка 1579 от 18.11.2017
// Внимание! Если программа не работает, обновите версию!
begin
var f:real->real:=x->11*Power(20,x)+3*Power(5,x)-0.9;
var f1:real->real:=x->11*Power(20,x)*Ln(20)+3*Power(5,x)*Ln(5);
var f2:real->real:=x->11*Power(20,x)*Sqr(Ln(20))+3*Power(5,x)*Sqr(Ln(5));
var (a,b,eps):=(-2.0,-1.0,1e-6);
var d:=Sqrt(2*f1(a)*eps/f2(b));
var xn1:=(a+b)/2;
var xn:real;
repeat
(xn,xn1):=(xn1,xn-f(xn)/f1(xn));
until Abs(xn-xn1)<=d;
Writeln(xn1:0:6);
end.
Результат:
-1.109118