середа, 25 лютого 2015 р.

он-лайн калькулятор для розвязування квадратних рівнянь


Math4schooL.CalculatoR

        
       
Решение квадратных уравнений
 *X² +  *X +  = 0 

Этот калькулятор достаточно прост в использовании. Он позволяет:
  • использовать рациональные числа [0][1][2][3][4][5][6][7][8][9][.][(–)].
  • выполнять основные математические действия: сложение [+], вычитание [–], умножение [*] и деление [/] положительных и отрицательных рациональных чисел;
  • находить значения квадратных корней [sqrt] неотрицательных чисел;
  • возводить рациональные числа в квадрат [sqr];
  • считать число, обратное данному [1/x];
  • находить натуральный логарифм [ln];
  • возводить рациональные числа в степень с натуральным показателем [x^y];
  • выводить на экран значение числа π с девятью цифрами после запятой [pi];
  • считать значения синуса [sin], косинуса [cos] и тангенса [tg] положительных и отрицательных углов, заданных своей градусной мерой;
  • использовать возможности запоминания промежуточных результатов с последующим их использованием [↔M][→M][←M].
Клавиша:
  • [=] выводит результат на дисплей калькулятора;
  • [С] очищает дисплей от предыдущих записей;
  • [←] удаляет последний символ из набранных или появившихся как результат.
Кроме того, предоставлена возможность решения квадратных уравнений стандартного вида. Введя последовательно значения старшего, второго коэффициентов и свободного члена в калькулятор, и, нажав клавишу [Решить уравнение], Вы мгновенно получите решения. При этом калькулятор считает и действительные, и комплексные корни. 


середа, 11 лютого 2015 р.

Метод Крамера. Алгоритми розв′язування систем лінійних рівнянь

Алгоритми розв′язування систем лінійних рівнянь

Б. Метод Крамера.
Розв′язування систем лінійних рівнянь з двома невідомими
|a1*x + b1*y = c1
|a2*x+b2*y=c1 
метод визначників:                                                           
     |c1 b1|           |a1 c1| 
     |c2 b2|           |a2 c2| 
 x = ---------     y = ---------                                               
      |a1 b1|           |a1 b1|                                            
      |a2 b2|           |a2 b2|                                           
Обчислюємо визначники квадратних матриць 2х2:                                   
x = (c1*b2-c2*b1)/(a1*b2-a2*b1)                                          
y = (a1*c2-a2*c1)/(a1*b2-a2*b1)  

Алгоритм  Крамера мовою Pascal:

Program KRAMER;
var a1,a2,b1,b2,c1,c2,x,y,d,dx,dy:real;
begin
   writeln('введіть коефіциєнти двох рівнянь: a1,b1,c1,a2,b2,c2');
   readln(a1,b1,c1,a2,b2,c2);
   d  := (a1*b2-a2*b1);
   dx := (c1*b2-c2*b1);
   dy := (a1*c2-a2*c1);
   if ( d=0 ) and ( (dx=0) or (dy=0) ) then
      writeln('Безліч розв′язків у системи')
   else if ( d<>0 ) and ( (dx=0) or (dy=0) ) then
      writeln(' Немає розв′язків у системи')
   else begin writeln('Єдиний розв′язок у системи');
      x:=dx/d; y:=dy/d;
      writeln('x = ', x);  writeln('y = ', y);
   end;
end.

Алгоритм Крамера для системи лінійних рівнянь з трьома невідомими
{ ------------------------------------------------------------------------ }
{ Розв’язок системи рівнянь виду:   
{ |a1*x + b1*y + c1*z = d1|    
{ |a2*x + b2*y + c2*z = d2| 
{ |a3*x + b3*y + c3*z = d3|  
{                            
{ Метод розв’язку: Утворюємо квадратні масиви розміром 3х3  
{     |d1 b1 c1|       |a1 d1 c1|       |a1 b1 d1|
{     |d2 b2 c2|       |a2 d2 c2|       |a2 b2 d2|
{     |d3 b3 c3|       |a3 d3 c3|       |a3 b3 d3|
{ x = ----------   y = ----------   z = ---------- 
{     |a1 b1 c1|       |a1 b1 c1|       |a1 b1 c1| 
{     |a2 b2 c2|       |a2 b2 c2|       |a2 b2 c2|
{     |a3 b3 c3|       |a3 b3 c3|       |a3 b3 c3|
{                                                
{ Обчислюємо чотири визначники квадратних матриць 3х3:                                  }
{ e  := (a1*b2*c3+b1*c2*a3+c1*a2*b3-a3*b2*c1-b3*c2*a1-c3*a2*b1);
{ ex := (d1*b2*c3+b1*c2*d3+c1*d2*b3-d3*b2*c1-b3*c2*d1-c3*d2*b1);
{ ey := (a1*d2*c3+d1*c2*a3+c1*a2*d3-a3*d2*c1-d3*c2*a1-c3*a2*d1);
{ ez := (a1*b2*d3+b1*d2*a3+d1*a2*b3-a3*b2*d1-b3*d2*a1-d3*a2*b1); 
{ x = ex/e          
{ y = ey/e   
{ z = ez/e   
{ --------------------------------------

Алгоритм Крамера мовою Раscal

Program KRAMER2;
var a1,a2,a3,b1,b2,b3,c1,c2,c3,d1,d2,d3,x,y,z,e,ex,ey,ez:real;
begin
 writeln('введіть коефіцієнти: a1,b1,c1,d1,a2,b2,c2,d2,a3,b3,c3,d3');
 readln(a1,b1,c1,d1,a2,b2,c2,d2,a3,b3,c3,d3);
 e  := (a1*b2*c3+b1*c2*a3+c1*a2*b3-a3*b2*c1-b3*c2*a1-c3*a2*b1);
 ex := (d1*b2*c3+b1*c2*d3+c1*d2*b3-d3*b2*c1-b3*c2*d1-c3*d2*b1);
 ey := (a1*d2*c3+d1*c2*a3+c1*a2*d3-a3*d2*c1-d3*c2*a1-c3*a2*d1);
 ez := (a1*b2*d3+b1*d2*a3+d1*a2*b3-a3*b2*d1-b3*d2*a1-d3*a2*b1);
 if ( e=0 ) and ( (ex=0) or (ey=0) or (ez=0) ) then
    writeln('Безліч  розв’язків у системи)
 else if ( e<>0 ) and ( (ex=0) or (ey=0) or (ez=0) ) then
    writeln('Немає  розв’язків у системи)
 else begin
writeln('Єдиний  розв’язок у системи’)
    x:=ex/e; y:=ey/e; z:=ez/e;
    writeln('x = ', x); writeln('y = ', y); writeln('z = ', z);

 end; end.

понеділок, 9 лютого 2015 р.

Правила для стратегічних рішень у проблемних ситуаціях

Правила для стратегічних рішень у проблемних ситуаціях

Математики весь час намагаються описати наше життя як формулу. Часом виходить дуже переконливо. Але це тільки до тих пір, поки в гру не вступають чисто людські  якості - совість, довіра, жага справедливості, егоїзм, альтруїзм. Тут математика перестає працювати і починається як мінімум психологія. Ми відібрали десять найяскравіших інтелектуальних ігор, в основі яких життя у всьому різноманітті її проявів
1. Математична гра «Дилема ув'язненого»: свідчити або мовчати?
Правила: «Уявіть, що ви спробували пограбувати банк. Але, на жаль, вас і вашого подільника зловили і розсадили по різних камерах. Слідчий пропонує угоду: ви даєте свідчення проти свого напарника і тоді отримуєте шанс на звільнення за допомогу слідству. У вас є чотири варіанти дій.
1. Ви погоджуєтеся і даєте свідчення. Ваш напарник мовчить. Тоді він отримує десять років, а ви виходите на свободу.
2. Ви колеться, і ваш напарник колеться. Тоді ви обидва отримуєте по два роки.
3. Ви гордо мовчите, але ваш напарник дає свідчення. Тоді на свободу виходить він, а ви отримуєте десять років.
4. Ви обоє мовчите, і через шість місяців вас відпускають за браком доказів.
І що ви обираєте? Слідчий уже відкриває двері вашої камери ...
Історія та застосування
Базову модель «Дилеми ув'язненого» запропонували в 1950 році американські математики Меррил Флад і Мелвін Дрешер, що працювали на дослідницьку корпорацію RAND. Ця гра була потрібна для прогнозування гонки ядерних озброєнь - в ролі ув'язнених виступали СРСР і США.
З тих пір гра стала дуже популярна серед математиків, філософів і психологів. Виходячи з військово-кримінальної обкладинки, можна виявити і багато інших прикладів. Ту ж гонку озброєнь зараз дуже нагадують рекламні кампанії. Постійне змагання в кількості рекламного контента неухильно збільшує витрати фірм. Відповідно, від припинення гонки виграли б усі сторони. Але якщо хтось віроломно порушить перемир'я, він виграє війну за споживача, а інші програють.
У США навіть проводилися змагання між командами університетів на кращу запрограмовану стратегію гри в «Дилему ув'язненого», де перемога присуджувалася за мінімальний термін ув'язнення за підсумками декількох раундів допитів. Перемогла програма, заснована на принципі «око за око»: вона надходила з кожним своїм напарником в точності так, як з нею надійшли ходом раніше. Але це все-таки математика, людське життя куди складніше.
Людські якості
У реальності ви навряд чи будете грабувати банки. А російські слідчі не стануть пропонувати такі угоди. Це модель, притча, метафора людських відносин.
Щоб сумарна покарання було найменшим, вигідніше мовчати обом. Тоді загальний термін відсидки складе всього рік - набагато менше, ніж при будь-якому іншому сценарії. Але наскільки ви довіряєте тому, з ким йшли на діло? А він вам? І що для вас означають його інтереси? Якою мірою ви готові ризикувати?
Основна проблема «Дилеми ув'язненого» - довіра. Саме через небажання довіряти іншому і виникає конфлікт інтересів, який звели в абсолют, наприклад, сценаристи серії хоррорів «Пила». Так, у п'ятій частині герої можуть звільнитися в прямому сенсі малою кров'ю, щоб вибратися з пастки. Але замість цього вони починають змагатися, що призводить до загибелі більшості з них.
---------------------------------------------------------
2. «Ультиматум»: скільки ви готові заплатити за справедливість?
Правила
Двом гравцям пропонується розділити між собою деяку суму грошей, припустимо 1000 рублів. Перший з них, що подає, пропонує свій варіант поділу, наприклад кожному по 500 рублів, або йому 800, а напарнику - 200 і т. Д. Другий гравець, який приймає, може або погодитися на запропоновані умови і отримати свою частку, або відкинути схему розділу . У другому випадку ніхто грошей не отримує - вони йдуть назад в банк.
Історія та застосування
Правила цієї гри вперше були сформульовані в 1982 році в Journal of Economic Behaviour and Organization для опису процесу переговорів. Проста в моделюванні і парадоксальна в результатах, вона швидко стала улюбленим об'єктом дослідження для вчених усього світу. Гра «Ультиматум» підходить під багато життєві ситуації. Наприклад, коли вирішується питання, яку частину прибутку пустити на зарплату співробітникам, а яку віддати власникам фірми.
Людські якості
Що б ви зробили на місці приймаючого? Якщо виходити з раціональності, то треба погоджуватися на будь-який варіант розділу грошей. Навіть якщо подаючий хоче забрати собі 990 рублів, все одно сперечатися не варто: 10 рублів все-таки більше, ніж нуль. Але крім раціональності є ще й справедливість.
У сотнях проведених експериментів подають найчастіше пропонують своїм напарникам від 50 до 30%. Десь в інтервалі від 30 до 20% приймаючі починають відмовлятися від угоди, вибираючи принцип «Так не діставайся ж ти нікому!».
Розуміння справедливості залежить від культури. Перуанські індіанці, наприклад, були схильні приймати практично будь-які пропозиції, а жителі Азії виявилися набагато педантично і незговірливість американців. В одному з експериментів, проведених в Індонезії, випробовувані відмовлялися навіть від сум, що становлять кілька їх місячних зарплат.
Взагалі, психологи чимало говорили на тему гри «Ультиматум». Виявилося, що на результати експерименту впливає безліч факторів: сексуальне збудження, вік, ступінь агресивності, рівень тестостерону і так далі.
У 2003 році в журналі Science з'явилася стаття про дослідження, в якому роботу головного мозку гравців у «Ультиматум» безперервно відстежували за допомогою МРТ. Виявилося, що у приймаючого після одержання пропозиції активізуються острівна частина головного мозку, верхні області лобової кори і поясна звивина. Перша з цих областей вважається відповідальною за обробку і формування негативної емоційної інформації, а інші дві - за когнітивні процеси самоконтролю і вибору. Результат цього протистояння стародавнього механізму емоцій і придбаного раціонального мислення і визначає остаточне рішення.
Експерименти дали несподівані результати. Піддослідним штучно блокували роботу раціональної лобової кори. Здавалося б, відпущені на свободу емоції повинні в сказі відкидати все несправедливі пропозиції. Але вийшло навпаки: гравці стали набагато більш поступливими і податливими, емоції гніву та образи поступилися вродженому почуттю наживи. Виходить, що та сама раціональна діяльність лобової кори і призводить до відхилення від розумної математичної стратегії, а уявлення про честь і справедливості змушують людей приймати виважено-невигідне рішення. Недарма в експериментах, проведених на групах аутистів, відсоток відмов був значно нижче. Позбавлені соціальних забобонів, вони набагато частіше слідували ідеальної математичної моделі.
- Взаємодія когнітивних і емоційних механізмів прийняття рішення і визначає раціональну поведінку людини, а порушення в будь-якому з них призводить до вибору неоптимальних стратегій. Ці дві системи також можуть конфліктувати, результатом чого є безліч прикладів, коли утилітарне мислення приводило до жахливих наслідків і прямо суперечило нормам моралі, - пояснює Анна Шестакова, старший науковий співробітник Центру нейрокогнітивних досліджень МГППУ.
3. «Трагедія громадського пастбища»: якщо всі вчинять так.
  Правила
Жителі села володіють загальним пасовищем. Якщо кожен буде пасти на ньому одну корову, то нічого страшного, трави вистачить. Якщо хтось захоче завести другу, то начебто теж все нормально: поле щось велике. Але якщо кожен стане випасати по дві корови, то трави на полі не вистачить, пасовище виснажиться, почнеться голод.
Історія та застосування
Цю модель запропонував Вільям Форстер Ллойд в 1833 році в книзі, присвяченій перенаселення.
- Ця трагедія громад часто відбувається в житті - розігрується класичний сценарій з теорії ігор. Прикладів тому маса: екологічні проблеми, пробки на дорогах - будь-яке місце, де людині здається, що на халяву можна непомітно нажитися за рахунок суспільства, - пояснює професор РЕШ Олексій Саватєєв.
За прикладами далеко йти не треба. У Москві, де пробки стали колосальною проблемою, а екологічна обстановка погіршується рік від року, жителі наполегливо ігнорують громадську акцію «День без автомобіля», що проходить з 2008 року. Більш того, за деякими даними, саме в цей день кількість заторів на дорогах особливо велике.
Статті з різними модифікаціями цієї гри з'являються в провідних наукових журналах типу Science і в наш час. Наприклад, є варіант експерименту під назвою «Суспільне благо». Ось як його описують вчені з Вищої школи економіки Діляра Валєєва і Марія Юдкевич: «Кожен з учасників спочатку наділяється певною сумою грошей. Кожен повинен приватно вирішити, яку частку цих особистих грошей він може інвестувати в суспільне благо. Вкладені в суспільне благо гроші збільшуються в кілька разів і діляться порівну. Група отримає максимальну вигоду, якщо кожен учасник інвестує всю свою початкову суму грошей. Однак гравці можуть ухилятися від вкладення своїх грошей в громадські підприємства. У рівновазі, передбаченою теорією, кожен учасник вносить нульовий внесок. У реальних експериментах результат, як правило, іншою: гравці вкладають певну суму в суспільне благо».
Людські якості
Ми не вважаємо гріхом нанести невелику шкоду природі або суспільству. «Від одного кинутого папірця світ не обвалиться» - так міркує перехожий, і міста заростають горами сміття.
Соціологи і психологи вже давно намагаються зрозуміти, як змусити людей бути більш альтруїстичними. Один з методів - залучення людини в процес, що дає йому відчуття гордості за принесене благо чи скорочення шкоди. Наприклад, на Літній школі «Українського репортера» студентам пропонують зробити внесок у розмірі від 150 до 600 гривень на добу - залежно від фінансових можливостей. Якщо якась частина учасників внесе мінімальний внесок, нічого страшного не станеться. Але якщо так зроблять всі, то Літня школа буде приречена на брак їжі та інші проблеми. Схоже, нас рятує відчуття причетності: «Це мій проект, я за нього теж відповідаю». Принаймні, останні кілька років середній внесок був удвічі більше мінімального.
З тієї ж серії поширення музики через Інтернет. Деякі групи пропонують завантажити свої твори безкоштовно, а потім, прослухавши, заплатити будь-яку суму. Якщо не заплатить ніхто, групі не на що буде записувати новий альбом.
Деякі економісти вважають, що саме за такими схемами майбутнє, принаймні в галузі розповсюдження музики, книг і кіно. Наприклад, професор Вищої школи економіки Олександр Долгін вводить поняття «постфактумні благодійні платежі». У його схемі економіка майбутнього зуміє перемогти халявщиків за рахунок публічності оцінки. Якщо я прочитав книгу або подивився фільм, я повинен виставити свою особисту оцінку - в якій мірі мені це сподобалося. І буде нелогічно, якщо я поставлю вищий бал і при цьому не пожертвую автору значну суму.
4. «Проблема кількості смертей»: чи можна з гуманізму вбити людину?
Правила
На залізниці ось-ось станеться аварія. Вагонетка, наповнена пасажирами, котиться в прірву. У вас є можливість її врятувати. Для цього треба своїми руками зіштовхнути на рейки вгодованого дорожнього робітника, який випадково опинився поруч. Людина загине. Але десятки життів буде врятовано. Ви готові?  Тоді, чому людина  обирає  смертельну у боротьбі за незалежність та інтереси суспільства?
Історія та застосування
Оригінальна формулювання цієї болісної дилеми була запропонована в 1967 році британським філософом Філіппом Фут в якості уявного експерименту з етики. За минулі роки з'явилося чимало модифікацій. Ви вбиваєте одного і рятуєте трьох. Ви вбиваєте дитину і зберігаєте життя десятьом. Є навіть пронизливий короткометражний фільм, в якому стрілочник повинен вибрати: розчавити власного сина конструкціями моста або допустити аварію потягу з сотнями пасажирів.
Найпоширеніше місце застосування цієї дилеми, звичайно, військові дії. Залишаючи взвод із прикривати відступ полку, командир відправляє на вірну смерть тридцять чоловік, але дає шанс тисячам вижити. Але ж така ситуація може трапитися і на реальній залізниці. Або під час пожежі. Або десь ще.
Не обов'язково має йтися про життя і смерть. Уявіть, що ви керівник відділу, якому потрібно звільнити одного співробітника, щоб зберегти весь колектив. Або ви ведете урок в школі, і вам доводиться накричати на одну дитину, щоб увесь інший клас міг спокійно займатися.
Людські якості
У цій грі дуже мало математики: десять - це більше, ніж один, це навіть першокласник знає. Зате психології з етикою в цій дилемі навалом. Заповідь «Не убий!» Вступає в протиріччя з цінністю збереження життя. До речі, у короткометражному фільмі про стрілочника головний герой все-таки жертвує своїм сином і потяг з нічого не підозрюють пасажирами спокійнісінько їде далі.
В експерименті, проведеному психологами з Університету Мічигану, випробуваним пропонувалася реалістична тривимірна модель з вагонеткою, шляхами і необхідністю погубити одного, щоб врятувати п'ятьох. Близько 90% учасників переводили стрілку і вбивали людину заради пасажирів вагонетки. Але це все-таки комп'ютерна реальність, а не справжнє життя.
5. «Яструби і голуби»: нападати або бігти
Правила
В одній популяції тварин співіснують дві групи з різними стратегіями боротьби за ресурси. Перші, «яструби», завжди налаштовані на конфлікт і при зустрічі з конкурентом йдуть до кінця. В результаті вони або виграють і привласнюють всі ресурси в околицях (+50 балів), або програють і отримують в бійці важкі каліцтва (-100 балів). «Голуби», навпаки, налаштовані миролюбно. Побачивши «яструба», вони відразу відступають (0 очок «голубу» і 50 очок «яструб»), а при зустрічі зі своїми родичами лише зображують готовність до сутички. Після тривалого обміну погрозами (-10 балів обом «голубам») ресурси дістаються більш щасливому «голубу» (+50 балів).
Є багато інших варіацій правил, але основні риси гри зберігаються незмінними: перемога приносить будь-якому птаху середню кількість очок, отримання каліцтв у «яструбів» прирівнюється до величезного штрафу, а ритуальні битви «голубів» теж вимагають деяких мінімальних витрат.
Мета гри гранично проста: заробити максимальну кількість очок, що б за ними не ховалося - їжа, гроші, самки або «представленість генів індивідуума в генофонді популяції», як висловлюється Річард Докінз у своїй книзі «Егоїстичний ген».
Історія та застосування
Правила гри були вперше опубліковані в журналі Nature в 1973 році. Автори роботи запропонували так формалізувати конфлікти тварин за ресурси, територію або сексуальних партнерів. Модель дозволяє по співвідношенню стратегій в популяції розрахувати кількість ресурсів, що витрачаються і одержуваних особинами при тому чи іншому варіанті взаємодій. Пташину метафору запозичили з геополітичного сленгу того часу («яструби» - за жорстке протистояння з противником, «голуби» - за розрядку і компроміси).
«Яструби і голуби» з'явилися як розвиток гри, в якій два водія несуться назустріч один одному. Переможеним вважався той, хто першим злякається лобового зіткнення і відійде в сторону.

Людські якості
- Ми спробували відійти від класичної теорії ігор, в якій набір можливих стратегій малий і жорстко заданий, - розповідає Михайло Бурцев, керівник лабораторії нейроінтеллекта і нейроморфних систем Курчатовського  інституту. У 2007 році він разом зі своїм керівником Петром Турчиним опублікував в Nature статтю, в якій описувалося, як стратегії «яструбів» і «голубів» виникають природним шляхом в процесі еволюції комп'ютерної моделі.
- Ми створили віртуальний світ, заселений агентами, які здійснюють примітивні дії, які могли бути скомбіновані в більш складні стратегії. Поведінка окремої агента управлялося власної нейронною мережею. Це дозволило нам відкрити такі стратегії, які в стандартній теорії ігор в голову не приходило досліджувати, - пояснює Михайло.

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


пʼятниця, 6 лютого 2015 р.

Програмування операцій з квадратними масивами(матрицями) мовою Pascal

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

Program MATRIX; {Найменування програми}
Uses CRT;
var i1, i2, i3: integer; {Лічильник рядків}
j1, j2, j3: integer; {Лічильник стовпців}
operation: integer; {Варіант розвитку програми}
det: real; {Визначник} k: integer; {Робоча змінна}
{Масиви (матриці), що використовуються в програмі}
MAS1, {Матриця А} MAS2, {Матриця В} MAS3: array [1 .. 10,1 .. 10] of real; {Матриця С}

BEGIN {Початок програми}
WriteLn ('Що Ви бажаєте робити з матрицями?');
{Вибір користувачем варіанту розвитку програми}
WriteLn ('Якщо Ви бажаєте знайти визначник матриці, натисніть 1');
WriteLn ('Якщо Ви бажаєте знайти зворотну матрицю, натисніть 2');
WriteLn ('Якщо Ви бажаєте транспонувати матрицю, натисніть 3');
WriteLn ('Якщо Ви бажаєте скласти матриці, натисніть 4');
WriteLn ('Якщо Ви бажаєте відняти матриці, натисніть 5');
WriteLn ('Якщо Ви бажаєте перемножити матриці, натисніть 6');
ReadLn (operation); {Занесення обраного варіанту в пам'ять}

WriteLn ('Введіть кількість рядків матриці, не більше 10');
ReadLn (m1);
WriteLn ('Введіть кількість стовпців початкової матриці, не більше 10');

ReadLn (n1);
If ((1> n1) or (n1> 10) or (1> m1) or (m1> 10)) {Умови помилки}
then begin  WriteLn ('ПОМИЛКА !!!');  end
else begin  WriteLn ('Введіть початкову матрицю'); {Введення вихідної матриці}
for i1: = 1 to m1 do
for j1: = 1 to n1 do Read (MAS1 [i1, j1]);  end;
for i1: = 1 to m1 do {Відповідь вихідної матриці}  begin
for j1: = 1 to n1 do  Write (MAS1 [i1, j1]);  WriteLn;  end;
Case operation of {Оператор вибору «operation»}
1: begin {Визначник}
if (m1 <> n1) then writeLn ('ПОМИЛКА !!!') {Умова помилки}  else
begin {Формула визначника}
det: = (MAS1 [1,1] * MAS1 [2,2] * MAS1 [3,3]+ MAS1 [2,1] * MAS1 [3,2] * MAS1 [1,3] + MAS1 [1,2] * MAS1 [2,3] * MAS1 [3,1])- (MAS1 [3,1] * MAS1 [2,2] * MAS1 [1,3]+ MAS1 [3,2] * MAS1 [2,3] * MAS1 [1,1]+ MAS1 [2,1] * MAS1 [1,2] * MAS1 [3,3]);
WriteLn ('Визначник матриці розміром 3х3, det =', det); {Висновок визначника}  end;  end;

2: begin {обернена матриця}
if (m1 <> n1) then WriteLn ('ПОМИЛКА !!!') {Умова помилки}  else begin  {Визначник}
det: = (MAS1 [1,1] * MAS1 [2,2] * MAS1 [3,3] + MAS1 [2,1] * MAS1 [3,2] * MAS1 [1,3]+ MAS1 [1,2] * MAS1 [2,3] * MAS1 [3,1])- (MAS1 [3,1] * MAS1 [2,2] * MAS1 [1,3]+ MAS1 [3,2] * MAS1 [2,3] * MAS1 [1,1]+ MAS1 [2,1] * MAS1 [1,2] * MAS1 [3,3]);
if det = 0 then WriteLn ('ПОМИЛКА !!!') {Умова помилки} else begin {Союзна матриця}
for i1: = 1 to m1 do
for j1: = 1 to n1 do MAS2 [i1, j1]: = MAS1 [j1, i1]; {Підсумкова формула}
for i1: = 1 to m1 do
for j1: = 1 to n1 do MAS3 [i1, j1]: = (1/det) * MAS2 [i1, j1];
WriteLn; WriteLn ('обернена матриця:');
for i1: = 1 to m1 do begin {Відповідь оберненої матриці}
for j1: = 1 to n1 do
Write (MAS3 [i1, j1]);   WriteLn;  end;    end;    end;  end;

3: begin {Транспонування матриці}
for i1: = 1 to m1 do
for j1: = 1 to n1 do MAS2 [i1, j1]: = MAS1 [j1, i1]; {Формула}
WriteLn ('Транспонована матриця:');
for i1: = 1 to m1 do begin {Відповідь транспонованої матриці}
for j1: = 1 to n1 do
Write (MAS2 [i1, j1]);  WriteLn;  end;  end;
4,5: begin {Додавання / віднімання матриць} {Введення другої матриці}
WriteLn ('Введіть кількість рядків другої матриці');  ReadLn (m2);
Writeln ('Введіть кількість стовпців другого матриці');  ReadLn (n2);
If (n2 <> n1) or (m2 <> m1)  then WriteLn ('OSHIBKA !!!') {Умова помилки}  else begin
WriteLn ('Введіть другу матрицю');
for i1: = 1 to m1 do
for j1: = 1 to n1 do
Read (MAS2 [i1, j1]);  end;
for i1: = 1 to m1 do {Вигляд другої матриці}  begin
for j1: = 1 to n1 do  Write (MAS2 [i1, j1]);  WriteLn; end;
if operation = 4 then k: = 1;
if operation = 5 then k: = -1;
for i1: = 1 to m1 do
for j1: = 1 to n1 do
MAS3 [i1, j1]: = MAS1 [i1, j1] + k * MAS2 [i1, j1]; {Підсумкова формула}
writeln ('Сума / різниця:');
for i1: = 1 to m1 do begin
for j1: = 1 to n1 do Write (MAS3 [i1, j1]);  WriteLn; end;    end;
6: begin {Множення матриць}  {Введення другого матриці}
WriteLn ('Введіть кількість рядків другий матриці');  ReadLn (m2);
Writeln ('Введіть кількість стовпців другого матриці');  ReadLn (n2);
If ((1> = m2) or (m2> = 10) or (1> = n2) or (n2> = 10) {Умова помилки}
or (n2 <> m1)) then WriteLn ('ПОМИЛКА !!!')  else begin
WriteLn ('Введіть другу матрицю');
for i2: = 1 to m2 do
for j2: = 1 to n2 do Read (MAS2 [i2, j2]);  end;
for i2: = 1 to m2 do begin {Вигляд другої матриці}
for j2: = 1 to n2 do  Write (MAS2 [i2, j2]);   WriteLn;  end;
m3: = m1; n3: = n2;
for i3: = 1 to m3 do
for j3: = 1 to n3 do begin   MAS3 [i3, j3]: = 0;
for i2: = 1 to m2 do   {Підсумкова формула}
MAS3 [i3, j3]: = MAS3 [i3, j3] + MAS1 [i3, i2] * MAS2 [i2, j3];
end;
begin {Вигляд добутку матриць}
writeln;
writeln ('Добуток двох матриць:');
for i3: = 1 to m1 do begin
for j3: = 1 to n2 do Write (MAS3 [i3, j3]);
WriteLn;
end; end;  end;  end; {End Case}

END. {Кінець програми}