
- •3.Написати процедуру метода Гауса по блок-схемі.
- •2.Розкладання періодичної функції в ряд Фур'є (теорія)
- •3.Написати программу методу половинного ділення за блок-схемою:
- •4.Програма множення матриці на вектор.
- •3.Програма табулювання функції із записом результатів у масив і виведення на текстовий екран
- •4.Знаходження визначеного інтеграла методом Сімпсона
- •3.Програма табулювання функції із записом результатів у масив і виведення на текстовий екран.
- •1.Оператори циклів з відомою кількістю повторень. Ітераційні цикли. Процедури дострокового завершення циклу.
- •3.Запрограмувати метод крамера
- •4.Написати функцію побудови і табулювання ряду Фур’є(за блок схемою)
- •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.Програма трикутник
program Project3;
{$APPTYPE CONSOLE}
uses
SysUtils;
var a,k,p,s,x1,y1,x2,y2,x3,y3,x4,y4,l21,l32,l31,l41,l42,l43,p1,p2,p3,s1,s2,s3,s4:real;
begin
x1:=1;
y1:=1;
x2:=5;
y2:=7;
x3:=9;
y3:=1;
writeln('vvestu koordunatu chetvertoi tochku');
write('x= ');
read(x4);
write('y= ');
read(y4);
l21:=sqrt(sqr(x2-x1)+sqr(y2-y1)) ;
l32:=sqrt(sqr(x3-x2)+sqr(y3-y2)) ;
l31:=sqrt(sqr(x3-x1)+sqr(y3-y1)) ;
p:=(l21+l32+l31)/2;
s:=sqrt(p*(p-l21)*(p-l32)*(p-l31));
per:=((l21+l32+l31)/2)*2;
writeln(‘S=”,s);
writeln(‘P=”,per);
readln(a)
end.
фур’є
4.Фурьє
float T = 0.001;
float w = 2.0 * 3.14 / T;
float kg = 7;
//int n = 200;
float a[100], b[100];
float t;
int i,k;
float x[201], y[201];
float f(float t)
{
if ((t>=0)&&(t<=0.6*T))
{ float f=8;
return f;
}
if ((t>=0.6*T)&&(t<=T))
{ float f=(-8*(t-0.6*T))/(0.4*T)+8;
return f;
}
}
float F(float t)
{
float sum = 0.0;
for (int k = 1; k <= kg; k++) {
sum += a[k] * cos((float)k * w * t) + b[k] * sin((float)k * w * t);
}
return sum += a[0] / 2.0;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
hell.n=200;
hell.h = T / hell.n;
for (i=1; i <= hell.n; i++)
{
x[i]= (float)(i-1) * hell.h;
y[i]= f((float)(i-1) * hell.h);
}
for (i=1; i<=hell.n; i++)
{
Memo1->Lines->Add(x[i]);
Memo2->Lines->Add(y[i]);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{ hell.n=200;
Image1->Canvas->MoveTo(x[0]*100000,y[0]*10-200);
for (i=1; i <= hell.n; i++)
{
Image1->Canvas->LineTo(x[i]*100000,-y[i]*10+200);
}
Image1->Canvas->MoveTo(0,0);
Image1->Canvas->LineTo(0,400);
Image1->Canvas->MoveTo(0,200);
Image1->Canvas->LineTo(500,200);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{ hell.n=200;
float sum = 0.0;
for (i = 1; i <= hell.n; i++) {
sum += y[i];
}
a[0] = sum * 2.0 * hell.h / T;
Edit1->Text=a[0];
b[0] = 0.0;
for (k = 1; k <= kg; k++) {
a[k] = 0.0;
for (i = 1; i <= hell.n; i++) {
a[k] += y[i] * cos((float)k * x[i] * w);
}
a[k] = a[k] * 2.0 * hell.h / T;
b[k] = 0.0;
for (i = 1; i <= hell.n; i++) {
b[k] += y[i] * sin((float)k * x[i] * w);
}
b[k] *= 2.0 * hell.h / T;
}
Image1->Canvas->Pen->Color=clRed;
Image1->Canvas->MoveTo(x[0]*100000,-F(x[0])*10+200);
for (i=1; i <= hell.n; i++)
{
Image1->Canvas->LineTo(x[i]*100000,-F(x[i])*10+200);
}
}
//---------------------------------------------------------------------------
Білет13 Алгоритм обчислення оберненої матриці з використання методу гауса
Обирається перша зліва колонка, що містить хоч одне ненульове значення.
Якщо верхнє число у цій колонці - нуль, то обмінюється увесь перший рядок матриці з іншим рядком матриці, де у цій колонці нема нуля.
1.Усі елементи першого рядка діляться на верхній елемент обраної колонки.
2.Від рядків, що залишились, віднімається перший рядок, помножений на перший елемент відповідного рядка, з метою отримання у якості першого елемента кожного рядка (крім першого) нуля.
3.Далі, повторюємо ці операції із матрицею, отриманою з початкової матриці після викреслювання першого рядка та першого стовпчика.
4.Після повторення операцій n-1 разів отримаємо верхню трикутну матрицю.
5.Віднімаємо від передостаннього рядка останній рядок, помножений на відповідний коефіцієнт, щоб у передостанньому рядку залишилась лише 1 на головній діагоналі.
6.Повторюємо попередній крок для наступних рядків. У результаті отримуємо одиничну матрицю і рішення на місці вільного вектора (над ним необхідно виконувати ті самі перетворення).
2.Оголошення і опис функцій с++ , іх відміності від опису функцій делфі.
У Делфі ми вивчали підпрограми- окремі алгоритмічно завершені фрагменти програми , які оформленін спеціальним чином і кожна з них має своє унікальне ім’я.
Ми зазначали, що в Делфі є 2 категорії підпрограм:
Процедури
Функції
Вони відрізняються формами опису і способами передачі їм управління, тобто способом їхнього виклику на виконання.
В С++ кожна програма набір окремих функцій, які відносяться до однієї з двох категорій:
Функції, які не мають результуючого значення. Їх називають функціями типу void.
Функції, які таке значення мають. Ця категорія повинна мати в своєму описі тип значення, яке ця функція повертає.
Обидві категорії крім цього використовують вихідні параметри, які можуть повертати в точку їхнього виклику одне чи декілька значень, які формуються під час виконання операторів тіла функції.
Можна стверджувати, що функції типу void є аналогами процедур мови Паскаль. Оскільки їх виклик подібний до виклику процедур.
Мова С++ дозволяє мати декілька функцій з одним і тим же іменем, тому що функції розрізняються не тільки за іменами, але й за типами аргументів.
На відмінну від Делфі в С++ не можна всередині однієї функції описувати ще одну функцію.
До функції звертаються з розділу команд основної функції або з іншої функції.
Виклик можна виконувати або командою виклику, або з виразів.
Приклад для с++:
заголовок функції
float perimetr (int k=4, float r=2.5)
До цієї функції можна звернутися одним із способів:
perimetr (7, 2.8); k=7, r=2.8
perimetr (8); k=8, r=2.5
perimetr (); k=4, r=2.5
Але у списку фактичних параметрів не можна пропускати змінні з середини списку, тобто не можна викликати функцію так : perimetr (1.65);, оскільки тут пропущено ініціалізацію першої змінної .