2-ma’ruza. Mavzu: Chiziqli algoritmlar. Sikllar. Integrallarni taqribiy hisoblash usullari, samaradorligi. Matrisalarni ko’paytirish. Determinantni hisoblash. Reja Takrorlanish operatorlari
Integrallarni taqribiy hisoblash algoritmlari
Matritsalarni ko’paytirish
(Kalit so’zlar: Sikllar, Integrallarni hisoblash, to’g’ri to’rtburchaklar usuli, trapetsiya usuli, Simpson usuli, matritsalarni ko’paytirish, determinantlar) Integrallarni sonli yechish Aniq integrallarning qiymatini taqribiy hisoblashning trapesiya va
Simpson formulalari yordamida sonli natijalar olish va dastur tuzish.
Quyidagi
integralni to’g’ri to’rtburchaklar formulasidan foydalanib taqribiy hisoblansin.
.
To’g’ri to’rtburchaklar formulasi. Bu formulani keltirib chiqarish uchun dastlab kesmani nuqtalar bilan n ta teng bo’lakka bo’lamiz.
Buning uchun integrallash kesmasini ta bo’lakka bo’lamiz va hisoblashlar natijalarini keltiramiz:
Bizning misolda bo’lgani uchun, to’g’ri to’rtburchaklar formulasiga asosan, quyidagi natijani hosil qilamiz.
X=0.1; =0.9901
X=0.2; =0.9615
X=0.3; =0.9174
X=0.4; =0.8621
X=1.0 =0.5000
7.5998
.
Dastur kodi
#include #include using namespace std; double funk(double x) { return (1.0/(1+x*x)); } int main() { double a,b,S=0, xa; int n=10; cout<<"integral chegarasini kiriting"< cin>>a>>b; xa=a+0.1; while (xa { S+=funk(xa); xa+=0.1; } S=S*fabs(b-a)/n; cout << S; return 0; } 2. integralni trapetsiyalar formulasi yordamida taqribiy hisoblang. Bunda ham
deb oling.
Yechish: va
Dastur kodi
#include #include using namespace std; double funk(double x) { return (1.0/(1+x*x)); } int main() { double a,b,S=0, xa; int n=10; cout<<"integral chegarasini kiriting"< cin>>a>>b; xa=a+0.1; while (xa { S+=funk(xa); xa+=0.1; } S=(a+b)/2+S; S=S*fabs(b-a)/n; cout << S; return 0; }
3. integralni Simpson formulasi yordamida taqribiy hisoblansin. Bunda deb oling.
Topilgan bu qiymatlarni
Simpson formulasiga qo’yamiz:
Bizda bo’lgani uchun . Demak,
Matritsalarni ko’paytirish algoritmi Matritsa-matritsani ko'paytirish muammosi munosabatlar bilan belgilanadi
.
masala. Ikkita matritsa berilgan. Ularning ko’paytmasini toppish algoritmi va dasturini tuzing.
Dastur kodi. #include using namespace std;//ulchamlari bir xil bulgan matritsalar uchun int main() { int a[10][10],b[10][10],c[10][10],r,d,i,j,k; cout<<"satrlar soni="; cin>>r; cout<<"ustunlar soni="; cin>>d; cout<<"matritsa elementlarini kiriting=\n"; for(i=1;i<=r;i++) { for(j=1;j<=d;j++) { cin>>a[i][j];} } cout<<"ikkinchi matritsa elementlarini kiriting=\n"; for(i=1;i<=r;i++) { for(j=1;j<=d;j++) cin>>b[i][j];} for(i=1;i<=r;i++) { for(j=1;j<=d;j++) { c[i][j]=0; for(k=1;k<=d;k++) { c[i][j]+=a[i][k]*b[k][j]; } } } //natijani chop qilish for(i=1;i<=r;i++) { for(j=1;j<=d;j++) { cout< } cout<<"\n"; } return 0; }
Bu algoritm O(n3) murakkablik bilan baholanadi. Chunki, algoritmda 3 ta ichma-ich sikl operatoridan foydalanilgan.