1. Kurs ishiga topshiriq


Download 199.01 Kb.
Sana02.02.2023
Hajmi199.01 Kb.
#1146824


Kirish

Kurs ishining maqsadi : funksiyalar, protseduralar va turli xil murakkab ma'lumotlar turlari, shu jumladan dinamik massivlar, tuzilmalar va birlashmalardan foydalangan holda C tilida algoritmlash va dasturlash bo'yicha bilim va ko'nikmalarni mustahkamlash.


Dasturning maqsadi va ko'lami : dastur o'quv jarayonida massivlarni qayta ishlashning muhandislik muammolarini foydalanuvchi dasturlariga kiritish orqali hal qilish uchun ishlatiladi.


1. Kurs ishiga topshiriq


1.1 Vazifaning mazmunli tavsifi

Birinchi muammo uchun uchta funktsiya mavjud va . Formula bo'yicha A matritsaning elementlarini topish kerak bo'ladi





Bu yerda x = f ( i , j ) funksiya argumenti , a , b funksiyaning integrallash chegaralari. .


Funktsiya arifmetik funktsiya bo'lib, uni hisoblash bilan bog'liq muammolar, qoida tariqasida, paydo bo'lmasligi kerak.
f 2 funktsiyasini farqlash kerak.
f 3 funktsiyasi trigonometrik ifoda bo'lgan integraldir, hisoblash formula bo'yicha amalga oshiriladi.



a , b - mos ravishda pastki va yuqori integral


Ikkinchi vazifa bajarilganda, matritsa hosil bo'ladi. Vazifa eng kattasidan iborat vektorni shakllantirishdir i - ustunning salbiy elementlari .
Birinchi muammoni hal qilishda biz kvadrat matritsani olamiz, ya'ni. matritsa. a bu yerda qatorlar soni ustunlar soniga teng.
Uchinchi vazifa - matritsa operatsiyalari to'plami. Maxsus turdagi matritsa yoki vektor sifatida ko'rsatilgan uchta operandni, shuningdek ular ustidagi ba'zi operatsiyalarni ko'paytirish kerak.
Keling, ushbu operatsiyalarni ko'rib chiqaylik.
Birinchidan, ikkinchi qismda olingan vektorning teskari elementlaridan iborat vektorni olishingiz kerak.
Ikkinchi operand asl va transpozitsiya qilingan asl matritsalar orasidagi farqning kvadrati bo'ladi
Am * n = ( aij ) va Bn * p = ( bjk ) matritsalarining ko'paytmasi Cm * p = ( cik ) matritsasi bo'lib , shundayki



bular. C mahsulot matritsasining i - qator elementi va k - ustuni A matritsaning i - qatori elementlari va k - ustunning mos keladigan elementlari ko'paytmalari yig'indisiga teng. B matritsasining .


3-operand sifatida A matritsaning bosh diagonalining teskari elementlaridan tashkil topgan 1/ D vektor bo'ladi.
Berilgan matritsadan uning har bir satrini bir xil sonli ustun bilan almashtirish orqali olingan matritsa berilganiga ko'chirilgan matritsa deyiladi. Belgilangan AT .
To'rtinchi vazifada birinchi topshiriqda tuzilgan matritsaning elementlari ustida standart arifmetik amallarni bajarish kerak.


1.2 Masalaning matematik bayoni

Vazifa 4 ta vazifadan iborat:


1.- funksiyalar yordamida A matritsa elementlarini hosil qilish.
A matritsaning elementlaridan X vektorini hosil qilish ,
3. -matritsali amallar: Z =
4. - massivlarni kompleks o'zgartirish
Y = +


1.3 I/U interfeysi

Ma'lumotlar klaviaturadan kiritiladi va natijalar faylda saqlanadi.




1.4 Dasturga qo'yiladigan texnik talablar

DOS qobig'i ostida ishlaydi .


2018-03-22 _ ALGORITMNING TA'RIFI




2.1 Hisoblash formulalari

1 qism. , b = i + j , a =2,


x = i j +3/ i
2-qism.
3-qism. Z =
4 -qism Y= +


2.2 O'zgaruvchilarning tavsifi



O'zgaruvchan nomi

O'zgaruvchan turi

Belgilanish

Mumkin
qiymatlar

Algoritmda

Bir dasturda

Kirish o'zgaruvchilari
Matritsa o'lchami

butun


n


n


n >0


Chiqish
1. Matritsa A

2. Vektor X


3. O'rnatish konvertor massivlar Y


4. Natija mat. operatsiyalar

narsa massiv


narsa
massiv
narsa

narsa


A = {aij}


X = {xi}

Y
Rez


a[i][j]

x[i]

y
rmo



har qanday


har qanday


har qanday


har qanday

Oraliq oʻzgaruvchilar
1. Qator raqami
2. Ustun raqami
3. Matritsa, o'rnatilgan. kvadrat

4. Transpozitsiyalangan matritsa


5. 1/ X - qator

7. Funksiya argumenti


8. 1/ D - ustun
9. Integratsiyaning pastki chegarasi.
10.Integratorlarning yuqori chegarasi
11. Matritsalarning farqi

butun
butun


narsa massiv
narsa massiv
narsa
massiv
narsa
narsa
massiv.
narsa
.narsa

narsa massiv



i
j
A2 = {aij}


A T = {aij}


nv = {nvij}


x
D={Di}


a

b
razn={raznij}



i
j
a2[i][j]


At[i][j]

nv [i][j]

x
d[i]


a

b
razn[i][j]



1,2,... n


1,2,… n
har qanday

har qanday


0 yoki 1

har qanday
har qanday
har qanday

har qanday


har qanday

Dastur tuzilishi



Начало





выделение памяти под все массивы



form_matr(a,n)

формириов. матр А



печать матр. А



print_matr(a,n,fo)



form_vect(x,a,n)

формир. вект. Х



печать вект. Х



print_vect(x,n,fo)



Get1X(a,p,n)

Получение
1/X- строки













Y=Compl
(a,x,n)

Освобождение
памяти из-под
массивов



расчет Y





GetD(a,p,n)

Получение
1/D - столбца





Конец


2.4 Dastur xabarlari

Dastur faqat bitta xabarni ko'rsatadi “O'lchamni kiriting. n = "


Shuningdek, dastur X vektorini rangli harflar bilan chiqaradi.

3 . DASTUR TA'RIFI


# o'z ichiga < stdio . h >


#o'z ichiga
#include
#o'z ichiga
//------------------------------------------------ -
typedef tuzilishi{
imzosiz cl:4;
unsignedfon:3;
imzosiz bl:1;
} Att;
//------------------------------------------------ -
typedef ittifoqi{
imzolanmagan belgilar kodi;
Att att;
}Aralash;
//------------------------------------------------ -
set_attr(int b,int fon,int col) ni aralashtiring
{
a1 aralashtiramiz;
a1.att.bl=b;a1.att.fon=fon;a1.att.cl=col;
a1ni qaytarish;
}
//------------------------------------------------ -
typedef double (*qiziqarli)(double x);
//------------------------------------------------ -
juft prlog (ikki marta x)
{
qaytish 1/(x*log(3));
}
//------------------------------------------------ -
double log3 (juft x)
{
jurnalni qaytarish (x)/log (3);
}
//------------------------------------------------ -
juft logiya (ikki marta x)
{
jurnalni qaytarish (3)/x;
}
//------------------------------------------------ -
qiziqarli Tab_fun[2][2]={{&log3,&prlog},{&log, &log}};
qiziqarli Tab_integ[2][2]={{&log,&logy},{&cos,&sin}};
//------------------------------------------------ -
double Integ(qiziq ff, double a, double b)
{
qiziqarli f1;int i;
uchun(i=0;i<2;i++)
if(Tab_integ[i][0]==ff)
f1=Tab_integ[i][1];
qaytish((*f1)(b)-(*f1)(a));
}
//------------------------------------------------ -
double Dif_fun(qiziq ff, double x)
{
qiziqarli f1;int i,j;
for(i=0;i<2;i++)if(Tab_fun[i][0]==ff)
f1=Tab_fun[i][1];
qaytish (*f1)(x);
}
//------------------------------------------------ -
void form_matr(double **a, int n){
int i, j;
uchun (i = 1,0; i <= n; i++){
uchun (j = 1,0; j <= n; j++)
a[i-1][j-1]=tan(M_PI*(8.25+double(i+j)/2.0))*Dif_fun(log3,double(i*j)+3.0/double(i))+Integ (cos,2.0,double(i+j)) ;

}
}
//------------------------------------------------ -


void form_vect(juft *x, double **a, int n)
{
for(int i=0;i{
x[i]=-10e20;
for(int j=0;j{
agar(a[j][i]<0)
{
agar(a[j][i]>x[i])
x[i]=a[j][i];
}
}
}
}
//------------------------------------------------ -
void print_matr(double **a, int n, FILE *F)
{
int i, j;
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
fprintf(F, "%10.5f ",a[i][j]);
}
fprintf(F, "\n");
}
}
//------------------------------------------------ -
void print_vect(juft *x, int n, FILE *F)
{
int i;
A1 aralashmasi;
A1=set_attr(0,QIZIL,SARI);
textattr(A1.cod);
uchun (i = 0; i < n; i++)
{
fprintf(F, "%10.5f ", x[i]);
}
uchun (i = 0; i < n; i++)
{
cprintf("%10.5f", x[i]);
}
printf("\n");
}
//------------------------------------------------ -
void Transpon(double **At, double **a, int n){
int i, j;
uchun (i = 0; i < n; i++){
uchun (j = 0; j < n; j++)
At[i][j] = a[j][i];
}
}
//------------------------------------------------ -
void sqrM(double **a2, double **a, int n){
int i, j, k;
uchun (i = 0; i < n; i++)
{
uchun (j = 0; j < n; j++)
{
a2[i][j] = 0,0;
uchun (k = 0; k < n; k++)
a2[i][j] += a[i][k] * a[k][j];
}
}
}
//------------------------------------------------ -
bekor razn_matr(ikki marta **a1, ikki marta **a2, ikki marta **razn, int n) {
int i, j;
uchun (i = 0; i < n; i++)
uchun (j = 0; j < n; j++)
razn[i][j] = a1[i][j] - a2[i][j];
}
//------------------------------------------------ -
bekor umnozh_vm(ikki marta **a, juft *v, ikki marta *nv,int n)
{
juft s;
for(int i=0;i{s=0;
for(int j=0;js=s+v[j]*a[i][j];
nv[i]=s;
}
}
//------------------------------------------------ -
double umnozh_sst(double *str, double *stl,int n)
{
ikki tomonlama c;
for(int i=0;ic=c+str[i]*stl[i];
qaytish c;
}
//------------------------------------------------ -
ikki barobar **GetMemoryMatr(int n)
{
int i;
ikki barobar **a;
a = (double **)malloc (n*sizeof(double *));
uchun (i = 0; i < n; i++)
a[i] = (double *)malloc (n*sizeof(double));
a qaytarish;
}
//------------------------------------------------ -
bekor FreeMemoryMatr(ikki marta **a, int n)
{
int i;
uchun (i = 0; i < n; i++)
bepul(a[i]);
bepul(a);
}
//------------------------------------------------ -
double *GetMemoryVect(int n){
double *v;
v = (double *)malloc (n*sizeof(double));
qaytish;
}
//------------------------------------------------ -
int Fact(int x)
{
int s=1;
for(int i=1;i<=x;i++)
s=s*i;
qaytish s;
}
//------------------------------------------------ -
bekor FreeMemVect (ikki marta * v)
{
bepul(v);
}
//------------------------------------------------ -
double GetY(ikkita **a, juft *x,int n)
{
ikki barobar min,p1,p2,c;
int i,k;
uchun (i=0;i{
min=10e19;
c=1;
uchun(k=i+1;k=0;k--)
{
agar (a[i][k-1]<0)
c=c*a[i][k-1];
}
agar(c==1) c=0;
agar(cmin=c;
}
p1=min;
ikki barobar S=0;
uchun(k=1;k{
S=S+pow(x[k],Fakt(k+1)/(k+1));
}
p2=S;
printf("%f %f",p1,p2);
qaytish p1+p2;
}
//------------------------------------------------ -
void Get1X(ikki marta *x, juft *x1, int n)
{
for(int i=0;ix1[i]=1,0/x[i];
}
//------------------------------------------------ -
void GetD(double **a, double *d, int n)
{
for(int i=0;id[i]=1,0/a[i][i];
}
//------------------------------------------------ -
void main()
{
clrscr();
juft **a,**razn,*x,*x1,**a2,**At,rmo,*d,*nv;
FILE *fo=fopen("d:/res.txt", "w");;
int n _
printf ("O'lchamni kiriting n =");
scanf("%d",&n);
a=GetMemoryMatr(n);razn=GetMemoryMatr(n);
a2=GetMemoryMatr(n);At=GetMemoryMatr(n);
nv=GetMemoryVect(n);x=GetMemoryVect(n);x1=GetMemoryVect(n);
d=GetMemoryVect(n);d=GetMemoryVect(n);
fprintf ( fo ,"Matrisa A:\ n \ n ");
form_matr(a,n);
print_matr(a,n,fo);
//II qism
fprintf(fo,"\n Vektor X:\n\n");
form_vect(x, a, n);
print_vect(x,n,fo);
Get1X(x,x1,n);
fprintf(fo,"\n\n Vektor 1/X:\n\n");
print_vect(x1,n,fo);
GetD(a,d,n);
fprintf(fo,"\n\n 1- ustun /D:\n\n");
print_vect(d,n,fo);
// III qism
Transpon(At, a, n);
fprintf ( fo ,"\ n \ n Ko'chirilgan matritsa: A \ n ");
print_matr(at,n,fo);
razn_matr(Ot, a, razn, n);
fprintf ( fo ,"\ n \ n Transpozitsiya va original matritsaning farqi:\ n \ n ");
print_matr(razn,n,fo);
sqrM ( a 2, razn , n );
fprintf ( fo ,"\ n Qabul qilingan farq kvadrati:\ n \ n ");
print_matr(a2,n,fo);
umnozh_vm(a2,x1,nv,n);
fprintf ( fo ,"\ n 1/ X vektorni kvadrat 2 farqiga ko'paytirish:\ n \ n ");
print_vect(nv,n,fo);
rmo=umnozh_sst(nv,d,n);
fprintf ( fo ,"\ n \ n Matritsa amallari natijasi (doimiy): % f \ n \ n ", rmo );
doubleY=GetY(a,x,n);
fprintf ( fo ,"\ n \ n Murakkab o'zgarishlar natijasi:\ n \ nY = % f ", Y );
FreeMemoryMatr(a,n);FreeMemoryMatr(razn,n);
FreeMemoryMatr(a2,n);FreeMemoryMatr(At,n);
FreeMemVect(x);FreeMemVect(x1);
FreeMemVect(nv);FreeMemVect(d);
getchar (); getchar ();
fcloseall ();
}

4 . NAZORAT KO'RSATI


Biz barcha hisob-kitoblarni MathC ad 'e da amalga oshiramiz.

















,










n = 2 o'lchamli faylga dastur nima chiqaradi :


A matritsasi:
0,22756 -0,95023
-1,02825 -1,50060
Vektor X:
-1,02825 -0,95023
Vektor 1/X:
-0,97253 -1,05238
Vektor 1/D:
4,39445 -0,66640
Transpozitsiyalangan matritsa: A
0,22756 -1,02825
-0,95023 -1,50060
Transpon farqi. va asl matritsa:
0,00000 -0,07802
0,07802 0,00000
Olingan farqning kvadrati:
-0,00609 0,00000
0,00000 -0,00609
1/X vektorini kvadrat 2 farqiga ko'paytirish:
0,00592 0,00641
Matritsa amallari natijasi (doimiy): 0,021746
Murakkab o'zgarishlar natijasi:
Y = -0,950225
Ko'rib turganingizdek, dastur barcha amallarni to'g'ri bajardi, bu qo'lda hisoblash bilan tasdiqlanadi.

XULOSA



Bajarilgan kurs ishi natijasida quyidagi xulosaga kelish mumkin: ba'zi muhandislik muammolarini hal qila oladigan to'g'ri ishlaydigan dastur ishlab chiqilgan.
Allbest.ru saytida joylashgan
Download 199.01 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling