Как лучше сформировать вектор, в который записать количество элементов кратных 3 в каждой строке матрицы М (которая уже существует) в MathCad?

Ссылка скопирована
1 ответ

Сейчас ситуация такая: помогите, с MathCad, совсем не понимаю, уже дипсик аж перестал работать, if не работает что-то, не понимаю, что проверять дальше. Матрица была создана в предыдущем задании, теперь нужно программный модуль создать, а именно сформировать вектор, в который записать количество элементов кратных 3 в каждой строке матрицы М.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Стас DB Ответ

В Mathcad задачу лучше решать не через ручной перебор отдельных элементов, а через небольшой программный блок или векторизацию: пройти по строкам матрицы и для каждой строки посчитать количество элементов, которые делятся на 3 без остатка. Итогом будет вектор, где каждый элемент соответствует одной строке исходной матрицы.

Логика такая: если матрица M имеет rows(M) строк, создаём вектор v такой же длины. Для каждой строки i перебираем столбцы j, проверяем условие mod(M[i,j, 3) = 0 и увеличиваем счётчик.

В виде алгоритма это выглядит так:

for i = 0 .. rows(M) - 1
    count = 0
    for j = 0 .. cols(M) - 1
        if mod(M[i, j], 3) = 0
            count = count + 1
    v[i = count

for i = 0 .. rows(M) - 1 count = 0 for j = 0 .. cols(M) - 1 if mod(M[i, j], 3) = 0 count = count + 1 v[i = count

В реальном Mathcad синтаксис немного зависит от версии: Prime и старый Mathcad отличаются оформлением программных блоков. Но принцип один: используйте встроенные функции количества строк/столбцов и оператор остатка от деления. Если у вас индексирование начинается не с нуля, а с единицы, учитывайте значение системной переменной ORIGIN. Это частая причина, почему формула “почти правильная”, но даёт сдвиг или ошибку индекса.

Если матрица содержит не только целые числа, сначала решите, как трактовать дробные значения. Например, число 6.0 кратно 3, а 6.1 уже нет. Для вещественных значений с погрешностями лучше не сравнивать остаток строго с нулём, а использовать допуск.

Практичный вариант: напишите отдельную функцию Count3(row), которая считает кратные 3 элементы в одной строке, а потом примените её ко всем строкам. Так решение будет читаемым и его проще проверить на маленькой тестовой матрице. Перед использованием на большой матрице обязательно проверьте пример вручную: 2-3 строки, где заранее известно количество кратных трём элементов.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно