Хичээл № 4
Дасгал:
- n хувьсагч 1-с 10 байх хооронд -1^(n+1) / (2n-1) илэрхийллийг бод. N=100 байна.
- Нийлбэр нь pi/4 байх N тооны утгыг ол. (энд < 10^-6 байна)
Програмчлалын командууд
Matlab програм нь програмчлах боломжийг хэрэглэгчид олгодог. Зарим үндсэн командуудыг үзэцгээе.
if Команд
Тодорхой нөхцөл биелэгдэж байх үед ямар нэгэн үйлдлийг хийдэг байхаар програмчлах бол ХЭРВЭЭ буюу if командыг ашиглана.
if condition
Bunch
Of
expressions
else
Other
expressions
end
Дээрх бичиглэлийг орчуулбал:
ХЭРВЭЭ өгөгдсөн НӨХЦӨЛ
БИЕЛЭГДЭЖ байгаа бол нэг үйлдэл хийнэ
ҮГҮЙ бол өөр үйлдэл хийнэ
ДУУСГА
гэсэн байдлаар бичиж болох юм.
if команд нь өгөгдсөн нөхцөлийн биелэлтээс хамааран боломжит 2 үйлдлийн аль нэгийг сонгон хийх шаардлагатай үед ашиглахад хамгийн тохиромжтой байдаг команд юм. Нөхцөл биелэгдэж байвал эхний үйлдэл үгүй бол else түлхүүр үгийн дараагаар бичигдэж байгаа үйлдэл хийгддэг.
Жишээлбэл:
>> if 3<4
‘3 is less than 4’
else
‘3 is not less than 4’
end
>>
Дээрхийг уншвал: 3 нь 4 -с бага нь үнэн бол “3, 4-с бага” үгүй бол “3, 4-с бага биш” гэсэн тайлбарыг дэлгэц дээр гаргана. Дараах командуудыг файл үүсгэн бичээ ажиллуулж үзээрэй (if_example.m)
x = rand;
s = ‘The number %g is %s than 0.5\n’;
if x<0.5
fprintf(s,x,’less’)
else
fprintf(s,x,’more’)
end
Үүсгэсэн файлаа хадгалаад ажиллуулна.
rand нь санамсаргүй тоо гаргагч функц юм.
fprintf функц нь sprintf функцтэй ижил үйлдэл хийнэ. Ялгаа нь үр дүнг дэлгэц рүү гаргахгүй харин файл руу бичнэ:
>> a=sprintf(“Hello!”)
>> b=fprintf(“Hello!”)
‘\n’ тэмдэглээ хөтлөгчийг нэг шинэ мөрөнд шилжүүлнэ.
Үнэн гэж юу вэ?
Худал үнэний талаар сэтгэл зүйн асуудал энд ярих гэсэнгүй. Matlab програм үнэн худал гэдэгт юуг ойлгодог вэ? гэдгийг програм бичиж байгаа хүн өөрөө сайн ойлгож байх ёстой учир энэ хэсгийг орууллаа. Үүний тулд (oracle.m) гэсэн шинэ файл үүсгэнэ.
if x
‘True’
else
‘False’
end
Улмаар үүсгэсэн файлаа ажиллуулж дараах өгөгдлүүдийг өгч гарах үр дүнг ажиглаарай.
x=(1==4)
x=4
x=0
x=[0 0]
x=[]
x=[0 1]
x=[1 2 3]
x=’hello’
x=”
x=’ ‘
x=-1
x=i
Давталт
Loops are good when we want to do stuff over and over again. For example, if we didn’t know how to sum up the elements of a vector using sum or linear algebra commands, we could use a loop to do it (a bad idea…much slower than the alternative, about 100 times slower!!! check out loop_timer.m if you care.) However, slow they may be, but we might still need them….The syntax is as follows:
for variable = vector
a bunch
of
expressions
here variable is an
ELEMENT of vector
end
The way it works is that for every element in vector, matlab runs through all the commands in the block. during each such execution, the value of variable is set to that element…Let see a simple example:
for v = 1:10
v
v^2
end
Notice that for every number from 1 to 10 we have two printouts (since there were two commands in the block) one simply the number and the other is the number squared…just as we asked.
One can have any legal variable name instead of the variable, but note that it gets overwritten. Also the vector, can be any vector…
for v = ‘hello’
v
end
One can “break out” of a loop before it is done by issuing a break command:
for v = ‘hello and goodbye’
v
if v==’d’
break
end
end
OK, enough new material..lets exercise!
Exercises
- Find the sum of a vector x=[3 5 12 42 67] without using the old tricks…that is, use afor loop and don’t use sum.
- Write a little program that checks if x=73 is prime. Do not use isprime. But you might find mod or rem useful.
- Modify your program to find the first 20 primes
- Write a program that find the error in the calculation from the top of the page for N = 1, 10, 100,…10^6 and plots the results in a meaningful way. (you might want to consider using a log-plot, with loglog, or manually, taking the log from both axes before plotting)
Recent Comments