MATLAB дээр програмчлал. Matlab дахь жишээнүүд байхад Matlab Loop хэллэг дэх алгоритмын мэдэгдлүүд

Тэнхим: Мэдээллийн технологи

ХӨТӨЛБӨРЧИЛЖ БАЙНАMATLAB


ОператоруудMATLAB

· Давталтын мэдэгдлүүд

Циклтөлөө

Синтакс

тоо = эхлэл: алхам: эцсийн

MATLAB командууд

Тодорхойлолт

тоолох - давталтын хувьсагч,

эхлэл нь түүний анхны утга,

эцсийн үнэ цэнэ нь

алхам - гогцоонд орох бүрт тоо нэмэгдэх алхам

Тооллогын утга эцсийнхээс их болмогц давталт дуусна.

Жишээ

Параметрээс хамааран функцээр өгөгдсөн x€ -ийн муруйн бүлгийг гаргаж авах шаардлагатай.

y (x, a) \u003d e-ax sin x,

параметрийн утгын хувьд -0.1-ээс 0.1 хүртэл. Муруйн бүлгийг гаргах файлын програмын жагсаалтыг доор харуулав.

Програмын жагсаалт

x = ;

хувьд = -0.1: 0.02: 0.1

y = exp(-a*x).*sin(x);

Хөтөлбөрийн гүйцэтгэлийн үр дүнд шаардлагатай муруйн бүлгийг агуулсан график цонх гарч ирнэ.

Циклбайхад

Синтакс

while давталтын нөхцөл

MATLAB командууд

Тодорхойлолт

Давталтын (үнэн) нөхцөл үнэн бол гогцоо ажиллана. Циклийг гүйцэтгэх нөхцөлийг тогтоохын тулд дараах харилцааны үйлдлүүдийг зөвшөөрнө.

Логик операторуудыг ашиглан илүү төвөгтэй нөхцөлүүдийг тодорхойлдог. Логик операторуудыг дараах хүснэгтэд үзүүлэв


Жишээ

Салбарын операторууд

Нөхцөлт операторхэрэв

Синтакс

нөхцөл бол

MATLAB командууд

Тодорхойлолт

Хэрэв нөхцөл үнэн бол if болон төгсгөлийн хооронд байрлуулсан MATLAB командууд биелэгдэх ба хэрэв нөхцөл үнэн биш бол төгсгөлийн дараа байрлах командууд руу шилжинэ.

Жишээ

Нөхцөлт операторөөр бол

Синтакс

хэрэв нөхцөл 1

elseif нөхцөл 2

………………………

elseif нөхцөл

Тодорхойлолт

Нэг буюу өөр нөхцлийн биелэлтээс хамааран програмын харгалзах салбар ажилладаг бөгөөд хэрэв бүх нөхцөл буруу байвал бусад нөхцлийн дараа байрлуулсан тушаалуудыг гүйцэтгэдэг.

Жишээ

Операторсолих

Синтакс

солих хувьсагч

тохиолдлын утга1

тохиолдлын утга2

……………………

хэргийг үнэлдэг


Салбар бүр нь кейсийн мэдэгдлээр тодорхойлогддог бөгөөд шилжүүлэгчийн хувьсагч нь тохиолдлын дараа заасан утгыг эсвэл кейсийн жагсаалтаас аль нэг утгыг авах үед түүнд шилжих шилжилт хийгддэг. Аль нэг салбарыг ажиллуулсны дараа унтраалга гарах бөгөөд бусад тохиолдолд заасан утгуудыг шалгахаа больсон. Хэрэв хувьсагчийн тохирох утга байхгүй бол өөрт тохирох програмын салбарыг ажиллуулна.

Жишээ

Давталтын тасалдал. Онцгой нөхцөл байдал.

Операторзавсарлага

Синтакс

Цикл тооцооллыг зохион байгуулахад break хэллэгийг ашигладаг: for...end, while...end. Нөхцөл байдал хэзээ

нөхцөл бол

break хэллэг нь давталтыг дуусгадаг (for or while) ба төгсгөлийн дараах мөрөнд байрлах хэллэгүүд биелэгддэг. Үүрлэсэн гогцоонуудын хувьд break нь дотоод гогцооноос гарна.

Онцгой байдлын зохицуулалт, Операторхичээбарих

Синтакс

гүйцэтгэлийн мэдэгдлүүд

алдаа гарч болзошгүй

гүйцэтгэх мэдэгдлүүд

блокт алдаа гарах үед

оролдох, барих хооронд

Тодорхойлолт

try...catch бүтэц нь онцгой тохиолдлуудыг (програмыг зогсооход хүргэдэг алдаа, жишээлбэл, байхгүй файлд хандах) давж гарах боломжийг олгодог бөгөөд хэрэв тэдгээр нь тохиолдвол ямар нэгэн арга хэмжээ авах боломжтой.

Жишээ

Үйлчилгээний функцууд

dispкомандын цонхонд хувьсагчийн текст эсвэл утгыг харуулна

оролт- гарнаас оруулах хүсэлт. Командын мөрийн интерфэйс бүхий програмуудыг үүсгэх үед ашигладаг.

үнэлэх MATLAB командууд шиг мөр эсвэл мөр хувьсагчийн агуулгыг гүйцэтгэдэг

тодорхой- Ажлын орчны хувьсагчдыг арилгана.

-тайlc- командын цонхыг арилгана

Илүү дэлгэрэнгүй мэдээлэлТа эдгээр болон бусад функцуудын талаар эндээс мэдэж болно тушаалын мөр

Туслаачфункцийн нэр


Лабораторийн ажлын даалгавар

Тодорхой ажлын сонголтын тоог багш тодорхойлно.

Даалгаврын дугаар 1

Энэ даалгавар нь зарим багц өгөгдлийн хувьд n зэрэгтэй алгебрийн интерполяцийн олон гишүүнтийг олохыг хэлнэ. П н(x) .

Ажлын зорилго:

Алгебрийн интерполяцийн олон гишүүнтийн коэффициентийг тооцоолох програм бичих шаардлагатай. П н(x)= а 0 + а 1 x+ … + a n x n.

Арга зүйн заавар:

0 1 2 3

Xби

1,2 1,4 1,6 1,8
8,3893 8,6251 8,9286 8,9703

Магадлал а 0 , а 1 , …, a nтэгшитгэлийн системийн шийдлээр тодорхойлогддог.

Энд nинтерполяцийн олон гишүүнтийн дараалал,

n+1 өгөгдсөн хос онооны тоо ( x, y),

а 0 , а 1 ,… a nолон гишүүнтийн хүссэн коэффициентүүд юм П н(x)= а 0 + а 1 x+ … + a n x n).

Хөтөлбөрийн шаардлага

Шугамын хил хязгаарыг тогтоох , үүн дээр интерполяцийн олон гишүүнт баригдсан P(x)

· Асуу nинтерполяцийн сегментийн тоо (эсвэл олон гишүүнтийн зэрэг)

Жич: x0, xn, nгарнаас оруулсан.

· Анхны мэдээллийг олж авах (х, у)(хос онооны тоо (x i, y i), үүн дээр интерполяцийн олон гишүүнт байгуулагдсан P(x)n1=n+1) өгөх:

ü Санамсаргүй байдлаар байрлуулсан зангилааг оруулна уу x i, i=0, nгарнаас

ü Зангилааны тооцоо x i , i=0, n,аргументийн нэгэн жигд зохион байгуулалтад тохирсон xсегмент дээр

ü Догол мөрөнд. 1.2 утгууд y i , i=0, nэсвэл гараас оруулсан (хэрэв анхны функц нь тодорхойгүй бол), эсвэл өгөгдсөн функцээс тооцоолно f(x). Функцийг тодорхойлсон илэрхийлэлийг гараас оруулсан бөгөөд MATLAB дээр илэрхийлэл бичих дүрмийг дагаж мөрдөх ёстой

ü Өгөгдөл оруулах ( x i, y i, i=0, n) файлаас

P(x) олон гишүүнтийн коэффициентийг тодорхойлох тэгшитгэлийн системийг шийд.

Анхны хүснэгтийн функц ба P(x) олон гишүүнтийн графикийг бүтээх

· Анхны өгөгдөл нь f(x) функцээр өгөгдсөн бол интерполяцийн алдааг /f(x) – P(x)/ графикаар зур. Өгөгдсөн интерполяцийн алдааны модулийн хамгийн их утгыг тооцоол.


Даалгаврын дугаар 2

Сплайн интерполяци

Ажлын зорилго:

3-р эрэмбийн S олон гишүүнт хэсгүүдээс "наасан" S(x) сплайн функцийг байгуулах, коэффициентийг тооцоолох программыг бий болгох шаардлагатай. би(x), тусгай тэмдэглэгээтэй:

S функц би(x) сегмент дээр тодорхойлсон

Хөтөлбөрийн шаардлага

Энэ ажлыг гүйцэтгэхдээ та дараахь зүйлийг хийх ёстой.

S(x) сплайн функц баригдсан сегментийн хил хязгаарыг тогтоо

· Specify n – интерполяцийн сегментийн тоо, тэдгээр нь тус бүр дээр Si(x) куб олон гишүүнт байгуулагдана.

· Жич: x0, xn, n-г гарнаас оруулна.

Анхдагч өгөгдлийн (x, y) оролтыг зохион байгуул (s(x), n1=n+1) сплайн функцийг бүтээсэн хос цэгийн тоо (xi, yi), дараахь зүйлийг хангана.

ü Дурын байрлалтай xi, i=0, n зангилаануудыг гараас оруулах

ü Аргументын х сегмент дээрх нэгэн жигд зохион байгуулалтад харгалзах xi, i=0, n зангилааны тооцоо

ü Догол мөрөнд. 1,2 yi, i=0, n утгуудыг гараас оруулах (хэрэв анхны функц тодорхойгүй бол) эсвэл өгөгдсөн f(x) функцээс тооцоолно. Функцийг тодорхойлсон илэрхийлэлийг гараас оруулсан бөгөөд MATLAB дээр илэрхийлэл бичих дүрмийг дагаж мөрдөх ёстой

ü Файлаас өгөгдөл оруулах (xi, yi, i=0, n).

ü S1""(x0)=0, S3""(x3)=0

ü S1"(x0)=f "(x0), S3"(x3)=f "(x3)

ü S1""(x0)=f "(x0), S3""(x0)=f "(x3)

Байгалийн куб сплайны коэффициентийг (1-р хилийн нөхцөл) тодорхойлохын тулд дараахь тэгшитгэлийн системийг шийдэх шаардлагатай.

Коэффициент σ 0 =0, σ n =0

· Гурван төрлийн хилийн нөхцлийн анхны функц болон сплайн функцийн графикийг зур.

· Бүх гурван төрлийн хилийн нөхцлийн f(x) – S(x) сплайн интерполяцийн алдааны функцүүдийн графикийг байгуул.

Жич:

MATLAB багцад нэг хэмжээст ба хоёр хэмжээст массив 0 биш 1-ээс эхэлнэ. Програмаа бичихдээ үүнийг анхаарч үзээрэй.


Даалгаврын дугаар 3

Хамгийн бага квадратын аргаар (LSM) функцийг ойртуулах.

Энэ даалгавар нь зарим өгөгдлийн багцад хамгийн бага квадратын аргаар (LSM) бүтээгдсэн ойролцоолсон функцийг (m-ийн олон гишүүнт) олохыг хэлнэ.

Ажлын зорилго:

Олон гишүүнт φ-ийн коэффициентийг олох программ бичих шаардлагатай (x)= а 0 + а 1 * x+… a n * х мхамгийн бага квадратын аргаар.

Жишээлбэл, бидэнд дараах өгөгдлийн багц байгаа болно.

Xби

1,2 1,4 1,6 1,8 2,0 2,2 2,4 2,6 2,8 3,0
8,3893 8,6251 8,9286 8,9703 9,1731 9,1784 8,8424 8,7145 8,3077 7,9611

Шаардлагатай коэффициентийг хайх ажлыг дараах байдлаар гүйцэтгэнэ.

Хаана n - онооны хэмжээ ( x, y),

м нь хүссэн олон гишүүнтийн зэрэг,

а 0 , а 1 , …, а м Хүссэн коэффициентүүд ( φ ( x )= а 0 + а 1 x + … + м х м ).

Хөтөлбөрийн шаардлага

Энэ ажлыг гүйцэтгэхдээ та дараахь зүйлийг хийх ёстой.

Ойролцоох функц баригдсан сегментийн хил хязгаарыг тогтооно φ(x)=a0+a1*x+… an * xm

Set m - олон гишүүнтийн зэрэг

· Жич: x1, xn, m-г гарнаас оруулна.

Ойролцоо φ(x)=a0+a1*x+… an* x m функцийг барьсан анхны өгөгдлийг (x, y) авахын тулд:

ü xi, i=1, n дурын зангилаануудыг гарнаас оруулах

ü Аргументын х сегмент дээрх жигд зохион байгуулалтад харгалзах xi, i=1, n зангилааны тооцоо

ü Догол мөрөнд. 1,2 yi, i=1, n утгуудыг гараас оруулах (хэрэв анхны функц тодорхойгүй бол) эсвэл өгөгдсөн f(x) функцээс тооцоолно. Функцийг тодорхойлсон илэрхийлэлийг гараас оруулсан бөгөөд MATLAB дээр илэрхийлэл бичих дүрмийг дагаж мөрдөх ёстой

ü Файлаас өгөгдөл (xi, yi, i=1, n) оруулах

φ(x) олон гишүүнтийн коэффициентийг тодорхойлох тэгшитгэлийн системийг шийд.

Анхны хүснэгтийн өгөгдсөн функц болон олон гишүүнт φ(x)-ийн графикийг бүтээх

· Анхны өгөгдлийг f(x) функцээр өгсөн бол интерполяцийн алдааг /f(x) – φ(x)/ графикаар зур. Өгөгдсөн интерполяцийн алдааны модулийн хамгийн их утгыг тооцоол.

Сегмент дээрх сүүлчийн зүйлийг гүйцэтгэх үед Тооцооллын хувьд дор хаяж 500 оноо авна


Лабораторийн ажлын зураг төсөлд тавигдах шаардлага

Тайлан нь дараахь зүйлийг агуулсан байх ёстой.

1. Асуудлын тухай мэдэгдэл

2. Програмын текст

3. Туршилтын үр дүн

Тэмдэглэл Хөтөлбөрийн текстийг тайлбарын хамт өгөх ёстой.


1. Ануфриев И.Е. Matlab 5.3 / 6.x заавар - Санкт-Петербург: BHV-Петербург, 2003. - 736 х: өвчтэй.

2. V.P. Dyakonov MATLAB 6.5 SPI/7 + Simulink 5/6 математик, загварчлал. "Мэргэжлийн номын сан" цуврал. - М.: SOLON-Press, 2005. - 576 х.: өвчтэй.

3. Ануфриев И.Е., Смирнов А.Б., Смирнова Е.Н. MathLab 7. - Санкт-Петербург: BHV-Петербург, 2005. - 1104 х: өвчтэй.

Ихэнхдээ гогцоо зохион байгуулахдаа өгөгдсөн утгын хүрээнд, өгөгдсөн өөрчлөлтийн алхамаар тоолуурын утгыг давтах шаардлагатай байдаг. Жишээлбэл, векторын (массив) элементүүдийг давтахын тулд та 1-ээс N хүртэлх тоологчийг 1-ийн алхамтай зохион байгуулах хэрэгтэй бөгөөд N нь векторын элементийн тоо юм. Цувралын нийлбэрийг тооцоолохын тулд a-аас b хүртэлх тоолуурыг шаардлагатай алхамын өөрчлөлтийн алхамаар зааж өгсөн болно. гэх мэт. Програмчлалын практикт ийм даалгаврууд ихэвчлэн тулгардаг тул тэдгээрийг хэрэгжүүлэхэд зориулж тусдаа for loop операторыг санал болгосон бөгөөд энэ нь тоолууртай давталтыг хэрэгжүүлэхэд хялбар бөгөөд илүү харагдахуйц болгодог.

for loop хэллэгийн синтакс дараах байдалтай байна.

төлөө<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
Төгсгөл

Ажлыг анхаарч үзээрэй энэ мөчлөгвектор дахь элементийн хамгийн их утгыг олох алгоритмыг хэрэгжүүлэх жишээн дээр:

функц хайлтын_макс
a = ;
m = a(1); % одоогийн хамгийн их утга
for i=1:length(a) % давталт 1-ээс в векторын төгсгөл хүртэл
% алхам 1 (өгөгдмөл)
хэрэв м< a(i) % если a(i) >м,
m = a(i); % дараа нь m = a(i)
Төгсгөл
төгсгөл % for давталтын төгсгөл
disp(m);

Энэ жишээнд for гогцоо i тоолуурыг тохируулж, түүний утгыг 1-ээс 10 хүртэл 1-ийн өсөлтөөр өөрчилнө. Хэрэв өсөлтийг тодорхой заагаагүй бол анхдагчаар 1-тэй тэнцүү авна гэдгийг анхаарна уу.

Дараах жишээнд вектор элементүүдийг баруун тийш шилжүүлэх алгоритмын хэрэгжилтийг авч үзье. төгсгөлийн өмнөх элементийг сүүлчийнх нь оронд, дараагийнхыг эцсийн өмнөх элементийн оронд тавина гэх мэт. Эхний элемент рүү:

функцийн дараалал
a = ;
disp(a);
for i=length(a):-1:2 % гогцоо 10-аас 2 хүртэл -1 алхамтай
a(i)=a(i-1); векторын % шилжилтийн элементүүд a
төгсгөл % for давталтын төгсгөл
disp(a);

Хөтөлбөрийн үр дүн

3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1

Дээрх жишээнээс харахад том утгаас жижиг тоо руу шилжих циклийг хэрэгжүүлэхийн тулд та алхамыг тодорхой зааж өгөх ёстой, энэ тохиолдолд -1. Хэрэв энэ нь хийгдээгүй бол гогцоо тэр даруй ажлаа зогсоож, програм зөв ажиллахгүй болно.

Дүгнэж хэлэхэд, өөрчлөлтийн хуулиар санамсаргүй дарааллыг загварчлах жишээн дээр for давталтын операторын ажиллагааг авч үзье.

энд - 1-ээс 1 хүртэлх коэффициент; - 0 математикийн хүлээлт ба дисперстэй хэвийн санамсаргүй хэмжигдэхүүн

,

симуляцийн хэлбэлзэл хаана байна санамсаргүй үйл явц. Энэ тохиолдолд эхний түүврийг математикийн хүлээлт, дисперс нь тэгтэй хэвийн санамсаргүй хэмжигдэхүүн болгон загварчилсан болно. Симуляцийн програм нь дараах хэлбэртэй байна.

функцийн загварчлал_x
r = 0.95; % загварын коэффициент
N = 100; загварчилсан цэгийн % тоо
ex = 100; процессын хэлбэлзэл %
et = ex*(1-r^2); % санамсаргүй нэмэлт дисперс
x = тэг(N,1); % векторыг эхлүүлэх
x(1) = sqrt(ex)*randn; 1-р тооллын % симуляци
for i=2:N % гогцоо 2-оос N хүртэл
x(i)=r*x(i-1)+sqrt(et)*randn; % Simulation JV
төгсгөл % давталтын төгсгөл
талбай(x); SP-г график хэлбэрээр харуулах %

Энэ програмыг гүйцэтгэх үед дуурайлган санамсаргүй дарааллын хэрэгжилтийг харуулах болно.

Цагаан будаа. 2.1. Санамсаргүй дарааллыг загварчлах үр дүн.

Хөтөлбөрийн ажил нь хувьсагчийн тодорхойлолтоос эхэлдэг , (хөтөлбөрт байгаа хувьсагч) болон заасан загварыг хэрэгжүүлэх. Дараа нь зөрүүг тооцоолно мөн санамсаргүй үйл явцын эхний тоог randn функцийг ашиглан загварчилсан. Randn функц нь тэг дундаж ба нэгж дисперстэй хэвийн санамсаргүй хэмжигдэхүүнүүдийг үүсгэдэг. Вариацтай санамсаргүй хэмжигдэхүүнийг үүсгэхийн тулд нэгж дисперстэй санамсаргүй хэмжигдэхүүнийг үржүүлэхэд хангалттай, учир нь дисперс нь дундаж квадрат юм санамсаргүй хувьсагчматематикийн хүлээлтийн тухай. Үүний үр дүнд бид хөтөлбөрийн шугамтай болсон

x(1) = sqrt(ex)*randn;

Дараа нь for давталтыг 2-оос N хүртэлх i тоолуураар 1-ийн алхамтайгаар хэрэгжүүлнэ. Давталтын дотор санамсаргүй үйл явцын үлдсэн N-1 дээжийг дээрх томьёоны дагуу загварчилсан болно. Програмын сүүлийн мөрөнд plot() функц агуулагдсан бөгөөд энэ нь дэлгэцэн дээр загварчилсан дарааллыг график хэлбэрээр харуулдаг. Дэлгэц дээр график харуулах илүү нарийвчилсан ажлыг дараагийн бүлэгт авч үзэх болно.

Давталтын мэдэгдлүүд MATLAB-д давтагдах үйлдлүүд нь for болон while давталтын хэллэгүүдийг ашиглан хийгддэг. for-ийн хамгийн энгийн хэрэглээ нь дараах байдалтай байна: 2

Count = эхлэлийн хувьд: алхам: эцсийн MATLAB командууд Төгсгөл Энд count нь давталтын хувьсагч юм; n эхлэл, эцсийн - анхны болон эцсийн бодит үнэ цэнэ; n алхам - бодит тоонуудын багцаас алхам (анхдагч нь 1, үүнийг орхигдуулж болно). Цикл нь төгсгөл болох тусам дуусдаг. зөвхөн 3 тоолно

Жишээ 1 x= -1, 0, 1-ийн нийлбэрийг тооцоол. Шийдэл M файлын засварлагч дээр програмын файл үүсгэцгээе. Бид үүнийг Summa файлд хадгалдаг. m S = 0; k = 1-ийн хувьд: 10 S = S + x. ^ k / хүчин зүйл (k); Төгсгөл S Тушаалын мөрөнд x = -1:1:1; Нийлбэр S = -0. 6 0 1. 7 k, s хувьсагч глобал гэдгийг анхаарна уу. 4

Энэ жишээнд файлын функцийг ашиглах нь илүү тохиромжтой. M-файл засварлагч дээр командын мөрөнд S = funsum(x, N) > f = funsum (-1: 1, 10) S = 0 функцийн файлыг үүсгэнэ; > f = m = 1-ийн хувьд: N -0. 6 0 1. 7 S = S + x. ^ м / хүчин зүйл(м); төгсгөл Энд s, m хувьсагч нь орон нутгийнх байна. 5

Жишээ 2 n эрэмбийн Гильберт матрицыг үүсгэ. Шийдэл n = 4; a = тэг (n, n); i = 1-ийн хувьд: j = 1-ийн хувьд n: n a (i, j) = 1 / (i+j-1); 6-аар төгсдөг

Тайлбар: Матриц, векторыг бөглөхөөс өмнө эхлээд алгоритмын хурдыг нэмэгдүүлэхийн тулд тэдгээрийг үүсгэж, тэг командын тусламжтайгаар тэгээр дүүргэх хэрэгтэй (өөрөөр хэлбэл a = тэг (n, n) нь a(i,) -ээс хурдан байна. j) = 0, i, j = 1, ... , n). 7

For давталт нь давтагдах үйлдлүүдийг гүйцэтгэхэд, тэдгээрийн тоог урьдчилан мэдэж байх үед хэрэг болно. Хэрэв тэдгээрийн тоог урьдчилан мэдэхгүй бол та while давталтыг ашиглаж болно: while циклийн нөхцөл MATLAB End 8 командууд

Жишээ 3 Өгөгдсөн x-ийн цувааны нийлбэрийг ол. Хязгааргүй хүртэл нийлбэрлэх боломжгүй, гэхдээ та гишүүний тоо хэт бага болтол, жишээлбэл, 9 хүртэл нийлбэрийг хуримтлуулж болно.

Тайлбар Нэр томъёоны жижиг байдал нь харьцангуй ойлголт бөгөөд энэ нэр томъёо нь 10 -10 гэсэн дарааллаар байж болно, гэхдээ нийлбэр нь өөрөө ижил дарааллаар байна. Энэ тохиолдолд нийлбэрийг зогсоох боломжгүй. Үүнийг бид одоохондоо анхаарахгүй, шийдэл рүүгээ буцна. 10

Src="https://present5.com/presentation/c993b082b44b0b84b1886b8dd4d3c841/image-11.jpg" alt="M-файл функц Тушаалын мөрийн функц дээр S = mysin(x) > f = mysin(1)"> M-file функция В командной строке function S = mysin(x) > f = mysin (1) S = 0; 0. 8415 k = 0; while abs(x. ^ (2*k + 1)/factorial(2*k + 1)) > 1. 0 e -10 S = S + (-1)^k * x. ^ (2*k + 1)/factorial(2*k + 1); k = k + 1; end 11!}

Давталтын гүйцэтгэлийн нөхцөлийг тогтоохын тулд дараах харилцааны үйлдлүүдийг ашиглана. Харьцаа Утга i = = тэнцүү > их > = их буюу тэнцүү ~ = тэнцүү биш

ба логик операторууд: Операторын нөхцөл MATLAB дахь тэмдэглэгээ Эквивалент тэмдэглэгээ Логик "ба" x

Бидний жишээ рүү буцаж очоод, хэрэв цуваа зөрүүтэй байвал одоогийн нэр томъёоны жижиг байх нөхцөл хэзээ ч хангагдахгүй бөгөөд програм давталттай байж болохыг анхаарна уу. Тиймээс бид нөхцлийн тоог 100. 000 хүртэл хязгаарлана. Нөхцөл нь иймэрхүү харагдах болно эсвэл (abs (x. ^ (2*k + 1)/factorial(2*k + 1)) > 1. 0 e -10, к

Онцгой нөхцөл байдлыг зохицуулах 1) завсарлага - давталтыг тасалдуулж, төгсгөлийн дараа операторыг гүйцэтгэх (жишээлбэл, дотоод гогцооноос гарах); 2) Бурууны хэсэг математик үйлдлүүд MATLAB дээр програмыг зогсоодоггүй (жишээ нь =inf, =Na.N). Гаралт нь оролдлого бүтээц юм. Гүйцэтгэл нь алдаа барихад хүргэж болзошгүй мэдэгдлүүд. Алдааны төгсгөлийн мэдэгдлүүд 15

Салбарын операторууд нөхцөлт оператор MATLAB нь дараах салбар операторуудыг ашигладаг: n if бол нөхцөлт оператор; n switch - switch statement 16

Нөхцөлт мэдэгдлийн бүтэц: MATLAB командын if (нөхцөл) elseif (нөхцөл) MATLAB командын …………. Энэ хэсэг нь дутуу байж магадгүй elseif (нөхцөл) MATLAB командууд өөр MATLAB командуудын төгсгөл 17

Салбарын мэдэгдлийг ашиглан M-файлыг эмхэтгэхдээ 1) командын анхааруулга ('текст') - тушаалын цонхонд анхааруулгыг харуулах; 2) функцийн алдаа ('текст') - програмын гүйцэтгэлийг зогсоох. 18

Жишээ 4 Квадрат тэгшитгэл ax 2 + bx +c = 0 өгөгдсөн бол a ≠ 0. Квадрат тэгшитгэлийн язгуурыг тооцдог M функц бичье. Оролтын болон гаралтын параметрүүдийн тоо, мөн оролтын параметрүүд нь вектор, матриц биш харин тоо байгаа эсэхийг шалгая. Түүгээр ч зогсохгүй бид нарийн төвөгтэй язгуурын тохиолдлыг харгалзан үздэг. Хөтөлбөр дараах байдалтай байна: 19

функц = root 2 (a, b, c) if (nargin

Тайлбар: Өөрийгөө бичих тооцоолох програмууд их ашигавчирч чадна бие даасан судалгаа Toolbox дэд директоруудын стандарт функцийн файлууд. Тэдний ихэнх нь байдаг нээлттэй эх сурвалж, энэ нь танд MATLAB програмчлалын зарчмуудыг ойлгох боломжийг олгодог. Бусад функцууд (cos. m гэх мэт) суулгагдсан байдаг. Тэд функцүүдийн хэрэглээний талаархи тайлбарыг агуулдаг. Өөр нэг жишээ татъя. 21

функц y = kusfun (x) Хэрэв nargin ~= 1 алдаа ('Нэг оролтын аргумент байх ёстой') end = size(x); y = тэг (хэмжээ (x)); % нь i = 1-ийн оролтын аргументыг эхлүүлнэ: j = 1-д Nx: Хэрэв x (i, j) = -pi шаардлагагүй бол Mx! y (i, j) = x (i, j) / pi; else y (i, j) = - cos(x (i, j)) төгсгөлийн төгсгөл 23

Зарим хувьсагчийн салангид утгууд болон дараагийн үйлдлүүдийн хооронд захидал харилцаа байгаа тохиолдолд шилжих мэдэгдлийг ашиглахад тохиромжтой. 24

Мэдэгдэлийн бүтцийг дараах жишээнээс харж болно: кейс солих -1 disp ('a = -1') тохиолдол 0 disp ('a = 0') эс бөгөөс disp ('a нь -1, 0-тэй тэнцүү биш) ') төгсгөл 25

Шилжүүлэгч мэдэгдэл нь судалж буй функцийн янз бүрийн графикуудыг (утасны гадаргуу (a=1), түвшний шугам (a=2) гэх мэт) харуулах ажлыг шийдвэрлэхэд тохиромжтой. 26

Массив болон тоо бүхий логик илэрхийллүүд бүх нийтийн арга замаарматрицын өгөгдлийг боловсруулах нь логик үйлдлүүд юм. MATLAB нь тоог 1 1 массив хэлбэрээр илэрхийлдэг тул массивыг логик илэрхийлэлд оруулах нь зүйн хэрэг. Одоо бид логик ба харилцааны үйлдлүүдийг массивын тохиолдолд өргөтгөх талаар авч үзэх болно. 27

Харилцааны үйлдлүүд MATLAB дахь харилцааны үйлдлийн үр дүн нь логик ('үнэн') эсвэл логик тэг ('худал') байж болно. Түүнчлэн, олон програмчлалын хэлнүүдээс ялгаатай нь арифметик хувьсагчдыг логик хэллэгтэй ижил илэрхийлэлд ашиглаж болно. 28

Src="https://present5.com/presentation/c993b082b44b0b84b1886b8dd4d3c841/image-29.jpg" alt="Жишээ 6 > a = 1; b = 3; c = 1; >"> Пример 6 > a = 1; b = 3; c = 1; > a + (b > c) ans = 2 > a + (b!}

Src="https://present5.com/presentation/c993b082b44b0b84b1886b8dd4d3c841/image-30.jpg" alt=" > A = ; B = ; B = ; > C = A = = B C = 30

Тэмдэглэл Элементийн арифметик үйлдлүүдийн нэгэн адил тоонуудыг харилцааны үйлдлийн аргументуудын нэг болгон ашиглахыг зөвшөөрдөг. Энэ тохиолдолд массивын элемент бүрийг тоотой харьцуулж, үр дүн нь анхныхтай ижил хэмжээтэй массив болно. 31

Логик үйлдлүүд Логик үйлдлүүдийг массивуудад хэрэглэснээр массивын элементүүд дээр тэдгээрийг элемент тус бүрээр нь гүйцэтгэдэг. n A ба B - харгалзах элементүүд тэгтэй тэнцүү биш бол нэгийг өгнө; n A эсвэл B - наад зах нь нэг элемент тэгтэй тэнцүү биш бол нэгийг өгнө; 32

А биш - нэг массив дээр хэрэглэнэ, хэрэв элемент нь тэгтэй тэнцүү биш бол тэгийг тохируулна, үгүй ​​бол нэг; n all (v) - вектор дахь тэг элемент байгаа эсэхийг шалгадаг, хэрэв тэг элемент байхгүй бол нэгийг буцаана. Хэрэв v нь матриц бол үр дүн нь багана; n any (v) – оролтын векторт дор хаяж нэг тэгээс өөр элемент байвал нэгийг буцаана. n 33

Үйл ажиллагааны тэргүүлэх чиглэл 1. Үгүйсгэх; 2. Тооны өмнө шилжүүлэх, экспонентац (элемент тус бүрийг оруулаад), нэмэх хасах тэмдэг; 3. Үржүүлэх, хуваах (элементээр нь оруулаад); 4. Нэмэх, хасах үйлдэл; 5. Харилцааны үйл ажиллагаа; 6. Логик 'ба', логик 'эсвэл'. 34

Src="https://present5.com/presentation/c993b082b44b0b84b1886b8dd4d3c841/image-36.jpg" alt=" Жишээ 7 > a = ; > u"> Пример 7 > a = ; > u = find ((a = -1)) 3 4 5 > anew = a(u) 0 -1 0 36!}

Жишээ 8 Бүх элементийн дундаж утгаас 10%-иар их (0, 1) интервалаас 5 х 5 санамсаргүй тоогоор дөрвөлжин матрицын элементүүдийг дундаж утгаараа бие даан соль. Шийдэл > A = ранд(5); > S = нийлбэр (A нийлбэр) / 25; > A(find (A > S* 1. 1)) = S Энэ тохиолдолд олох функц нь мөр болон баганын дугаарын 2 векторыг буцаана. 37

MATLAB дахь олон гишүүнт олон гишүүнт p(x)=anxn+an-1xn-1+. . . +a 0, an≠ 0 MATLAB-д вектор-строй p= өгөгдсөн, энд ai нь дурын комплекс тоо, an≠ 0. Олон гишүүнтийн зэргийг дараах байдлаар тооцдог болохыг анхаарна уу: n=length(p)-1 (n=0 үед const ). 38

Олон гишүүнттэй ажиллах үндсэн командууд нь дараах байдалтай байна: n n n r=roots(p) нь олон гишүүнтийн бүх язгуурыг агуулсан баганын вектор; p=poly(r) – r баганын векторт өгөгдсөн язгуураар олон гишүүнт байгуулах, үүнээс гадна хэрэв r бол квадрат матриц, тэгвэл p нь шинж чанарын олон гишүүнт; y=polyval(p, x) – х олон гишүүнт p олон гишүүнтийн у утгыг элемент тус бүрээр нь тооцоолох ба энд x нь вектор эсвэл матриц байж болно; 39

n n n n polyder(p) нь p-ээс гаралтай эгнээний вектор (п олон гишүүнтийн ялгаа); polyder(p, q) нь p ба q олон гишүүнтүүдийн үржвэрийн дериватив; = polyder(p, q) нь р ба q олон гишүүнтийн хуваалтын дериватив бөгөөд a ба b нь үүссэн бутархайн хуваагч ба хуваагч юм; 40

n n n p=polyfit(x, y, n) – y(x) функцийг p олон гишүүнтээр ойртуулах n-р зэрэголон гишүүнт график ба жинхэнэ муруйн хоорондох зайг хамгийн бага байлгах аргаар, тэдгээрийн бүхэл бүтэн уртын дундажаар; conv(p, q) нь эгнээний вектор, p ба q олон гишүүнтүүдийн үржвэр; =deconv(p, q) – p-ийг q, w-хэсэг, r-үлдэгдэл ба p=conv (q, w) + r-д хуваах; 41

n =үлдэгдэл(a, b) нь бүхэл тооны k(х) хэсгийг сонгон нийлмэл тоонуудын талбарт рационал функцийг энгийн бутархай болгон задлах буюу ri нь үлдэгдэл (r элемент), pi нь туйл (p) юм. элементүүд). Энэ команд нь мөн урвуу =residue(r, p, k) 42 байдлаар ажилладаг

Тайлбар 1. Хэрэв үлдэгдэл (a, b) дахь олон гишүүнт b(x) болон үндэс (p) дахь олон гишүүнт p(x) нь олон буюу ойр язгууртай бол ийм бодлого нь нөхцөл муутай тул үр дүн буруу байж болно. . Муу нөхцөл байдал нь үр дүнгийн коэффициентээс (дифференциал тэгшитгэлийн шийдлийн тогтвортой байдалтай адил) маш хүчтэй хамааралтай байдаг. 43

2. Олон гишүүнттэй ажиллахад тухайн хэлбэрийн олон гишүүнтүүд гарч, MATLAB автоматаар an≠ 0-г шалгахгүй, алдаа гардаг (та өөрөө дагаж мөрдөх шаардлагатай). 44

Тэнхим: Мэдээллийн технологи

ХӨТӨЛБӨРЧИЛЖ БАЙНАMATLAB

ОператоруудMATLAB

· Давталтын мэдэгдлүүд

Циклтөлөө

Синтакс

тоо = эхлэл: алхам: эцсийн

MATLAB командууд

Тодорхойлолт

тоо - давталтын хувьсагч,

эхлэл - түүний анхны утга,

эцсийн - эцсийн үнэ цэнэ,

алхам - гогцоонд орох бүрт тоо нэмэгдэх алхам

Тооллогын утга эцсийнхээс их болмогц давталт дуусна.

Жишээ

Параметрээс хамааран функцээр өгөгдсөн x€ -ийн муруйн бүлгийг гаргаж авах шаардлагатай.

y (x, a) \u003d e-ax sin x,

параметрийн утгын хувьд -0.1-ээс 0.1 хүртэл. Муруйн бүлгийг гаргах файлын програмын жагсаалтыг доор харуулав.

Програмын жагсаалт

x = ;

хувьд = -0.1: 0.02: 0.1

y = exp(-a*x).*sin(x);

Хөтөлбөрийн гүйцэтгэлийн үр дүнд шаардлагатай муруйн бүлгийг агуулсан график цонх гарч ирнэ.

Циклбайхад

Синтакс

while давталтын нөхцөл

MATLAB командууд

Тодорхойлолт

Давталтын (үнэн) нөхцөл үнэн бол гогцоо ажиллана. Циклийг гүйцэтгэх нөхцөлийг тогтоохын тулд дараах харилцааны үйлдлүүдийг зөвшөөрнө.

Логик операторуудыг ашиглан илүү төвөгтэй нөхцөлүүдийг тодорхойлдог. Логик операторуудыг дараах хүснэгтэд үзүүлэв

Жишээ

Салбарын операторууд

Нөхцөлт операторхэрэв

Синтакс

нөхцөл бол

MATLAB командууд

Тодорхойлолт

Хэрэв нөхцөл үнэн бол if болон төгсгөлийн хооронд байрлуулсан MATLAB командууд биелэгдэх ба хэрэв нөхцөл үнэн биш бол төгсгөлийн дараа байрлах командууд руу шилжинэ.

Жишээ

Нөхцөлт операторөөр бол

Синтакс

хэрэв нөхцөл 1

elseif нөхцөл 2

………………………

elseif нөхцөл

Тодорхойлолт

Нэг буюу өөр нөхцлийн биелэлтээс хамааран програмын харгалзах салбар ажилладаг бөгөөд хэрэв бүх нөхцөл буруу байвал бусад нөхцлийн дараа байрлуулсан тушаалуудыг гүйцэтгэдэг.

Жишээ

Операторсолих

Синтакс

солих хувьсагч

тохиолдлын утга1

тохиолдлын утга2

……………………

хэргийг үнэлдэг

Салбар бүр нь кейсийн мэдэгдлээр тодорхойлогддог бөгөөд шилжүүлэгчийн хувьсагч нь тохиолдлын дараа заасан утгыг эсвэл кейсийн жагсаалтаас аль нэг утгыг авах үед түүнд шилжих шилжилт хийгддэг. Аль нэг салбарыг ажиллуулсны дараа унтраалга гарах бөгөөд бусад тохиолдолд заасан утгуудыг шалгахаа больсон. Хэрэв хувьсагчийн тохирох утга байхгүй бол өөрт тохирох програмын салбарыг ажиллуулна.

Жишээ

Давталтын тасалдал. Онцгой нөхцөл байдал.

Операторзавсарлага

Синтакс

Цикл тооцооллыг зохион байгуулахад break хэллэгийг ашигладаг: for...end, while...end. Нөхцөл байдал хэзээ

нөхцөл бол

break хэллэг нь давталтыг дуусгадаг (for or while) ба төгсгөлийн дараах мөрөнд байрлах хэллэгүүд биелэгддэг. Үүрлэсэн гогцоонуудын хувьд break нь дотоод гогцооноос гарна.

Онцгой байдлын зохицуулалт, Операторхичээбарих

Синтакс

гүйцэтгэлийн мэдэгдлүүд

алдаа гарч болзошгүй

гүйцэтгэх мэдэгдлүүд

блокт алдаа гарах үед

оролдох, барих хооронд

Тодорхойлолт

try...catch бүтэц нь онцгой тохиолдлуудыг (програмыг зогсооход хүргэдэг алдаа, жишээлбэл, байхгүй файлд хандах) давж гарах боломжийг олгодог бөгөөд хэрэв тэдгээр нь тохиолдвол ямар нэгэн арга хэмжээ авах боломжтой.

Жишээ

Үйлчилгээфункцууд

disp- командын цонхонд хувьсагчийн текст эсвэл утгыг харуулна

оролт- Гараас оруулах хүсэлтийг гүйцэтгэнэ. Командын мөрийн интерфэйс бүхий програмуудыг үүсгэх үед ашигладаг.

үнэлэх - MATLAB командууд шиг мөр эсвэл мөр хувьсагчийн агуулгыг гүйцэтгэдэг

тодорхой- ажлын орчны хувьсагчдыг устгана.

-тайlc- командын цонхыг арилгана

Эдгээр болон бусад функцуудын талаар дэлгэрэнгүй мэдээлэл авахыг хүсвэл командын мөрөнд ажиллуулна уу

Туслаачфункцийн нэр

Даалгавруудлабораторийн ажилд зориулагдсан

Тодорхой ажлын сонголтын тоог багш тодорхойлно.

Дасгал хийх1

Энэ даалгавар нь зарим багц өгөгдлийн хувьд n зэрэгтэй алгебрийн интерполяцийн олон гишүүнтийг олохыг хэлнэ. Пn(x) .

Ажлын зорилго:

Алгебрийн интерполяцийн олон гишүүнтийн коэффициентийг тооцоолох програм бичих шаардлагатай. Пn(x)= а0 + а1 x+ + аnxn.

Арга зүйн заавар:

Xби

yби

Магадлал а0 , а1 , …, аnтэгшитгэлийн системийн шийдлээр тодорхойлогддог.

Энд nинтерполяцийн олон гишүүнтийн дараалал,

n+1 - өгөгдсөн хос онооны тоо ( x, y),

а0 , а1 ,… аnолон гишүүнтийн хүссэн коэффициентүүд юм Пn(x)= а0 + а1 x+ + аnxn).

Хөтөлбөрийн шаардлага

Шугамын хил хязгаарыг тогтоох , үүн дээр интерполяцийн олон гишүүнт баригдсан P(x)

· Асуу n- интерполяцийн сегментийн тоо (эсвэл олон гишүүнтийн зэрэг)

Жич: x0, xn, nгарнаас оруулсан.

· Анхны мэдээллийг олж авах , y) (хос онооны тоо би, yби) , үүн дээр интерполяцийн олон гишүүнт байгуулагдсан P(x) - n1=n+1) өгөх:

b Санамсаргүй байдлаар байрлуулсан зангилаануудыг оруулна уу xби, i=0, nгарнаас

b Зангилааны тооцоо xби, i=0, n, аргументийн нэгэн жигд зохион байгуулалтад тохирсон xсегмент дээр

б догол мөрөнд. 1.2 утгууд yби, i=0, nэсвэл гараас оруулсан (хэрэв анхны функц нь тодорхойгүй бол), эсвэл өгөгдсөн функцээс тооцоолно f(x). Функцийг тодорхойлсон илэрхийлэлийг гараас оруулсан бөгөөд MATLAB дээр илэрхийлэл бичих дүрмийг дагаж мөрдөх ёстой

b Өгөгдөл оруулах ( xби, yби, i=0, n) файлаас

P(x) олон гишүүнтийн коэффициентийг тодорхойлох тэгшитгэлийн системийг шийд.

Анхны хүснэгтийн функц ба P(x) олон гишүүнтийн графикийг бүтээх

· Анхны өгөгдлийг f(x) функцээр өгсөн бол интерполяцийн алдааг /f(x) - P(x)/ графикаар зур. Өгөгдсөн интерполяцийн алдааны модулийн хамгийн их утгыг тооцоол.

Дасгал хийх2

Сплайн интерполяци

Ажлын зорилго:

3-р эрэмбийн S олон гишүүнт хэсгүүдээс "наасан" S(x) сплайн функцийг байгуулах, коэффициентийг тооцоолох программыг бий болгох шаардлагатай. би(x), тусгай тэмдэглэгээтэй:

S функц би(x) сегмент дээр тодорхойлсон

Хөтөлбөрийн шаардлага

Энэ ажлыг гүйцэтгэхдээ та дараахь зүйлийг хийх ёстой.

S(x) сплайн функц баригдсан сегментийн хил хязгаарыг тогтоо

· Тодорхойлох n - интерполяцийн сегментийн тоо, тэдгээр дээр куб олон гишүүнт Si(x) баригдсан.

· Жич: x0, xn, n-г гарнаас оруулна.

Анхдагч өгөгдлийн (x, y) оролтыг зохион байгуул (s(x), n1=n+1) сплайн функцийг бүтээсэн хос цэгийн тоо (xi, yi), дараахь зүйлийг хангана.

ь Дурын байрлалтай xi, i=0, n зангилаануудыг гараас оруулах.

b Аргумент х-ийн сегмент дээрх жигд байрлалд харгалзах xi, i=0, n зангилааны тооцоо

б догол мөрөнд. 1,2 yi, i=0, n утгуудыг гараас оруулах (хэрэв анхны функц тодорхойгүй бол) эсвэл өгөгдсөн f(x) функцээс тооцоолно. Функцийг тодорхойлсон илэрхийлэлийг гараас оруулсан бөгөөд MATLAB дээр илэрхийлэл бичих дүрмийг дагаж мөрдөх ёстой

b Файлаас өгөгдөл оруулах (xi, yi, i=0, n).

b S1""(x0)=0, S3""(x3)=0

b S1 "(x0) \u003d f "(x0), S3" (x3) \u003d f "(x3)

b S1""(x0)=f "(x0), S3""(x0)=f "(x3)

Байгалийн куб сплайны коэффициентийг (1-р хилийн нөхцөл) тодорхойлохын тулд дараахь тэгшитгэлийн системийг шийдэх шаардлагатай.

Коэффициент?0=0,?n=0

· Гурван төрлийн хилийн нөхцлийн анхны функц болон сплайн функцийн графикийг зур.

· Гурван төрлийн хилийн нөхцлийн f(x) - S(x) сплайн интерполяцийн алдааны функцүүдийн графикийг байгуул.

Жич:

MATLAB багцад нэг хэмжээст болон хоёр хэмжээст массивын индексүүд 0-ээс биш 1-ээс эхэлдэг.Програм бичихдээ үүнийг анхаарч үзээрэй.

Дасгал хийх№3

Хамгийн бага квадратын аргаар (LSM) функцийг ойртуулах.

Энэ даалгавар нь зарим өгөгдлийн багцад хамгийн бага квадратын аргаар (LSM) бүтээгдсэн ойролцоолсон функцийг (m-ийн олон гишүүнт) олохыг хэлнэ.

Ажлын зорилго:

Олон гишүүнтийн коэффициентийг олох програм бичих шаардлагатай юу? (x)= а0 + а1 * x+… аn * xмхамгийн бага квадратын аргаар.

Жишээлбэл, бидэнд дараах өгөгдлийн багц байгаа болно.

Xби

yби

Шаардлагатай коэффициентийг хайх ажлыг дараах байдлаар гүйцэтгэнэ.

Хаана n - онооны хэмжээ ( x, y),

м - хүссэн олон гишүүнтийн зэрэг,

а 0 , а 1 , …, а м - хүссэн коэффициентүүд ( ? ( x )= а 0 + а 1 x + … + а м x м ).

Хөтөлбөрийн шаардлага

Энэ ажлыг гүйцэтгэхдээ та дараахь зүйлийг хийх ёстой.

Ойролцоох функц баригдсан сегментийн хил хязгаарыг тогтооно уу?(x)=a0+a1*x+… an * xm

Set m - олон гишүүнтийн зэрэг

· Жич: x1, xn, m-г гарнаас оруулна.

Ойролцоох функц баригдсан анхны өгөгдлийг (x, y) авахын тулд?(x)=a0+a1*x+… an* xm:

ь Санамсаргүй байрлалтай xi, i=1, n зангилаануудыг гарнаас оруулах

b Аргументын х сегмент дээрх нэгэн жигд зохион байгуулалтад харгалзах xi, i=1, n зангилааны тооцоо

б догол мөрөнд. 1,2 yi, i=1, n утгуудыг гараас оруулах (хэрэв анхны функц тодорхойгүй бол) эсвэл өгөгдсөн f(x) функцээс тооцоолно. Функцийг тодорхойлсон илэрхийлэлийг гараас оруулсан бөгөөд MATLAB дээр илэрхийлэл бичих дүрмийг дагаж мөрдөх ёстой

b Файлаас өгөгдөл (xi, yi, i=1, n) оруулах

Олон гишүүнтийн коэффициентийг тодорхойлох тэгшитгэлийн системийг шийдэх үү? (x)

Анхны хүснэгтийн өгөгдсөн функц ба олон гишүүнтийн графикийг байгуулах уу? (x)

· Анхны өгөгдөл нь f(x) функцээр өгөгдсөн бол интерполяцийн алдааг /f(x) - ?(x)/ графикаар зур. Өгөгдсөн интерполяцийн алдааны модулийн хамгийн их утгыг тооцоол.

Сегмент дээрх сүүлчийн зүйлийг гүйцэтгэх үед Тооцооллын хувьд дор хаяж 500 оноо авна

Лабораторийн ажлын зураг төсөлд тавигдах шаардлага

Тайлан нь дараахь зүйлийг агуулсан байх ёстой.

1. Асуудлын тухай мэдэгдэл

2. Програмын текст

3. Туршилтын үр дүн

Тэмдэглэл Хөтөлбөрийн текстийг тайлбарын хамт өгөх ёстой.

Ном зүй

1. Ануфриев И.Е. Matlab 5.3 / 6.x заавар - Санкт-Петербург: BHV-Петербург, 2003. - 736 х: өвчтэй.

2. V.P. Dyakonov MATLAB 6.5 SPI/7 + Simulink 5/6 математик, загварчлал. "Мэргэжлийн номын сан" цуврал. - М.: SOLON-Press, 2005. - 576 х.: өвчтэй.

3. Ануфриев И.Е., Смирнов А.Б., Смирнова Е.Н. MathLab 7. - Санкт-Петербург: BHV-Петербург, 2005. - 1104 х: өвчтэй.

Ихэнхдээ гогцоо зохион байгуулахдаа өгөгдсөн утгын хүрээнд, өгөгдсөн өөрчлөлтийн алхамаар тоолуурын утгыг давтах шаардлагатай байдаг. Жишээлбэл, векторын (массив) элементүүдийг давтахын тулд та 1-ээс N хүртэлх тоологчийг 1-ийн алхамтай зохион байгуулах хэрэгтэй бөгөөд N нь векторын элементийн тоо юм. Цувралын нийлбэрийг тооцоолохын тулд a-аас b хүртэлх тоолуурыг шаардлагатай алхамын өөрчлөлтийн алхамаар зааж өгсөн болно. гэх мэт. Програмчлалын практикт ийм даалгаврууд ихэвчлэн тулгардаг тул тэдгээрийг хэрэгжүүлэхэд зориулж тусдаа for loop операторыг санал болгосон бөгөөд энэ нь тоолууртай давталтыг хэрэгжүүлэхэд хялбар бөгөөд илүү харагдахуйц болгодог.

for loop хэллэгийн синтакс дараах байдалтай байна.

төлөө<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
Төгсгөл

Вектор дахь элементийн хамгийн их утгыг олох алгоритмыг хэрэгжүүлэх жишээн дээр энэ мөчлөгийн ажлыг авч үзье.

функц хайлтын_макс
a = ;
m = a(1); % одоогийн хамгийн их утга
for i=1:length(a) % давталт 1-ээс в векторын төгсгөл хүртэл
% алхам 1 (өгөгдмөл)
хэрэв м< a(i) % если a(i) >м,
m = a(i); % дараа нь m = a(i)
Төгсгөл
төгсгөл % for давталтын төгсгөл
disp(m);

Энэ жишээнд for давталт нь i тоологчийг тохируулж, түүний утгыг 1-ээс 10 болгон өөрчилдөг. Хэрэв өсөлтийг тодорхой заагаагүй бол өгөгдмөл нь 1 болно гэдгийг анхаарна уу.

Дараах жишээнд вектор элементүүдийг баруун тийш шилжүүлэх алгоритмын хэрэгжилтийг авч үзье. төгсгөлийн өмнөх элементийг сүүлчийнх нь оронд, дараагийнхыг эцсийн өмнөх элементийн оронд тавина гэх мэт. Эхний элемент рүү:

функцийн дараалал
a = ;
disp(a);
for i=length(a):-1:2 % гогцоо 10-аас 2 хүртэл -1 алхамтай
a(i)=a(i-1); векторын % шилжилтийн элементүүд a
төгсгөл % for давталтын төгсгөл
disp(a);

Хөтөлбөрийн үр дүн

3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1

Дээрх жишээнээс харахад том утгаас жижиг тоо руу шилжих циклийг хэрэгжүүлэхийн тулд та алхамыг тодорхой зааж өгөх ёстой, энэ тохиолдолд -1. Хэрэв энэ нь хийгдээгүй бол гогцоо тэр даруй ажлаа зогсоож, програм зөв ажиллахгүй болно.

Дүгнэж хэлэхэд, өөрчлөлтийн хуулиар санамсаргүй дарааллыг загварчлах жишээн дээр for давталтын операторын ажиллагааг авч үзье.

энд - 1-ээс 1 хүртэлх коэффициент; - 0 математикийн хүлээлт ба дисперстэй хэвийн санамсаргүй хэмжигдэхүүн

,

симуляцийн санамсаргүй процессын дисперс хаана байна. Энэ тохиолдолд эхний түүврийг математикийн хүлээлт, дисперс нь тэгтэй хэвийн санамсаргүй хэмжигдэхүүн болгон загварчилсан болно. Симуляцийн програм нь дараах хэлбэртэй байна.

функцийн загварчлал_x
r = 0.95; % загварын коэффициент
N = 100; загварчилсан цэгийн % тоо
ex = 100; процессын хэлбэлзэл %
et = ex*(1-r^2); % санамсаргүй нэмэлт дисперс
x = тэг(N,1); % векторыг эхлүүлэх
x(1) = sqrt(ex)*randn; 1-р тооллын % симуляци
for i=2:N % гогцоо 2-оос N хүртэл
x(i)=r*x(i-1)+sqrt(et)*randn; % Simulation JV
төгсгөл % давталтын төгсгөл
талбай(x); SP-г график хэлбэрээр харуулах %

Энэ програмыг гүйцэтгэх үед дуурайлган санамсаргүй дарааллын хэрэгжилтийг харуулах болно.

Цагаан будаа. 2.1. Санамсаргүй дарааллыг загварчлах үр дүн.

Хөтөлбөрийн ажил нь хувьсагчийн тодорхойлолтоос эхэлдэг , (хөтөлбөрт байгаа хувьсагч) болон заасан загварыг хэрэгжүүлэх. Дараа нь зөрүүг тооцоолно мөн санамсаргүй үйл явцын эхний тоог randn функцийг ашиглан загварчилсан. Randn функц нь тэг дундаж ба нэгж дисперстэй хэвийн санамсаргүй хэмжигдэхүүнүүдийг үүсгэдэг. Вариацтай санамсаргүй хэмжигдэхүүнийг үүсгэхийн тулд нэгж дисперстэй санамсаргүй хэмжигдэхүүнийг үржүүлэхэд хангалттай, учир нь дисперс нь санамсаргүй хэмжигдэхүүний математикийн хүлээлттэй харьцуулсан дундаж квадрат юм. Үүний үр дүнд бид хөтөлбөрийн шугамтай болсон

x(1) = sqrt(ex)*randn;

Дараа нь for давталтыг 2-оос N хүртэлх i тоолуураар 1-ийн алхамтайгаар хэрэгжүүлнэ. Давталтын дотор санамсаргүй үйл явцын үлдсэн N-1 дээжийг дээрх томьёоны дагуу загварчилсан болно. Програмын сүүлийн мөрөнд plot() функц агуулагдсан бөгөөд энэ нь дэлгэцэн дээр загварчилсан дарааллыг график хэлбэрээр харуулдаг. Дэлгэц дээр график харуулах илүү нарийвчилсан ажлыг дараагийн бүлэгт авч үзэх болно.



Ачааж байна...
Топ