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

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.Передбачити виведення на осі координат масштабних поділок і виведення (у текстовому вигляді) відповідних щодо них числових підписів.

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