Mathcad програмою або однією формулою

БлогNot. Mathcad: програмою чи однією формулою?

Mathcad: програмою чи однією формулою?

Для реалізації у Matchad типових алгоритмів, пов'язаних з розрахунками числових характеристик послідовностей та масивів, зовсім не обов'язково писати програми за аналогією з класичними процедурними мовами. Наприклад, значення мінімального за модулем елемента масиву можна в Mathcad знайти наступним чином:

(код написаний так, щоб він працював незалежно від значення системної змінної ORIGIN).

Але куди швидше зробити це за допомогою оператора векторизації:

Кількість однакових мінімумів у масиві можна шукати, роблячи додатковий прохід ним:

а можна просто дізнатися довжину вектора, складеного з входжень мінімального елемента вихідний вектор:

Зрозуміло, далеко ще не факт, що другий спосіб менш витратний по обчислювальним ресурсам, швидше навпаки. Але перевага в тому, що ми користуємося тільки стандартними функціями і не складаємо загрожують помилками підпрограм-функцій користувача.

Сучасна тенденція мов і пакетів - готові алгоритми замість їх програмування, наприклад, бібліотека C++, функції обробки і фільтрації масивів в PHP або вбудовані оператори підсумовування, перемноження, векторизації і т.п. у Mathcad.

Загальні правила розрахунків за типовими алгоритмами можна сформулювати так:

  • для кожної шуканої величини створюється за змінною того ж типу даних, що досліджувані значення;
  • до циклу обробки даних всім шуканим у ньому змінним надаються початкові значення. У найпростіших випадках достатньо присвоїти:
  • нуль – кількості, суму чи арифметичному середньому;
  • одиницю – твору;
  • заздалегідь маледля аналізованих данихзначення або перший елемент послідовності даних -максимуму;
  • заздалегідь великедля аналізованих даних значення або перший елемент послідовності даних -мінімуму;
  • у циклі обробки, якщо черговий елемент даних t (як t може виступати елемент масиву, вираз і т.д.) має бути оброблений алгоритмом, застосовуються оператори виду:
  • k := k + 1; при пошуку кількості елементів k;
  • s: = s + t; при пошуку суми (або середнього арифметичного) s;
  • p: = p * t; при пошуку добутку елементів p;
  • if t max then max := t; при пошуку максимуму max із елементів даних t;
  • де ":=" - оператор присвоєння. Ці правила не залежать від мови або пакета, де ви працюєте.

    Однак якщо в мові, як і Mathcad, є вбудовані циклічні оператори і вбудована умовна функція, всі 3 кроки типового алгоритму можна виконати одним виразом.

    Наведемо кілька прикладів, що ілюструють це твердження, знайшовши для масиву A одним оператором:

    • кількість позитивних елементів масиву;
    • суму елементів, за модулем бпронайбільшого значення 2;
    • добуток квадратів ненульових елементів масиву;
    • мінімальний із позитивних елементів масиву.

    Ось скріншоти розрахунків, зроблених у тому порядку:

    Останній приклад показує, що у всьому треба знати міру. Насправді, нам довелося тричі фільтрувати масив перш, ніж його можна обробити стандартною функцією min . Важко придумати аргументи, чим це краще і наочніше класичного коду

    Також під час пошуку творів слід пам'ятати ось це зауваження (2).

    Завантажити документ .xmcd Mathcad 14/15 з цими розрахунками в архіві .zip (33 Кб)