Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект бейс.doc
Скачиваний:
6
Добавлен:
12.11.2019
Размер:
1.33 Mб
Скачать

Вбудовані функції та функції користувача

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

Разом з вбудованими функціями пакет допускає функції користувача, застосування яких повністю ідентичне випадку вбудованих функцій, але з областю дій лише в рамках даного документа.

Перед своїм використанням функція користувача повинна бути визначена локальним або гловальним способом:

<імя функції> (<список аргументів>) {:=|} <вираз>.

При цьому при глобальному визначенні функції користувача усі змінні, що в неї входять (окрім аргументів) повинні бути попередньо визначені як глобальні.

Приклад:

S(a)a2+a-1 — може бути записане у будь-якому місці mcad-програми.

Використовують таку функцію як звичайну вбудовану, наприклад, S(3)=29.

Розглянемо як використати дану функцію для обчислень із ранжованими змінними:

  1. X:=XP, (XP+CR)…XK Y(X):=S(X)

  2. i:=0…m X0:=XP j:=1..m Xj:=X(j-1)+DX

Yi:=S(Xi)

  1. i:=0..m xi:=a1, a2 — вхідні дані у вигляді таблиці

Yi:=S(xi)

Розділ 21Алгоритми та програми реалізації загальних чисельних методів.

21.1. Розв’язання систем лінійних рівнянь.

Системи з n лінійних рівнянь виду

a11x1+a12x2+…+a1nxn=b1 ,

a21x1+a22x2+…+a2nxn=b2 , (1)

. . . . . . . . . . . . . . . . . . . . . . . .

an1x1+an2x2+…+annxn=bn

вирішуються точними та ітераційними методами. Точні методи дають точне розв’язання за кінцеву кількість операцій, якщо всі вони виконувалися без погрішності. Кількість операцій у ітераційних методів залежить від заданої погрішності обчислень.

Метод Гауса або метод послідовного виключення невідомих заснований на приведенні матриці коефіцієнтів aij до трикутного виду. При цьому алгоритм розв’язання системи (1) наступний:

  1. За допомогою двох циклів з керуючими змінними i=1, 2, …, n та j=1, 2, …, n організуємо ввід коефіцієнтів aij та bi, утворюючих масиви A(I, J) та B(I).

  2. Провидимо прямий хід виключення змінних шляхом перетворення коефіцієнтів (1) за формулами

aji=­ - aji /aii; ajk=ajk+ajiaik; bj=bj+ajibi,

де i=1, 2, …, n-1; j=i+1, i+2, …, n та k=i+1, i+2, …, i+n. В кінці цих перетворень отримуємо xn=bn/ann.

  1. Організуємо зворотній хід (послідовне знаходження xn-1, xn-2, ..., x2, x1), проводячи обчислення за формулами

h=bi, та h=h-xjajj,

де i=n-1, n-2, , 2, 1; j=i+1, i+2, , n та xi=h/ali. В результаті формується масив X (J) невідомих xi, xn-1, …, x2, x1.

  1. Організуємо вивід масиву Х(1).

Метод Гауса з вибором головного елементу заключається в тому, що при прямому ході відбувається вибір найбільшого по модулю (головного) елементу та перестановка рядків або стовпців (див. мал.1). Останнє виключає ділення на 0; якщо матриця A (I, J) містить нульові елементи, та збільшує точність обчислень при наявності помилок округлення.

Метод обертання є різновидом методу Гауса, що володіє стійкістю до „провалів” проміжних обчислень. Цей метод забезпечує приведення початкової (вихідної) системи (1) до системи з правою трикутною матрицею.

Програма 1

10 PRINT ‘РОЗВ’ЯЗАННЯ СИСТЕМИ ЛІНІЙНИХ РІВНЯНЬ’

15 PRINT ‘МЕТОДОМ ОБЕРТАННЯ’

20 INPUT ‘ВВЕДІТЬ ЧИСЛО РІВНЯНЬ N=’ N:LETM=0:DIM A(N, N)

25 FOR I=1 TO N:FOR J=1 TO N

30 PRINT !2.0! ‘ВВЕДІТЬ КОЕФІЦІЄНТ A’ I’, ’J

40 INPUT A(I, J):IF J< >N THEN 60

50 PRINT ‘ВВЕДІТЬ B’ I:INPUT A(I, 0)

60 NEXT J:NEXT I

70 FOR I=1 TO N-1:FOR K=I+1 TO N

80 IF A(I ,I)< >0 THEN 110

90 IF A(K ,I)< >0 THEN 110

100 LETM=1:LETL=0:GOTO 130

110 LETM=SQR(A(I, I)^2+A(K, I)^2)

120 LETL= -A(K, I)/M:LETM=A(I, I)/M

130 FOR J=1 TO N:LETR=M*A(I, J)-L*A(K, J)

140 LETA(K, J)=L*A(I, J)+M*A(K, J)

150 LETA(I, J)=R:NEXT J

160 LETR=M*A(I, 0)-L*A(K, 0)

170 LETA(K, 0)=L*A(I, 0)+M*A(K, 0)

180 LETA(I, 0)=R:NEXT K: NEXT I

190 FOR I=N TO 1 STEP -1:LETM=0

200 FOR K=0 TO N-I-1

210 LETM=M+A(0, N-K)*A(I, N-K):NEXT K

220 LETA(0, I)=(A(I, 0)-M)/A(I, I)

230 PRINT !2.0! ’КОРІНЬ X’ I ’=’ !F1.9!A(0, I)

240 NEXT I:END

Метод мінімізації заключається у пошуку мінімуму цільової функції

F(x1, x2, ..., xn)=|f1(x1, x2, ..., xn)|+...+|f2(x1, x2, ..., xn)|,

компоненти якої формуються з рівнянь розв’язуваної системи

f1(x1, x2, ..., xn)=a11x1+a12x2+...+a1nxn-b1,

f2(x1, x2, ..., xn)=a21x1+a22x2+...+a2nxn-b2,

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

fn(x1, x2, ..., xn)=an1x1+an2x2+...+annxn-bn.

Якщо x1, x2, ..., xn – розв’язання (1), то функція F(x1, x2, ..., xn)=0. Для реалізації цього методу можуть використовуватися програми пошуку мінімуму функції рядку змінних.