Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
BulgaraCeha slovacaCroataEnglezaEstonaFinlandezaFranceza
GermanaItalianaLetonaLituanianaMaghiaraOlandezaPoloneza
SarbaSlovenaSpaniolaSuedezaTurcaUcraineana

çkaìeogrâfijaíîmijaBioloìijaBiznessDažâdiEkoloìijaEkonomiku
FiziskâsGrâmatvedîbaInformâcijaIzklaideLiteratûraMâkslaMârketingsMatemâtika
MedicînaPolitikaPsiholoìijaReceptesSocioloìijaSportaTûrismsTehnika
TiesîbasTirdzniecîbaVçstureVadîba

Linearu algebrisku vienadojumu sistçmu atrisinašana ar iteraciju metodçm

matemâtika



+ Font mai mare | - Font mai mic



DOCUMENTE SIMILARE

Rçzeknes augstskola

Inženieru fakultate

Datorzinatòu un matematikas katedra



SKAITLISKAS METODES

Praktiskais darbs Nr.

Linearu algebrisku vienadojumu sistçmu atrisinašana ar iteraciju metodçm

1. Darba uzdevums

Atrisinat linearu algebrisku vienadojumu sistçmu ar vienkaršo iteraciju metodi ar precizitati 10-5. Sakòu noteikšanu katra iteracija noformçt ka funkciju. Izvadît iegûto rezultatu (sakòu vçrtîbas), sasniegto precizitati un iteraciju skaitu, kas bija nepieciešams precizitates sasniegšanai, ka arî katra iteracija tas numuru, iegûtos rezultatus un sasniegto precizitati.

Dots:

Vienadojumu koeficientu matrica A

Brîvo locekïu vektors C

Iteraciju metode

Papildnosacîjumi

Vienkaršo iteraciju metode

Sakòu noteikšanu katra iteracija noformçt ka funkciju

2. Uzdevuma matematiskais apraksts

Dota linearu algebrisku vienadojumu sistçma no formas

japarveido normalveida. Jaizveido vienadojumam atbilstoša alfa matrica (programma tiek realizçta ka 2-dimensiju masîvs):

un beta vektors

Aprçíinatas sakòu vçrtîbas ir x vektors:

Sakotnçji X vektora elementiem ir nullto tuvinajumu – beta vektora elementu – vçrtîbas, t. i. X=β.

Iteraciju procesa laika tiek aprçíinatas jaunas X vektora vçrtîbas, kas atbilst pašreizçjai k-tajai iteracijai:

, kur i ir X vektora elementa indekss ( 0<i<5).

Jaunas X vektora elementu vçrtîbas katras iteracijas beigas tiek salîdzinatas ar iepriekšçjam X vçrtîbam un tiek aprçíinata iegûta precizitate s:


Ja iegûta s vçrtîba ir lielaka par vajadzîgo precizitati, tad iteraciju process turpinas, pretçja gadîjuma tas tiek pabeigts.

Pçc iteracijas procesa beigam X vektors satur vienadojumu sistçmas atrisinajumu ar aprçíinato precizitati s.

!Meiranam nepatika matematiskais apraksts. Viòš grib, lai bûtu viss, îsi un skaidri jebkuram programmçtajam, pa punktiem.

 
3. Algoritma blokshçma


1.shçma

Te teica, ka funkcija nepareiza, jo kkas tur ir kas nav prasîts uzdevuma nosacîjumos, liidz ar to arii programmas kodaa javeic izmainas.

 

Šo vins teica, ka vajadzçtu ievietot kkur augstaak, vai kkaa apvienot, es nezinu, jo tur notiek tas pats kas input aij

 

Šeit viòam nebija skaidrs, kas notiek 13,14,15,16,17 bloka un ka log10e taa neapzîmç. Taa dalja vispar ir vajadzîga?

 
2.shçma 4. Algoritma blokshçmas apraksts


1.shçma ir shçma funkcijai, kura nosaka saknes katra iteracija.

Bloks 2 uzstada iteracijas precizitati, sakuma ta ir 0. Bloki 3, 11, 12 realizç ciklu ar cikla vadîbas skaitîtaju i. Bloks 4 piešíir pašreizçjas iteracijas sakòu vektora elementiem beta vektora vçrtîbas. Bloki 5, 7, 8 veido iekïautu ciklu ar vadîbas mainîgo j. Bloks 6 pabeidz pašreizçjas iteracijas sakòu aprçíinu, pieskaitot alfa matricas elementu reizinajumus ar iepriekšçjo iteraciju sakòu vektora elementiem. Bloks 9 izvada pašreizçja iteracija iegûtas saknes. Bloks 10 sak un bloks 13 pabeidz aprçíinat pašreizçjas iteracijas precizitati. Bloki 14, 16, 17 realizç ciklu ar cikla vadîbas skaitîtaju i; cikla iekšpusç bloka 15 pašreizçja iteracija iegûtas saknes tiek saglabatas X vektora. Bloks 18 atgriež funkcijas mekle_saknes rezultatu - pašreizçjas iteracijas precizitati.

2.shçma ir visas programma shçma.

Bloki 1, 6, 7 realizç ciklu ar cikla vadîbas skaitîtaju i. Bloki 2,4, 5 veido iekïautu ciklu ar vadîbas mainîgo j. Iekïautaja cikla lietotajam jaievada vienadojumu sistçmas koeficienti (divdimensiju masîvs a).

Bloki 8, 10, 11 veido ciklu ar cikla vadîbas skaitîtaju i; šaja cikla lietotajam jaievada vienadojumu sistçmas brîvie locekïi (vektors c).

Bloka 12 lietotajs ievada precizitati, kas jasasniedz, rçíinot saknes. Bloks 13 aprçíina, cik ciparu aiz komata jalieto datu izvadç, lietojot decimallogaritma operaciju. Ja show_precis < 0 (bloks 14), tas nozîmç, ka vajag uzstadît noformçšanas precizitati ar (-1)*show_precis cipariem aiz komata (bloks 15), pretçja gadîjuma izvades precizitate tiek pieòemta par 0 – lîdz veseliem skaitïiem (bloks 16).

Bloks 17 uzstada izvçlçto izvades precizitati, ja šadu iespçju nodrošina attiecîga programmçšanas valoda, kura tiks realizçts algoritms.

Bloki 18, 27, 28 realizç ciklu ar cikla vadîbas skaitîtaju i. Bloki 19, 22, 23 veido iekïautu ciklu ar vadîbas mainîgo j. Bloks 20 parbauda, vai iekšçja cikla apskatamais a matricas elements neatrodas uz matricas diagonales, ja nç – tad bloka 21 elements tiek parveidots par tam atbilstošu vienadojumu sistçmas normalveida alfa matricas elementu. Bloki 24, 25, 26 parveido brîvo locekïu vektoru c par vienadojumu sistçmas normalveida beta vektoru, piešíir a (alfa) matricas diagonales elementiem nulles vçrtîbas un piešíir sakòu vektora x elementiem nullto tuvinajumu – beta vektora elementu vçrtîbas.

Bloks 29 uzstada iteraciju skaitîtaju k. Iteraciju process tiek kontrolçts cikla, kas ietver blokus 30, 31, 32, 33, 34. Bloks 30 uzskaita pašreizçjo iteraciju, bloks 31 izvada iteracijas numuru. Bloks 32 izsauc iepriekš aprakstîto funkciju mekle_saknes un iegûst iteracijas precizitati s, ko izvada bloka 33. Bloks 34 salîdzina iegûto precizitati s ar nepieciešamo un, ja precizitate ir pietiekama, beidz iteraciju procesu.

Bloks 35 izvada iteraciju skaitu un sasniegto precizitati. Bloki 36, 38, 39 realizç ciklu ar cikla vadîbas skaitîtaju i, bloka 37 tiek izvadîtas iegûtas saknes.

5. Programma

#include<iostream.h>

#include<conio.h>

#include<math.h>

#include<iomanip.h>

//sakòu meklçšanas funkcija, kas atgriež iteracija sasniegto

//precizitati un saglaba rezultatus mainîgaja 'iter_vektors'

float mekle_saknes(float alfa[4][4], float beta[], float iter_vektors[])

//aprçíinu iteracijas precizitati

it_preciz=sqrt(it_preciz);

//saglabaju iteracijas rezultatu

for(i=0;i<4;i++)

iter_vektors[i]=x_it[i];

return it_preciz;

void main()

cout << 'Ievadiet vienadojumu sistçmas brîvos locekïus:n';

for(i=0;i<4;i++)

cout << 'Ievadiet nepieciešamo precizitati:n';

cin >> vaj_prec;

//izvades precizitates aprçíins

int out_prec=log10(vaj_prec);

if(out_prec<0)

//vajag ciparus aiz komata

out_prec=-out_prec;

else

//tikai veselus skaitïus

out_prec=0;

//noformçju izvadu

cout << setprecision(out_prec) << fixed;

//dota sistçma tiek parveidota normalveida

//iegûta alfa matrica tiek saglabata masîva koef,

//beta vektors - masîva brivie

for(i=0;i<4;i++)

//uzstadu iteraciju skaitîtaju

unsigned int it_skaits=0;

//katra iteracija iegûta precizitate

float preciz;

//sakas iteraciju process, kas turpinas,

//kamçr nav sasniegta vajadzîga precizitate.

//katra iteracija uzskaitu iteraciju

//un izsaucu sakòu meklçšanas funkciju

do

while(preciz>vaj_prec);

//iteraciju process pabeigts, izvadu rezultatus

cout << 'nn-------- ----- ------ -----------n';

cout << 'nTika veiktas '<< it_skaits << ' iteracijas un sasniegta precizitate '

<< preciz << 'nIegûtas saknes ir: ';

for(i=0;i<4;i++)

cout << 'nx' << i+1 << '=' << x[i];

cout << 'nnProgramma beigusi darbu, spiediet jebkuru taustiòu, lai aizvçrtu šo logu';

getch();

6. Kontrolpiemçrs

Atrisinajums „ar roku”:

A

C

Vajadzîga precizitate:

alfa

beta

x(0)

Iteracija Nr.

x1

x2

x3

x4

Precizitate

Salîdzinajums

>0,01

>0,01

>0,01

>0,01

<0,01

Aprçíinu piemçrs (3.iteracija):

x1=

x2=

x3=

x4=

Precizitate=(( 0,0480

Programmas darbîbas rezultats kontrolpiemçram:

Iteracijas nr. 1 rezultats:

x1=2.84 x2=1.12 x3=1.12 x4=2.05

sasniegta precizitate 1.22

Iteracijas nr. 2 rezultats:

x1=2.96 x2=1.05 x3=1.05 x4=1.98

sasniegta precizitate 0.18

Iteracijas nr. 3 rezultats:

x1=2.99 x2=1.02 x3=1.02 x4=2.00

sasniegta precizitate 0.05

Iteracijas nr. 4 rezultats:

x1=3.00 x2=1.01 x3=1.01 x4=2.00

sasniegta precizitate 0.02

Iteracijas nr. 5 rezultats:

x1=3.00 x2=1.00 x3=1.00 x4=2.00

sasniegta precizitate 0.01

Tika veiktas 5 iteracijas un sasniegta precizitate 0.01

Iegutas saknes ir:

x1=3.00

x2=1.00

x3=1.00

x4=2.00

7. Iegûtais rezultats

Iteracijas nr. 1 rezultats:

x1=3.33958 x2=3.78536 x3=-3.00197 x4=3.54336

sasniegta precizitate 1.40974

Iteracijas nr. 2 rezultats:

x1=2.98287 x2=3.89350 x3=-2.90004 x4=3.25504

sasniegta precizitate 0.48213

Iteracijas nr. 3 rezultats:

x1=2.86481 x2=3.80312 x3=-2.88752 x4=3.27755

sasniegta precizitate 0.15089

Iteracijas nr. 4 rezultats:

x1=2.89159 x2=3.79229 x3=-2.89984 x4=3.30289

sasniegta precizitate 0.04036

Iteracijas nr. 5 rezultats:

x1=2.90266 x2=3.79940 x3=-2.90104 x4=3.30204

sasniegta precizitate 0.01323

Iteracijas nr. 6 rezultats:

x1=2.90083 x2=3.80064 x3=-2.90006 x4=3.29984

sasniegta precizitate 0.00327

Iteracijas nr. 7 rezultats:

x1=2.89981 x2=3.80008 x3=-2.89991 x4=3.29982

sasniegta precizitate 0.00117

Iteracijas nr. 8 rezultats:

x1=2.89992 x2=3.79995 x3=-2.89999 x4=3.30001

sasniegta precizitate 0.00027

Iteracijas nr. 9 rezultats:

x1=2.90001 x2=3.79999 x3=-2.90001 x4=3.30002

sasniegta precizitate 0.00010

Iteracijas nr. 10 rezultats:

x1=2.90001 x2=3.80000 x3=-2.90000 x4=3.30000

sasniegta precizitate 0.00002

Iteracijas nr. 11 rezultats:

x1=2.90000 x2=3.80000 x3=-2.90000 x4=3.30000

sasniegta precizitate 0.00001

Tika veiktas 11 iteracijas un sasniegta precizitate 0.00001

Iegutas saknes ir:

x1=2.90000

x2=3.80000

x3=-2.90000

x4=3.30000

8. Secinajumi

Tatad, dotas linearas vienadojumu sistçmas atrisinajums ar precizitati 10-5 ir X=( 2,90000; 3,80000; -2,90000; 3,30000)

Uzdevuma izpildes laika guvu algoritma izveides un programmçšanas iemaòas linearu algebrisku vienadojumu sistçmu atrisinašanai ar vienkaršo iteraciju metodi.

Par kontrolpiemçru tika izvçlçta vienadojumu sistçmu ar veseliem koeficientiem un aprçíini tika veikti ar nelielu precizitati. Rçíinot šo kontrolpiemçru “ar roku” un pçc tam ar programmas palîdzîbu, rezultati sakrita. Tapçc var uzskatît, ka programma darbojas pareizi un dod uzticamus rezultatus. Ievietojot iegûtos rezultatus dotaja vienadojumu sistçma, tie bija pareizi.

Programmu varçtu uzlabot, paredzot kïûdu kontroli datu ievadç (pašlaik programma ievadot kïûdainus datus, tas darbîba noved pie uzkaršanas).



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2726
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2025 . All rights reserved