Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ekzamen_KhIO_I_semestr_-_shpori.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

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 [] <ім?я массиву>.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]