Вариант 3а) Даны две произвольные матрицы: А разм. 4х4, В разм.

Вариант 3

а) Даны две произвольные матрицы: А разм. 4х4, В разм. 3х3. Элементы основной диагонали в каждой матрице заменить элементами побочной

диагонали и элементы побочной поменять элементами основной. Составить функцию.

Задать свой вопрос
2 ответа
A) Алгоритм такой:
Ввод исходных матриц A(4; 4); B(3; 3)
Цикл по i от 1 до 4 для матрицы A(4; 4)
Вызов процедуры подмены элементов матрицы с параметром i.
Конец цикла
Цикл по i от 1 до 3 для матрицы B(3; 3)
Вызов процедуры замены элементов матрицы с параметром i.
Конец цикла
Вывод обоих матриц
Конец основной программки

Процедура подмены для матрицы M(k; k)
Ввод номера текущей строки n
Q = M(n; n)
M(n; n) = M(n; k-n+1)
M(n; k-n+1) = Q
// Тут i - это текущая строка, k - количество строк в матрице. //
Конец процедуры.

b) Метод такой:
Ввод начальных векторов G = (g1; g2; g3; g4); D = (d1; d2; d3; d4)
Вызов процедуры вычисления длины вектора S1 = P(G)
Вызов процедуры вычисления длины вектора S2 = P(D)
S = (S1 + S2)/2
Вывод результата S
Конец главный программки

Процедура вычисления длины вектора A(a1; a2; a3; a4)
P = sqrt(a1^2 + a2^2 + a3^2 + a4^2)
Конец процедуры

c) Метод таковой:
c = 1,23
Цикл по а от 2 до 8
// так удобнее, чем цикл от 0,2 до 0,8 с шагом 0,1 //
x = COS ( (0.1*a + c)/3.178)
y = 0.7*COS (0.1*a - 1.27)
x1 = Arcsin(x)
y1 = Arcsin(y)
xy1 = Arcsin(x + y)
// Тут Arcsin (t) - это пользовательская функция, которую мы сами определяем в отдельной процедуре. //
z = x1 = y1 + LOG (Абс (xy1))
Вывод еще одного значения z
Конец цикла по а
Конец основной программки

Процедура вычисления Arcsin (t)
// Далее сложность, поэтому что в языках программирования очень редко встречается функция arcsin(x), обычно только sin(x), cos(x), atan(x). //
// Потому вспоминаем тригонометрию. arcsin t = arctg ( t/(1-t^2) )
Arcsin (t) = ATAN (t / SQRT (1 - t*t))
Конец процедуры
Andrej Trefinov
Превосходно, скажем так: Функция Arcsin(x) если где-то и применяется, то я не знаю, где.
София Мазо
Вы сказали, молодец, сейчас знаю.
Андрюша Гитарин
Просто Atan (x) есть фактически в любом языке, так что мой метод более универсален.
Олеся Бибилурова
Не передергивайте. Я так сделал, поэтому что он не указал язык. То есть сделал так, чтоб человек мог решить задачку на любом языке.
PascalABC.NET 3.2, сборка 1504 от 09.07.2017
Внимание! Если программа не работает, обновите версию!

Задание а)

procedure DiagExchangelt;Tgt;(a:array[,] of T);
begin
  var n:=a.ColCount;
  for var i:=0 to a.RowCount-1 do
    Swap(a[i,i],a[i,n-i-1])
end;

begin
  var a:=MatrRandom(4,4,-50,50);
  a.Println(4); Writeln(4*a.ColCount*'-');
  DiagExchange(a);
  a.Println(4); Writeln(4*a.ColCount*'-');
  Randomize;
  var b:=MatrGen(3,3,(i,j)-gt;Random(-50,50)/10);
  b.Println(5,1); Writeln(5*b.ColCount*'-');
  DiagExchange(b);
  b.Println(5,1); Writeln(5*b.ColCount*'-')
end.

Пример
  37  21   5 -42
  44   0  48  48
  14 -26  37  36
  -8  43 -43 -24
----------------
 -42  21   5  37
  44  48   0  48
  14  37 -26  36
 -24  43 -43  -8
----------------
 -2.7 -1.0  2.3
  0.0 -3.5 -0.2
 -3.6 -5.0  1.2
---------------
  2.3 -1.0 -2.7
  0.0 -3.5 -0.2
  1.2 -5.0 -3.6
---------------

Задание б)

function VLength(Self:array of real):real; extensionmethod;
begin
  Result:=Sqrt(Self.Select(x-gt;x*x).Sum)
end;
   
begin
  var G:=Arr(1.6,2.8,4.9,-6.7); G.Println;
  var D:=Arr(8.4,1.0,2.6,4.8); D.Println;
  Writeln('Полусумма длин одинакова ',(G.VLength+D.VLength)/2)
end.

Результат
1.6 2.8 4.9 -6.7
8.4 1 2.6 4.8
Полусумма длин одинакова 9.48641255163993

Задание в)

begin
  var c:=1.23;
  Writeln(' a       x          y          z');
  for var i:=2 to 8 do begin
    var a:=i/10;
    var x:=cos((a+c)/3.178);
    var y:=0.7*cos(a-1.27);
    var z:=ArcSin(x)+ArcSin(y)+Ln(Абс(ArcSin(x+y)));
    Writeln(a:3:1,x:11:8,y:11:8,z:11:8)
    end
end.

Итог
 a       x          y          z
0.2 0.90046079 0.33608696        NaN
0.3 0.88633142 0.39570967        NaN
0.4 0.87132454 0.45137858        NaN
0.5 0.85545501 0.50253747        NaN
0.6 0.83873853 0.54867517        NaN
0.7 0.82119166 0.58933068        NaN
0.8 0.80283178 0.62409780        NaN

В задании в) данные подобраны неправильно: x+ygt;1, потому аргумент арксинуса в формуле для z принимает недопустимое значение.
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт