- •3.Написати процедуру метода Гауса по блок-схемі.
- •2.Розкладання періодичної функції в ряд Фур'є (теорія)
- •3.Написати программу методу половинного ділення за блок-схемою:
- •4.Програма множення матриці на вектор.
- •3.Програма табулювання функції із записом результатів у масив і виведення на текстовий екран
- •4.Знаходження визначеного інтеграла методом Сімпсона
- •3.Програма табулювання функції із записом результатів у масив і виведення на текстовий екран.
- •1.Оператори циклів з відомою кількістю повторень. Ітераційні цикли. Процедури дострокового завершення циклу.
- •4.Написати функцію побудови і табулювання ряду Фур’є(за блок схемою)
- •3.Запрограмувати метод крамера
- •4. Інтеграли з заданою точністю.
- •Функції
- •3.Програма розв’язання квадратного рів-ня (консольна)
- •4.Програма Методу половинного ділення
- •3.Програма Методу половинного ділення
- •4 Метод Ньютона (Консольний)
- •1.Масив (Array) – це обмежена, впорядкована сукупність однотипних пронумерованих
- •4.Програма переглядач графічних файлів
- •1.Метод Ньютона для розвязання нелінійних рівнянь.
- •4. Програма розв’язання квадратного рівняння.
- •1.Компонента tChart та приклад.
- •2.Вказівники
- •3. Програма множення матриці на вектор.
- •4.Метод Ньютона(вік)
- •3.Програма трикутник
- •3.Програма знаходження мінімального і максимального елемента матриці!!!!
- •4.«Елементи_управління»
- •3.Метод Ньютона
- •4.Метод Монте Карло
- •1.Алгоритми
- •3.Фурьє Фурьє
- •3.Запрограмувати метод Крамера (Delphi).
- •2.Функції вводу/виводу мови с
- •4.Метод прямокутників(вкладений файл)
- •4.Табулювання функції із виведенням результатів на екран
- •3.Множення матриці на вектор Делфі
- •3.Трикутник
- •4.Функція методу гАуса
- •1 Метод Крамера та його недоліки
- •3 Програма знаходження мінімального максимального елемента матриці
- •4 Метод половинного ділення
3.Метод Ньютона
{$APPTYPE CONSOLE}
uses
SysUtils;
label 1;
function f(x:real):real;
begin;
f:=exp(x)+ln(x)-(10*x);
end;
function fp(x:real):real;
begin;
fp:=exp(x)+1/x-10;
end;
function f2p(x:real):real;
begin;
f2p:=exp(x)+exp(ln(x)*(-1));
end;
var x,eps,dx:real;
var a,b,i,Kmax:integer;
begin;
a:=3;
b:=4;
Kmax:=50;
x:=b;
if f(x)*f2p(x)>0 then
Goto 1
else
x:=a ;
if f(x)*f2p(x)>0 then goto 1
else writeln('dlya zadanogo rivniannia metod Nyutona ne vukonyetsya');
1: for i:=0 to Kmax
do
begin
Dx:=f(x)/fp(x);
repeat
x:=x-Dx;
until
Abs(Dx)>eps ;
end;
writeln('x=',x:3:4);
readln;
end.
4.Метод Монте Карло
//---------------------------------------------------------------------------
#include <vcl.h>
#include <tchar.h>
#include<math.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
float f(float x)
{float f=pow(2,3*x);
return f;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{double a,b,h,x,g,y,m,spr,s,k;
float n,i,nb;
a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
k=StrToFloat(Edit3->Text);
n=20000;
h=(b-a)/n;
m=0;
x=a;
for (i = 1; i <n; i++)
{y=f(x);
if (y>m)
m=y;
x=x+h;
}
spr=(b-a)*m;
randomize;
nb=0;
for (i = 1; i<k; i++)
{
x=a+(b-a)*random(1000)/1000;
y=m*random(1000)/1000;
if (y<f(x))
nb=nb+1;
s=spr*(nb/k);
g=(1/(3*log(2)))*(pow(2,3*1) - 1);
}
Edit4->Text=s;
Edit5->Text=g;
}
//---------------------------------------------------------------------------
Білет 15
1.Алгоритми
Алгоритм – це чітке, зрозуміле і докладне розпорядження, на підставі якого виконавець(машина чи людина) повинні покроково виконувати певне и типове завдання, яке від початкових даних приводить до шуканого результату або до повідомлення про неможливість його отримати.
Властивості алгоритмів: - дискретність – алгоритм складається із окремих (дискретних) кроків – команд, розпоряджень, чітко відокремлених одна від одної. Тільки після виконання попереднього кроку виконавець зможе розпочати виконання наступного; - скінченність – число цих кроків не безмежне: виконання алгоритму завершується за скінченне число кроків; - зрозумілість – алгоритм, складений для конкретного виконавця, містить тільки ті команди, які належать до системи його команд; - виконуваність – він складається тільки з припустимих команд, які виконавець у стані виконати щодо певних вхідних даних; - однозначність (точність) – це такий опис послідовності команд, який унеможливлює їхнє подвійне тлумачення: кожна команда алгоритму задає однозначну дію виконавця; - результативність – після виконання всіх команд алгоритму одержуємо результат, який може виявитися і неправильним; - масовість (універсальність) – алгоритм придатний для вирішення не однієї, а багатьох задач, що належать до певного класу; - елегантність – критерій суб’єктивний, однак надто важливий для програмістів: елегантне розв’язання задачі є водночас простим, оригінальним та оптимальним (під оригінальність розв’язку розуміють його неочевидність).
Форми представлення алгоритмів: - описова словесно-формульна; - псевдокод, або спеціальна алгоритмічна мова; - графічна форма (діаграми Нессі-Шнейдермана); - графічна форма (блок-схеми) – послідовність геометричних фігур-блоків: кожен блок графічно відображає функції визначеної ділянки алгоритму; - програма написана певною мовою програмою. Описовий алгоритм – алгоритм, складений природною людською мовою з використанням математичної символіки. На цьому етапі створюється варіант опису поставленої задачі, що оптимально задовольняє пред’явлені вимоги. Цю роботу виконує математик. Псевдокод або діаграми Нессі-Шнейдермана сьогодні практично не застосовують. Графічний алгоритм – компактна і наочна форма запису алгоритму (спеціальні графічні знаки із позначенням зв’язків між ними). Графічне зображення алгоритму називають блок-схемою.
Символіка блок-схем:
2 Приклади виразів мови С++ та правила їхнього програмування Вирази описують процеси породження значень застосуванням операцій над іншими значеннями (константами, змінними, значеннями функцій).
У Сі вирази поділяють на:
- арифметичні;
- відношення;
- логічні;
- присвоювання.
Вирази складаються з операцій і операндів. Операндами можуть бути константи, змінні, вирази в дужках та значення, які повертаються функціями.
Для керування порядком виконання операцій застосовуються круглі дужки. У результаті послідовного виконання всіх операцій, що входять до складу виразу, обчислюється його значення.
Вираз може складатися лише з однієї лексеми, що позначає константу, змінну або виклик функції. Значення такого виразу має той самий тип, що і позначений лексемою елемент даних.
Якщо вираз без круглих дужок містить декілька операцій, то послідовність їх виконання визначається правилами пріоритету. У таблиці групи операцій мови Pascal розташовано у порядку зниження їх пріоритету. Найвищий пріоритет мають унарні операції, найнижчий — операції відношення. Операції всередині кожної групи мають однакові пріоритети.
Отже, наведемо правила визначення пріоритету операцій:
операнд, що міститься між двома операціями з різними пріоритетами, зв'язується з операцією, яка має вищий пріоритет;
операнд, що міститься між двома операціями з рівними пріоритетами, зв'язується з операцією, яка записана ліворуч;
вираз, який взято в дужки, обчислюється в першу чергу і далі розглядається як окремий операнд;
операції з однаковим пріоритетом виконуються зліва направо.
Розглянемо декілька прикладів застосування цих правил (табл. 2.7).
Таблиця 2.2. Арифметичні операції над цілочисловими значеннями
Коректний запис останнього виразу з табл. 2.7 буде таким: (5>2) or (7>8).
3.МетодГауса function gauss_slar (n : integer; a:matrix; b:vec ; var x:vec) : integer ;
var
i,k,j:Integer;
r:Real;
z:Boolean;
begin
z:=True;
if n>1 then
begin
for i:=1 to n-1 do
begin
k:=i;
r:=Abs(a[i,i]);
for j:=i+1 to n do
if Abs(a[j,i])>=r then
begin
k:=j;
r:=Abs(a[j,i]);
end;
if r<=1e-7 then
begin
z:=false;
end;
if (k<>i)and(z<>false) then
begin
r:=b[k];
b[k]:=b[i];
b[i]:=r;
for j:=i to n do
begin
r:=a[k,j];
a[k,j]:=a[i,j];
a[i,j]:=r;
end;
end;
if z<>False then
begin
r:=a[i,i];
b[i]:=b[i]/r;
for j:=1 to n do
a[i,j]:=a[i,j]/r;
for k:=i+1 to n do
begin
r:=a[k,i];
b[k]:=b[k]-r*b[i];
a[k,i]:=0;
for j:=i+1 to n do
a[k,j]:=a[k,j]-r*a[i,j]; //fatality!!!
end;
end;
end;
if (Abs(a[n,n])<=1e-7) then
z:=false;
if z<>false then
begin
x[n]:=b[n]/a[n,n];
for i:=n-1 downto 1 do
begin
r:=b[i];
for j:=i+1 to n do
r:=r-a[i,j]*x[j];
x[i]:=r;
end;
z:=true;
end;
end
else
begin
if Abs(a[1,1])<10e-7 then
z:=false
else
begin
x[1]:=b[1]/a[1,1];
z:=True;
end;
end;
if z=False then gauss_slar:=-1
else if z=True then gauss_slar:=0;
end;
begin
Writeln('Lab9.Gauss');
write ('vvedit rozmir Matrici');
Readln(N);
write('Enter Matrix');
L:=5;
for i:=1 to N do
begin
k:=1;
for j:=1 to N do
begin
write('A[',i,',',j,']=');
read(A[i,j]);
k:=k+16;
end;
L:=L+1
end;
Writeln('vvedit vektor pravoji chastyni');
k:=1;
Readln;
for i:= 1 to N do
begin
write('b[',i,']=');
Read(b[i]);
k:=k+16
end;
4.Метод_центральних_прямокутників #include<math.h>
#include<conio.h>
long double f (long double x)
{return (x);}
long double sum (long double n,long double x,long double h)
{long double s=0;long i;
for (i=0;i<n;i++)
{s=s+f(x);
x=x+h;}
return (s);}
void main ()
{long n=640000;clrscr();
long double a=0,b=10,h=(b-a)/n;
double ip=h*sum(n,a+h/2,h),
it=h*0.5*(f(a)+f(b)+2*sum(n-1,a+h,h)),
is=h*(f(a)+f(b)+2*sum(n-1,a+h,h)+4*sum(n,a+h/2,h))/6;
cprintf("Rectangle method : s=%f",ip);
getch();}
Білет_16 1. Історія розвитку обчислювальної техніки та мов програмування.
Перші спроби створення інструментів для обробки інформації пов’язані з прагненням спростити та прискорити виконання дій над числами. Одними з перших таких інструментів були дерев’яні рахівниці винайдені чотири тисячі років тому у Стародавньому Китаї та абак – рахункова дошка яку використовували греки та римляни понад дві тисячі років тому.
Ескіз першого тринадцяти розрядного десяткового суму вального пристрою на базі коліщаток з зубцями намалював у своїх щоденниках Леонардо да Вінчі.
У 1642 році 19-річний французький математик Блез Паскаль сконструював першу в світі працюючу механічну обчислювальну машину, відому як «Паскалина». Ця машина являла собою комбінацію взаємопов'язаних коліщаток та приводів. На коліщатках були зображені цифри від 0 до 9. Якщо перше коліщатко робить повний оберт від 0 до 9, автоматично починає рухатись друге коліщатко. Якщо і друге коліщатко доходить до цифри 9, починає обертатися третє і так далі. Вона могла додавати і віднімати.
У 1679 році Готфрід Лейбніць написав трактат про застосування двійкової системи числення.
Ідеї, реалізовані у сучасних комп’ютерах були сформовані у 1834 році англійським ученим Чарльзом Беббіджем, він також висловив ідею про використання перфокарт, але його ідеї були втілені лише через століття.
У 1883 році Томас Едісон винайшов явище термоелектронної емісії, на основі якого у 1904 році фізик Флемінг розробив електронну лампу – діод. Діоди пізніше використовувалися у ЕОМ.
У 1924 році Герман Халеріт заснував фірму IBM – відомого в наш час виробника комп’ютерів.
У 1946 році групою інженерів під керівництвом Джона Моучлі та Джона Еккерта на замовлення військового відомства США було створено машину ENIAK, яка була здатна виконувати близько 3 тисяч операцій на секунду.
У 1968 році Клаус Вірт створив мову програмування Pascal.
У 1976 році у США С. Возняк та С.Джобс сконструювали перший персональний комп’ютер Apple, a у 1981 році фірма IBM випустила свою відому модель IBM PC. З її появою персональні комп’ютери стали доступними для звичайних людей.
2.Ствовення_динамічних_масивів Динамічні масиви С
Масив – це кінцева послідовність даних одного типу. Кожен елемент масиву має однакове ім’я – ім’я масиву, і відрізняється індексом (ціле число), за яким здійснюється доступ до елемента масиву. Індекси масивів у С/С++ починаються з 0.
За способом розміщення масиви поділяються на статичні та динамічні. Розмір статичного масиву можна задавати константою або константним виразом. Оскільки ділянка у оперативній пам’яті під масив задається на етапі компіляції і її розмір визначається типом елементів масиву та їх кількістю, розмірність масиву повинна бути визначена у тексті програми, а не підчас її виконання. Для визначення масиву змінного розміру використовується механізм динамічного виділення пам’яті.
Наприклад:
- оголошення одновимірного масиву з п’яти елементів цілого типу:
int a[5];
- динамічне виділення пам’яті під 10 цілочисельних елементів:
int*m=new int [10];
Враховуючи те, що ім?я масиву є вказівником, зрозумілим стає зміст останньої операції: вказівникові на int m присвоюється початкова адреса ділянки пам?яті, виділеної у динамічній області під 10 цілочисельних елементів.
Перевагою динамічних масивів є те, що їх розмірність може бути змінною, тобто у програмі можна працювати з масивами довільного розміру, не вносячи змін до тексту програми. Проте, динамічні масиви не можна ініціалізувати при визначенні і вони за замовчуванням не заповнюються нулями.
Пам’ять, зарезервовану під динамічний масив за допомогою new[ ], потрібно звільняти оператором delete [] <ім?я массиву>.
