MIT. Matlab lesson 5

Хичээл № 5

Давтлага дасгал:

  • Фибоначийн эхний 20-н тоог олж байгаа давталт бич. Үр дүнг vectorFibo массивт хадгал. Улмаар n дугаар элементийг Fibo(n) дараах байдлаар дууд:

F(1)=1

F(2)=1

for n>2

F(n)=F(n-1)+F(n-2)

while команд

Хэрэв давталтын тоо урьдчилан тодорхой биш бол давталтанд өөр команд ашиглах нь зүйтэй байдаг. Доор while командын бичиглэлийг харуулав:

while expression

a

bunch

of

statements

end

Давталтын алхам бүрийн эхэнд Matlab  өгөгдсөн нөхцөлийг шалгаад хэрэв нөхцөл биелж байгаа бол командыг гүйцэтгэж үгүй бол давталтын командаас гардаг.

Жишээлбэл:

>> x=10;

>> while x>0

x=x-1

end

>>

гэсэн команд 9-ээс 0 хүртлэх тоог өөрсдийг нь оруулан хэвлэнэ.

Matlab нөхцөлийг дандаа шалгахгүй. Шинэ давталт эхлэх үед л шалгадаг.

Дасгал:

  • Массив ашиглалгүйгээр while командыг ашиглан Фибоначчийн 100 дахь тоог ол.
  • n тоог шалгаж байгаа while давталт бич. Хэрэв n тэгш тоо бол n тоог n/2 болго, сондгой бол 3n+1 болго. Харин 1-тэй тэнцүү бол давталтаас гар. Энэ програмаа өөр утгаар эхлүүлж 1 болох хүртэл хичнээн алхам шаардагдаж байгааг тоол.

Хэрэглэгчийн функц

Matlab програм нь өөртөө олон тооны стандарт функцтэй боловч хэрэглэгчөөрөө стандарт функцийн нэгэн адио биелэгдэх функцийг үүсгэж болно.

Функцийг тусгай файлд бичнэ. Файлын нэр нь функцийн нэртэй ижил байх ёстой. Жишээлбэл, example_function_ 1 функц үүсгэлээ гэж бодоход уг функцийг агуулах файл example_function_1.m нэртэй байх ёстой.

function y = example_function_1(x)

is the first line of the file. let’s dissect this first line:

  • function
As I said, the first word must be “function”.
  • y =
This declares the local name of a variable whose value will be returned when the execution of the function is over.
  • example_function_1
The name of the function. This must match the name of the file.
  • (x)
The local name of the variable that will contain the input value.

So the rest of the file could be

y=2*x;

end

admittedly, a very boring function: It takes the input value (locally called x), doubles it, and assigns that result to y. Since y is declared to be the return value and the function has

ended, the return value is simply twice the input.

we call the function by giving it a value:

>> example_function_1(17)

or

>> example_function_1(rand)

The return value can then be assigned to another variable:

>> z= example_function_1(18);

>> z

Variable Scope

An important difference between a function and a script (the files that don’t have “function” as their first word are called scripts) is that of “variable scope”.

When executing a script from the command-line, the scripts has access to all the variables that are defined on the command line. For instance, if you have a script called script1.m whose contents are

x+1

y=y/2

and you run this script from the commandline like so:

>> x=2

>> y = 6

>> script1

>> y

You will see that the script knows that x=2 and that y=6. Not only this, note that y is changed in the scripts, the new value of y, 3 is also the value of y when check on the command

line. This seems natural, perhaps, but this is not how functions behave. A function with the same content function1.m

function function1

x+1

y=y/2

will fail to run, since within the function there are no such variables x and y. The variables of the function, are different from the variables outside the function, even if they have

the same name.

  • change your prime checking program so that the input is the number, and the output is 1 if the number is prime and 0 if not.
  • change your n-changing program, so that the input is the initial value of n and the output is the number of steps it took to reach 1.
  • use your primechecking function in another program (can be a script) that finds (a) the 1000th prime number and (b) the first prime number greater than 1000000.
  • use your n-changing function in another program (can be a script) that finds the number of iterations needed for the first 100 numbers, and plots then nicely. 

2 comments to MIT. Matlab lesson 5

  • Enkhee

    Сайн байна уу, багшаа. Юуны өмнө маш их хэрэгтэй мэдээлэл оруулж байгаад баярлалаа. Матлаб-ын Монгол хэл дээр хэвлэгдсэн ном байдаг болов уу. Та IDL программын хэлний хичээл оруулах боломжтой юу

    • SGK

      Ойрд зав муутай блогоо жаахан орхиод байгаадаа уучлал хүсье. Шинэ ондоо хичээж агуулгаа улам баяжуулнаа. Матлавын тухай монгол ном байдаг юм билээ. Болбол англи эхээр нв нетээ харсандаа зүгээр шүү.

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>