- •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.Запрограмувати метод Крамера (Delphi).
program Metod_Kramera;
{$APPTYPE CONSOLE}
uses
SysUtils;
Type
Matrix = array [1..3,1..3]of real;
Vec = array [1..3]of real;
function det(a:matrix):real;
begin
det:=a[1,1]*a[2,2]*a[3,3]+a[2,1]*a[1,3]*a[3,2]+a[1,2]*a[2,3]*a[3,1]-a[3,1]*a[2,2]*a[1,3]-a[1,1]*a[3,2]*a[2,3]-a[2,1]*a[1,2]*a[3,3];
end;
var m:matrix;
x,y,z,mx,my,mz,k,b1,b2,b3:real;
var a:matrix=((2.1,-4.5,-2.0),
(3.0,2.5,4.3),
(-6.0,3.5,2.5));
var b:vec=(19.07,3.21,-18.25);
begin
k:=det(a);
if k=0 then
writeln('NEMAJE ROZVIAZKIV')
else
begin
m:=a;
m[1,1]:=b[1];
m[2,1]:=b[2];
m[3,1]:=b[3];
mx:=det(m);
m:=a;
m[1,2]:=b[1];
m[2,2]:=b[2];
m[3,2]:=b[3];
my:=det(m);
m:=a;
m[1,3]:=b[1];
m[2,3]:=b[2];
m[3,3]:=b[3];
mz:=det(m);
x:=mx/k;
y:=my/k;
z:=mz/k;
writeln('x=',x:3:2);
writeln('y=',y:3:2);
writeln('z=',z:3:2);
b1:=a[1,1]*x+a[1,2]*y+a[1,3]*z;
b2:=a[2,1]*x+a[2,2]*y+a[2,3]*z;
b3:=a[3,1]*x+a[3,2]*y+a[3,3]*z;
writeln('b1=',b1:3:2);
writeln('b2=',b2:3:2);
writeln('b3=',b3:3:2);
end;
readln;
end.
3.Знаходження інтеграла з заданою точністю. (С++).
//---------------------------------------------------------------------------
#include <conio.h>
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include <iostream.h>
#include <tchar.h>
#pragma argsused
using namespace std;
float a,b,h,Int_0,Int_N,Eps;
int n,i,met;
float f(float x)
{
return (sqrt(x*x - 0.16) / x);
}
float sum (int m, float x)
{
int i;
float s;
s=0;
for (i = 1; i < m; i++) {
s=s+f(x);
x=x+h;
}
return s;
}
double F(double x)
{
return sqrt (x*x - 0.16) - 0.4 * acos(0.4 / x) - sqrt(0.84) + 0.4 * acos(0.4);
}
int _tmain(int argc, _TCHAR* argv[])
{
cout <<"a="; // перша межа
cin >> a;
cout<<"b="; //друга межа
cin >> b;
cout<<"n="; // початкова к-сть поділів
cin >> n;
cout<<"Eps="; // точність
cin >> Eps;
cout<<"met="; // вибір методу (1-прямок. 2 – трап. 3 – сімпсона)
cin >> met;
h=(b-a)/n;
if (met == 1)
{Int_N=h*sum(n,a+h/2);}
if (met == 2)
{Int_N=h*0.5*(f(a)+f(b)+2*sum(n-1,a+h));}
if (met == 3)
{Int_N=h*(f(a)+f(b)+2*sum(n-1,a+h)+4*sum(n,a+h/2))/6;}
do {
n+=1;
h=(b-a)/n;
Int_0=Int_N;
if (met == 1 )
{Int_N=h*sum(n,a+h/2);}
if (met == 2)
{Int_N=h*0.5*(f(a)+f(b)+2*sum(n-1,a+h));}
if (met == 3)
{Int_N=h*(f(a)+f(b)+2*sum(n-1,a+h)+4*sum(n,a+h/2))/6;}}
while (fabs(Int_N-Int_0)>Eps);
cout<<"Int_N="<<Int_N;
cout<<"n="<<n;
cout<<"(F(b)-F(a))="<<(F(b)-F(a));
system ("PAUSE");
return 0;
}
Білет20 1.Побудова графіків ф-ції(математичний аспект) Щоб побудувати графік нам потрібно мати функціональну залежність задану в табличній або аналітичній формі. Якщо ф-я задана аналітично її потрібно протабулювати , отримаємо в результаті цього таблицю значень. Потім потрібно передбачити масштабування цих значень, для того щоб наше зображення помістилося на Canvas. Очевидно, що заповнювати графіком увесь Canvas не доцільно, оскільки не залишиться місця для підписів. Тому ми відступаємо від полів області виведення на L-пікселів. Маючи таблицю значень ми можемо порахувати коефіцієнти масштабування :
Kx=Mx-2*L/MaxX-MinX
Ky=My-2*L/MinY-MaxY
Zx= Mx*MinY-L*( MinX+MaxX)/ MaxX-MinX
Zy=My*MinY-L*( MinY+MaxY) / MaY-MinY
Ці коефіцієнти дозволяють не тільки масштабування, а й поворот та 180 градусів.
Mx, My – довжина і ширина в пік селях нашого Канваса
L – це відстань від графіка до країв Канваса.
Алгоритм:
1.отримати аналітичний вираз ф-ї для виведення на графік і запрограмувати її як Паскаль-ф-ю
2.Написати програму виведення графіка описуючі необхідні для його побудови змінні і масиви: Type Vector = Array [0..640] of Real;
3.у виконуваній частині програми:
-запрограмувати введення з клавіатури значень кінців проміжку виведення ф-ї на графік (al, bl)і числа Ne пар експериментальних значень
-заповнити шляхом табулювання заданої ф-ї масиви заначень для виведення на графік (Xe,Ye)
-визначити мінімальні і максимальні значення елементів цих масивів
-за формулами обчислити значення коефіцієнтів масштабування
-накреслити осі координат (за формулами)
-за виразом (Xi,Yi)=(Round(Kx*XEi+Zx),Round(Ky*YEi+Zy)) за допомогою циклу побудувати графік заданої ф-ї
4.Передбачити виведення на осі координат масштабних поділок і виведення (у текстовому вигляді) відповідних щодо них числових підписів.
