Ë ÐØ ½ ÂÓÒØÓ ½ ¾ ÌÓÖ ¾ ¾º½ ÎÖÓÓÖÒØØ ØÝ Ø º º º º º º º º º º º º º º º º º º º º º º º ¾ ¾º¾ ÈÓÑÔÓÒÒØØÒÐÝÝ º º º º º º º º º º º º º º º º º º º º º º

Koko: px
Aloita esitys sivulta:

Download "Ë ÐØ ½ ÂÓÒØÓ ½ ¾ ÌÓÖ ¾ ¾º½ ÎÖÓÓÖÒØØ ØÝ Ø º º º º º º º º º º º º º º º º º º º º º º º ¾ ¾º¾ ÈÓÑÔÓÒÒØØÒÐÝÝ º º º º º º º º º º º º º º º º º º º º º º"

Transkriptio

1 Ö ÝØØÐØØÝÑ ÔØÖÙÚÒ ÒÐÝ ÓÒØÒ ÌÙ ÃÖÒÒ ½½½¾ ½ºº¾¼¼ ÂÓÒ ÙÙÒ ÝÐÓÔ ØÓ ÌØÓÒ ØØÐÝØØÒ ÐØÓ ÖÓ ØÝÒ ÓÙÑÒØØ

2 Ë ÐØ ½ ÂÓÒØÓ ½ ¾ ÌÓÖ ¾ ¾º½ ÎÖÓÓÖÒØØ ØÝ Ø º º º º º º º º º º º º º º º º º º º º º º º ¾ ¾º¾ ÈÓÑÔÓÒÒØØÒÐÝÝ º º º º º º º º º º º º º º º º º º º º º º º ¾º ÎÖÑØØ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ËÔØÖ ÎÛÖ º½ ÌÖÓØÙ ØÓÑÒØÔÖØ º º º º º º º º º º º º º º º º º º º º º¾ ÃÝØØÝØ ØÓ ØÓØ ØØÓÖÒØØ º º º º º º º º º º º º º º º º º ½¼ º ÅÙÙØÓ ÓØ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½¾ º Ì ØÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ½ º½ ÌÖÓØÙ ØÓÑÒØÔÖØ º º º º º º º º º º º º º º º º º º º º ½ º¾ ÃÝØØÝØ ØÓ ØÓØ ØØÓÖÒØØ º º º º º º º º º º º º º º º º º ¾¼ º ÅÙÙØÓ ÓØ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ¾¾ º Ì ØÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ¾¾ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¾ º½ ÌÖÓØÙ ØÓÑÒØÔÖØ º º º º º º º º º º º º º º º º º º º º ¾ º¾ ÃÝØØÝØ ØÓ ØÓØ ØØÓÖÒØØ º º º º º º º º º º º º º º º º º ¾ º ÅÙÙØÓ ÓØ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ¾ º Ì ØÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ¾ ËÔØÖ ÒÖ ¾ º½ ÌÖÓØÙ ØÓÑÒØÔÖØ º º º º º º º º º º º º º º º º º º º º ¾ º¾ ÃÝØØÝØ ØÓ ØÓØ ØØÓÖÒØØ º º º º º º º º º º º º º º º º º ¾ º ÅÙÙØÓ ÓØ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ¾ º Ì ØÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ¾ ÎØØØ ¾ ÄØØØ ÄØ ½ ÚÛֺѹØÓ ØÓÒ Ð ØÙ ÄØ ¾ ԺѹØÓ ØÓÒ Ð ØÙ ÄØ ÓÐÓÖÓÒںѹØÓ ØÓÒ Ð ØÙ ÄØ ÔØֺѹØÓ ØÓÒ Ð ØÙ ÄØ Ô¾ºÑ¹ØÓ ØÓÒ Ð ØÙ ÄØ ÖÓÖÑغѹØÓ ØÓÒ Ð ØÙ ÄØ ºÑ¹ØÓ ØÓÒ Ð ØÙ ÄØ ºÑ¹ØÓ ØÓÒ Ð ØÙ

3 ½ ÂÓÒØÓ Ì ÖÓ ØÝ ØÓØÙØØØÒ ÓÐÑ ÝØØÐØØÝÑ ÔØÖÙÚÒ ØÖ ØÐÙÙÒº ÃÝØØÐØØÝÑØ ØÙÐÚØ ÓÐÑÒ Ó ËÓØÛÖ ÀÓÙ Ò Ò ÝØ ØÝ Ø¹ ØØØÚ ÚÖÐÓÖØÓÖÓÒ ÅØйØÓÓÐÓܺ ËÔØÖ ÎÛÖ¹ÝØØÐØØÝÑÐÐ ÚÓÒ ØÖ ØÐÐ Ý ØØ ÔØÖ ÚÐÓÒ¹ ÐØÒ ÚÙØÙ Ø ÔØÖÙÚÒ Ê¹ ØÝ Ò ÔØÖÙÚÒ Üݹ Ä ¹ÚÖÓÓÖÒØ ØÓ ØÝ Ö ÚÐÓÒÐØÒ Ðк ÎÐÑ ÑÖØÐØݹ Ò ÚÐÓÒÐØÒ Ð ÝØØ ÔÝ ØÝÝ ÑÖØØÐÑÒ Ò ÙÓØÒ Ôع ÖÒ ÓØ ÚÓÒ ÝØØ ÚÐÓÒÐØÒ ØÚÓÒ Ê¹ ØÝ Ø ÚÖÓÓÖÒØع Ð ØØ º ÃÝØØ ÔÝ ØÝÝ ÑÝ ÚÐØ ÑÒ ÓÒÓ ØÖ ØÐØÚÒ ÔØÖÒ ØÝ ÑÙÓØÓ ÖØÒ Ú ÖÒ º ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÐÐ ÚÓÒ ØÖ ØÐÐ ÔØÖÙÚ ¹ Ø Ð ØØÙÒ ÓÑÒ ÚØÓÖÒ ÓÙÓ Ø ÚÐØØÙ ÒØÚØÓÖØ ÒØÚ¹ ØÓÖÒ ÔØÖÙÚÒ ÑÙÓÓ ØÑ ØÙÐÓÙÚº Ä ÚÓÒ ØÖ Øй Ð ÐÙÔÖ Ò ÒØÚØÓÖ Ø ØÙÐÓÙÚ Ø ÖÓÒ ØÖÙÓÙÒ ÔØÖ¹ ÙÚÒ ÚÐ ÖÓ ÓÓ ÙÚÒ Ø Ý ØØ Ò ÔØÖÒ Ó Ðغ ÃÝØØ ÔÝ ØÝÝ ÚÐØ ÑÒ ÓÒÓ ØÖ ØÐØÚÒ Ý ØØ ØÒ ÔØÖÒ ØÝ ÑÙÓØÓ ÖØÒ Ú ÖÒ º ÃÝØØÐØØÝÑ ÚÓÒ ÑÝ ØÙØ ÙÒ ÚÐÓÒÐØÒ ÚÐÒ¹ Ø ÚÙØØ ÖÓÒ ØÖÙÓÙÒ ÔØÖÙÚÒ ÚÖ Òº ÎÐÑ ÑÖØÐØÝÒ Ú¹ ÐÓÒÐØÒ Ð ÝØØ ÔÝ ØÝÝ ÑÖØØÐÑÒ Ò ÙÓØÒ ÔØÖÒ ÓØ ÚÓÒ ÝØØ ÚÐÓÒÐØÒ ØÚÓÒº ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÐÐ ÚÓÒ ØÖ ØÐÐ ÖÔÔÙ¹ ÑØØÓÑÒ ÓÑÔÓÒÒØØÒÐÝÝ Ò ÓÑÔÓÒÒØØÚØÓÖØ ØÙÐÓÙÚ ÚÖ¹ ÑØØÓ ÙØÒ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑ Òº ÄÙÚÙ ¾ ØÐÐÒ ÑÔ ÝØØÐØØÝÑÒ ÓÔÖØÓÒ ØÓØÙØØÑ Ò ØÖÚØØÙ ÚÓ ØÓÖº ÃÚØ ØÓÖ ÚÓÒ ÔÔÖØ Ò Óй ÑÒ ÐÙ Ò ÚÖÓÓÖÒØØ ØÝ Ø ÔÓÑÔÓÒÒØØÒÐÝÝ ÚÖ¹ ÑØغ ÄÙÚÙ ¹ ØÐÐÒ ØÖÑÑÒ ÖÓ ØÝÒ ÝØØÐØØÝÑÒ ØÓÑÒØ ÖÒÒØØ ÝÒ ÐÔ ÑÙÙØÓ ÓØ ÝØØÐØØÝÑÒ Ø ØÙ º ½

4 ¾ ÌÓÖ Ã ÖÓ ØÝÒ ÝØØÐØØÝÑ ØÖÚØÒ Ù Ø ÚÓ ËÔØÖ ÎÛÖ¹ ÝØØÐØØÝÑ ÚÖÓÓÖÒØØÒ º ÐÙÙ ¾º½µ Ð Ñ Ò ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑ ÚÖÓÓÖ¹ ÒØØÒ ÐÙÙ ¾º½µ ØØ ÚÖÑØØÓÒ ÐÙÙ ¾º µ Ð Ñ Òº Ä Ø Ô¹ ÓÑÔÓÒÒØØÒÐÝÝ Ò ØÖÚØÒ ØÓÖ Ó ÓÒ ØÐØÝ ÐÙÚÙ ¾º¾º ÅÝ ÖÔ¹ ÔÙÑØØÓÑÒ ÓÑÔÓÒÒØØÒÐÝÝ Ò ØÓÖ ÓÒ ÙÚØØÙ ÐÝÝ Ø ÐÙÚÙ ¾º¾º ¾º½ ÎÖÓÓÖÒØØ ØÝ Ø ÈÐÒ ÔØÖÒ ØÖ ØÐÑ Ò Ð ÔØÖÙÚ Ø ÚÓÒ Ð ÖÐ ÚÖÓÓÖÒØØ ØÝ ½ ¾ º Ò Ò ÔØÖ Ø Ð ØÒ ØÖ ØÑÙÐÙ ÖÚÓØ Ó ¹ Ø ØØÒ ÚÓÒ Ð ÐÙØÙØ ÚÖÓÓÖÒØغ ÅÓÐÑÑ ÝØØÐØØÝÑ ØÖÚØÒ Ê¹ÖÚÓ ÙÚÒ ØØÑ ØØÓÓÒÒ ÒÝØÐк ËÔØÖ ÎÛÖ¹ ÝØØÐØØÝÑ ÝØØ ÚÓ ÚÐØ ØÖ ØÐØÚ Üݹ Ø Ä ¹ÚÖÓÓÖ¹ ÒØØ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ ÝØØÐØØÝÑ Ä ¹ÓÓÖÒØØ ØÖÚØÒ ÚÖÑØØÓÒ Ð Ñ Òº ÌÖ ØÑÙÐÙ ÖÚÓØ Ò Ð ØØÙ ÚÓÐÐ ½µ¹ µ µü µë µ µý µë µ ½µ ¾µ µþ µë µ µ Ñ ÒÓÖÑØÙ Ø Ê ½¼¼ µ Ë µý µ µ ÓÒ ØÖ ØÐØÚ ÔØÖ Ü µ Ý µ Þ µ ÓÚØ ÁÒ ØÒÖÚØ Ò ÚÖ ÓÚØÙ ÙÒØÓغ Ä Ù ØÖÚØÒ ÑÝ ÚÐÓÒÐØÒ ÙØÐÐ Ø Ôع ÖÐ Ø ØÓÙÑ Ë µº ÎÖÓÓÖÒØØ Ü Ý Þ Ò ØÖ ØÑÙÐÙ ÖÚÓ Ø ÙÖÚ Ø Ü Ý µ µ ¾

5 Þ µ Ä ¹ÓÓÖÒØ ØÓ Ä ÙÚ ÚÖÒ ÖÙØØ ÚÖÒ ÔÙÒ¹ÚÖÝØØ Ò¹ÐØ ÙÙØغ Ä ¹ÓÓÖÒØØ ÚÓÒ Ð ØÖ ØÑÙÐÙ ÖÚÓ Ø ÚÓÐÐ µ¹ ½½µ Ñ Æ Æ Æ ÓÚØ ÖÖÒ ÚÐÓ Ò ØÖ ØÑÙÐÙ ÖÚÓº µ Æ Ä ½½ ¼¼ Æ ¾¼¼ Æ µ ½ µ µ ½½ ½ ½ Æ Æ ¼¼¼ ¼¼¼ µ µ ½¼µ ½½µ ÅÙÙÒÒÓ ØÖ ØÑÙÐÙ ÖÚÓ Ø Ê¹ÖÚÓ ÚÓÒ Ø ÙÓÖÒ ÑÙÙÒÒÓ Ñع Ö Ò ÚÙÐÐ ¾ Ê ¾ ¾½¼ ½ ¼ ¼¾ ½¼ ¼¼½ ¼¼ ¼¾¼¼ ½¼¼ ¾ ½¾µ ÂÓ ÐÙØÒ ÖÚÓØ Ê¹ÑÙÓÓ ¾ ÓÒ ÑÙÙÒÒÓ ÑØÖ ÑÒ Öй ÒÒ ¾ Ê ¾ ¾ ¼ ¼ ¼½ ½¾¾ ¼¼¾ ¼¼¼¾ ¼¼½ ½¼¼¾ ¾ ½ µ

6 ¾º¾ ÈÓÑÔÓÒÒØØÒÐÝÝ ÈÓÑÔÓÒÒØØÒÐÝÝ È ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ µ ÝØØÑй Ð ÔÝ ØÝØÒ ÔÑÒ ÔØÖÙÚ ÔÙ Ø ÙÓÐÑØØ ÐÝØØÑÒ ÔØÖØ Ð ÚÖØØÑÒº ÈÙ Ò ÙØØÑÒ ÚÖÒ ÙÙÖÙÙ ÖÔ¹ ÔÙÙ ÝØØØÚÒ ÒØÚØÓÖÒ ÐÙÙÑÖ Ø ÑØ ÒÑÑÒ ÙÙÖÑÔ Óѹ Ò ÖÚÓ Ú ØÚ ÚØÓÖØ ÒØÚØÓÖÓÙÓÓÒ ÚÐØÒ Ø ÚÑÑÒ ÚÖØØ ÝÒØÝÝ ÐÙÔÖ ØÒ ÖÓÒ ØÖÙÓØÙÒ ÔØÖÒ ÚÐÐк Ë ¾ ÔØÖØ ½ Ñ ½½ ½Ñ º ººº º Ò½ ÒÑ ÐÐÓÒÔØÙÙØ ½µ ÐÙÔÖ Ø ÔØÖÙÚ Ø Ë ÓÒ ÐÐÓÒÔØÙÙ Ò ÐÙÙÑÖ ÓÒ Ò Ôع ÖÒ ÐÙÙÑÖ Ñ Ð ØÒ ÓÑÒ ÖÚÓÒ ¹ÚØÓÖÒ ÑÖØØÑ Ø ÚÖØÒ ÓÖÖÐØÓÑØÖ Ê ÓÒ ÓÓ ÓÒ Ò Òº Ê ½ Ñ ËËÌ ½µ ÅØÖ ÐÐ Ê ÓÒ Ò ÔÔÐØØ ÓÑÒ ÖÚÓ ¹ÚØÓÖغ ÇÑÒ ÚØÓÖØ ÓÚØ ÝØÐÒ Ê ½µ ÖØ Ùº ÃÓº ÝØÐ ÓÒ ÓÒÐÑØÖ Ó ÐØ ÑØÖ Ò Ê Óѹ Ò ÖÚÓغ ÇÑÒ ÚØÓÖ Ø ÚÐØÒ ÒØÚØÓÖ ÑØÖ Ò Öص Ô Ô¹ ÔÐØØ ÚØÓÖØ ÓØ Ú ØÚØ ÔØ ÙÙÖÒØ ÓÑÒ ÖÚÓº ÒØÚØÓÖØ ¾ ½ Ô ½½ ½Ô º º ºº º Ò½ ÒÔ ½µ ÃÙÒ Ð ØÒ ÒØÚØÓÖÒ ÔØÖÙÚÒ ØÙÐÓ Ì Ë Ò ÑØÖ ÓÒ ÓÓ ÓÒ Ô Ñº ÃÒØÚØÓÖÒ ÐÙÙÑÖ Ø ÖÔÔÙÒ ÒØÚØÓÖØ ¹ ØÙÐÓÑØÖ ÝØÒ ÚÚØ ÝÐÒ ÙÓÑØØÚ Ø ÚÑÑÒ ØÐ ÙÒ ÐÙ¹ ÔÖÒÒ ÔØÖÙÚº ËÔØÖÙÚ ÚÓÒ ÖÓÒ ØÖÙÓ ÒØÚØÓÖÒ ¹ ØÙÐÓÑØÖ Ò ÚÙÐÐ ÙÖÚ Ø Ë ¼ Ì Ë ½µ

7 ÌÓÒÒ ÑÒØÐÑ ÓØ ÚÓÒ ÔØÖÙÚÒ ÔÙ Ò ÓÒ ÖÔÔÙÑØÓÒ Óѹ ÔÓÒÒØØÒÐÝÝ Á ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ µ º ÊÔÔÙÑØÓÒ Óѹ ÔÓÒÒØØÒÐÝÝ ÓÒ ØÓØÙØÙ ÐØÒ ÝÚÒ ÑÒÐØÒÒ ÙÒ ÔÓÑÔÓÒÒع ØÒÐÝÝ ÒÓ ÖÓ ÓÒ ÓÑÔÓÒÒØØÚØÓÖÒ Ð ÒØØÚ º Ì ØÝ ÓÒ ÓÑÔÓÒÒØØÚØÓÖÒ Ð Ñ Ò ÝØØØÝ Â ÂÓÒØ ÔÔÖÓÜÑØ ÓÒ¹ ÐÞØÓÒ Ó Ò¹ÑØÖ µ¹ðóöøñ º ¾º ÎÖÑØØ ÈÓÑÔÓÒÒØØÒÐÝÝ ÖÔÔÙÑØØÓÑ ÓÑÔÓÒÒØØÒÐÝÝ ÙÓÖ¹ ØØØÚÒ ÔØÖÙÚÒ ÔÙ Ò ÙØØÑ ÚÖØØ ÚÓÒ ØÖ ØÐÐ ÐÙ¹ Ù ØÒ Ö ÚÖÑØØÓÒ ÚÙÐк ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÒ ÓÒ ØÓØÙØØØÙ ÙÚÒ ÐÝÚÝÝÒ Ô¹ Ù ÙØÒ Ð Òغ Ä ÝØØÐØØÝÑ Ð ØÒ ÁÄ Ë¹ÁÄ ÒÐÒ ÓÒ ÙØÒ ÙÔÔÙÖÚÓ ÈËÆÊ È ËÒйØÓ¹ÆÓ ÊØÓµ ¹ ÑÖÒÒ ÒÐÚÖ ÅË ÅÒ ËÕÙÖ ÖÖÓÖµ ÓÓ ÙÚÐÐ ØØ Ý Øع ÐÐ ÔØÖÐк ËÔØÖÙÚÒ ÐÝÚÝÝ ÐØݵ ÔÖÓ ÒØØÒ Ò ÑÖØØÑÐÐ ÔÙ¹ ÝØØØÝ ÒØÚØÓÖØ Ú ØÚÒ ÓÑÒ ÖÚÓÒ Ù Ò ÓÖÖ¹ ÐØÓÑØÖ Ø ½µ Ð ØØÙÒ ÓÑÒ ÖÚÓÒ ÐØÝ ½¼¼ È Ô ½ ÈÒ ½ ½µ Ñ Ô ÓÒ ÒØÚØÓÖÒ ÐÙÙÑÖ Ò ÓÖÖÐØÓÑØÖ Ò Ò ÓÑÒ ¹ ÚØÓÖÒ ¹ÖÚÓÒµ ÐÙÙÑÖº ÓÒ ÓÑÒ ÖÚÓ Ó Ú Ø ÒØÚØÓ¹ ÖÓÙÓÒ º ÚØÓÖ ÓÑÒ ÖÚÓ Ó Ú Ø ÓÓ ÓÑÒ ÚØÓÖÓÙÓÒ º ÚØÓÖº ÃÙÒ ½ ½ ÒÒ Ý ÓÒ ÙÙÖÒ ÓÑÒ ÖÚÓ Ð ÓÑÒ ÖÚÓØ ÓÚØ Ö ØÝ ÙÙÖÑÑ Ø ÔÒÑÔÒº ËÔØÖÙÚÒ ÓÑÔÖ Ó Ù Ê Ò Ú Ø ¾¼µ Ê ÔÑØØÓÑÒ ÙÚÒ ÓÓ ÔØÙÒ ÙÚÒ ÓÓ ¾¼µ ËÔØÖÙÚÒ ÑÖÒÒ ÒÐÚÖ Ð ØÒ ÚÐÐ ¾½µ ÅË Ñ Ò ½ ¼ Ñ Ò µ¾ ¾½µ ½ ½

8 Ñ Ñ ÓÒ ÔØÖÒ ÐÙÙÑÖ Ò ÐÐÓÒÔØÙÙ Ò ÐÙÙÑÖ ÒÒÒ ÐÙ¹ ÔÖ Ò ÔØÖÒ ÐÐÓÒÔØÙÙ ¼ ÒÒÒ ÖÓÒ ØÖÙÓÙÒ ÔØÖÒ ÐÐÓÒ¹ ÔØÙÙ º ÃÙÒ Ñ½ Ò ÑÖÒÒ ÒÐÚÖ Ý ØØ ÐÐ ÔØÖÐк ËÒÐÒ ÓÒ ÙØÒ ÙÔÔÙÖÚÓ Ò Ú Ø ¾¾µ ÈËÆÊ ½¼ ÐÓ ½¼ ž ÅË ¾¾µ Ñ Å ÓÒ ÔØÖÒ ØÓÖØØÒÒ Ñ Ñ ÅË ÑÖÒÒ ÒÐÚÖº ÃÚ ÚÓÒ ÓÚÐØ ÓÓ ÔØÖÙÚÐÐ Ø Ý ØØ ÐÐ ÔØÖÐк ÎÖÚÖ ½ Ò ÙÒ Ð ØÒ ÐÙÔÖ Ø ÖÓÒ ØÖÙÓÙ Ø Ôع ÖÙÚ Ø ÑÖØØØÝÒ Ä ¹ÓÓÖÒØØÒ ÖÓØÙ ØÒ ÒÐÒ ÙÑÑ Óع ØÒ ÙÑÑ Ø ÒÐÙÙÖº ÂÓ Ò ÖÚÓ ÓÒ ÐÐ ¼º Ñ ÐÑ ÝÐÒ ÔÝ ØÝ ÖÓØØÑÒ ÚÖØغ Õ Ä ¾ ¾ ¾ ¾ µ ÃÓ ÒÒÒ ÔÙÒÒÒ ÐÐÓÒÔØÙÙ ÐÙ Ø ÚØ Ñ Ò ÒÒØÒ ÖÙ¹ ÒÓÐÐ ÑÒÒ ÖÓØ ÚÖÖÓ ÔÙÒ ÐÐ Ò ÐÐ ÐÙÐÐ ÝØ ÝÚÒ ÙÒ Ú¹ ÖÐÐ ÐØ Ðк ÌØ ÓÒÐÑ ÓÖÑÒ ÓÒÒ ØØØÝ ÁÄÒ Ôع ÐÒÒ ÐÒÒ٠˹ÁÄ Ó ÓÒ ÐØØØÝ ØÖÑÑÒ ÚØØ º ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑ Ð ¹ ØÒ Ë¹ÁÄ ÝØØÑÐÐ ÔØÐ ÐÒÒÙ ØÖÚØØÚÒ ÙÓ¹ ØÙ Ò ØÒ ÅØйÓÓ º

9 ËÔØÖ ÎÛÖ Ì ÐÙÚÙ ÝÒ ÐÔ ËÔØÖ ÎÛÖ¹ÝØØÐØØÝÑÒ ØÖÓØÙ ØÓÑÒ¹ ØÔÖØ ÝØØÐØØÝÑÒ ØÖÚØ ÑØ ØÓ ØÓØ ØØÓÖÒØغ ÄÙÚÙ ÖÖÓØÒ ÑÝ ÝØØÐØØÝÑÒ ÑÙÙØÓ ÑÓÐÐ ÙÙ Ø ØÐÐÒ ÝØØÐع ØÝÑÒ Ø ØÙ ØÔ٠غ º½ ÌÖÓØÙ ØÓÑÒØÔÖØ ËÔØÖ ÎÛÖ ÓÒ ÖÒÒ ÝØØÐØØÝÑ Ó ÓÒ ØÓØÙØØØÙ ÔØÖÙÚÒ Ò Ø Ð ØØÙÒ ÚÖÓÓÖÒØØ ØÝ ØÒ ØÖ ØÐÑ Ø ÚÖØÒº ÃÝØØÐØØÝÑ ÓÒ ØÓØÙØØØÙ ÅØÐ º¹ÝÑÔÖ Ø Ò ØÝÐÐ Ø ØÓÑÚÙÙØØ ÚÓ ØØ ÅØÐÒ ÑÑ ÚÖ Ó Ô ÓØÙÒ ÅØÐÒ Ö ØÒ ÝØØÐØØÝÑÒ ØÓØÙØÙ Ò ÝØØÝÒ ØÝÐÙÒ ÍÁÒ ÓÒÐÑ Øµº ÃÝØØ ÔÝ ØÝÝ ÐØÑÒ ÝØØÐØØÝÑÒ ÐÙÑÒ ÔØÖÙÚÒ ØÖ ¹ ØÐÑÒ Ò Ê¹ ØÝ Ø ÔØÖ ÚÖÓÓÖÒØØ ÖÐ ØÒ ÚÐÓÒй ØÒ Ðк ÇÐÑÒ ÐØØÚÒ ÔØÖÙÚÒ ÖÚÓÒ ÓÒ ÓÐØÚ ÖØÒ Ö¹ ÚÓ ÐØØÙÒ ÚÐÐÐ ¼ºº½º Ä ÔØÖÙÚ ÓÒ ÒÒØØÚ ÓÐÑÙÐÓØØ ÑÙÓÓ ÙÒ ÐÐÓÒÔØÙÙ ÓÑÒ Ø ÓÒÒº ËÔØÖÙÚÒ ÐØÑÒÒ ÝØØÐØØÝÑÒ ØÔØÙÙ ÓÓ ÝØØÐØØÝÑ Óй ÚÒ ÄÓ Ñ¹ÔÒÒ Ø Ð¹ÚÐÓÒ ÄÓ¹ÓÑÒÒÓÒ ÙØغ ÒÒÒ ÙÒ ÙÚÒ Ê¹ ØÝ ÒÝØØÒ ÝØØÐØØÝÑ Ý ÝØÒ ÝØØÐØ ÖÐÐ ÙÒ ÔØÖÙÚÒ ÐÐÓÒÔØÙÙ ÐÙº ÒÒØÙ Ø ÐÐÓÒÔØÙÙ ÖÚÓ Ø ØÖ ¹ ØØÒ ÖÚÓÒ ÒÙÑÖ ÙÙ ÒÒ ÝØÒ ÓÔÚÙÙ ÐØØÚÒ ÙÚÒ ÑÒ¹ ÓÒ Ò º ÐÐÓÒÔØÙÙ ÖÚÓÒ ÝØØÑ Ò ÐÒ ÔØÖÙÚ Ø Ð ØÒ ÚÖÓÓÖÒØØ ØÝ Ø ÝØØÒ ÓÐÓÖÓÒÚ¹ÙÒØÓØ ÓÒ ÓÐÑÓÓ Ðݹ ØÝÝ ÐØØ Ø º ÙÒØÓÒ ÔÐÙØØÑØ Ê¹ÖÚÓØ ØØÒ ÙÚÒ ÝØØÐØØݹ ÑÒ Ú ÑÑÒÔÙÓÐ Ó ÑÙÙØ ÚÖÓÓÖÒØØ ØÐÐØØÒ ÑÝѹ Ô ÝØØ ÚÖØÒº ÃÝØØ ÚÓ ÚÐØ ÝØØÐØØÝÑÙÒÒ Ó ÐÐ Ø Ú Ø ËÔØÖ ÎÛÖ¹ ÓÐÓÖ ÓÓÖÒØ ¹ÔÒ Ø ØÖ ØÐÐÒÓ ÐØÙÒ ÙÚÒ Ôع Ö Ú ÚÖÓÓÖÒØØ ØÝ º ÃÝØØÐØØÝÑ ÝÒÒ ØÝÝ ËÔØÖ ÎÛÖ¹ØÐÒ ÑÙØØ ÔØÖÙÚÒ ÐØÑÒÒ ÝØØÐØØÝÑÒ ÓÒÒ ØÙÙ ÙÑÑ Ò ØÐ º ÂÓ ÝØØ ÝÖØØ ÝØØ ÙÒ ÒÝÚ ÚÐÒØÓ ÒÒÒ ÔØÖÙÚÒ Ð¹ ØÑ Ø ØÙÐÓ ØØÒ ÒÝØÐÐ ØÖÚØØ ÒÑÙÒÒ ÚÖÐÑÓØÙ º ËÔØÖ ÎÛÖ¹ØÐ ÓÒ ÑÓÐÐ Ø ØÖ ØÐÐ ÔØÖ ÐÑÐРʹ ÙÚ ÖÐк ÃÝØØ ÚÓ ØÖ ØÐÐ ÓÓ Ý ØØ Ø ÔØÖ Ø ÀÓÐ ÔØÖ¹ ÔÒÒ ÓÐÐ ÔÓ Ù ÑÔ ÔØÖ ÖÖÐÐÒº ËÔØÖ ÐØ ÓÒ ÑÝ ÑÓÐÐ Ø ÔÚØØ ØÙÚ Ø ÖÒ ÙÖ ÓÖÒ ÒÒÒ ÑÙ Ø ÓÒع ÒÓÙ ÙÔعÔÒÒ ÓÐÐ ÔÓ º

10 ÌÖ ØÐØÚÒ ÔØÖÒ ØÝ ÑÙÓÓ ÚÓÒ ÚÐØ ÓÓ ÖØÒ Ø Ö¹ Ò Ú ØÚ Ø ÔÒÓÒÔ Øº Ö ÚÐÓÒÐØÒ ÚÙØÙ Ø ÔØÖÙÚÒ Ê¹ ØÝ Ò ÖÒ ÔØÖÒ ÚÓÒ ØÖ ØÐÐ ÚÐØ ÑÐÐ ÐÙØØÙ ÚÐÓÒй ÔÒÓÒÔ Ø Ø ÔÙÓØÙ ÚÐÓ Øº ÈÙÓØÙ ÚÐÓ Ø ÐÝØÝÝ ÑÝ ÚØÓØÓ Ó Ú ÙÙÒ ÝØØÐØØÝÑÙÒÒ Ó ÝØØ ÔÝ ØÝÝ Ò ÑÖØØй ÑÒ ÚÐÓÒÐØÒ Ø ÝØØØÚÒ ÙÓØÒ ÔØÖÒº ÃÙÚ ½ ËÔØÖ ÎÛÖ¹ØÐ ÓÓÒ ÓÒ ÐØØÙ ÅعÐÙ Ø ÙÚØØÙ Ôع ÖÙÚ ËÑÒ ØÔÒ ÙÒ ËÔØÖ ÎÛÖ¹ØÐ ÔÝ ØÝØÒ ØÖ ØÐÑÒ ÔØÖ¹ ÓÐÓÖ ÓÓÖÒØ ¹ØÐ ÚÓÒ ØÖ ØÐÐ ÓÓ ÙÚÒ Ý ØØ Ò Ø Ù ÑÑÒ ÔØÖÒ ØÝ Ø Üݹ Ø Ä ¹ÓÓÖÒØ ØÓ º ÎÖÓÓÖÒ¹ ØØ ÚÓÒ ÚÐØ ÝØØÐØØÝÑÒ Ú ØÚ Ø ÔÒÓÒÔ Øº ÃÐÑÐÐ ÖØ Ê¹ÙÚ Ò ÚÐØÙÒ Ô ÐÒ ÚÖÓÓÖÒØØ ØÝ ÒÝÑÒ ÑÙ ØÒ ØØÒ ÚÖÓÓÖÒØØ Ð º ÀÓÐ ÓØ ¹ÔÒÒ ÓÐÐ ÔÓ ÐØÙØ Ô ØØ ÚØ ÑÙ Ø ÙÒÒ ÔÒØÒ ÓÐÓÖ ÓØ ¹ÔÒØغ ÎÖ¹ ÓÓÖÒØØ ÐØ ÚÓÒ ÑÝ ÔÚØØ ØÙÚ Ø ÖÒ ÙÖ ÓÖÒ ÒÒÒ ÑÙ Ø ÓÒØÒÓÙ ÙÔعÔÒÒ ÓÐÐ ÔÓ º ÎÐÓÒÐØÒ ÚÐÒ¹ Ø ØÓÑ ÙØÒ ËÔØÖ ÎÛÖ¹ØÐ ÚÐÓÒÐØØ ÚØØ Ê¹ÙÚÒ

11 Ð ÔÚØØÒ ÑÝ ÚÖÓÓÖÒØØ Ðغ ÃÙÚ ¾ ÓÐÓÖ ÓÓÖÒØ ¹ØÐ ÓÓÒ ÓÒ ÐØØÙ ÅعÐÙ Ø ÙÚØØÙ ÔØÖÙÚ ÐÐ ÙÚØØÙÒ ØÓÑÒØÓÒ Ð ÝØØÐØØÝÑÒ ÓÒ ØÓØÙØØØÙ ÑÝ ÞÓÓ¹ ÑÙ ØÓÑÒØÓ ÓØ ÚÓÒ ÝØØ Ê¹ÙÚÒ ØØ ÔØÖ¹ ÚÖÓÓÖ¹ ÒØØ ÐÒ ÞÓÓÑÑ Òº ÃÝØØÐØØÝÑ ÝÝÒØ ÞÓÓÑÙ ØÓÑÒÒÓÒ ÙÒ¹ ØÓØ ÑÝ ÓÚØØØ Ò ÔØÖÙÚ Ø ÑÙÓÓ ØØØ٠ʹÙÚ ÝØØÐع ØÝÑÙÒÒº ÇÐÐÐ ÑÑØ ÓØ ÝØØÐØØÝÑÒ ØÓÑÒØÓÒ ÝÑÑÖØÑ ÓÒ ÓÓØØÙ ÔØÖÐÔºØÑйØÓ ØÓÓÒ ÓÒ ÚØØÙ ÙÓÖÒ ÁÒØÖÒع ÐÑÐÐ Ø ÝØØÐØØÝÑÒ ÀÐÔ¹ÚÐÓ Ø ÚÐÒÒ Ø ÓÒØÒØ º ÃÝØØÐØØÝÑÒ ÚÐÓÒ Ùع Ø ÓØÓ ØÓ Ù ÅØÐÒ ÓÑÒ Ó ÐÑÒº

12 º¾ ÃÝØØÝØ ØÓ ØÓØ ØØÓÖÒØØ ËÙÖÚ Ð Ø ÓÒ ØÐØÝ ÝØØÐØØÝÑÒ ØÖÚØ ÑØ ØÓ ØÓغ ÃÝع ØÐØØÝÑÒ ÙÓÖØÙ Ò Ò Ò ÒÒ ØÓ ØÓÒ ÓÒ ÓÐØÚ ÅØÐÒ Ø¹ ÚÓØØØÚ ÓÓ Ñ ØÓ Ó Ø ÓÐÑ ÙÓÖØØÒ Ø Ó Ò ÑÙÙ Åع ÐÒ ÔÓÐÙ ÑÖØÐÐÝ Ñ ØÓ º ÃÙÒ ÙÒØÓØÓ ØÓ ÓÒ ÓÙÑÒØÓ¹ ØÙ ËÓØÛÖ ÀÓÙ Ò ÌÓÓÐÓܹÑÖØØÐÝÒ ÑÙ Ø Ð ÝØØÐØØÝÑع Ó ØÓ ÝØØÐØØÝÑÒ Ø ÙÒØÓØ ÓÒ ÓÙÑÒØÓØÙ ÙÐÐÒ ÙÒØÓÐÐ ÔÖ Ø ÓØÙÐÐ ÐÙÙÐк ÚÛÖº Ö Ò ÝØØÐØØÝÑÒ ÙÚØÓ ØÓº ÚÛÖºÑ Ö Ò ÝØØÐØØÝÑÒ ÙÒØÓØ ÐØÚ ØÓ ØÓ ÓÓ ÐØØ ½º ÓÐÓÖÓÒÚºÑ ÎÖÓÓÖÒØØ Ð Ú ÙÒØÓ ÚÖÓÓÖÒØØÒ Ð Ñ Ò ÝØØØÝ ØÓÖ ÓÒ ØÐØÝ ÐÙÚÙ ¾º½º ÃÓÓ ÐØØ º Ô¾ºÑ ÎÖÓÓÖÒØØÒ ÜÝ Ä µ ÔÖØÑ Ò ÝØØØÝ ÙÒØÓ ÓÓ Ðع Ø º ÖÓÖÑØºÑ ÙÒØÓ Ó ÔÖÓ ÓÒ ÔØÖÙÚ Ô¾ºÑ¹ÙÒØÓØ ÚÖØÒ ÙÓÖØØÒ ÚÖÓÓÖÒØØÔ ØÒ ÖÙ ÓÒØ ÓÓ ÐØØ º ÔØÖº ÃÙÚØÓ ØÓ ÖÐÐ ÐÐ ÝØØÐØØÝÑÙÒÐÐ Ó ÝØØ ÚÓ Ø Ñ¹ ÖØÐÐ ÙÓØØÑÒ ÝØØØÚÒ ÔØÖÒº ÔØÖºÑ ËÔØÖº¹ÙÚØÓ ØÓÒ ÙÒØÓØ ÐØÚ ØÓ ØÓ ØÖÑÔ ÐÚØÝ ÐÙÚÙ º ÃÓÓ ÐØØ º ÜÝÞ½ ½ºØ ÜÝÞ½ºØ ÎÖ ÓÚØÙ ÙÒØÓÒ ÖÚÓØ ÐÐÓÒÔØÙÙ ÐÐ ¼¹ ¼ ÒÑ ÝÒ ÒÒÓÑع ÖÒ ÚÐÒ Á ½ ½ ½º ÌÓ ØÓÒ Ò ÑÑÒÒ Ö ÐØ ÐÐÓÒ¹ ÔØÙÙ Ò ÖÚÓغ Ð ÓÙÖ ºØ ÎÐÓÒÐØØ ÐÐÓÒÔØÙÙ ÐÐ ¼¼¹ ¼ ÒÑ ÝÒ ÒÒÓÑØÖÒ ÚÐÒ ÙÒ ÓÑÒ ÖÒÒº ÌÓ ØÓÒ Ò ÑÑÒÒ Ö ÐØ ÐÐÓÒÔØÙÙ¹ Ò ÖÚÓغ ÌÓ ØÓ ÐØ ÙÖÚØ ÚÐÓÒÐØØ ÑÒØÙ Ö ØÝ ¹ ØÒÖÚÐÓÒÐØØ ¼ ÙÓÖ ÓÚØ ÚÐÓÒÐØØ ¾ ½½ ÂÙ ÈÖ Ò ÈÖØØ ËÐ ØÒÒ ÑØØÑØ ÒÝØØØ Ä½ ľ Ä ÖÚÓØ ÑØØØÙ ËǹÒÝØØ Øµ Ľ ÔÐÚØÒ ØÚ ¹ ¼º º½ ½ ¼ ̵ ½¼

13 ľ ÔÐÚÒÒ ÖÑ ØÚ ¹ ½¾ºº½ ½ ¼ Ä ÔÐÚØÒ ØÚ ÙÖÒÓÒÐ Ù ¹ ½ºº½ ¾¼º¾ ÙÖÚºØ ÜݹÓÓÖÒØ ØÓÓÒ ÔÖÖØØÚÒ ÖÝÖÒ ÓÓÖÒØØ ÔØÖÐÔºØÑÐ ÇØÓ ØÓ ÚÐØØÑØÒ ÓÐÑÒ ÙÓÖØÙ Ò ÒÒÐغ ÃÓ ËÔØÖ ÎÛÖ ÓÒ ØÓØÙØØØÙ ÅØÐÒ ÓÑ Ö ØÒ ÝØØÐØØÝÑÒ ÐÙÓÒØØÝÐÙ ÍÁ ÝØØÒ ÙÙÖÒ Ó ÝØØÐØØÝÑÒ ÙÒØÓ Ø ØÓ ¹ ØÓ ÚÛÖºÑ ÔØֺѵ ÓÒ ÓØØÙ ØÒ ÝØØÐØØÝÑÒ Ò ÓÑÔÓ¹ ÒÒØØÒº ÅÝ ÚÖÓÓÖÒØØÒ ÔÖØÑ Ò ÝØØØÝ ÙÒØÓ Ô¾ºÑ ÓÒ ÑÙÓØØÙ ØÓÑÑÒ ÔÐ ØÒ ØÑÒ ÝØØÐØØÝÑÒ ÓÑÔÓÒÒØØÒ Ò º ÃÝØØÐØØÝÑÒ ÝÒ ÓÒ ÒÐ ¹ÖÒÒ Ó ÐØ Ó ÓØØÑØ Ò ÝØع ÐØØÝÑÒ ÓÑÔÓÒÒØØÒº ÂÓ ÐÐ ÝØØÐØØÝÑÒ ÓÑÔÓÒÒØÐÐ ÓÒ Ò ØÓ¹ ÑÒØÒ ÐØØÝÚÒ ÒØØÒ Ð Í ÖعÒØØ ÓÓÒ ÝØØ ÚÓ ØÐÐØØ ÐÙÑÒ ØØÓº ÀÒÐ ¹ÖÒØ Ò ÚÓÒ ÓÐÑÒ ÙÓÖØÙ Ò ¹ Ò ÑÖØÐÐ ÓÑ Ó ÓØØÑ Ø ÝØØÐØØÝÑ ÐÐ ÓÚØ ÒÐ ºÑ ÒÐ ºÔ ÒÐ ºÐØÖº ÃÝØØÝØ ØÐÐØÙ ÖÒØØ ÓÒ ØÐØÝ ØÖÑÑÒ ÙÖÚ Ð Ø º ÒÐ ºÓÓÖ» Í ÖØ ÑØÖ Ó ÐØ ÙÐÐÒ ØÐÐ ÚÖÓÓÖÒØØ Ð ØÓ ÑÙ ØÒ ÒÝÚÒ Ô ØÒ ÓÓÖÒØØ Ê¹ÙÚ ÙÐÐÒ Ô ØÐÐ Ð ØÙÒ ÚÖØÝ Ò ÒÐ ºÙÖ½» Í ÖØ ¼ ÙÒ ÓÐÑ ÝÒÒ ØØÒ ½ ÙÒ ÚÐØØÙÒ ËÔØÖ ÎÛÖ ¾ ÙÒ ÚÐØØÙÒ ÓÐÓÖ ÓÓÖÒØ ÒÐ ºÐØÖ ÑØÖ Ó ÐØ ÝØØÒ ÑÖØØÐÑÒ ÙÓØØÑÒ ÒÐ ºÑ ʹÙÚ ÒÐ ºÑ» Í ÖØ Ê¹ÙÚÒ ÐÙÔÖÒÒ ÓÓ Ô ÐÒ ÓÖÙ ÐÚÝ ÒÐ ºÑÖÑ» Í ÖØ ÑØÖ Ó ÐØ ÔØÖÙÚ Ø ÓÐÓÖÓÒÚ¹ÙÒØÓÐÐ Ð ØÙØ ÚÖÓÓÖ¹ ÒØØ ÒÐ ºÐØÜØ» Í ÖØ ÃÓÓÒ ÐÙÙ Ó ÐÑ ÝØ ÓÐÚÒ ÚÐÓÒÐØÒ ÖÒÙÑÖÓÒ Ð ÓÙÖ ºØ¹ØÓ ØÓ º ÂÓ ÝØ ÓÒ ÚÐÓÒÐØÒ Ø ÝØØÒ Ñ¹ ÖØØÐÑ ÙÓØÒ ÔØÖ Í ÖØÒ ÖÚÓ ÓÒ ¼º ÒÐ º ÔØÖ» Í ÖØ ÑØÖ Ó ÐØ ÙÐÐÒ ØÐÐ ÔØÖ Ð ØÓ ÒÝÚÒ Ôع ÖÒ ÓÓÖÒØØ Ê¹ÙÚ ½½

14 ÒÐ ºÔ ÐØØÙ ÔØÖÙÚ ÓÐÑÙÐÓØØ Ò ÑØÖ Ò ÒÐ ºÔÜÐÐÓ» Í ÖØ Ê¹ÙÚÒ ÚÑ ÑÑÒ ÐÙ Ò ÓÓÖÒØØ Ý Ü ÒÐ ºÛÐÒØ» Í ÖØ ÚØÓÖ Ó ÐØ ÝØ ÓÐÚØ ÐÐÓÒÔØÙÙÒ ÒÙÑÖ Ø ÖÚÓØ ÐÙ ÒÝØØÒÓØØÓÚÐ ÐÓÔÔÙ ÃÝØØÐØØÝÑÒ ÓÑÔÓÒÒØÐÐ ØØØ Ø ØÒØØ Ý ÐØ ÐÙ¹ ÙÙÒÓØØÑØص ÓÒ ÝØØÐØØÝÑÒ ÙÒØÓØ ÐØÚ ÚÛֺѹ Ø ÔØֺѹ ØÓ ØÓ ÓÑ ÐйÙÒØÓ Ó ÙÓÖØØÒ ÓÑÔÓÒÒØÒ ØÚÓØÙ º ÐйÙÒØÓÒ Ð ÚÛÖºÑ ÐØ ÑÝ ÓØÒ ÐйÙÒØÓÒ ÙØ ÙÑ ÙÒØÓغ à ÝØØÐØØÝÑØÓ ØÓÒ ÙÐÓÔÙÓÐ ÙÒØÓØ Ùع ÙØÒ ÝØØÐØØÝÑÒ Ø ÙÒØÓ Øº º ÅÙÙØÓ ÓØ ÎÐÓÒÐØÒ ÑÙÓÑÒÒ ÝØØÐØØÝÑ ÓÒÒ ØÙÙ ÐÑÒ ØØ ÑÙÙØÓ Ø ÚÙØØÚØ ÑÙÒ ÙÒ ÚÐÓÒÐØÒ ØØÐÝÝÒ ÐØØÝÚÒ ÓÑÔÓÒÒØØÒº ÂÓ ÐÙØÒ Ø ÑÙÙØÓ ÒÓ ØÒ ÚÐÓÒÐØÒ ÒÙÑÖ Ò ÖÚÓÒ ÑÙÙ¹ ØÓ Ø ÚÓÒ Ø ÙÓÖÒ Ð ÓÙÖ ºØ¹ØÓ ØÓÓÒº ÂÓ ÐÙØÒ Ð Ø ÓÓ¹ ÒÒ ÙÙ ÚÐÓÒÐ ÓÖÚØ ÑÑÒ ÝØ ÓÐÐÙØ ÚÐÓÒÐ ÙÙÐÐ Ø ÔÓ Ø ÓÒ ÚÐÓÒÐ ÓÓÒÒ ØÝØÝÝ ÑÙÙØÓ Ø ÑÒ ÒÑÑÒº ÎÐÓÒÐØØ Ð ØØ ÔÓ ØØØ Ø ÑÙÓØØ ÓÒ ØØÚ ØÖÚØØÚØ ÑÙÙØÓ Ø ÚÛÖº¹ØÓ ØÓÒ ÚÐÓÓÒ Ó Ø ÚÐÓÒÐ ÚÐØÒº ÅÙÙØÓ ØÒ ØÑÒÒ ÓÒÒ ØÙÙ ÐÔÓØÒ ÅØÐÒ Ö ÐÐ ØÝÐÙÐÐ ÍÁÐк ÃÝØع ÐØØÝÑÒ ÚÛֺѹØÓ ØÓÒ ÓÓÒ ØÝØÝÝ Ø ØÖÚØØÚØ ÑÙÙØÓ Ø ÒÒ ÓØÒ ÓÒ Ö Ò ÔÙÓÐÒ ÑÙÙØÓ ÚÙØغ ËÙÙÖÑÑØ ÑÙÙØÓ Ø ÓÙÙ¹ ØÒ ØÓÒÒ Ø ØÑÒ ÚÐÓÒÐØÒ ÚÐÒØÔÒÒ»Ø ÔÙÓØÙ ¹ ÚÐÓÒ ÓÓÒº ÂÓØØ ÑÙÙØØØÙ Ø Ð ØØÝ ÚÐÓÒÐØØ ÚÓØ Ò ÝØØ ÚÖÓÓÖÒØØÒ Ð Ñ ØÝØÝÝ ÙÙÒ ÚÐÓÒÐØÒ ØÓØ Ð ÖÒÙ¹ ÑÖÓ Ð ÓÙÖ ºØ¹ØÓ ØÓ Óº ÚÐÓÒÐØÒ ØÙÒÒ ØÑÖÓÒÓ ÝØع ÐØØÝÑ Ð ÓÑÔÓÒÒØÒ Ì¹ÔÖÑØÖµ Ð Ø ÚÖÓÓÖÒØØ Ð ÚÒ ÓÐÓÖÓÒÚ¹ÙÒØÓÓÒº ÅÐÐ ÚÓ Ø Ó Ó ÝØ ÓÐÚ Ø ÚÐÓÒÐØ Øº ÎÐÓÒ¹ ÐØÒ ÒÙÑÖ Ø ÖÚÓØ ÓÒ Ð ØØÚ Ð ÓÙÖ ºØ¹ØÓ ØÓÓÒº ÂÓ ÐÙØÒ ÑÙÙØØ ÚÖÓÓÖÒØØ Ð ØÓÓÒ ÔÖÖØØÚÒ Ô ØÒ Ñ ¹ ÑÑÖ ÖØØ ÙÒ ÑÙÙØØÒ ÖÓÖÑغѹØÓ ØÓ ÓÐÚÒ ÑÜÒÙѹÑÙÙع ØÙÒ ÖÚÓº ÅÙÒ ÙÒ ÐÐ ÙÚØØÙÒ ÝØØÐØØÝÑÒ ÙÒØÓÒ ÑÙÙع ØÙÒ ÖÚÓÒ ÑÙÙØØÑ Ø ÙÓ ØÐÐ Ó ÙÒØÓØ ÑÙÙØØÙØ ÓÒ ÙÙÒÒ¹ ØÐØÙ ØÒ ØØ ÅØÐÒ ÍÁÐÐ ØÓØÙØØØÙ ÝØØÐØØÝÑ ØÓÑ ÓÒº ÂÓ ÐÙØÒ Ø ÑÙÙØÓ ÙÒØÓÒ ØÓÑÒØÒ ÙÓ ØÐØÚÑÔ ÓÒ ÓÐÑÓ¹ ÓÓÒÒ ÙÙ ÝØØÐØØÝѺ ½¾

15 º Ì ØÙ Ì ÐÙÚÙ ØÐÐÒ ËÔØÖ ÎÛÖ¹ÝØØÐØØÝÑÒ Ø ØØÔÙ Ø ØÙÐÙÓ¹ ØÙÒº ËØÙÒ Ø ØØÙÐÓ ØÒ ÔÖÙ ØÐÐ ÝØØÐØØÝÑ ØÓÑ ÚÖØØÑ Ø ÒÓÖ¹ ÑÐÝØ º Ì ØÙ ÓÒ ÙÓÖØØØÙ ÏÒÓÛ ¹ ØØ ÄÒÙܹÝØØÖ ØÐÑ ÅØÐ º¹ÝØØÝÑÔÖ Ø º ½

16 ÚÐÒØ ÒÒÒ ÔØÖÙÚÒ Ð¹ ÎÐÓÒÐØÒ ØÑ Ø ÝØØ ÒÒÒ ÔØÖ¹ ÓÓÑÙ ÔÒÒ ÐØÑ Ø ÙÚÒ ÙÔعÔÒÒ ÝØØ Ò¹ ÓÒØÒÙÓÙ ÔØÖÙÚÒ ÐØÑ Ø ËÔØÖ ÎÛÖ¹ ÒÒ ÙÔعÔÒÒ ÝØØ ÒÒÒ ÓÒØÒÙÓÙ ÐØÑ Ø ÓÐÓÖ ÓÓÖÒØ ¹ ÔØÖÙÚÒ ÚÐÒØ ÒÒÒ ÔØÖÙ¹ ÎÖÓÓÖÒØØÒ ÐØÑ Ø ÚÒ ÔÒÒ ÔÒÑÒÒ ÒÒÒ ÅÙÒ ÐØÑ Ø ÔØÖÙÚÒ ÁÑ ÒÓØ ÐÓ ÐÓ Ñ Ö Ø Ò ÐØ ÎÖÐÑÓØÙ ÓÙÖ ØÖ ØØ ÐØ ÓÐÓÖ ÓÓÖÒØ ÒÓØ ÐØ ÒÓØÒ Ò ÎÖÐÑÓØÙ ÚÛ ÁÑ ÒÓØ ÐÓ ÓÐÓÖ ÓÓÖÒØ Ò³Ø ÎÖÐÑÓØÙ ÚÛ ÄÓ ÔØÖ ÒÓØ Ò ÔÖÓÔÖ ÓÖÑØ ÓÙÐ ÎÖÐÑÓØÙ ¹ ÑØÖܵ ÝØØÐØ ÐÐÓÒÔØÙÙÒ ÖÚÓØ Ò ÐÒ Òݹ ÃÝ ÝØÒ ÔØÖÙÚÒ Ê¹ ØÝ ÝØØÐØØÝÑ º ØØÒ Ì ØØØÚ ÇÓØØØÙ ØÓÑÒØ ÌÓØÙØÙÒÙØ Çà Çà ÎÖÐÑÓØÙ ÁÑ ÒÓØ ÐÓ ÞÓÓÑÒ Ò³Ø ÔÓ Ð Çà ÎÖÐÑÓØÙ ÁÑ ÒÓØ ÐÓ ÔØÖ Ò³Ø ÚÛ ØÐ Çà ØÐ Çà ½ ÛÚÐÒعÔÒÒ ÔÒÑÒÒ Ò ÔØÖÙÚÒ ÐØÑ Ø ÒÒÒ ÁÙÒ ÐÐÓÒÔØÙÙÒ ÖÚÓÒ ÝØØÑ Ùº Çà ÚÙØ٠غ Çà ÎÖÐÐ Ò ÙÚÒ ÐØÙ Çà ÃÐÚÓÐÐ Ò ÙÚÒ ÐØÙ ÇÃ

17 ÐÐÓÒÔØÙÙ ØÖÔ ÑÓÒ¹ ÎÖÐÐÒÒ ÒÙÑÖ Ø ÖÚÓ Ó Ô ØÐÐ ÖÓØع Ø ¼¼¼¼ ÙÚÐÐ ÓÒ ÓØ ÖÚÓØ ÓÚØ Ò ¼¼µ ÚÐÒØ ÔØÖÙÚÒ ÓÐРй ÎÐÓÒÐØÒ ÚÐÒØ Ò ÐØÖ ÔØÖÙÑ ØØÙÒ ÚÐÒØ ÔØÖÙÚÒ ÓÐРй ÎÐÓÒÐØÒ ÑÙÙØ ÚÐÒÒØ ØØÙÒ ÔÜл ÇÖÒÐ Þ¹ÔÒÒ Ô¹ ØÙÐ ÒÑÒÒ ÁÒÔÙØ ÒÓØ Ò ÔÖÓÔÖ ÓÖÑØ Ù Ò ÙÐØ Ú¹ ÎÖÐÑÓØÙ ¼¼¹¼¼ ÒÑ ÐÙ ÔÚØØÝÝ ØÖÚØØ ÑÝ ÔØÖ¹ ÚÖÓÓÖ¹ ʹÙÚ ÒØØ Ðغ ÐÑÒÒ ÞÓÓÑ ÙÚ ÒÝØØ ÚÐØÙÒ Ê¹ÙÚÒ ÔØÖ ÚÖÓÓÖÒØغ ÅÝ ÔØÖ¹ ÚÖ¹ Ô ØÒ ÚÓ ÞÓÓÑغ ÓÒØÒÓÙ ÙÔعÔÒ ÓÓÖÒØØ ÐØ Ô Ú º ÑÙÙØØÙÙ ÔÐÙØÙÙ ÐÙÔÖ Ò ÓÓÓÒ ÓÒØÒÓ٠ʹÙÚ ÑÙÙØØÙÙ ØÚ º ÙÔعÔÒ Ò ÛÒÓÛ¹ÔÒÒ ÔÒÑÒÒ Ê¹ÙÚ ÐÙØÙÙ ÑÓÐÐ ÑÑÒ ÙÙÖ ÙÚ¹ Ø ÓÒØÒÓÙ ÙÔعÔÒ ÑÙÙØØÙÙ ØÚ º ÐÙ Ò Ì ØØØÚ ÇÓØØØÙ ØÓÑÒØ ÌÓØÙØÙÒÙØ Çà ØÙÒ ÝØØÒ ¼¼µ Çà ÐÐÓÒÔØÙÙ ÐØ ÑÙØ ÎÖÐÐÒÒ ÒÙÑÖ ÖÚÓ ÝØØÒ Ø ¹ ÙÒ Ø Ð Ø ÓÒ Ó Ø ÛÚÐÒØ ÓÑÔÓÒÒØ ÎÖÐÑÓØÙ ÒÙÑÖ Ù Ò ÙÐØ ÚÐÙ ¼¼¹¼¼ ÒÑ Ò³Ø ØØÔÙ ¾ ¼µ Çà ÐÐÓÒÔØÙÙ ÒÒØÙØ ÖÚÓØ ÐÒ ÎÖÐÐÒÒ Ø ÔÒ ÝØØÒ ¾¼¼¼¼µ ÙÙÖ Ø Ð Ø ÓÒ Ó Ø ÛÚÐÒØ ÚÐÙ ÓÙØ ¹ ÎÖÐÑÓØÙ ÔÖÓÔÖ ÖÓÒ ÖÔÐÒ ÒÓÖÖØ ÚÐÙ ÛØ ÙÐØ ÓÒ Çà ÐÐÓÒÔØÙÙ ÖÚÓØ ÚØ Ø ¹ ÎÖÐÐÒÒ ÐØÙÒ ÔØÖÙÚÒ Ò ÝØع Ñ ÏÚÐÒØ Ö ÓÐÙØÓÒ Ó Ò³Ø ÑØ ÛØ ÎÖÐÑÓØÙ Ù ØÒ ÚÐÙ Ù Ò ÚÒ ØÖØ Ò Ò ÔÓÒØ ÔØÖ ½ ÐÐÓÒÔØÙÙ ÝØØÒ ÇÐÐÒÒ ¼¼µ ÙÐÙØÙÙ ÔØÖ ÐØ Ê¹ÙÚ ÔÚع ÎÐÒØÙÒ Ú ØÑÒ ÝØØØÝ ÖÚÓº ØÝÚØ Çà ËÔØÖ ÒÖ¹ÙÒ ÚÙØÙÙº Çà Çà ÚÐÒØ ÔØÖÙÚÒ ÎÖ ÓÚØÙ ÙÒØÓÒ ÐØØÙÒ ÓÐÐ ÔÚØØÝÝ ØÖÚØØ ÑÝ ÔØÖ¹ ÚÖÓÓÖ¹ ʹÙÚ ÒØØ Ðغ Çà ÓÓѹÔÒ ÔÓ Çà Çà ÇÃ

18 ÐÙ ÙÒ ËÔØÖ ÎÛÖ¹ ʹÙÚÒ ÓÒ ØÚ Ò ØÐ ÙÔعÔÒÒ ÝØØ Ò¹ ÓÒØÒÙÓÙ ÚÖÓÓÖÒØØÒ ÚÐÒØ ÓÐÓÖ ÒÒ ÐÙ ÙÒ ÚÖÓÓÖÒØØ Ê¹ÙÚÒ ÚÐØØÙ ÓÒ ÚØ ØÝÒ ÚÒ ÔØÖØ ÔÖØÝÚØ ËÔØÖ ÐØ ÔÐÐÒº ØÝÒÚØ Ò ÒÒÒ ÙÙÒ ÔØÖÒ ÔÖع ËÔØÖ ÐØ ÒÝÚ ÓÒ ÚÒ Ý ÔØÖ ÖÖÐÐÒº Ñ Ø ÔØÖÒ ÓÓÖÒØØ Ò ÙÚ Ø ÖÒ ÈÖÖØØÚÒ ÐÒ ÑÙÒ ØÓÑ ÑÝ ÀÓÐ ÔØÖ¹ Ó ØÑÒ ÓÐÓÖ ÓÓÖÒØ ÒÓØ ÐØ ÒÓØÒ Ò ÎÖÐÑÓØÙ ÚÛ ÔÒÒ ÔÓ ÓÐÐ ÚÐØØÙÒ Ô ØÒ Ú¹ ÃÒ ÒÝÚØ ÑÙ ØÒ Ô ØÒº ÖÓÓÖÒØØ ØÝ Ø Ô ØÒ ÚÖÓÓÖÒØØ ØÝ ÚÖØØÝÝ Ò ÒÒÒ ÐÐ Ò Ô ØÒ ÒÝØØÑ Ø Ð ÚÒ Ý Ô Ø ÖÖй ÙÙÒ ÚÖÓÓÖÒØØ Ò ÙÚ Ø ÖÒ Ó Ø¹ ÈÖÖØØÚØ ÐÒ ÑÙÒ ØÓÑ ÑÝ ÀÓÐ ÓØ ¹ÔÒÒ ÓÐÐ ¹ ÑÒ ÐØ ØÝÒ¹ ÎÖ Ú Ø ØÓ Ò Ð¹ ÚØ ÐÒº ÃÓÖ¹ Ù Ò ØØÙº Ì ØØØÚ ÇÓØØØÙ ØÓÑÒØ ÌÓØÙØÙÒÙØ ÎÐØØÙ ÔØÖ ÔÖØÝÝ ÔØÖ ÐÒº Çà ËÔØÖÒ ØÝÝÔÒ ÚÐÒØ ÔÒ Ø ËÔØÖ ÐØ ÔÚØØÝÚØ Ú ØÑÒ ÚÐÒغ Çà ÀÓÐ ÔØÖ¹ÔÒ ÔÓ Çà ÀÓÐ ÔØÖ¹ÔÒ ÚÔÒ ÐÖ Ü ¹ÔÒÒ ÔÒÑÒÒ ËÔØÖ ÐØ ØÝÒÚغ Çà ÓÒØÒÙÓÙ ÙÔعÔÒ ÔÓ Çà ½ ÔÒÒ ÓÐÐ ÔÓ º ÐÙ ÒÒÒ ÚÖÓÓÖÒع ʹÙÚÒ ÚÐÒØ ÙÒ ÓÐÓÖ ÓÓÖÒØ ¹ØÐ ÓÒ ØÒ ÓÐÓÖ ÓÓÖÒØ ÒÓØ ÐØ ÒÓØÒ Ò ÎÖÐÑÓØÙ ÚÛ Çà ØÚ Ò Çà ÓÓÖÒØ ¹ØÐ ÎÐØÙÒ Ô ØÒ ÚÖÓÓÖÒØØ ØÝ ÔÖØÝÝ ÐÒº Çà ÎÖÓÓÖÒØ ØÓÒ ÚÐÒØ ÔÒ Ø ÎÖÓÓÖÒØØ ÐØ ÔÚØØÝÚØ Ú ØÑÒ ÚÐÒغ Çà ÀÓÐ ÓØ ¹ÔÒ ÔÓ Çà ÀÓÐ ÓØ ¹ÔÒ ÚÔÒ Çà ÐÒ ÒÝÝ ÑÙ ØÒº ÓÐÓÖ ÓØ ¹ÔÒÒ ÔÒÑÒÒ Ã ÑÙ ØØ ÚÖÓÓÖÒØØÔ ØØ ÚÖØØÝÚغ Çà ÓÒØÒÙÓÙ ÙÔعÔÒ ÔÓ Çà ÔÓ º

19 ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ Ì ÐÙÚÙ ÝÒ ÐÔ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÒ ØÖ¹ ÓØÙ ØÓÑÒØÔÖØ ÝØØÐØØÝÑÒ ØÖÚØ ÑØ ØÓ ØÓØ ØØÓ¹ ÖÒØغ ÄÙÚÙ ÖÖÓØÒ ÑÝ ÝØØÐØØÝÑÒ ÑÙÙØÓ ÑÓÐÐ ÙÙ Ø ØÐÐÒ ÝØØÐØØÝÑÒ Ø ØÙ ØÔ٠غ º½ ÌÖÓØÙ ØÓÑÒØÔÖØ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ÓÒ ÖÒÒ ÝØØÐØØÝÑ Ó ÓÒ ØÓØÙØØØÙ ÔØÖÙÚÒ ÔÓÑÔÓÒÒØØÒÐÝÝ Ò ØÙÐÓ ØÒ ØÖ ØÐÑ Ø ÚÖØÒº ÃÝØع ÐØØÝÑ ÓÒ ØÓØÙØØØÙ ÅØÐ º¹ÝÑÔÖ Ø Ò ØÝÐÐ Ø ØÓÑÚÙÙع Ø ÚÓ ØØ ÅØÐÒ ÑÑ ÚÖ Ó Ô ÓØÙÒ ÅØÐÒ Ö ØÒ ÝØØÐØØÝÑÒ ØÓØÙØÙ Ò ÝØØÝÒ ØÝÐÙÒ ÓÒÐÑ Øµº ÃÝØØ ÔÝ ØÝÝ ÐØÑÒ ÝØØÐØØÝÑÒ ÐÙÑÒ ÔØÖÙÚÒ ØÖ ¹ ØÐÑÒ ÔÓÑÔÓÒÒØØÒÐÝÝ ÝØØØÚ ÒØÚØÓÖØ ØÙÐÓ¹ ÙÚº ÃÝØØÐØØÝÑ ÓÒ ÑÓÐÐ Ø ØÖ ØÐÐ ÑÝ ÒØÚØÓÖ Ø ¹ ØÙÐÓÙÚ Ø ÖÓÒ ØÖÙÓÙÒ ÔØÖÙÚÒ ÐÙÔÖ Ò ÔØÖÙÚÒ Ê¹ ØÝ Ø ÔÙ Ò ÙØØÑ ÚÖغ ÎÖÒ ØÖ ØÐÙ ÓÒ ÑÓй Ð Ø ÔØÖÓØ Ø ØØ ÓÓ ÙÚÒ ÖÚÓÒº ÇÐÑÒ ÐØØÚÒ ÔØÖÙÚÒ ÖÚÓÒ ÓÒ ÓÐØÚ ÖØÒ ÖÚÓ ÐØØÙÒ ÚÐÐÐ ¼ºº½º Ä ÔØÖÙÚ ÓÒ ÒÒØØÚ ÓÐÑÙÐÓØØ ÑÙÓÓ ÙÒ ÐÐÓÒÔØÙÙ ÓÑÒ Ø ÓÒÒº ËÔØÖÙÚÒ ÐØÑÒÒ ÝØØÐØØÝÑÒ ØÔØÙÙ ÓÓ ÝØØÐØØÝÑ Óй ÚÒ ÄÓ Ñ¹ÔÒÒ Ø Ð¹ÚÐÓÒ ÄÓ¹ÓÑÒÒÓÒ ÙØغ ÒÒÒ ÙÒ ÙÚÒ Ê¹ ØÝ ÒÝØØÒ ÝØØÐØØÝÑ Ý ÝØÒ ÝØØÐØ ÖÐÐ ¹ ÙÒ ÔØÖÙÚÒ ÐÐÓÒÔØÙÙ ÐÙº ÒÒØÙ Ø ÐÐÓÒÔØÙÙ ÖÚÓ Ø ØÖ Ø¹ ØÒ ÖÚÓÒ ÒÙÑÖ ÙÙ ÒÒ ÝØÒ ÓÔÚÙÙ ÐØØÚÒ ÙÚÒ ÑÒ Ó¹ Ò Ò º ÐÐÓÒÔØÙÙ ÖÚÓÒ ÝØØÑ Ò ÐÒ ÔØÖÙÚ Ø Ð ØÒ Ú¹ ÖÓÓÖÒØØ ØÝ Ø ÝØØÒ ÓÐÓÖÓÒÚ¹ÙÒØÓØ ÓÒ ÓÐÑÓÓ ÐÝØÝÝ ÐØØ Ø º ÙÒØÓÒ ÔÐÙØØÑØ Ê¹ÖÚÓØ ØØÒ ÙÚÒ ÝØØÐØØÝÑÒ Ú ÑÑ ÝÐÒÙÖ Ä ¹ÓÓÖÒØØ ØÐÐØØÒ ÑÝÑÔ ÝØØ ÚÖØÒº ÎÖÓÓÖÒØØÒ Ð Ñ Ò Ð ÔØÖÙÚ Ø ÑÙÓÓ ØØÒ ÒØÚØÓ¹ ÖØ ØÙÐÓÙÚØ ÐÙÚÙÒ ¾º¾ ØÓÖÒ Ñ٠غ ÃÝØØ ÚÓ ÚÐØ ÝØØÐØØݹ ÑÒ Ú ÑÑ ÐÐ Ø Ú Ø ÁÒÒÖ ÔÖÓÙØ Ñ ¹ ÓÑÔÖ ÓÒ ÖÖÓÖ ¹ÔÒ Ø ØÖ ØÐÐÒÓ ÒØÚØÓÖØ ØÙÐÓÙÚ Ú ÐÙÔ¹ Ö Ø ÖÓÒ ØÖÙÓØÙ ÔØÖ ÚÖÑØØÓº ÃÝØØÐØØÝÑ ÝÒÒ ØÝÝ ÁÒÒÖ ÔÖÓÙØ Ñ ¹ØÐÒ ÓÑÔÖ ÓÒ ÖÖÓÖ ¹ØÐ ÚÓÒ ÚÐØ ÐÚÓÐÐ Ò ÔØÖÙÚÒ ÐØÑ Ò ÐÒº ½

20 ÁÒÒÖ ÔÖÓÙØ Ñ ¹ØÐ ÝØØ ÚÓ ØÖ ØÐÐ ÐÙÑÒ ÑÖ Òع ÚØÓÖØ ØÙÐÓÙÚº ÃÒØÚØÓÖÒ ÐÙÙÑÖ ÚÐØÒ ÐÙÙÔÐ Ø ÐÙÙÑÖÒ ÑÙÙØÓ ÝÚ ÝØÒ ÍÔØ ÚÛ¹ÔÒÐк ÍÔØ ÚÛ ÔÚع Ø ÒÝÚÒ ÐÙØÙÒ ÑÖÒ ÒØÚØÓÖØ ØÙÐÓÙÚº ÂÓ ¹ ØÙÐÓÙÚØ ÚØ ÑÙ ÖÖÐÐ ÒÝØÐÐ ÐÑ ØÝÝ ÝØØÐØØÝÑÙÒÒ ÓÒ ÐÖÙÒÒ ÐÙ ÔÒØ ÓÐÐ Ú ÑÑÐк ÃÙÒ ØÙÐÓÙÚ ÐØÒ ÖÐÐ ÚÚÒÒØÒ Ø Ú ØÚ ÒØÚØÓÖº ÃÙÚ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÒ ÁÒÒÖ ÔÖÓÙØ Ñ ¹Ó Ó ÓÑÔÖ ÓÒ ÖÖÓÖ ¹ØÐ Ð ØÒ ÔÙ Ò ÙØØÑ ÚÖØ ÓÓ Ù¹ ÚÐÐ Ý ØØ ÐÐ Ô ÐÐк ÎÖÑØØ ÓÒ ÙÚØØÙ Ý ØÝ ÓØ ÑÑÒ ÐÙ¹ ÚÙ ¾º º ÎÖÒ Ð ÒÝØØÒ ÐÙÔÖ Ò ÖÓÒ ØÖÙÓÙÒ ÔØÖÙ¹ ÚÒ Ê¹ ØÝ Ø ÐÙÔÖÒÒ ÖÓÒ ØÖÙÓØÙ ÔØÖ Ý ØØ ØÒ ÔØÖÒ Ê¹ ØÝ Øº ÃÝØØ ÚÓ ÓÑÔ ÙÑÔ Ê¹ÙÚ ÐÑÐÐ ÚÐØ Ñ¹ ÔØÖ ÙÐÐÓÒÒ ÓÒ ØÖ ØÐÙ º ÌÖ ØÐØÚÒ ÔØÖÒ ØÝ ÑÙÓÓ ÚÓÒ ÚÐØ ÓÓ ÖØÒ Ø Ö¹ Ò Ú ØÚ Ø ÔÒÓÒÔ Øº Ö ÚÐÓÒÐØÒ ÚÙØÙ Ø ÔØÖÙÚÒ Ê¹ ØÝ Ò ÖÒ ÔØÖÒ ÚÖÑØØÓÒ ÚÓÒ ØÖ ØÐÐ ÚÐع ½

21 ÑÐÐ ÐÙØØÙ ÚÐÓÒÐ ÔÒÓÒÔ Ø Ø ÔÙÓØÙ ÚÐÓ Øº ÈÙÓØÙ ÚÐÓ Ø ÐÝØÝÝ ÑÝ ÚØÓØÓ Ó Ú ÙÙÒ ÝØØÐØØÝÑÙÒÒ Ó ÝØØ ÔÝ ØÝÝ Ò ÑÖØØÐÑÒ ÚÐÓÒÐØÒ Ø ÝØØØÚÒ ÙÓØÒ ÔØÖÒº ÃÙÚ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÒ ÓÑÔÖ ÓÒ ÖÖÓÖ ¹Ó Ó ÐÐ ÙÚØØÙÒ ØÓÑÒØÓÒ Ð ÝØØÐØØÝÑÒ ÓÒ ØÓØÙØØØÙ ÑÝ ÞÓÓ¹ ÑÙ ØÓÑÒØÓ ÓØ ÚÓÒ ÝØØ Ê¹ÙÚÒ ØØ Ð ØÓÒ ÞÓÓÑѹ Òº ÓÓÑÙ ØÓÑÒÒÓÒ ÓÑ Ò ÝØØØÚØ ÔÒØ ÓÚØ ÒÝÚ ÚÒ ÓÑÔÖ ÓÒ ÖÖÓÖ ¹ØÐ º ÃÝØØÐØØÝÑ ÝÝÒØ ÞÓÓÑÙ ØÓÑÒÒÓÒ ÙÒ¹ ØÓØ ÑÝ ÓÚØØØ Ò ÔØÖÙÚ Ø ÑÙÓÓ ØØØ٠ʹÙÚ ÝØØÐع ØÝÑÙÒÒº ÇÐÐÐ ÑÑØ ÓØ ÝØØÐØØÝÑÒ ØÓÑÒØÓÒ ÝÑÑÖØÑ ÓÒ ÓÓØØÙ ÔÐÔºØÑйØÓ ØÓÓÒ ÓÒ ÚØØÙ ÙÓÖÒ ÁÒØÖÒع ÐÑÐÐ Ø Ýع ØÐØØÝÑÒ ÀÐÔ¹ÚÐÓ Ø ÚÐÒÒ Ø ÓÒØÒØ º ÃÝØØÐØØÝÑÒ ÚÐÓÒ ÙØØ ÓØÓ ØÓ Ù ÅØÐÒ ÓÑÒ Ó ÐÑÒº ½

22 º¾ ÃÝØØÝØ ØÓ ØÓØ ØØÓÖÒØØ ËÙÖÚ Ð Ø ÓÒ ØÐØÝ ÝØØÐØØÝÑÒ ØÖÚØ ÑØ ØÓ ØÓغ ÃÝع ØÐØØÝÑÒ ÙÓÖØÙ Ò Ò Ò ÒÒ ØÓ ØÓÒ ÓÒ ÓÐØÚ ÅØÐÒ Ø¹ ÚÓØØØÚ ÓÓ Ñ ØÓ Ó Ø ÓÐÑ ÙÓÖØØÒ Ø Ó Ò ÑÙÙ Åع ÐÒ ÔÓÐÙ ÑÖØÐÐÝ Ñ ØÓ º ÃÙÒ ÙÒØÓØÓ ØÓ ÓÒ ÓÙÑÒØÓ¹ ØÙ ËÓØÛÖ ÀÓÙ Ò ÌÓÓÐÓܹÑÖØØÐÝÒ ÑÙ Ø Ð ÝØØÐØØÝÑع Ó ØÓ ÝØØÐØØÝÑÒ Ø ÙÒØÓØ ÓÒ ÓÙÑÒØÓØÙ ÙÐÐÒ ÙÒØÓÐÐ ÔÖ Ø ÓØÙÐÐ ÐÙÙÐк Ôº Ö Ò ÝØØÐØØÝÑÒ ÙÚØÓ ØÓº ÔºÑ Ö Ò ÝØØÐØØÝÑÒ ÙÒØÓØ ÐØÚ ØÓ ØÓ ÓÓ ÐØØ ¾º ÓÐÓÖÓÒÚºÑ ÎÖÓÓÖÒØØ Ð Ú ÙÒØÓ ÚÖÓÓÖÒØØÒ Ð Ñ Ò ÝØØØÝ ØÓÖ ÓÒ ØÐØÝ ÐÙÚÙ ¾º½º ÃÓÓ ÐØØ º ÔØÖº ÖÐÐÒÒ ÝØØÐØØÝÑÙÒ Ó ÝØØ ÚÓ Ø ÑÖØÐÐ ÙÓØع ÑÒ ÝØØØÚÒ ÔØÖÒº ÔØÖºÑ ËÔØÖº¹ÙÚØÓ ØÓÒ ÙÒØÓØ ÐØÚ ØÓ ØÓ ØÖÑÔ ÐÚØÝ ÐÙÚÙ ÜÝÞ½ ½ºØ ÜÝÞ½ºØ ÎÖ ÓÚØÙ ÙÒØÓÒ ÖÚÓØ ÐÐÓÒÔØÙÙ ÐÐ ¼¹ ¼ ÒÑ ÝÒ ÒÒÓÑع ÖÒ ÚÐÒ Á ½ ½ ½º ÌÓ ØÓÒ Ò ÑÑÒÒ Ö ÐØ ÐÐÓÒ¹ ÔØÙÙ Ò ÖÚÓغ Ð ÓÙÖ ºØ ÙØÒ ËÔØÖ ÎÛÖ¹ÝØØÐØØÝÑ º ÐÙÙ º¾ л ÐºÑ ¹ËÁĹÚÖÒ Ð Ñ Ò ÝØØØÝ ÙÒØÓ ÙØ ÙÙ ÙÓÖÒ Ø ÑÔÐ ØØ Ø ÐÐ ÐÙØÐØÙ ÙÒØÓغ ¹ лÒÓÐÓÖË$ ¹ лÑØÖÜºÑ ¹ лÐØÄºÑ ¹ л٠ºÑ ¹ л٠¾ºÑ ¹ лØÈÐÒ ºÑ ¹ лÔÓÒÚºÑ ¹ Ð»Ö ÞºÑ ¹ л ÔÖÐÓÒÚºÑ ¹ л ÔÖÐÐØÖ ºÑ ¹ л ÙÑÙ ºÑ ¹ лÜÝÞ¾ÐºÑ ¾¼

23 ÔÐÔºØÑÐ ÇØÓ ØÓ ÚÐØØÑØÒ ÓÐÑÒ ÙÓÖØÙ Ò ÒÒÐغ ÃÓ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ÓÒ ØÓØÙØØØÙ ÅØÐÒ ÓÑ Ö ØÒ ÝØØÐØØÝÑÒ ÐÙÓÒØØÝÐÙ ÍÁ ÝØØÒ ÙÙÖÒ Ó ÝØØÐØØÝÑÒ ÙÒ¹ ØÓ Ø ØÓ ØÓ ÔºÑ ÔØֺѵ ÓÒ ÓØØÙ ØÒ ÝØØÐØØÝÑÒ Ò ÓÑÔÓÒÒØØÒº ÃÝØØÐØØÝÑÒ ÝÒ ÓÒ ÒÐ ¹ÖÒÒ Ó ÐØ Ó ÓØØÑØ Ò ÝØØÐØØÝÑÒ ÓÑÔÓÒÒØØÒº ÂÓ ÐÐ ÝØØÐØØÝÑÒ ÓÑÔÓÒÒØÐÐ ÓÒ Ò ØÓÑÒØÒ ÐØØÝÚÒ ÒØØÒ Ð Í ÖعÒØØ ÓÓÒ ÝØØ ÚÓ ØÐÐØØ ÐÙÑÒ ØØÓº ÀÒÐ ¹ÖÒØ Ò ÚÓÒ ÑÝ ÑÖØÐÐ ÓÑ Ó ÓØØÑ Ø ÝØØÐØØÝÑ ÐÐ ÓÚØ ÒÐ ºÑ ÒÐ ºÙÑ ÒÐ ºÔ ÒÐ ºÒÛÔ ÒÐ ºÑ ÒÐ ºÚØÓÖ Ò¹ Ð ºÚÐÙ ÒÐ ºÒ ÒÐ ºÐØÖº ÃÝØØÝØ ØÐÐØÙ ÖÒØØ ÓÒ ØÐØÝ ØÖÑÑÒ ÙÖÚ Ð Ø º ÒÐ ºÚØÓÖ ÑØÖ Ó ÐØ ÐÙÔÖ Ø ÔØÖÙÚ Ø Ð ØÙØ ÓÑÒ ÚØÓ¹ ÖØ ÒÐ ºÚÐÙ ÚØÓÖ Ó ÐØ ÓÑÒ ÚØÓÖØ Ú ØÚØ ÓÑÒ ÖÚÓØ Ö ØØØÝÒ ÙÙÖÙÙ Ö ØÝ Ò ÒÐ ºÒ ÚØÓÖ Ó ÐØ ÓÑÒ ÖÚÓÒ ÐÙÔÖ Ø Ò Ø ÓÒ ÔÖÙ Øй Ð ÚÓÒ ÔÓÑ ÓÑÒ ÖÚÓ Ú ØÚ ÓÑÒ ÚØÓÖ ÒÐ ºÑ ÐÙÔÖ Ø ÔØÖÙÚ Ø ÑÙÓÓ ØØØ٠ʹÙÚ ÒÐ ºÑ» Í ÖØ Ê¹ÙÚÒ ÐÙÔÖÒÒ ÓÓ Ô ÐÒ ÓÖÙ ÐÚÝ ÒÐ ºÙÑ ÖÓÒ ØÖÙÓÙ Ø ÔØÖÙÚ Ø ÑÙÓÓ ØØØ٠ʹÙÚ ÒÐ ºÑ ÑØÖ Ó ÐØ Ó ÓØØÑØ ÙÐÐÓÒÒ ÒÝÚ ÓÐÚÒ ØÙÐÓÙÚÒ ÒÒ ÐÒ ÓØ ÓÒ ÒÐ ºÑÖÑ» Í ÖØ ÑØÖ Ó ÐØ ÐÙÔÖ Ø ÔØÖÙÚ Ø ÓÐÓÖÓÒÚ¹ÙÒØÓÐÐ Ð ¹ ØÙØ ¹ Ä ¹ÓÓÖÒØØ ÒÐ ºÙÖÑ» Í ÖØ ÑØÖ Ó ÐØ ÖÓÒ ØÖÙÓÙ Ø ÔØÖÙÚ Ø ÓÐÓÖÓÒÚ¹ÙÒØÓÐÐ Ð ØÙØ ¹ Ä ¹ÓÓÖÒØØ ÒÐ ºÐØØл Í ÖØ ÃÓÓÒ ÐÙÙ Ó ÐÑ ÝØ ÓÐÚÒ ÚÐÓÒÐØÒ ÖÒÙÑÖÓÒ Ð ÓÙÖ ºØ¹ØÓ ØÓ º ÂÓ ÝØ ÓÒ ÚÐÓÒÐØÒ Ø ÝØØÒ Ñ¹ ÖØØÐÑ ÙÓØÒ ÔØÖ Í ÖØÒ ÖÚÓ ÓÒ ¼º ¾½

24 ÒÐ ºÔÜ» Í ÖØ Ê¹ÙÚÒ ÚÑ ÑÑÒ ÐÙ Ò ÓÓÖÒØØ Ý Ü ÒÐ ºÔ ÐØØÙ ÔØÖÙÚ ÓÐÑÙÐÓØØ Ò ÑØÖ Ò ÒÐ ºÒÛÔ ÖÓÒ ØÖÙÓØÙ ÔØÖÙÚ ÓÐÑÙÐÓØØ Ò ÑØÖ Ò ÒÐ ºÛÐÒØ» Í ÖØ ÚØÓÖ Ó ÐØ ÝØ ÓÐÚØ ÐÐÓÒÔØÙÙÒ ÒÙÑÖ Ø ÖÚÓØ ÐÙ ÒÝØØÒÓØØÓÚÐ ÐÓÔÔÙ ÃÝØØÐØØÝÑÒ ÓÑÔÓÒÒØÐÐ ØØØ Ø ØÒØØ Ý ÐØ ÐÙ¹ ÙÙÒÓØØÑØص ÓÒ ÝØØÐØØÝÑÒ ÙÒØÓØ ÐØÚ ÔºÑ¹ Ø ÔØֺѹ ØÓ ØÓ ÓÑ ÐйÙÒØÓ Ó ÙÓÖØØÒ ÓÑÔÓÒÒØÒ ØÚÓØÙ º ÐйÙÒØÓÒ Ð ÔºÑ ÐØ ÑÝ ÓØÒ ÐйÙÒØÓÒ Ùع ÙÑ ÙÒØÓغ à ÝØØÐØØÝÑØÓ ØÓÒ ÙÐÓÔÙÓÐ ÙÒØÓØ Ùع ÙØÒ ÝØØÐØØÝÑÒ Ø ÙÒØÓ Øº º ÅÙÙØÓ ÓØ ÎÐÓÒÐØØ ÚÓÒ ÑÙÓØ ÑÓÒ ÙØÒ ËÔØÖ ÎÛÖ¹ÝØØÐØØÝÑ ÑÙÙØÓ ÓØ ÓÒ ØØØÝ ÐÙÚÙ º º ÅÙÒ ÝØØÐØØÝÑÒ ÙÒØÓÒ ÑÙÙع ØÙÒ ÖÚÓÒ ÑÙÙØØÑ Ø ÙÓ ØÐÐ Ó ÙÒØÓØ ÑÙÙØØÙØ ÓÒ ÙÙÒÒ¹ ØÐØÙ ØÒ ØØ ÅØÐÒ ÍÁÐÐ ØÓØÙØØØÙ ÝØØÐØØÝÑ ØÓÑ ÓÒº ÂÓ ÐÙØÒ Ø ÑÙÙØÓ ÙÒØÓÒ ØÓÑÒØÒ ÙÓ ØÐØÚÑÔ ÓÒ ÓÐÑÓ¹ ÓÓÒÒ ÙÙ ÝØØÐØØÝѺ º Ì ØÙ Ì ÐÙÚÙ ØÐÐÒ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÒ Ø Øع ÔÙ Ø ØÙÐÙÓØÙÒº ËØÙÒ Ø ØØÙÐÓ ØÒ ÔÖÙ ØÐÐ ÝØØÐØØÝÑ ØÓÑ ÚÖ¹ ØØÑ Ø ÒÓÖÑÐÝØ º ¾¾

25 ÛÚÐÒعÔÒÒ ÔÒÑÒÒ Ò ÔØÖÙÚÒ ÐØÑ Ø ÒÒÒ ÐÐÓÒÔØÙÙ ÐØ ÑÙØ ÎÖÐÐÒÒ ÒÙÑÖ ÖÚÓ ÝØØÒ Ø ¹ ÙÒ ÐÐÓÒÔØÙÙ ÒÒØÙØ ÖÚÓØ ÐÒ ÎÖÐÐÒÒ Ø ÔÒ ÝØØÒ ¾¼¼¼¼µ ÙÙÖ ¼¼¼¼ ÙÚÐÐ ÓÒ ÓØ ÖÚÓØ ÓÚØ Ò ¼¼µ ÐÐÓÒÔØÙÙ ÝØØÒ ÇÐÐÒÒ ¼¼µ ÄÓ ÔØÖ ÒÓØ Ò ÔÖÓÔÖ ÓÖÑØ ÓÙÐ ÎÖÐÑÓØÙ ¹ ÑØÖܵ ÝØØÐØ ÐÐÓÒÔØÙÙÒ ÖÚÓØ Ò ÐÒ Òݹ ÃÝ ÝØÒ ÔØÖÙÚÒ Ê¹ ØÝ ÝØØÐØØÝÑ º ÓÑÔÖ ¹ ØØÒ Ø Ð Ø ÓÒ Ó Ø ÛÚÐÒØ ÓÑÔÓÒÒØ ÎÖÐÑÓØÙ ÒÙÑÖ Ù Ò ÙÐØ ÚÐÙ ¼¼¹¼¼ ÒÑ Ò³Ø Ø Ð Ø ÓÒ Ó Ø ÛÚÐÒØ ÚÐÙ ÓÙØ ¹ ÎÖÐÑÓØÙ ÔÖÓÔÖ ÖÓÒ ÖÔÐÒ ÒÓÖÖØ ÚÐÙ ÛØ ÙÐØ ÓÒ ÙÐÙØÙÙ ÔØÖ ÐØ Ê¹ÙÚ ÔÚع ÎÐÒØÙÒ Ú ØÑÒ ÝØØØÝ ÖÚÓº ØÝÚØ Ì ØØØÚ ÇÓØØØÙ ØÓÑÒØ ÌÓØÙØÙÒÙØ ÁÙÒ ÐÐÓÒÔØÙÙÒ ÖÚÓÒ ÝØØÑ Ùº Çà ÎÖÐÐ Ò ÙÚÒ ÐØÙ Çà ÃÐÚÓÐÐ Ò ÙÚÒ ÐØÙ Çà ÓÒ ÖÖÓÖ ¹ ÓÒØÒÓÙ ÙÔعÔÒØ ØÚÓØÙÚغ Çà ÐÐÓÒÔØÙÙ ØÖÔ ÑÓÒ¹ ÎÖÐÐÒÒ ÒÙÑÖ Ø ÖÚÓ Ó Ô ØÐÐ ÖÓØع Ø ÁÒÔÙØ ÒÓØ Ò ÔÖÓÔÖ ÓÖÑØ Ù Ò ÙÐØ Ú¹ ÎÖÐÑÓØÙ ¼¼¹¼¼ ÒÑ ÐÙ ØÙÒ ÝØØÒ ¼¼µ Çà ¾ ØØÔÙ ¾ ¼µ Çà ÐÐÓÒÔØÙÙ ÖÚÓØ ÚØ Ø ¹ ÎÖÐÐÒÒ ÐØÙÒ ÔØÖÙÚÒ Ò ÝØع Ñ ÏÚÐÒØ Ö ÓÐÙØÓÒ Ó Ò³Ø ÑØ ÛØ ÎÖÐÑÓØÙ Ù ØÒ ÚÐÙ Ù Ò ÚÒ ØÖØ Ò Ò ÔÓÒØ ÔØÖ Çà ÇÃ

26 ÐÙ ÁÒÒÖ ÔÖÓÙØ Ñ ¹ ʹÙÚÒ ØÐ ÐÙ ÁÒÒÖ ÔÖÓÙØ Ë ØÙÐÓÙÚÒ Ñ ¹ØÐ ÖÚÓÒ ÑÙÙØØÑÒÒ ÖÐÐ Ö¹ ÄÙÙÔÐÒ Ø ÒÙÓÐÒÔ Ø ÑÐÐ ÚÐÒØ ÓÑÔÖ ÓÒ ÖÖÓÖ ¹ ÎÐÓÒÐØÒ ÚÐÒØ Ò ÐØÖ ÔØÖÙÑ ØÐ ÚÐÒØ ÓÑÔÖ ÓÒ ÎÖ ÓÚØÙ ÙÒØÓÒ ÖÖÓÖ ¹ØÐ ÔÓ ÓÑÔÖ ÓÒ ÖÖÓÖ ¹ ÓÓѹÔÒ Øе ÔÜл ÇÖÒÐ Þ¹ÔÒÒ Ô¹ ØÙÐ ÒÑÒÒ ØÙÐÓÙÚÒ ÐÙÙÑÖ ÔÚØØÒ ÇÑÒ ÚØÓÖÒ ÐÙÙÔÐÒ ÖÚÓº Ú ØÑÒ ØÒ Ê¹ÙÚÒ ÐÑÒÒ ÞÓÓÑ Ý Ø ÃÙÑÑÒ ÒÝØØ ÚÐØÙÒ Ô ØÒ ÔØÖº ÙÚ Ò ÛÒÓÛ¹ÔÒÒ ÔÒÑÒÒ Ê¹ÙÚØ ÐÙØÙÚØ ÑÓÐÐ ÑÑÒ ÙÙÖ ÙÚ¹ Ø ÐÙ Òº Ì ØØØÚ ÇÓØØØÙ ØÓÑÒØ ÌÓØÙØÙÒÙØ ÚÙØ٠غ Çà ÎÐØØÙ ÙÚ Ú ØÚ ÓÑÒ ÚØÓÖ ÚÚÒØÙÙº Çà ÚÙØ٠غ Çà ÍÔØ ÚÛ¹ÔÒÒ ÔÒÑÒÒ Çà Çà ØÒ Ê¹ÙÚÒ ÐÙ ÃÙÑÑÒ ÖÖÓÖ ¹ØÐ ÓÑÔÖ ÓÒ Ó Ø ÔÖØÝÝ ÐÙÔÖÒÒ ØØ ÖÓÒ ØÖÙÓ¹ ÎÐØÙ Ø ÔØÖ ÔØÖ ÐÒº ØÙ Çà ËÔØÖ ÒÖ¹ÙÒ ÚÙØÙÙº ¾ ÚÐÒØ ÓÑÔÖ ÓÒ ÖÖÓÖ ¹ ÎÐÓÒÐØÒ ÑÙÙØ ÚÐÒÒØ ØРʹÙÚØ ÔÚØØÝÚØ ØÖÚØØ ÑÝ ÔØÖ Ðغ Çà ʹÙÚØ ÔÚØØÝÚØ ØÖÚØØ ÑÝ ÔØÖ Ðغ Çà Çà ʹÙÚØ ÔÐÙØÙÚØ ÐÙÔÖ Ò ÓÓÓÒ º Çà Çà ËÔØÖÒ ØÝÝÔÒ ÚÐÒØ ÒÔ Ø ËÔØÖ ÐØ ÔÚØØÝÚØ Ú ØÑÒ ÚÐÒغ ÇÃ

27 ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÒ ØÖÓØÙ Ø ØÓÑÒØÔÖ¹ ØØØ ÓÐ ÝÝØ ÖÙÚØ ÐÚØØÑÒ Ý ØÝ ÓØ ÑÑÒ Ó ÝØØÐØØÝÑ ÓÒ ØÓÑÒÒÐØÒ ØÝ Ò ÑÒÐÒÒ ÙÒ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ º ÒÓ ÖÓ ÓÒ ÓÑÔÓÒÒØØÚØÓÖÒ Ð ÙØÚ ÚØÓÖÒ Ð Ñ Ò ÝØØÒ ÙÒ¹ ØÓØ ºÑ ÓÓ ÐØØ µº Ä ØØÓ Â¹ÐÓÖØÑ Ø ÐÝØÝÝ ÚØØ Ø º ÃÝØØÝ ØÓ ØÓ ØØÓÖÒØ ÓÒ ÔÒ ÖÓÚ ÙÙ ÓØ ÓÒ ÙÚØØÙ ÙÖÚ º º½ ÌÖÓØÙ ØÓÑÒØÔÖØ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ÓÒ ÖÒÒ ÝØØÐØØÝÑ Ó ÓÒ ØÓØÙØع ØÙ ÔØÖÙÚÒ ÖÔÔÙÑØØÓÑÒ ÓÑÔÓÒÒØØÒÐÝÝ Ò ØÙÐÓ ØÒ ØÖ ØÐÑ ¹ Ø ÚÖØÒº ÃÝØØÐØØÝÑ ÓÒ ØÓØÙØØØÙ ÅØÐ º¹ÝÑÔÖ Ø Ò Øݹ ÐÐ Ø ØÓÑÚÙÙØØ ÚÓ ØØ ÅØÐÒ ÑÑ ÚÖ Ó Ô ÓØÙÒ ÅØÐÒ Ö ØÒ ÝØØÐØØÝÑÒ ØÓØÙØÙ Ò ÝØØÝÒ ØÝÐÙÒ ÓÒ¹ ÐÑ Øµº ÌÓÑÒÒÐØÒ ÓÒ ØÝ Ò ÑÒÐÒÒ ÙÒ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝѺ º¾ ÃÝØØÝØ ØÓ ØÓØ ØØÓÖÒØØ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ÝØØ ÑÙÙØÒ ÑÓ ØÓ ØÓ ÙÒ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ÒÓ ØÒ Ôº $ ¹ØÓ ØÓØ ÓÖÚØÒ ØÓ ØÓй Ð º ºÑ ÓÓ ÐØØ µº Ä ØÖÚØÒ ÓÑÔÓÒÒØØÚØÓÖÒ Ð Ñ Ò ØÓ ØÓ ºÑ ÓÒ ÓÓ ÓÒ ÐØØ º ÃÝØØÐØØÝÑÒ ÓØ ÓÚØ ØÓ ØÓ ÐÔºØÑк ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑ ÓÒ ÒÐ ¹ÖÒØ ÓÖ¹ ÚØØÙ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÒ Ó ÓØØÑØ ÒÐ ºÚØÓÖ ÒÐ ºÚÐÙ ÒÐ ºÒ ÝÐÐ ÓÑÔÓÒÒØØÚØÓÖÒ ÚØØÚÐÐ Ó Óع ØÑÐÐ ÒÐ ºÚØÓÖ º ÅÙÙØ Ó ÓØØÑØ ÓÚØ ÒÑÐØÒ ÐÐÐØÒ ÒØØ Ø ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÒ Ó ÓØØÑÒ Ò º º ÅÙÙØÓ ÓØ ÎÐÓÒÐØØ ÚÓÒ ÑÙÓØ ÑÓÒ ÙØÒ ËÔØÖ ÎÛÖ¹ÝØØÐØØÝÑ ÑÙÙØÓ ÓØ ÓÒ ØØØÝ ÐÙÚÙ º º ÅÙÒ ÝØØÐØØÝÑÒ ÙÒØÓÒ ÑÙÙع ØÙÒ ÖÚÓÒ ÑÙÙØØÑ Ø ÙÓ ØÐÐ Ó ÙÒØÓØ ÑÙÙØØÙØ ÓÒ ÙÙÒÒ¹ ØÐØÙ ØÒ ØØ ÅØÐÒ ÍÁÐÐ ØÓØÙØØØÙ ÝØØÐØØÝÑ ØÓÑ ÓÒº ÂÓ ¾

28 ÐÙØÒ Ø ÑÙÙØÓ ÙÒØÓÒ ØÓÑÒØÒ ÙÓ ØÐØÚÑÔ ÓÒ ÓÐÑÓ¹ ÓÓÒÒ ÙÙ ÝØØÐØØÝѺ º Ì ØÙ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÒ Ø ØØÔÙ Ø ÓÚØ ÒØØ Ø ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÒ Ø ØØÔÙ ØÒ Ò ÐÙÙ ºµº ËØÙÒ Ø ØØÙÐÓ ØÒ ÔÖÙ ØÐÐ ÝØØÐØØÝÑ ØÓÑ ÚÖØØÑ Ø ÒÓÖѹ ÐÝØ º Ì ØÙ ÓÒ ÙÓÖØØØÙ ÏÒÓÛ ¹ ØØ ÄÒÙܹÝØØÖ ØÐÑ ÅØÐ º¹ÝØØÝÑÔÖ Ø º ¾

29 ËÔØÖ ÒÖ ËÔØÖ ÒÖ ÓÒ Ò ËÔØÖ ÎÛÖ¹ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÒ ÙÙÐÙÚ ÖÐÐÒÒ ÝØØÐع ØÝÑÙÒ Ó ÝØØ ÔÝ ØÝÝ Ø ÑÖØØÐÑÒ ÙÓØÒ ÔØÖÒº Ì ÐÙÚÙ ØÐÐÒ ËÔØÖ ÒÖ¹Ó ÓÒ ØÖÓØÙ ØÓÑÒØÔÖØ Ò ØÖÚØ ÑØ ØÓ ØÓØ ØØÓÖÒØغ ÄÙÚÙ ÖÖÓØÒ ÑÝ Ó ÓÒ ÑÙÙØÓ ¹ ÑÓÐÐ ÙÙ Ø ØÐÐÒ Ø ØÙ ØÔ٠غ º½ ÌÖÓØÙ ØÓÑÒØÔÖØ ËÔØÖ ÒÖ¹ÝØØÐØØÝÑ ÝØØ ÔÝ ØÝÝ Ø ÑÖØØÑÒ ÙÓØÒ ¹ ÔØÖÒ Ø ÑÙÓÑÒ Ó ÑÑÒ ÑÖØØØÝ ÔØÖº ÅÖØØØÝ Ôع Ö ÝØØÒ ËÔØÖ ÎÛÖ¹ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑ ÚÐÓÒÐØÒ Ø Ó ÝØØ ÓÒ ÒÒ ÚÐÒÒÙغ ËÔØÖ ÒÖ¹ÙÒ ÚÙØÙÙ ÙÒ ÝØØ ÚÐØ ÙÑÑÒ ØÒ ÝØØÐØØÝÑÒ ÚÐÓÒÐÚÐÓ Ø ÚØÓÓÒ Ò ÐØÖ ÔØÖÙѺ ËÔØÖ ÒÖ¹ÝØØÐØØÝÑ ÓÒ ÑÓÐÐ Ø ÝØØ ÑÝ ÖÖÐÐÒ ËÔØÖ ÎÛÖ¹ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØݹ Ñ Øº ËÔØÖ ÒÖ ØÓÑ ÑÐÐ ØÚÐÐ ÙÓÐÑØØ Ø ÝØØÒ Ø Ø Ò Ø Ú Ó Ò ØÓ Ø ÝØØÐØØÝѺ ÂÓ ÓÐÑÐÐ ÓÒ ÒÒØØÙ ÝØÔÖÑØÖÒ ÓÒ ÔØÖ ÒÝØØÒ Ý ÒÒ ÔØÖ ÓÐØÙ ÔØÖÒ ÝØØÐØØÝÑÙÒÒ ÚÙØÙ º ËÝØ ÔØÖÒ ÓÒ ÓÐع Ú ÖÚ Ò ÑØÖ Ò Ó ÝÐÑÑÐÐ ÖÚÐÐ ÓÒ ÐÐÓÒÔØÙÙ Ò ÖÚÓØ ÐÑÑÐÐ ÖÚÐÐ ÔØÖÒ ÖÚÓغ ÂÓ ÝØØÐØØÝÑ ÝØØØ ÓÐØÙ Ôع Ö ØØÒ ÒÓÐйÖÚÓÒÒ ÔØÖº ÃÝØØÐØØÝÑÒ Ó ÖÙÒ ÓÒ ÔÒØ Ó Ø ÚÓÒ ÚÐØ ÐÙع ØÙ ØÓÑÒØÓº ÃÝØØ ÚÓ ÑÖØÐÐ ÓÓÒÒ ÙÙÒ ÔØÖÒ Ò ÔØÖÙѹ ÔÒÒ ÓÐÐ ÔÓ Ø ÑÙÓØ Ó ÓÐÑ ÓÐÚ ÔØÖ ÐÑÐÐ ÖÐÐ ÐÙØØÙÒ ÓØÒ Ò ÔØÖÙѹÔÒÒ ÓÐÐ ÚÐØØÙÒº ËÔع Ö ÐØ ÚÓ ØÝÒØ ÓÓÒÒ ÐÖ Ü ¹ÔÒÐÐ ÐÒ Ðع ØÙ ÒÓÐйÖÚÓ Ò ÔØÖÒ ÙÐØ ÔØÖÙѹÔÒÐк ÈÒ Ê ØÓÖ ÒØÐ ØØ ÔÖØ ÐÒ ÔØÖÒ Ó ØØØÒ ÓÐØÙ ÔØÖ ÝØØÐØØÝÑÒ ÝÒÒ ØÝ º ÜÔÓÖØ ÔØÖÙѹ ÁÒÓÖ Ò ¹ÔÒÐÐ ÚÓÒ ÝÚ Ý Ø ÝÐØ Ôع ÖÒ ØÝØ ÑÙÙØÓ Øº ÂÓ ÝØØ ÔÒ ÜÔÓÖØ ÔØÖÙѹÔÒØØ ÔÐÙع Ø ËÔØÖ ÒÖ ÙÒ ÒÝÚÒ ÔØÖÒ ÑØÖ Ò Ó Ò ÑÑ ÐÐ ÖÚÐÐ ÓÚØ ÐÐÓÒÔØÙÙ Ò ÖÚÓØ ØÓ ÐÐ ÖÚÐÐ ÔØÖÒ ÖÚÓغ Î ØÚ Ø Ó ÝØØ ÔÒ ÁÒÓÖ Ò ¹ÔÒØØ ËÔØÖ ÒÖ ÔÐÙØØ ÓÐØÙ ¹ ÔØÖÒº ¾

30 ÃÙÚ ÃÝØØÒ ÚÐØ ÑÒ Ô ØÒ ÔÓÐØ ÑÖØØØÝ ÙÓØÒ ÔØÖ º¾ ÃÝØØÝØ ØÓ ØÓØ ØØÓÖÒØØ ÃÝØØÐØØÝÑ ØÖÚØ ÒÓ ØÒ ØÓ ØÓØ ÔØÖºÑ ÔØÖºº ËÔØÖº ÓÒ ÝØØÐØØÝÑÒ ÙÚØÓ ØÓ ÔØÖºÑ ÐØ ÝØØÐع ØÝÑÒ ÙÒØÓغ ÇÐÑÐÐ ÝØÔÖÑØÖÒ ÒÒØØÚÒ ÔØÖÒ ÓÒ ÓÐØÚ ¹ ÖÚ Ò ÑØÖ Ò Ó ÝÐÑÑÐÐ ÖÚÐÐ ÓÒ ÐÐÓÒÔØÙÙ Ò ÖÚÓØ ÐÑÑй Ð ÖÚÐÐ ÔØÖÒ ÖÚÓغ ÅÝ ÓÐÑÒ ÔÐÙØØÑ ÔØÖ ÓÒ ÐÐ ÙÚØÙ ÑÙÓÓ º ÃÝØØÐØØÝÑÒ ÝÒ ÓÒ ÒÐ ¹ÖÒÒ Ó ÐØ Ó ÓØØÑØ Ò ÝØع ÐØØÝÑÒ ÓÑÔÓÒÒØØÒ ÙØÒ ÑÑÒ ÙÚØÙ ÝØØÐØØÝÑ Òº Ì ¹ ÝØØÐØØÝÑ ÓÒ ÝØØØÝ ÒÐ ºÛÐÒعÓÑÔÓÒÒØÒ Í ÖعÒØØ ÐÐÓÒÔØÙÙÒ ÒÙÑÖ ØÒ ÖÚÓÒ ÐÝØØÑ Ò Ð ÓÒ ÑÖØÐØÝ Ù¹ ÖÚØ Ó ÓØØÑØ ÒÐ ºÓÖÒÐ ÒÐ º ÔØÖÙÑ ÒÐ ºÓ ÒÐ ºÓÙØÔÙغ ÀÒÐ ºÓÖÒÐ ÐØ ÔØÖØÒ Ó ÓÒ ØØØÙ ÓÐØÙ ÔØÖ º ÀÒÐ º ÔØÖÙÑ ÐØ ÝØØÒ ÑÖØØÑÒ ÔØÖØÒº ÀÒÐ ºÓÙØÔÙØ ÓÒ ÓÐÑÒ ÔÐÙØØÑ ÔÖÑØÖ Ó ÓØØ ÝØØÒ Ú¹ ÐÒÒÒ ÑÙÒ ÓÓ ÐÙÔÖ Ò Ø ÝØØÒ ÑÖØØÑÒ ÔØÖ¹ ØÒº ¾

31 ÀÒÐ ºÓ ÓÒ ÑÝ ÓÐÑÒ ÔÐÙØØÑ ÔÖÑØÖ Ó ½ Ó ÓÒ ÔÒØØÙ ÜÔÓÖØ ÔØÖÙѹÔÒØØ ¼ Ó ÓÒ ÔÒØØÙ ÁÒÓÖ Ò ¹ÔÒØغ º ÅÙÙØÓ ÓØ ÂÓ ÐÙØÒ ÑÙÙØØ ÙÐØ ÔØÖÙѹÔÒØØ ÔÒØØ ÒÝØØØÚÒ Ôع ÖÒ ØÝ Ø ÑÙÙØÓ ØÒ ÔØֺѹØÓ ØÓ ÓÐÚÒ ÙÐØÐй ÙÒØÓÓÒº ËÔØÖÒ ÖÚÓØ ÑÖØÐÐÒ ØÑÔ¹ÑÙÙØØÙÒ Ó Ò ÑÑ ÐÐ Ö¹ ÚÐÐ ÓÚØ ÐÐÓÒÔØÙÙÒ ÖÚÓØ ÐÑÑÐÐ ÖÚÐÐ ÔØÖÒ ÖÚÓØ ÅÙÒ ÙÒ¹ ØÓÒ Ø ÑÙÙØØÙÒ ÖÚÓÒ ÑÙÙÙØØÑ Ø ÙÓ ØÐÐ ÐÐ Ò ÓÒ ÙÙÒÒØÐØÙ ØÒ ØØ ÅØÐÒ ÍÁÐÐ ØÓØÙØØØÙ ÝØØÐØØÝÑ ØÓÑ ÓÒº ÂÓ ¹ ÐÙØÒ Ø ÑÙÙØÓ ÙÒØÓÒ ØÓÑÒØÒ ÙÓ ØÐØÚÑÔ ÓÒ ÓÐÑÓ ÓÓÒÒ ÙÙ ÝØØÐØØÝѺ º Ì ØÙ Ì ÐÙÚÙ ØÐÐÒ ËÔØÖ ÒÖ¹ÝØØÐØØÝÑÒ Ø ØØÔÙ Ø ØÙÐÙÓ¹ ØÙÒº ËØÙÒ Ø ØØÙÐÓ ØÒ ÔÖÙ ØÐÐ ÝØØÐØØÝÑ ØÓÑ ÚÖØØÑ Ø ÒÓÖ¹ ÑÐÝØ º Ì ØÙ ÓÒ ÙÓÖØØØÙ ÏÒÓÛ ¹ ØØ ÄÒÙܹÝØØÖ ØÐÑ ÅØÐ º¹ÝØØÝÑÔÖ Ø º ¾

32 ÑÖØØÑÒÒ Ò ÔØÖÙѹ ËÔØÖÒ ÔÒÑ Ò ÐÒ Ò ÑÑÒÒ ÔÒÒ ÑÖØØÑÒÒ Ò ÔØÖÙѹ ËÔØÖÒ ÔÒÑ Ò ÐÒ ÐÙ ÔÒÒ ÖÒ ÒÔÐÐ ÚÑÒÒ Ð¹ Ú ÑÑÐÐ ÓÐÐ ÒÔÐÐ Ù ÑÙÙØØÑÒÒ Ò ÔØÖÙѹ ËÔØÖÒ ÔÒÑ Ò ÐÒ Ò ÑÑÒÒ ÔÒÒ ÑÖØØÑÒÒ Ò ÔØÖÙѹ ËÔØÖÒ ÔÒÑ Ò ÐÒ ÐÙ ÔÒÒ ÑÖØØÑÒÒ Ò ÔØÖÙѹ ËÔØÖÒ ÔÒÑ Ò ÐÒ ÐÙ ÔÒÒ ÖÒ ÒÔÐÐ ÚÑÒÒ Ð¹ Ú ÑÑÐÐ ÓÐÐ ÒÔÐк ÃÐÙ Ø ØÒ Ö Ù ËÐØ ÑÓÖ ØÒ ÓÒ ÔÓÒØ ØÓ Ò Ôع ÎÖÐÑÓØÙ ÖÙÑ ÑÙÙØØÒ ÙÐÑÒ ÐØÙÒ Ô ØÒ ÙØØ ÓÚ¹ ËÔØÖ ÝØØÒ ØÓ Ò ØÒ ÝÖº ØÙ ËÐØ ÔÓÒØ Ú ÒØÐ ÛÚÐÒØ Ú¹ ÎÖÐÑÓØÙ ¹ ÒÓ Ò Ò Ñº ÌÖÝ Ò ÛØ ÖÒØ ÔÓÒØ ÐÙ ØÝÒÚØ Ò ÔØÖÙѹÔÒ ÑÙÙØØÙÙ Ô ¹ ÐØ Ú º ÒØÐ ØعÔÒÒ ÔÒÑÒÒ ÐÒ ÔÖØÝÝ ÓÐØÙ ÔØÖº ÇÃ Ê ØÓÖ ÔØÖÙѹÔÒÒ ÔÒÑÒÒ ÐÒ ÔÖØÝÝ ÒÓÐйÖÚÓÒÒ ÔØÖº Çà ÙÐØ Ì ØØØÚ ÇÓØØØÙ ØÓÑÒØ ÌÓØÙØÙÒÙØ Çà ÐÙ ÖÒ ÓÐÐ ÒÔÐÐ ÆÝØÐÐ ÔÖØÝÝ ÝÖ ÐØØÙÒ Ô ØÒ ÙØغ Çà Çà ÐÙ ÖÒ ÓÐÐ ÒÔÐÐ Çà ¼ ÖÒ ÒÔÐÐ ÚÑÒÒ Ð¹ Ú ÑÑÐÐ ÓÐÐ ÒÔÐк à ÐÙ Ø Ø¹ Ù Ò ÑÒ ÓØÒ ÐÐÓÒÔØÙÙ ÐÐк Çà ËÔØÖ ÔÚØØÒ ÙÐÑÒ ÐØØÙÒ Ô ØÒ ÙØغ ÓØÒ ÐÐÓÒÔØÙÙ ÐÐк Çà ÐÖ Ü ¹ÔÒÒ ÔÒÑÒÒ

33 ÐÐÓÒÔØÙÙ ØÖÔ ÑÓÒ¹ ÎÖÐÐÒÒ ÒÙÑÖ Ø ÖÚÓ Ó Ô ØÐÐ ÖÓØع Ø ÙÐÙØÙÙ ÔÐÙØØ ÖÙÙÙÐÐ ÒÝÒÒ ÃÝØØÐØØÝÑ ÖÚÓغ ÄÙÚÙ ØÐÐÝ ÝØØÐØØÝÑ ÔØÖÒ ØÖÚØØÚØ ÓÑÔÓÒÒØØ ÙØÒ ÚÐÓÒÐØØ Ú¹ ÔÚØØÒ ÐØØ º ÙÐÙØÙÙ ÔÐÙØØ ÝØØÐØØÝÑ Úع ÃÝØØÐØØÝÑ ÖÙÙÙÐÐ ÐØÙÒ ÐÙÔÖ Ò ÔØÖÒ ÖÚÓغ ÄÙÚÙ Ø ØÐÐÝ ÝØØÐØØÝÑ ÙÓÖØØ ÑØÒ ØÓÑÒ¹ ØÓº ÁÒÔÙØ ÒÓØ Ò ÔÖÓÔÖ ÓÖÑØ Ù Ò ÙÐØ Ú¹ ÎÖÐÑÓØÙ ¼¼¹¼¼ ÒÑ ÐÙ ÙÐÙØÙÙ ÐØ ÔÚØØÝÚØ Ú ØÑÒ Ý¹ ÎÐÒØÙÒ ÖÚÓº ØØØÝ Ì ØØØÚ ÇÓØØØÙ ØÓÑÒØ ÌÓØÙØÙÒÙØ ÜÔÓÖØ ÔØÖÙѹÔÒÒ ÔÒÑÒÒ Çà ÁÒÓÖ Ò ¹ÔÒÒ ÔÒÑÒÒ ÇÃ Ò ÛÚÐÒعÔÒÒ ÔÒÑÒÒ ÁÙÒ ÐÐÓÒÔØÙÙÒ ÖÚÓÒ ÝØØÑ Ùº Çà Çà ½ ØÙÒ ÝØØÒ ¼µ ÐÐÓÒÔØÙÙ ÐØ ÑÙØ ÎÖÐÐÒÒ ÒÙÑÖ ÖÚÓ ÝØØÒ Ø Ø¾ ¼µ ÙÒ Ø Ð Ø ÓÒ Ó Ø ÛÚÐÒØ ÓÑÔÓÒÒØ ÎÖÐÑÓØÙ ÒÙÑÖ Ù Ò ÙÐØ ÚÐÙ ¼¼¹¼¼ ÒÑ Ò³Ø Çà ÇÐÐÒÒ ÐÐÓÒÔØÙÙ ÝØØÒ ¼¼¼¼µ ÇÃ

34 ÎØØØ ½ ÏÝ Þ º ËØРϺ ˺ ½¾µ ÓÐÓÖ Ò ÓÒÔØ Ò ÑØÓ ÕÙÒØØØÚ Ø Ò ÓÖÑÙк ÂÓÒ ÏÐÝ ² ËÓÒ ÁÒº Í˺ ¾ ÅÓÒРĺϺ ÄÙÓ ÅºÊº ½µ ÓÐÓÙÖ ÁÑÒ ¹ Î ÓÒ Ò ÌÒÓÐÓݺ ÂÓÒ ÏÐÝ ² ËÓÒ ÁÒº Í˺ Ç ½ µ ËÙ Ô ÅØÓ Ó ÈØØÖÒ ÊÓÒØÓÒº ÂÓÒ ÏÐÝ ² ËÓÒ ÁÒº Í˺ ÀÝÚÖÒÒ º ÃÖÙÒÒ Âº Ç º ¾¼¼½µ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ º ÂÓÒ ÏÐÝ ² ËÓÒ ÁÒº Í˺ ÖÓ Ó Â¹º ËÓÙÐÓÙÑ º ½ µ ÐÒ ÑÓÖÑÒ ÓÖ ÒÓÒ¹ Ù Ò ÒÐ º Á ÈÖÓÒ ¹ ÚÓк ½¼ µ ÔÔº ¾¹ ¼º ÃÖÒ º ¾¼¼¼µ ÅÙÐØ ÔØÖÐ ÁÑ ÓÑÔÖ ÓÒ Í Ò Ø Ï¹ ÚÐØ ÌÖÒ ÓÖѺ ÎØ Öº ÄÔÔÒÖÒÒÒ ØÒÐÐÒÒ ÓÖ¹ ÓÙÐÙ ÄÔÔÒÖÒغ Ò º ÏÒÐÐ ºº ½µ ËÔØÐ ÜØÒ ÓÒ Ó ÁÄ ÓÖ ØÐ ÓÐÓÖ ÁÑ ÊÔÖÓÙØÓÒº ÁÒ ÈÖÓÒ ËÓØÝ ÓÖ ÁÒÓÖÑØÓÒ ÔÐÝ ËÝÑÔÓ ÙÑ ÌÒÐ Ø ÚÓк ¾ ÔÔº ½¹ º Ò º ¾¼¼ µ ˹ÁÄ ËÔØÐ ÜØÒ ÓÒ ØÓ Ø Á Ä ÐØ ÓÐÓÖ ÖÒ ÅØÖº ÏÏϹ ÚÙ ØØÔ»»Ûغ ØÒÓÖºÙ» ÖÒ» л ¾ºº¾¼¼ µ ¾

35 LIITE 1 function varargout = viewer(varargin) VIEWER Application M file for viewer.fig viewer(varargin) The function is application M file for graphical user interface viewer.fig varargin = cell array holding input parameters, can be left empty varargout = cell array holding output parameters Needs a graphical user interface (e.g. Windows, X Window) to run VIEWER typed on command line launches GUI, Spectra Viewer or Color Coordinates view can be selected by toggle button at the lower right corner of GUI window cspace2 reformat colorconv , Tuija Kareinen , added possibility to select which spectrum, reference or reflectance, i s plotted, Tuija Kareinen if (nargin == 0) LAUNCH GUI fig = openfig(mfilename, reuse ); Generate a structure of handles to pass to callbacks, and store it. handles = guihandles(fig); guidata(fig, handles); if (nargout > 0) varargout{1} = fig; if (ischar(varargin{1})) INVOKE NAMED SUBFUNCTION OR CALLBACK try catch if (nargout) [varargout{1:nargout}] = feval(varargin{:}); FEVAL switchyard feval(varargin{:}); FEVAL switchyard disp(lasterr); viewer.m Sep 17, 03 11:04 Page 1/17 COMMON FUNCTIONS FOR BOTH VIEWS: function varargout = load_callback(h, eventdata, handles, varargin) load_callback is called when Load image button is pressed or Load image option is selected from File menu. load_callback takes care of loading image, checks whether the loaded image is in correct (3 D) format and asks wavelengths from user. load_callback also calls function colorconv to calculate color coordinates and makes the RGB image visible. If loaded image is not in proper format, an error message is given to user. [filename, pathname] = uigetfile({ *.mat, MAT Files (*.mat) ; *.*, All Files (*.*) }, Sel ect file ); S = load([pathname filename]); names = fieldnames(s); handles.pic = getfield(s,names{1,1}); guidata(gcbo,handles); clear S; viewer.m Sep 17, 03 11:04 Page 2/17 if loaded image is a 3 D matrix, starting process if (ndims(handles.pic) == 3) asking wavelength values from user with a dialog box axvalues = get(handles.wlength, String ); prompt = { Enter wavelength values ( start:resolution:end ) }; dlgtitle = Spectral image wavelength values ; lines = 1; def = {axvalues}; axvalues = inputdlg(prompt,dlgtitle,lines,def); if cancel is pressed in dialog box, using formerly given values for wavelength if (isempty(cellfun( isempty,axvalues))) axvalues{1} = get(handles.wlength, String ); processing wavelength string, storing integer values to wlength.userdata imgsize = size(handles.pic); axvalues = StrProcess(axvalues{1},imgsize(3)); set(handles.wlength, Userdata,axvalues, String,[num2str(axvalues(1)), :,... num2str(axvalues(2)), :,num2str(axvalues(3))]); Colorconv calculates color coordinates from spectral image, using selected stext result is stored to handles.imgframe / Userdata. Also column of selected light source is stored to handles.ltext / Userdata. set(handles.imgframe, Userdata,[]); waitbar(0,w, Processing image... ); if (get(handles.s1964, Value ) == 1) [out, lcol] = colorconv(handles.pic,axvalues, SRGB,1964,w); [out, lcol] = colorconv(handles.pic,axvalues, SRGB,1931,w); set(handles.imgframe, Userdata,out); set(handles.ltext, Userdata,lcol); close(w); RGB values = three first dimensions of out out = out(:,:,1:3); [a b c] = size(out); set(handles.fname, String,[pathname filename]); centering image to imageframe area fsize = get(handles.imgframe, Position ); x = fsize(1)+(fsize(3) b)/2; y = fsize(2)+(fsize(4) a)/2; set(handles.axes, Position,[x y b a]); setting visibility conditions for image viewing set(handles.imgframe, Visible, off ); set(handles.note, Visible, off ); set(handles.axes, Visible, on ); axes(handles.axes) axis manual; set(handles.zoom, Value,get(handles.zoom, Min )); set(handles.hold, Value,get(handles.hold, Min )); handles.img = image(out, Tag, simg, handles},... Parent,handles.axes, Userdata,[b a], HandleVisibility, callback ); title( srgb ); handles.filter = []; guidata(h,handles); clear out; if (filename ~= 0) w = waitbar(0, Loading image..., Units, pixels, Position,[ ]); waitbar(0); clear handles.pic; If the actual size of image is larger than image area, fitting image to area using function ZoomProcess. Also setting titles of zoom buttons to correspond current image size condition. if (x < fsize(1)) (y < fsize(2)) ZoomProcess(handles,2); set(handles.zactual, Enable, off ); Wednesday September 17, 2003 viewer.m 1/9

36 viewer.m Sep 17, 03 11:04 Page 3/17 set(handles.zfit, String, Original size ); set(handles.zactual, Enable, on ); set(handles.zfit, String, Fit in window ); if (get(handles.figure1, Userdata ) == 0) set(handles.sview, Value,get(handles.sview, Max )); set(handles.cview, Value,get(handles.cview, Min )); set(handles.figure1, Userdata,1, Name, Spectra Viewer ); loaded image not in proper 3 D format, showing warning to user close(w); set(handles.imgframe, Visible, on ); set(handles.note, Visible, on, String, Loaded spectra not in proper format (shou ld be a 3 D matrix) ); set(handles.axes, Visible, off ); test = findobj( Tag, img ); if (test ~= 0) set(handles.img, Tag, Unproper ); axvalues = get(handles.wlength, Userdata ); clearing axes and titles, setting default values for light source selections and updating wavelength values of spectra axes axes(handles.spectra); cla; set(handles.sptitle, String, ); if (axvalues ~= 0) xlim([axvalues(1) axvalues(3)]); axis( square ); zoom reset; set(handles.spectra, Userdata,[]); axes(handles.coords) cla; title( ); xlabel( ); ylabel( ); xlim([0 1]); ylim([0 1]); axes(handles.lightness); cla; title( ); set(handles.pixelloc, String, ); off = [handles.a,handles.d50,handles.c,handles.d65,handles.xyy,handles.lab]; set(off, Value,0); set(handles.popupmenu, Value,1); set(handles.cont, Enable, on, Value,get(handles.cont, Min )); Functions sview_callback, cview_callback: Setting visibility conditions of objects according to selected GUI. If Spectra Viewer is selected, setting handles.figure1/userdata == 1 If Color Coordinates is selected, setting handles.figure1/userdata == 2 function sview_callback(hobject, eventdata, handles) unvisible = [get(handles.coords, Children ) get(handles.lightness, Children ) handles.coo rds handles.lightness... handles.dhold handles.color handles.ctext handles.xyy handles.lab handles.pixelloc] ; set(unvisible, Visible, off ); visible = [get(handles.spectra, Children ) handles.spectra handles.ref handles.rad handles.sptitle handles.sptext handles.labelx handles.hold handles.clear]; set(visible, Visible, on ); if (get(handles.ref, Value ) == 1) set(handles.labely, Visible, on ); set(handles.note, String, ); set(handles.cview, Value,get(handles.cview, Min )); set(hobject, Value,get(handles.sview, Max )); set(handles.figure1, Userdata,1); Sep 17, 03 11:04 Page 4/17 axes(handles.spectra); function cview_callback(hobject, eventdata, handles) unvisible = [get(handles.spectra, Children ) handles.spectra handles.ref handles.rad handl es.sptitle handles.sptext handles.labely handles.labelx handles.hold handles.clear]; set(unvisible, Visible, off ); visible = [get(handles.coords, Children ) get(handles.lightness, Children ) handles.coord s handles.lightness... handles.dhold handles.color handles.ctext handles.xyy handles.lab handles.pixelloc] ; set(visible, Visible, on ); set(handles.note, String, ); set(handles.sview, Value,get(handles.sview, Min )); set(hobject, Value,get(handles.cview, Max )); set(handles.figure1, Userdata,2); axes(handles.coords); function source = GetSource(handles) function GetSource finds out, which light source is selected and returns the corresponding string. if (get(handles.popupmenu, Value ) ~= 1); string_list = get(handles.popupmenu, String ); source = string_list{get(handles.popupmenu, Value )}; if (get(handles.a, Value ) == 1) source = A ; if (get(handles.c, Value ) == 1) source = C ; if (get(handles.d50, Value ) == 1) source = D50 ; if (get(handles.d65, Value ) == 1) source = D65 ; source = srgb ; function varargout = wchange_callback(h, eventdata, handles, varargin) If push button "wchange" is pressed, asking wavelength values from user and checking, if given values are correct (comparing also to spectral image). After check values are stored to fields of handles.wlength. test = findobj( Tag, simg ); if (test ~= 0) imgsize = size(handles.pic); imgsize(3) = 0; axvalues = get(handles.wlength, String ); prompt = { Enter wavelength values ( start:resolution:end ) }; dlgtitle = Spectral image wavelength resolution ; lines = 1; def = {axvalues}; axvalues = inputdlg(prompt,dlgtitle,lines,def); if (~cellfun( isempty,axvalues)) pressed ok, not cancel > making changes axvalues = StrProcess(axvalues{1,1},imgsize(3)); set(handles.wlength, Userdata,axvalues,... String,[num2str(axvalues(1)), :,num2str(axvalues(2)), :,num2str(axvalues(3))]); set(handles.spectra, XLim,[axvalues(1) axvalues(3)], XTick,[axvalues(1):50:axvalues(3 )],... DataAspectRatio,[axvalues(3) axvalues(1) 1 1]); axes(handles.spectra); axis( square ); viewer.m Wednesday September 17, 2003 viewer.m 2/9 LIITE 1

37 selected_string = GetSource(handles); if (test ~= 0) proper image loaded, updating view LightProcess(handles,[],selected_string); functions ref_callback, rad_callback: according to radio button selection, either reflectance (ref_callback) of radiance (rad_callback) spectra are plotted on screen. Spectra axes are updated every time when either of radio buttons is clicked. function ref_callback(hobject, eventdata, handles) setting radio button rad value to 0, when button ref is clicked set(handles.rad, Value,0); set(handles.ref, Value,1); set(handles.labely, Visible, on ); viewer.m Sep 17, 03 11:04 Page 5/17 test = findobj( Tag, simg ); if (test ~= 0) proper image loaded, updating spectra axes tmp = get(handles.spectra, Userdata ); set(handles.spectra, Ylim,[0 100]); if (tmp ~= 0) axes(handles.spectra); cla; for i = 1:size(tmp,1) SpectraPlot(handles,tmp(i,2),tmp(i,1)); thickening spectrum from the last clicked pixel plots = get(handles.spectra, Children ); if ~isempty(plots) set(plots, LineWidth,0.5); set(plots(1), LineWidth,4); zoom off; set(handles.zoom, Value,get(handles.zoom, Min )); function rad_callback(hobject, eventdata, handles) setting radio button ref value to 0, when button rad is clicked set(handles.ref, Value,0); set(handles.rad, Value,1); set(handles.labely, Visible, off ); test = findobj( Tag, simg ); if (test ~= 0) tmp = get(handles.spectra, Userdata ); set(handles.spectra, Ylim,[0,eps]); if (tmp ~= 0) axes(handles.spectra); cla; for i = 1:size(tmp,1) SpectraPlot(handles,tmp(i,2),tmp(i,1)); thickening spectrum from the last clicked pixel plots = get(handles.spectra, Children ); if ~isempty(plots) set(plots, LineWidth,0.5); set(plots(1), LineWidth,4); zoom off; set(handles.zoom, Value,get(handles.zoom, Min )); functions s1931_callback, s9164_callback: take care of CIE system selection. If either of buttons is clicked, Sep 17, 03 11:04 Page 6/17 necessary updates to RGB image and color coordinates are made. function s1931_callback(hobject, eventdata, handles) setting radio button s1964 value to 0, when button 1931 is clicked set(handles.s1964, Value,0); set(handles.s1931, Value,1); test = findobj( Tag, simg ); if (test ~= 0) proper image loaded, updating view selected_string = GetSource(handles); LightProcess(handles,[],selected_string); function s1964_callback(hobject, eventdata, handles) setting radio button s1931 value to 0, when button 1964 is clicked set(handles.s1931, Value,0); set(handles.s1964, Value,1); test = findobj( Tag, simg ); if (test ~= 0) proper image loaded, updating view selected_string = GetSource(handles); LightProcess(handles,[],selected_string); function ButtonDown(obj, eventdata, handles) ButtonDown is set as ButtonDownFcn to visible RGB image. Every time the mouse button is pressed on image (and any other options like zoom aren t selected) ButtonDown is executed. ButtonDown shows spectra from a selected pixel on axes handles.spectra using function SpectraPlot or color coordinates on axes handles.coords & handles.lightness using function CoordPlot. getting location of latest mouse click on image axes loc = get(handles.axes, CurrentPoint ); if option "Spectra Viewer" is active, plotting spectrum: if (get(handles.figure1, Userdata ) == 1) if (get(handles.hold, Value ) == get(handles.hold, Min )) hold button released, clearing spectrum location memory set(handles.spectra, Userdata,[]); SpectraPlot(handles,loc(1,1),loc(1,2)); if (get(handles.hold, Value ) == get(handles.hold, Min )) if Hold spectra button isn t active, storing only location of current pixel to handles.spectra/userdata set(handles.spectra, Userdata,get(handles.pixelloc, Userdata )); otherwise adding current pixel location after the previous ones tmpcoords = get(handles.spectra, Userdata ); set(handles.spectra, Userdata,[tmpcoords; get(handles.pixelloc, Userdata )]); thickening spectrum from the last clicked pixel plots = get(handles.spectra, Children ); set(plots, LineWidth,0.5); set(plots(1), LineWidth,4); "Color Coordinates" active, if either of color coordinates is selected: if ((get(handles.xyy, Value ) == get(handles.xyy, Max )) (get(handles.lab, Value ) == get(handles.lab, Max ))) CoordPlot(handles,loc(1,1),loc(1,2)); set(handles.pixelloc, String, Color coordinates not selected, nothing can be viewe d ); viewer.m Wednesday September 17, 2003 viewer.m 3/9 LIITE 1

38 Sep 17, 03 11:04 Page 7/17 function LightProcess(handles, off, light) LightProcess adjusts values of menu items according to user selection. It also calls function colorconv to calculate new color coordinate values from spectral image, updates RGB view and changes image title to agree with selection. If either of color coordinates is selected, also color coordinate axes are updated. set(off, Value,0); off includes handles of all radio buttons that must be resetted if (size(off,2) == 3) if number of resetted radio buttons is 3, then also popupmenu must be resetted set(handles.popupmenu, Value,1); w = waitbar(0, Processing image..., Units, pixels, Position,[ ]); waitbar(0); axvalues = get(handles.wlength, Userdata ); set(handles.imgframe, Userdata,[]); if (get(handles.s1964, Value ) == 1) [out, lcol] = colorconv(handles.pic,axvalues,light,1964,w,handles.filter); [out, lcol] = colorconv(handles.pic,axvalues,light,1931,w,handles.filter); storing new color coordinates to handles.imgframe/userdata and new light source column to handles.ltext/userdata set(handles.imgframe, Userdata,out); set(handles.ltext, Userdata,lcol); close(w); updating RGB image and it s title axes(handles.axes); axis manual; if (strcmp(light, srgb )) title(light); if (strcmp(light(1), D ) & (length(light) > 3)) title( RGB, User defined filter spectrum ); title([ RGB, light source,light]); set(handles.img, CData,out(:,:,1:3)); clear out; if either of color coordinates is selected, updating coordinates view if ((get(handles.xyy, Value ) == get(handles.xyy, Max )) (get(handles.lab, Value ) == get(handles.lab, Max ))) if (get(handles.xyy, Value ) == 1) label = xyy ; label = Lab ; CoordProcess(handles, label); if (get(handles.figure1, Userdata ) == 1) unvisible = [get(handles.coords, Children ); get(handles.lightness, Children )]; set(unvisible, Visible, off ); Functions A_Callback, C_Callback, D50_Callback, D65_Callback: Actions for selecting light source from any of radio buttons: If any of radio buttons is selected, clearing all other radio buttons and the value of popupmenu. Function LightProcess takes care of illumination calculations and SpectraPlot updates spectra axes, if selected spectrum type is radiance. Light source can only be selected when an image is loaded, otherwise showing a warning message. function varargout = A_Callback(h, eventdata, handles, varargin) test = findobj( Tag, simg ); viewer.m viewer.m Sep 17, 03 11:04 Page 8/17 if (test ~= 0) proper image loaded, updating view LightProcess(handles,[handles.D50,handles.C,handles.D65], A ); set(h, Value,1); if (get(handles.rad, Value ) == 1) updating spectra axes tmp = get(handles.spectra, Userdata ); if ~isempty(tmp) axes(handles.spectra); cla; set(handles.spectra, Ylim,[0 eps]); for i = 1:size(tmp,1) SpectraPlot(handles,tmp(i,2),tmp(i,1)); thickening spectrum from the last clicked pixel plots = get(handles.spectra, Children ); if ~isempty(plots) set(plots, LineWidth,0.5); set(plots(1), LineWidth,4); if (get(handles.figure1, Userdata ) == 2) set(plots, Visible, off ); set(h, Value,0); set(handles.note, Visible, on,... String, Image not loaded, load image first and select light source after that ); function varargout = C_Callback(h, eventdata, handles, varargin) test = findobj( Tag, simg ); if (test ~= 0) proper image loaded, updating view LightProcess(handles,[handles.A,handles.D50,handles.D65], C ); set(h, Value,1); if (get(handles.rad, Value ) == 1) tmp = get(handles.spectra, Userdata ); if ~isempty(tmp) axes(handles.spectra); cla; set(handles.spectra, Ylim,[0 eps]); for i = 1:size(tmp,1) SpectraPlot(handles,tmp(i,2),tmp(i,1)); thickening spectrum from the last clicked pixel plots = get(handles.spectra, Children ); if ~isempty(plots) set(plots, LineWidth,0.5); set(plots(1), LineWidth,4); if (get(handles.figure1, Userdata ) == 2) set(plots, Visible, off ); set(h, Value,0); set(handles.note, Visible, on,... String, Image not loaded, load image first and select light source after that ); function varargout = D50_Callback(h, eventdata, handles, varargin) test = findobj( Tag, simg ); if (test ~= 0) proper image loaded, updating view LightProcess(handles,[handles.A,handles.C,handles.D65], D50 ); set(h, Value,1); if (get(handles.rad, Value ) == 1) tmp = get(handles.spectra, Userdata ); if ~isempty(tmp) Wednesday September 17, 2003 viewer.m 4/9 LIITE 1

39 viewer.m Sep 17, 03 11:04 Page 9/17 axes(handles.spectra); cla; set(handles.spectra, Ylim,[0 eps]); for i = 1:size(tmp,1) SpectraPlot(handles,tmp(i,2),tmp(i,1)); thickening spectrum from the last clicked pixel plots = get(handles.spectra, Children ); if ~isempty(plots) set(plots, LineWidth,0.5); set(plots(1), LineWidth,4); if (get(handles.figure1, Userdata ) == 2) set(plots, Visible, off ); set(h, Value,0); set(handles.note, Visible, on,... String, Image not loaded, load image first and select light source after that ); function varargout = D65_Callback(h, eventdata, handles, varargin) test = findobj( Tag, simg ); if (test ~= 0) proper image loaded, updating view LightProcess(handles,[handles.A,handles.D50,handles.C], D65 ); set(h, Value,1); if (get(handles.rad, Value ) == 1) tmp = get(handles.spectra, Userdata ); if ~isempty(tmp) axes(handles.spectra); cla; set(handles.spectra, Ylim,[0 eps]); for i = 1:size(tmp,1) SpectraPlot(handles,tmp(i,2),tmp(i,1)); thickening spectrum from the last clicked pixel plots = get(handles.spectra, Children ); if ~isempty(plots) set(plots, LineWidth,0.5); set(plots(1), LineWidth,4); if (get(handles.figure1, Userdata ) == 2) set(plots, Visible, off ); set(h, Value,0); set(handles.note, Visible, on,... String, Image not loaded, load image first and select light source after that ); function varargout = popupmenu_callback(h, eventdata, handles, varargin) Actions for selecting light source from popupmenu: If a popup item is selected, clearing all radio buttons. Function LightProcess takes care of illumination calculations and SpectraPlot updates spectra axes, if selected spectrum type is radiance. Light source can only be selected when an image is loaded, otherwise showing a warning message. test = findobj( Tag, simg ); if (test ~= 0) val = get(h, Value ); string_list = get(h, String ); selected_string = string_list{val}; convert from cell array to string if (val ~= 1) any of light sources in popup menu selected viewer.m Sep 17, 03 11:04 Page 10/17 ok = 1; if (strcmp(selected_string(1), D )) if "Define filter spectrum" is selected, first opening window for spectrum definition. After that checking, whether given spectrum is covers whole wavelength area if not, padding spectrum with zeros. If user makes some changes to filter spectrum, value of variable ok remains 1, otherwise it s changed and light processing etc. isn t necessary. [handles.filter, ok] = spectradef(handles.filter); ws = get(handles.wlength, Userdata ); if (ok == 1) some changes to filter spectrum if (handles.filter(1) > ws(1)) add = [ws(1):handles.filter(1) 1; zeros(1,handles.filter(1) ws(1))]; handles.filter = [add handles.filter]; fend = size(handles.filter,2); if (handles.filter(fend) < ws(3)) add = [handles.filter(1,fend)+1:ws(3); zeros(1,ws(3) handles.filter(1,f end))]; handles.filter = [handles.filter add]; guidata(gcbo, handles); set(handles.img, handles}); if (ok == 1) If "Define filter spectrum" is selected, some changes have been made to the filter spectrum. Otherwise ok == 1 anyway. LightProcess(handles,[handles.A,handles.D50,handles.C,handles.D65],selected_stri ng); if (get(handles.rad, Value ) == 1) tmp = get(handles.spectra, Userdata ); axes(handles.spectra); cla; set(handles.spectra, Ylim,[0 eps]); if ~isempty(tmp) for i = 1:size(tmp,1) SpectraPlot(handles,tmp(i,2),tmp(i,1)); thickening spectrum from the last clicked pixel plots = get(handles.spectra, Children ); if ~isempty(plots) set(plots, LineWidth,0.5); set(plots(1), LineWidth,4); if (get(handles.figure1, Userdata ) == 2) set(plots, Visible, off ); ~isempty(plots) ~isempty(tmp) (get(handles.rad, Value ) == 1) (ok == 1) (val ~= 1) set(h, Value,1); set(handles.note, Visible, on,... String, Image not loaded, load image first and select light source after that ); function varargout = zoom_callback(h, eventdata, handles, varargin) Using interactive zoom for RGB image by commands zoom on and zoom off, zooming is controlled by pressing toggle button "zoom". Zooming is possible only when an image is loaded, otherwise showing a warning message. test = findobj( Tag, simg ); if (test ~= 0) button_state = get(h, Value ); if (button_state == get(h, Max )) toggle button is pressed, disabling possibility to use Continous update Wednesday September 17, 2003 viewer.m 5/9 LIITE 1

40 zoom on; set(handles.cont, Enable, off, Value,get(handles.cont, Min )); if (button_state == get(h, Min )) toggle button is not pressed zoom off; set(handles.note, Visible, on, String, Image not loaded, zooming isn t possible ); set(h, Value,get(h, Min )); function ZoomProcess(handles, ztype) ZoomProcess is called when either "zactual" or "zfit" buttons are clicked (and when loaded image is larger than imgframe area). If parameter ztype == 1, then zooming and adjusting axes to original size ztype == 2 and zooming and adjusting axes to fit in imgframe area. Zooming is possible only when an image is loaded, otherwise showing a warning message. test = findobj( Tag, simg ); if (test ~= 0) proper image loaded, zooming is possible size1 : original size of image, [width height] size2 : coordinates of image frame, [x y width height] size1 = get(handles.img, Userdata ); size2 = get(handles.imgframe, Position ); calculating how large image can be, result stored to vector finalsize sizex = size2(3)/size1(1); sizey = size2(4)/size1(2); if (ztype == 1) zooming to original size sizefact = 1; zooming to fit in window sizefact = min(sizex,sizey); finalsize(3) = sizefact*size1(1); finalsize(4) = sizefact*size1(2); finalsize(1) = size2(1)+(size2(3) finalsize(3))/2; finalsize(2) = size2(2)+(size2(4) finalsize(4))/2; set(handles.zoom, Value,get(handles.zoom, Min )); set(handles.axes, Position,finalsize); axes(handles.axes); zoom on; zoom out; zoom off; set(handles.note, Visible, on, String, Image not loaded, zooming isn t possible ); function varargout = zactual_callback(h, eventdata, handles, varargin) Pressing push button "zactual" zooms image to its original size ZoomProcess(handles, 1); set(handles.cont, Enable, on ); function varargout = zfit_callback(h, eventdata, handles, varargin) Pressing push button "zfit" zooms image to fit in imgframe area ZoomProcess(handles, 2); set(handles.cont, Enable, on ); viewer.m Sep 17, 03 11:04 Page 11/17 function varargout = file_callback(h, eventdata, handles, varargin) Sep 17, 03 11:04 viewer.m Page 12/17 No actions for file, see subdirs load and exit function varargout = exit_callback(h, eventdata, handles, varargin) Selecting Exit from File menu launches a dialog box button = questdlg( Are you sure?, Exit Program, Exit, Cancel, Exit ); if strcmp(button, Exit ) close; function varargout = helpdir_callback(h, eventdata, handles, varargin) No actions for helpdir, see subdir help function varargout = help_callback(h, eventdata, handles, varargin) showing help.html in Matlab Help browser web(which( spectrahelp.html )); function varargout = cont_callback(h, eventdata, handles, varargin) If toggle button "cont" is down, spectrum is drawn to spectra axes every 0.1 seconds in function ContAction, if mouse cursor is inside image axes. test = findobj( Tag, simg ); ok = (test ~= 0) & ((get(handles.figure1, Userdata ) == 1)... (get(handles.xyy, Value ) == get(handles.xyy, Max )) (get(handles.lab, Value ) == g et(handles.lab, Max ))); if ok image loaded and Spectra Viewer selected OR either color coordinates is selected (color coordinates can t be selected, if a proper image isn t loaded) t = timer( StartDelay,0.1, handles}, Name, Timer ); while ((get(h, Value ) == get(h, Max )) & (get(handles.zoom, Value ) == get(handles.zoo m, Min )) & ok) toggle button is pressed, calling function ContAction every 0.1 seconds start(t); wait(t); stop(t); ok = ((get(handles.figure1, Userdata ) == 1) (get(handles.xyy, Value ) == get(han dles.xyy, Max ))... (get(handles.lab, Value ) == get(handles.lab, Max ))); delete(t); set(h, Value,get(h, Min )); set(h, Value,get(h, Min )); if ((get(handles.figure1, Userdata ) == 2)) set(handles.pixelloc, String, Color coordinates not selected, nothing can be viewe d ); set(handles.note, Visible, on, String, Image not loaded, spectra can t be viewe d ); function ContAction(obj, eventdata, handles) ContAction is executed every 0.1 seconds when Continuous update button is down. Function plots spectrum using SpectraPlot or color coordinates using CoordPlot according to mouse cursor position on screen. getting necessary coordinates from screen and objects figpos = get(handles.figure1, Position ); imgpos = get(handles.axes, Position ); original = get(handles.img, Userdata ); Wednesday September 17, 2003 viewer.m 6/9 LIITE 1

41 curpos = get(0, PointerLocation ); calculating x & y coordinates, checking if cursor is inside image axes xmin = figpos(1) + imgpos(1); xmax = xmin + imgpos(3); ymin = figpos(2) + imgpos(2); ymax = ymin + imgpos(4); x = (original(1)/imgpos(3))*(curpos(1) xmin); y = (original(2)/imgpos(4))*(curpos(2) ymin); if ((0 <= x) & (x < original(1)) & (0 <= y) & (y < original(2))) y = original(2) round(y); if (get(handles.figure1, Userdata ) == 1) SpectraPlot(handles,x,y); if (get(handles.hold, Value ) == get(handles.hold, Min )) if Hold spectra button isn t active, storing only location of current pixel to handles.spectra/userdata set(handles.spectra, Userdata,get(handles.pixelloc, Userdata )); otherwise adding current pixel location after the previous ones tmpcoords = get(handles.spectra, Userdata ); set(handles.spectra, Userdata,[tmpcoords; get(handles.pixelloc, Userdata )]); thickening spectrum from the last clicked pixel plots = get(handles.spectra, Children ); set(plots, LineWidth,0.5); set(plots(1), LineWidth,4); CoordPlot(handles,x,y); viewer.m Sep 17, 03 11:04 Page 13/17 function out = StrProcess(wstring,imgdim) StrProcess checks, whether given string (wstring) is in proper Matlab format for wavelength (= start:resolution:end) Also wavelength resolution is checked according to spectral image dimensions (imgdim). dots = findstr(wstring, : ); if (size(dots) ~= 2) wavelength input not in specified Matlab format start:resolution:end error = errordlg( Input not in proper format, using default values nm, Error ) ; uiwait(error); start = 400; stop = 700; resolution = (stop start)/(imgdim 1); two dots found, checking given values start = str2num(wstring(1:dots(1) 1)); resolution = str2num(wstring(dots(1)+1:dots(2) 1)); stop = str2num(wstring(dots(2)+1:size(wstring,2))); if (isempty(start)) (isempty(resolution)) (isempty(stop)); error = errordlg( At least one of wavelength components isn t numeric, using defau lt values nm, Error ); uiwait(error); start = 400; stop = 700; resolution = (stop start)/(imgdim 1); if (start < 360) (stop > 830) error = errordlg( At least one of wavelength values is outside proper region, repla cing incorrect values with default ones, Error ); uiwait(error); if (start < 360) start = 360; if (stop > 830) stop = 830; resolution = (stop start)/(imgdim 1); xax = start:resolution:stop; if (size(xax,2) ~= imgdim) & (imgdim ~= 0) error = errordlg( Wavelength resolution doesn t match with spectra, adjusting values using given start and end points, Error ); uiwait(error); resolution = (stop start)/(imgdim 1); If input not in proper format and imgdim == 0 (no image loaded), resolution becames negative using 5 as default value. if (resolution < 0) resolution = 5; out = [start resolution stop]; FUNCTIONS FOR SPECTRA VIEWER VIEW: function SpectraPlot(handles,x,y) SpectraPlot plots spectrum from a selected pixel on axes handles.spectra. According to selection Hold spectra, a new spectra is either drawn on the old ones or the axes are cleared before drawing. ymax = size(handles.pic,1); xmax = size(handles.pic,2); x = round(x); some modification must be done to coordinates when cursor is close to corners if (x==0) x=1; if (x>xmax) x=xmax; y = round(y); if (y==0) y=1; if (y>ymax) y=ymax; viewer.m LIITE 1 Sep 17, 03 11:04 Page 14/17 getting spectra from selected location spectrum = handles.pic(y,x,:); set(handles.pixelloc, Userdata,[y x]); spectrum = squeeze(spectrum); axes(handles.spectra); button_state = get(handles.hold, Value ); if (button_state == get(handles.hold, Min )) & (size(get(handles.spectra, Userdata ),1) <= 1) toggle button hold spectra is not pressed, clearing axes cla; wlength = get(handles.wlength, Userdata ); xax = (wlength(1):wlength(2):wlength(3)) ; if (get(handles.rad, Value ) == 1) Spectrum type is radiance, taking the effect of light source into account. lcol = get(handles.ltext, Userdata ); if (lcol == 0) using given filter instead of light source lcol = 2; lsources = handles.filter ; load lsources.dat; if sum(abs(xax round(xax))) > 0 wavelength resolution not integer, interpolation needed light = interp1(lsources(:,1), lsources(:,lcol), xax); lsources = lsources((wlength(1) lsources(1,1) + 1):wlength(2):(wlength(3) lsource Wednesday September 17, 2003 viewer.m 7/9

42 Sep 17, 03 11:04 Page 15/17 s(1,1)+1),:); light = lsources(:,lcol); clear lsources; spectrum = spectrum.*light; tmp = get(handles.spectra, Ylim ); if (max(spectrum) > tmp(2)) ylim([0 max(spectrum)]); axis( square ); Selected spectrum type is reflectance, multiplying spectrum by 100 in order to get prosentual values. spectrum = 100*spectrum; ylim([0 100]); hold on; plotting spectrum and setting current coordinates to text field handles.sptitle xax = xax ; plot(xax,spectrum); set(handles.sptitle, String,[ Spectrum from location,num2str(y),,,num2str(x)], Fontsiz e,10, Units, pixels ); clear spectrum; function varargout = hold_callback(h, eventdata, handles, varargin) Value of Toggle button "hold" is used in function ButtonDown, no other actions needed. function varargout = clear_callback(h, eventdata, handles, varargin) If push button "clear" is pressed, clearing spectra axes and setting default values for y axis axes(handles.spectra); cla; if (get(handles.ref, Value ) == 1) ylim([0 100]); ylim([0 eps]); set(handles.spectra, Userdata,[]); set(handles.sptitle, String, ); FUNCTIONS FOR COLOR COORDINATES VIEW: function CoordPlot(handles,x,y) CoordPlot shows color coordinates from a selected pixel on axes handles.coords & handles.lightness. According to selection Hold dots, a new dot is either drawn with black color like the previous ones or the old dot(s) are colored with their original color. ymax = size(handles.pic,1); xmax = size(handles.pic,2); x = round(x); some modification must be done to co when cursor is close to corners if (x==0) x=1; if (x>xmax) x=xmax; y = round(y); if (y==0) y=1; if (y>ymax) y=ymax; viewer.m Sep 17, 03 11:04 viewer.m Page 16/17 out = get(handles.imgframe, Userdata ); getting coordinates from selected location if (get(handles.xyy, Value ) == 1) dot = out(y,x,[7 8 5]); cstring=[ x =,num2str(dot(1)), y =,num2str(dot(2)), Y =,num2str(dot(3))]; Lab active dot = out(y,x,[ ]); cstring=[ L* =,num2str(dot(3)), a* =,num2str(dot(1)), b* =,num2str(dot(2))]; RGBs = out(y,x,1:3); dot = squeeze(dot); RGBs = squeeze(rgbs); s = max(rgbs); RGBs = RGBs / s; button_state = get(handles.dhold, Value ); prevdots = get(handles.coords, Userdata ); if (button_state == get(handles.dhold, Min )) toggle button dhold is not pressed, coloring previous dot(s) with original color only dot information of current dot is stored in handles.coords, Userdata for i = 1:size(prevdots,1) set(prevdots(i,1), Color,prevdots(i,2:4)); set(prevdots(i,5), Color,prevdots(i,2:4)); plotting selected dot with black color and storing its RGB values for future use axes(handles.coords); dots(1) = plot(dot(1),dot(2), * ); set(dots(1), Color, black ); dots(2:4) = RGBs; axes(handles.lightness); dots(5) = plot(0.5,dot(3), * ); set(dots(5), Color, black ); if (button_state == get(handles.dhold, Min )) if button Hold dots isn t active, storing only the last clicked dot set(handles.coords, Userdata,dots); if(button_state == get(handles.dhold, Max )) otherwise adding the last selected dot to previous dot set prevdots = [prevdots; dots]; set(handles.coords, Userdata,prevdots); set(handles.pixelloc, String,[ Pixel (,num2str(y),,,num2str(x), ):,cstring]); function varargout = color_callback(h, eventdata, handles, varargin) If push button "color dots" is pressed, coloring all black dots with their RGB colors prevdots = get(handles.coords, Userdata ); for i = 1:size(prevdots,1) set(prevdots(i,1), Color,prevdots(i,2:4)); set(prevdots(i,5), Color,prevdots(i,2:4)); set(handles.coords, Userdata,[]); set(handles.pixelloc, String, ); function varargout = dhold_callback(h, eventdata, handles, varargin) Value of Toggle button "dhold" is used in function ButtonDown, no other special actions function CoordProcess(handles, label) CoordProcess shows selected color coordinate presentation by calling function cspace2. Color coordinate values are found from handles.imgframe/userdata. Wednesday September 17, 2003 viewer.m 8/9 LIITE 1

43 LIITE 1 Sep 17, 03 11:04 viewer.m Page 17/17 set(gcf, Pointer, watch ); set(handles.coords, Userdata,[]); set(handles.pixelloc, String, ); temp = get(handles.imgframe, Userdata ); out(:,:,1:3) = temp(:,:,1:3); if strcmp(label, xyy ) out(:,:,4:5) = temp(:,:,7:8); out(:,:,6) = temp(:,:,5); if strcmp(label, Lab ) out(:,:,4:6) = temp(:,:,10:12); out = reformat(out,label); cspace2(handles,label,out); set(gcf, Pointer, arrow ); clear out; Functions xyy_callback and Lab_Callback: Actions for selecting color coordinates from either of radio buttons: If either of radio buttons is selected, clearing the other radio button. Function CoordProcess takes care of illumination calculations. Color coordinates can only be selected when an image is loaded, otherwise showing a warning message. function xyy_callback(hobject, eventdata, handles) test = findobj( Tag, simg ); if (test ~= 0) proper image loaded, updating view set(handles.lab, Value,0); set(hobject, Value,1); CoordProcess(handles, xyy ); set(handles.zoom, Value,get(handles.zoom, Min )); zoom reset; set(hobject, Value,get(hObject, Min )); set(handles.note, Visible, on, String, Image not loaded, color coordinates can t be viewed ); function Lab_Callback(hObject, eventdata, handles) test = findobj( Tag, simg ); if (test ~= 0) proper image loaded, updating view set(handles.xyy, Value,0); set(hobject, Value,1); CoordProcess(handles, Lab ); set(handles.zoom, Value,get(handles.zoom, Min )); zoom reset; set(hobject, Value,get(hObject, Min )); set(handles.note, Visible, on, String, Image not loaded, color coordinates can t be viewed ); Wednesday September 17, 2003 viewer.m 9/9

44 pca.m Sep 17, 03 10:59 Page 1/19 function varargout = pca(varargin) PCA Application M file for pca.fig pca(varargin) The function is application M file for graphical user interface pca.fig varargin = cell array holding input parameters, can be left empty varargout = cell array holding output parameters Needs a graphical user interface (e.g. Windows, X Window) to run PCA typed on command line launches GUI for Principal Component Analysis colorconv spectradef , Tuija Kareinen , added possibility to select which spectrum, reference or reflectance, i s plotted, Tuija Kareinen Begin initialization code DO NOT EDIT gui_singleton = 1; gui_state = struct( gui_name, mfilename,... gui_singleton, gui_singleton,... gui_layoutfcn, [],... gui_callback, []); if nargin & isstr(varargin{1}) gui_state.gui_callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_state, varargin{:}); gui_mainfcn(gui_state, varargin{:}); end End initialization code DO NOT EDIT Executes just before pca is made visible. function pca_openingfcn(hobject, eventdata, handles, varargin) This function has no output args, see OutputFcn. hobject handle to figure eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA) varargin command line arguments to pca (see VARARGIN) Choose default command line output for pca handles.output = hobject; Update handles structure guidata(hobject, handles); setting titles and labels for eigenvector axes axes(handles.vectors); title( Eigenvectors for spectral image, Units, pixels, Fontsize,9); xlabel( Wavelength (nm), Units, pixels, Fontsize,9); ylabel(, Units, pixels, Fontsize,10); set(handles.iimages, Value,get(handles.iimages, Max )); Outputs from this function are returned to the command line. function varargout = pca_outputfcn(hobject, eventdata, handles) varargout cell array for returning output args (see VARARGOUT); hobject handle to figure eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA) Get default command line output from handles structure varargout{1} = handles.output; Executes during object creation, after setting all properties. function enumber_createfcn(hobject, eventdata, handles) hobject handle to enumber (see GCBO) eventdata reserved to be defined in a future version of MATLAB handles empty handles not created until after all CreateFcns called Executes during object creation, after setting all properties. function popupmenu_createfcn(hobject, eventdata, handles) hobject handle to popupmenu (see GCBO) eventdata reserved to be defined in a future version of MATLAB handles empty handles not created until after all CreateFcns called function varargout = file_callback(h, eventdata, handles, varargin) No actions for file, see subdirs load and exit function varargout = exit_callback(h, eventdata, handles, varargin) Selecting Exit from File menu launches a dialog box button = questdlg( Are you sure?, Exit Program, Exit, Cancel, Exit ); if strcmp(button, Exit ) close; function varargout = helpdir_callback(h, eventdata, handles, varargin) No actions for helpdir, see subdir help function varargout = help_callback(h, eventdata, handles, varargin) showing help.html in Matlab Help browser web(which( pcahelp.html )); pca.m function HideShow(handles, selection) HideShow hides/shows GUI components according to parameter selection LIITE 2 Sep 17, 03 10:59 Page 2/19 objects of Inner product images view, selection == 1 tags = []; for i=1:size(handles.imgs,1) if (strcmp(get(handles.imgs(i,2), Tag ), V )) tags = [tags handles.imgs(i,3)]; iimages_objects = [tags findobj( Tag, V ) get(handles.vectors, Children ) handles.vector s handles.bframe... handles.load handles.wtext handles.wlength handles.wchange handles.etext handles.ev alue handles.update... handles.enumber handles.ftext handles.fvalue handles.itext]; objects for Compression errors view, selection == 2 err_objects = [get(handles.spaxes, Children ) handles.image handles.ucimg handles.ucimage handles.spaxes handles.aeframe... handles.aetitle handles.cr handles.d1 handles.ae handles.d2 handles.aes handles.aep snr handles.aemse... handles.eframe handles.etitle handles.pix handles.d3 handles.e handles.d4 handles.e s handles.epsnr... handles.emse handles.lframe handles.ltitle handles.a handles.c handles.d50 handles. D65 handles.popupmenu... handles.stitle handles.s1931 handles.s1964 handles.tcr handles.tae handles.taes han dles.taepsnr handles.taemse... handles.te handles.tes handles.tepsnr handles.temse handles.zoom handles.zactual ha ndles.zfit... get(handles.color, Children ), handles.color handles.sptext handles.ref handles.ra d]; Wednesday September 17, 2003 pca.m 1/10

45 LIITE 2 if (selection == 1) set(iimages_objects, Visible, on ); set(err_objects, Visible, off ); set(handles.ylabel, Visible, off ); set(iimages_objects, Visible, off ); set(err_objects, Visible, on ); if (get(handles.ref, Value ) == 1) set(handles.ylabel, Visible, on ); pca.m Sep 17, 03 10:59 Page 3/19 function iimages_callback(hobject, eventdata, handles) iimages_callback makes components of Inner product images view visible and hides components of Compression errors view. HideShow(handles,1); axes(handles.spaxes); legend( hide ); axes(handles.vectors); legend( show ); set(handles.err, Value,get(handles.err, Min )); set(handles.iimages, Value,get(handles.iimages, Max )); set(handles.img, ButtonDownFcn, ); function err_callback(hobject, eventdata, handles) err_callback makes components of Compression errors view visible and hides components of Inner product images view. If Compression errors view is selected first time or the number of eigenvectors has been changed, no object with tag ucimg can be found and reconstructed RGB image is updated. set(gcf, Pointer, watch ); if isempty(findobj( Tag, ucimg )) calling ImgProcess for showing reconstructed RGB image if function returns zoomcond == 0, then calling ZoomProcess in order to fit image on screen [handles.ucimg, cond] = ImgProcess(handles,2); if (cond == 0) ZoomProcess(handles,2,2); guidata(hobject,handles); updating spectra and color patch views and recalculating compression errors tmp = get(handles.pix, Userdata ); SpectraPlot(handles,tmp(2),tmp(1)); ColorPlot(handles,tmp(2),tmp(1)); errors(handles); PixelError(handles,tmp(2),tmp(1)); HideShow(handles,2); axes(handles.vectors); legend( hide ); axes(handles.spaxes); legend( show ); set(handles.iimages, Value,get(handles.iimages, Min )); set(handles.err, Value,get(handles.err, Max )); set(handles.img, handles, 1}); set(handles.ucimg, handles, 2}); set(gcf, Pointer, arrow ); function load_callback(hobject, eventdata, handles) load_callback is called when Load image button is pressed or Load image option is selected from File menu. load_callback takes care of loading image, checks whether the loaded image is in correct (3 D) format and asks wavelengths from user. load_callback also calls function colorconv to calculate color coordinates and makes the RGB and inner product images visible. If loaded image is not in proper format, an error message is given to user. [filename, pathname] = uigetfile({ *.mat, MAT Files (*.mat) ; *.*, All Files (*.*) }, Sel ect file ); if (filename ~= 0) )]); set(gcf, Pointer, watch ); w = waitbar(0, Loading image..., Units, pixels, Position,[ ]); waitbar(0); clearing variables and setting default values before loading a new image clear handles.pic; clear handles.newpic; clear handles.imgs; handles.filter = []; if (findobj( Tag, ucimg ) ~= 0) set(handles.ucimg, Tag, ); clear handles.ucimg; clear handles.img; guidata(gcbo,handles); off = [handles.a,handles.d50,handles.c,handles.d65]; set(off, Value,0); set(handles.popupmenu, Value,1); set(handles.zoom, Value,get(handles.zoom, Min )); set(handles.pix, Userdata,[1 1]); set(handles.imgframe, Userdata,[]); set(handles.ucframe, Userdata,[]); set(handles.left, Visible, off ); set(handles.right, Visible, off ); S = load([pathname filename]); names = fieldnames(s); handles.pic = getfield(s,names{1,1}); guidata(gcbo,handles); clear S; pca.m Sep 17, 03 10:59 Page 4/19 if loaded image is a 3 D matrix, starting process if (ndims(handles.pic) == 3) asking wavelength values from user with a dialog box axvalues = get(handles.wlength, String ); prompt = { Enter wavelength values ( start:resolution:end ) }; dlgtitle = Spectral image wavelength values ; lines = 1; def = {axvalues}; axvalues = inputdlg(prompt,dlgtitle,lines,def); if cancel is pressed in dialog box, using previous values for wavelength if (isempty(cellfun( isempty,axvalues))) axvalues{1} = get(handles.wlength, String ); checking, if current number of eigenvectors is suitable for loaded image. Also refreshing slider values according to new image. imgsize = size(handles.pic); if (imgsize(3) < get(handles.enumber, Value )) set(handles.enumber, Value,round(imgsize(3)/2)); set(handles.evalue, String,num2str(round(imgsize(3)/2))); set(handles.enumber, Max,imgsize(3), Sliderstep,[1/(imgsize(3) 1) 1/(imgsize(3) 1 processing wavelength string, storing integer values to wlength.userdata axvalues = StrProcess(axvalues{1},imgsize(3)); set(handles.wlength, Userdata,axvalues, String,... [num2str(axvalues(1)), :,num2str(axvalues(2)), :,num2str(axvalues(3))]); calling ImgProcess for showing RGB image if function returns zoomcond == 0, then calling ZoomProcess in order to fit image on screen [handles.img, cond] = ImgProcess(handles,1,w); guidata(hobject,handles); if (cond == 0) ZoomProcess(handles,2,1); set(handles.zactual, Enable, off ); set(handles.zfit, String, Original size ); Wednesday September 17, 2003 pca.m 2/10

46 pca.m Sep 17, 03 10:59 Page 5/19 set(handles.zactual, Enable, on ); set(handles.zfit, String, Fit in window ); setting visibility conditions for image viewing set(handles.imgframe, Visible, off ); set(handles.note, Visible, off ); set(handles.err, Enable, on ); calculating and plotting eigenvectors axes(handles.vectors); cla; set(handles.vectors, Xlim,[axvalues(1) axvalues(3)]); set(handles.spaxes, Xlim,[axvalues(1) axvalues(3)]); n = round(get(handles.enumber, Value )); [handles.evectors, handles.evalues, handles.ind] = EigFunction(handles); guidata(hobject,handles); VectorPlot(handles, n); calculating and viewing inner product images, destroying possible old inner product images first test = findobj( Tag, V ); if (test ~= 0) delete(handles.imgs); set(handles.iframe, Visible, Off ); set(handles.update, Enable, On ); [handles.imgs handles.newpic] = IpImages(handles, 1, n); guidata(hobject,handles); loaded image not in proper 3 D format, showing warning to user close(w); set(handles.imgframe, Visible, on ); set(handles.iframe, Visible, on ); set(handles.note, Visible, on, String, Loaded spectra not in proper format (shou ld be a 3 D matrix) ); set(handles.update, Enable, off ); set(handles.err, Enable, off ); axes(handles.vectors); cla; legend( off ); set(handles.vectors, Visible, off ); set(handles.fvalue, String, ); test = findobj( Tag, img ); if (test ~= 0) set(handles.img, Tag, Unproper ); set(gcf, Pointer, arrow ); function out = StrProcess(wstring,imgdim) StrProcess checks, whether given string (wstring) is in proper Matlab format for wavelength (= start:resolution:end) Also wavelength resolution is checked according to spectral image dimensions (imgdim). dots = findstr(wstring, : ); if (size(dots) ~= 2) wavelength input not in specified Matlab format start:resolution:end error = errordlg( Input not in proper format, using default values nm, Error ) ; uiwait(error); start = 400; stop = 700; resolution = (stop start)/(imgdim 1); two dots found, checking given values start = str2num(wstring(1:dots(1) 1)); resolution = str2num(wstring(dots(1)+1:dots(2) 1)); stop = str2num(wstring(dots(2)+1:size(wstring,2))); Sep 17, 03 10:59 Page 6/19 if (isempty(start)) (isempty(resolution)) (isempty(stop)); error = errordlg( At least one of wavelength components isn t numeric, using defau lt values nm, Error ); uiwait(error); start = 400; stop = 700; resolution = (stop start)/(imgdim 1); if (start < 360) (stop > 830) error = errordlg( At least one of wavelength values is outside proper region, repla cing incorrect values with default ones, Error ); uiwait(error); if (start < 360) start = 360; if (stop > 830) stop = 830; resolution = (stop start)/(imgdim 1); xax = start:resolution:stop; if (size(xax,2) ~= imgdim) & (imgdim ~= 0) error = errordlg( Wavelength resolution doesn t match with spectra, adjusting values using given start and end points, Error ); uiwait(error); resolution = (stop start)/(imgdim 1); If input not in proper format and imgdim == 0 (no image loaded), resolution becames negative using 5 as default value. if (resolution < 0) resolution = 5; out = [start resolution stop]; function source = GetSource(handles) function GetSource finds out, which light source is selected and returns the corresponding string. if (get(handles.popupmenu, Value ) ~= 1); string_list = get(handles.popupmenu, String ); source = string_list{get(handles.popupmenu, Value )}; if (get(handles.a, Value ) == 1) source = A ; if (get(handles.c, Value ) == 1) source = C ; if (get(handles.d50, Value ) == 1) source = D50 ; if (get(handles.d65, Value ) == 1) source = D65 ; source = srgb ; function [img, zoomcond] = ImgProcess(handles, selimg, w) ImgProcess takes care of color coordinate calculations and viewing RGB images, when they are made visible for the first time. Parameter selimg == 1, if processed image is the original one and 2, if image is the reconstructed one. setting necessary parameters for image viewing if (selimg == 1) spimg = handles.pic; imgframe = handles.imgframe; imgaxes = handles.image; tag = img ; waitbar(0,w, Processing image... ); spimg = handles.newpic; Wednesday September 17, 2003 pca.m 3/10 pca.m LIITE 2

47 imgframe = handles.ucframe; imgaxes = handles.ucimage; tag = ucimg ; w = waitbar(0, Processing reconstructed image..., Units, pixels, Position,[ ]); waitbar(0); axvalues = get(handles.wlength, Userdata ); light = GetSource(handles); colorconv calculates color coordinates from spectral image if (get(handles.s1964, Value ) == 1) [out, lcol] = colorconv(spimg,axvalues,light,1964,w,handles.filter); [out, lcol] = colorconv(spimg,axvalues,light,1931,w,handles.filter); storing light source column number to handles.litle/userdata set(handles.ltitle, Userdata,lcol); tmp = zeros(size(handles.pic,1), size(handles.pic,2), 6); tmp(:,:,1:3) = out(:,:,4:6); tmp(:,:,4:6) = out(:,:,10:12); storing XYZ(tmp(:,:,1:3)) and Lab coordinates(tmp(:,:,4:6)) to imgframe/userdata set(imgframe, Userdata,tmp); clear tmp; close(w); RGB values = three first dimensions of out out = out(:,:,1:3); [a b c] = size(out); centering image to imageframe area fsize = get(imgframe, Position ); x = fsize(1)+(fsize(3) b)/2; y = fsize(2)+(fsize(4) a)/2; set(imgaxes, Position,[x y b a]); img is passed out from function, includes actual RGB image information img = image(out, Tag,tag, Parent,imgaxes, Userdata,[b a], HandleVisibility, callback ); clear out; axes(imgaxes); if (selimg == 1) title( Original image (1), FontSize,9); title( Reconstructed image (2), FontSize,9); set(imgaxes, Visible, off ); if constructed image is larger than image area, setting zoomcond to 0. if (x < fsize(1)) (y < fsize(2)) zoomcond = 0; zoomcond = 1; pca.m Sep 17, 03 10:59 Page 7/19 function [vectors, esorted, ind] = EigFunction(handles) EigFunction calculates eigenvalues and vectors from spectral image. esorted includes eigenvalues in sorted order, ind includes original indexes of sorted values. dims = size(handles.pic); image = reshape(handles.pic,dims(1)*dims(2),dims(3)) ; R = 1/(dims(1)*dims(2))*image*image ; [vectors, values] = eig(r); [esorted, ind] = sort(diag(values)); function VectorPlot(handles, n) Sep 17, 03 10:59 pca.m Page 8/19 VectorPlot plots eigenvectors corresponding to n largest eigenvalues to axes handles.vectors wlength = get(handles.wlength, Userdata ); n = round(get(handles.enumber, Value )); calculating fidelity set(handles.fvalue, String,[num2str(100*sum(handles.evalues(end n+1:end))/sum(handles.eval ues)) ]); getting eigenvectors corresponding to n largest eigenvalues for plotting x = wlength(1):wlength(2):wlength(3); axes(handles.vectors) vectors = zeros(size(handles.pic,3), n); j = 1; for i=1:n vectors(:,j) = handles.evectors(:,handles.ind(end i+1)); j = j+1; plot(x,vectors); constructing labels for legend lstring = []; for i=1:n if (i < 10) lstring = [lstring; [ num2str(i)]]; lstring = [lstring; num2str(i)]; legend(lstring, 1) title( Eigenvectors for spectral image, Units, pixels, Fontsize,9); xlabel( Wavelength (nm), Units, pixels, Fontsize,9); set(handles.vectors, Xlim,[wlength(1) wlength(3)]); function [x, y, spacing] = Scale(handles, imgsize, n) Scale calculates proper dimensions and spacing for inner product images in order to fit images into area defined by handles.iframe. areasize = get(handles.iframe, Position ); areasize = [x y w h] spacing = 5; x = (areasize(3) spacing*(n+1))/n; ymax = areasize(4) 2*spacing 100; y = (x/imgsize(2))*imgsize(1); if with current scaling y > ymax, current image is portrait image scaling according to image height if (y > ymax) y = ymax; x = (ymax/imgsize(1))*imgsize(2); spacing = (areasize(3) n*x)/(n+1); if scaling stretches image to be larger than its original size, returning size back to original if (y > imgsize(1)) (x > imgsize(2)) y = imgsize(1); x = imgsize(2); spacing = (areasize(3) n*x)/(n+1); function ButtonDown(obj, eventdata, handles, number) ButtonDown is executed when mouse button is pressed on an inner product image, it thickens the eigenvector that goes together with selected image. plots = get(handles.vectors, Children ); Wednesday September 17, 2003 pca.m 4/10 LIITE 2

48 set(plots, LineWidth,0.5); set(plots(end number+1), LineWidth,4); axes(handles.vectors); legend(legend); function [imghandles, new_spectra] = IpImages(handles, start, stop, imgnumber) IpImages calculates inner product images between the spectral image and chosen number of eigenvectors. It also takes care of showing images and finally reconstructs the spectral image. if (nargin < 4) imgnumber = stop; pca.m Sep 17, 03 10:59 Page 9/19 dims = size(handles.pic); image = reshape(handles.pic,dims(1)*dims(2),dims(3)) ; selecting eigenvectors for calculation vectors = zeros(dims(3), stop start+1); j = 1; for i=start:stop vectors(:,j) = handles.evectors(:,handles.ind(end i+1)); j = j+1; calculating inner product between eigenvectors and original image iprods2d = vectors *image; iprods = reshape(iprods2d,[dims(1) dims(2) stop start+1]); Making corrections to inner product image values for viewing: If negative values are found, subtracting minimum value from image. Values are also scaled to be in range of 0 to 1 by dividing values with maximum value. ipshow = zeros(dims(1), dims(2), stop start+1); for i=1:(stop start+1) minvalue = min(0, min(min(iprods(:,:,i)))); ipshow(:,:,i) = iprods(:,:,i) minvalue; maxvalue = max(max(max(ipshow(:,:,i)))); ipshow(:,:,i) = ipshow(:,:,i)/maxvalue; Calculating maximum size for inner product images using function Scale imgsize= size(ipshow); areasize = get(handles.iframe, Position ); [x, y, spacing] = Scale(handles, imgsize, imgnumber); If images would be too small when showed all at once, reducing number of images and making new size calculations until image size is large enough imgshowed = imgnumber; while (max(x,y) < 150) & (x/imgsize(2) < 0.8) imgshowed = imgshowed 1; [x, y, spacing] = Scale(handles, imgsize, imgshowed); If number of images on screen (= imgshowed) is smaller than total number of images, showing browsing buttons if (imgshowed < imgnumber) set(handles.left, Visible, on, Enable, off, Tag, V ); set(handles.right, Visible, on, Enable, on, Tag, V ); Matrix imghandles will include handles to all inner product image axes, images and xlabel s imghandles = zeros(imgshowed, 3); for i=1:imgshowed pos = [areasize(1)+i*spacing+(i 1)*x areasize(2)+(areasize(4)+5 y)/2 x y]; imghandles(i,1) = axes( Units, Pixels, position,pos, Parent,handles.figure2); axes(imghandles(i,1)); if (i <= (stop start+1)) image is meant to be showed imghandles(i,2) = imshow(ipshow(:,:,i)); set(imghandles(i,2), handles, start+i 1}, Tag, V ); imghandles(i,3) = xlabel(num2str(start+i 1), Tag, V ); image is needed only for filling screen, hiding it imghandles(i,2) = imshow(ipshow(:,:,1)); set(imghandles(i,2), Visible, off ); imghandles(i,3) = xlabel(num2str(start+i 1)); set(imghandles(i,3), Visible, off ); reconstructing spectral image only if function is called with three parameters all three parameter calls are made in such situations, where eigenvector set includes all basis vectors. if (nargin < 4) new_spectra = vectors*iprods2d; new_spectra = reshape(new_spectra,[dims(1) dims(2) dims(3)]); function wchange_callback(hobject, eventdata, handles) If push button "wchange" is pressed, asking wavelength values from user and checking, if given values are correct (comparing also to spectral image). After check values are stored to fields of handles.wlength and eigenvector axes are updated. test = findobj( Tag, img ); if (test ~= 0) imgsize = size(handles.pic); imgsize(3) = 0; pca.m Sep 17, 03 10:59 Page 10/19 axvalues = get(handles.wlength, String ); prompt = { Enter wavelength values ( start:resolution:end ) }; dlgtitle = Spectral image wavelength resolution ; lines = 1; def = {axvalues}; axvalues = inputdlg(prompt,dlgtitle,lines,def); if (~cellfun( isempty,axvalues)) pressed ok, not cancel > making changes axvalues = StrProcess(axvalues{1,1},imgsize(3)); set(handles.wlength, Userdata,axvalues,... String,[num2str(axvalues(1)), :,num2str(axvalues(2)), :,num2str(axvalues(3))]); selected_string = GetSource(handles); if (test ~= 0) proper image loaded, updating view LightProcess(handles, [], selected_string); test = findobj( Tag, ucimg ); if (test ~= 0) updating spectra axis tmp = get(handles.pix, Userdata ); SpectraPlot(handles, tmp(2), tmp(1), size(handles.pic,1), size(handles.pic, 2)); errors(handles); set(handles.spaxes, Xlim,[axvalues(1) axvalues(3)]); n = round(get(handles.enumber, Value )); VectorPlot(handles, n); function enumber_callback(hobject, eventdata, handles) Executes on slider movement, value of slider is shown in text field evalue. set(handles.evalue, String,num2str(round(get(hObject, Value )))); Wednesday September 17, 2003 pca.m 5/10 LIITE 2

49 pca.m Sep 17, 03 10:59 Page 11/19 function update_callback(hobject, eventdata, handles) When button "Update view" is pressed, calling function VectorPlot to update eigenvector axes and IpImages to update inner product images set(gcf, Pointer, watch ); set(handles.right, Visible, off, Tag, ); set(handles.left, Visible, off, Tag, ); test = findobj( Tag, ucimg ); if (test ~= 0) reconstructed image found, setting its label empty set(handles.ucimg, Tag, ); n = round(get(handles.enumber, Value )); VectorPlot(handles,n); delete(handles.imgs); [handles.imgs, handles.newpic] = IpImages(handles, 1, n); guidata(hobject,handles); set(gcf, Pointer, arrow ); If there are more inner product images to view than is reasonable to fit on screen at once, buttons right and left are visible. By pressing them user can browse images back and forth. In both functions, starting and end values for viewed images are calculated, and after that function IpImages is called with these values in order to show next/previous set of inner product images. function right_callback(hobject, eventdata, handles) set(gcf, Pointer, watch ); imgnumber = size(handles.imgs,1); maxnumber = round(get(handles.enumber, Value )); last = get(handles.imgs(imgnumber,3), String ); start = str2num(last)+1; stop = start+imgnumber 1; if (stop >= maxnumber) last page of images, no need to browse right stop = maxnumber; set(handles.right, Enable, off ); set(handles.left, Enable, on ); delete(handles.imgs); clearing old image set handles.imgs = IpImages(handles, start, stop, imgnumber); guidata(hobject,handles); set(gcf, Pointer, arrow ); function left_callback(hobject, eventdata, handles) set(gcf, Pointer, watch ); imgnumber = size(handles.imgs,1); maxnumber = round(get(handles.enumber, Value )); last = get(handles.imgs(1,3), String ); stop = str2num(last) 1; start = stop imgnumber+1; if (start == 1) first page, no need to browse left set(handles.left, Enable, off ); set(handles.right, Enable, on ); delete(handles.imgs); clearing old image set handles.imgs = IpImages(handles, start, stop, imgnumber); guidata(hobject,handles); set(gcf, Pointer, arrow ); function LightProcess(handles, off, light) LightProcess adjusts values of menu items according to user selection. It also calls function colorconv to calculate new color coordinate values from spectral image and updates RGB view of both, original and reconstructed, image set(off, Value,0); off includes handles of all radio buttons that must be resetted if (size(off,2) == 3) if number of resetted radio buttons is 3, then also popupmenu must be resetted set(handles.popupmenu, Value,1); w = waitbar(0, Processing image..., Units, pixels, Position,[ ]); waitbar(0); axvalues = get(handles.wlength, Userdata ); set(handles.imgframe, Userdata,[]); if (get(handles.s1964, Value ) == 1) [out, lcol] = colorconv(handles.pic,axvalues,light,1964,w,handles.filter); [out, lcol] = colorconv(handles.pic,axvalues,light,1931,w,handles.filter); storing new color coordinates to handles.imgframe/userdata and new light source column to handles.ltitle/userdata, also updating RGB view of image tmp = zeros(size(handles.pic,1), size(handles.pic,2), 6); tmp(:,:,1:3) = out(:,:,4:6); XYZ tmp(:,:,4:6) = out(:,:,10:12); Lab set(handles.imgframe, Userdata,tmp); set(handles.ltitle, Userdata,lcol); clear tmp; set(handles.img, CData,out(:,:,1:3)); test = findobj( Tag, ucimg ); if (test ~= 0) reconstructed image found waitbar(0,w, Processing reconstructed image... ); if (get(handles.s1964, Value ) == 1) out = colorconv(handles.newpic,axvalues,light,1931,w,handles.filter); out = colorconv(handles.newpic,axvalues,light,1931,w,handles.filter); storing new color coordinates to handles.ucframe/userdata, also updating RGB view of reconstructed image set(handles.ucimg, CData,out(:,:,1:3)); tmp = out(:,:,4:6); tmp(:,:,4:6) = out(:,:,10:12); set(handles.ucframe, Userdata,tmp); close(w); function BDown(obj, eventdata, handles, selimg) BDown is executed when mouse button is pressed on original or reconstructed RGB image in Compression errors view. It calls functions SpectraPlot, PixelError and ColorPlot to update spectral axes handles.spaxes, pixel errors and colors of selected pixel in axes handles.color getting location of latest mouse click on either of image axes if (selimg == 1) loc = get(handles.image, CurrentPoint ); loc = get(handles.ucimage, CurrentPoint ); SpectraPlot(handles,loc(1,1),loc(1,2)); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); pca.m Sep 17, 03 10:59 Page 12/19 function SpectraPlot(handles,x,y) SpectraPlot plots original and reconstucted spectra from a selected pixel on axes handles.spaxes Wednesday September 17, 2003 pca.m 6/10 LIITE 2

50 LIITE 2 Sep 17, 03 10:59 pca.m Page 13/19 Sep 17, 03 10:59 pca.m Page 14/19 ymax = size(handles.pic,1); xmax = size(handles.pic,2); x = round(x); some modification must be done to coordinates when cursor is close to corners if (x==0) x=1; if (x>xmax) x=xmax; y = round(y); if (y==0) y=1; if (y>ymax) y=ymax; set(handles.pix, Userdata,[y x]); getting spectra from selected location spectrum = squeeze(handles.pic(y,x,:)); new_spectrum = squeeze(handles.newpic(y,x,:)); axes(handles.spaxes); cla; wlength = get(handles.wlength, Userdata ); xax = (wlength(1):wlength(2):wlength(3)) ; if (get(handles.rad, Value ) == 1) Spectrum type is radiance, taking the effect of light source into account. lcol = get(handles.ltitle, Userdata ); if (lcol == 0) using given filter instead of light source lcol = 2; lsources = handles.filter ; load lsources.dat; if sum(abs(xax round(xax))) > 0 wavelength resolution not integer, interpolation needed light = interp1(lsources(:,1), lsources(:,lcol), xax); lsources = lsources((wlength(1) lsources(1,1) + 1):wlength(2):(wlength(3) lsource s(1,1)+1),:); light = lsources(:,lcol); clear lsources; spectrum = spectrum.*light; new_spectrum = new_spectrum.*light; tmp = get(handles.spaxes, Ylim ); if (max([max(spectrum) max(new_spectrum)]) > tmp(2)) ylim([0 max([max(spectrum) max(new_spectrum)])]); Selected spectrum type is reflectance, multiplying spectrum by 100 in order to get prosentual values. spectrum = 100*spectrum; new_spectrum = 100*new_spectrum; ylim([0 100]); setting current coordinate values to text field handles.pix set(handles.pix, String,[ pixel,num2str(y),,,num2str(x), : ]); getting wavelength values for plotting xax = xax ; plot(xax,[spectrum new_spectrum]); axis( tight ); legend( 1, 2, 1); title( Original and reconstructed spectra, Fontsize,9); xlabel( Wavelength (nm), Units, pixels, Fontsize,9); if (get(handles.ref, Value ) == 1) ylim([0 100]); function ColorPlot(handles,x,y) ColorPlot colors axes handles.color with original and reconstructed RGB colors calculated from spectral images axes(handles.color); img1 = get(handles.img, CData ); img2 = get(handles.ucimg, CData ); Y = [0.5, 0.5; 0.5, 0.5;]; cls = squeeze([img1(y,x,:); img2(y,x,:)]); h = area(0:1:1,y); get(h, Faces ); set(h(1), FaceColor, cls(2,:)); set(h(2), FaceColor, cls(1,:)); title( RGB, (1), Fontsize,9, Units, Pixels ); xlabel( RGB, (2), Fontsize,9, Units, Pixels ); set(handles.color, XTick,[], Ytick,[], XtickLabel,, Fontsize,2); function PixelError(handles, x, y) PixelError calculates and shows errors of single pixel (y,x) caused by compression getting spectra from selected location spectrum = squeeze(handles.pic(y,x,:)); new_spectrum = squeeze(handles.newpic(y,x,:)); calculating compression errors samples = size(handles.pic,3); mse = sum(abs(spectrum new_spectrum).^2)/samples; psnr = 10*log10(1/mse); imgold = get(handles.imgframe, Userdata ); Labold = imgold(y,x,4:6); imgnew = get(handles.ucframe, Userdata ); Labnew = imgnew(y,x,4:6); deltae = sqrt(sum((abs(labold Labnew)).^2)); xyzold = imgold(y,x,1:3); xyznew = imgnew(y,x,1:3); cd scielab deltaes = scielab(samples, xyzold, xyznew, [ ], xyz ); cd.. rounding values mse = round(100000*mse)/100000; psnr= round(100*psnr)/100; deltae = round(100*deltae)/100; deltaes = round(100*deltaes)/100; making values visible set(handles.temse, String,num2str(mse)); set(handles.tepsnr, String,num2str(psnr)); set(handles.te, String,num2str(deltae)); set(handles.tes, String,num2str(deltaes)); function errors(handles) errors calculates and shows average errors caused by compression imgsize = size(handles.pic); imgold = get(handles.imgframe, Userdata ); imgnew = get(handles.ucframe, Userdata ); nrofvectors = get(handles.enumber, Value ); Mean Square Error spectral specific needed for calculating average error err = abs(handles.pic handles.newpic); tmp = sum((err.^2),3)/imgsize(3); Wednesday September 17, 2003 pca.m 7/10

51 LIITE 2 result_avg(1) = sum(sum(tmp))/(imgsize(1)*imgsize(2)); Peak Signal to Noise Ratio result_avg(2) = 10*log10(1/result_avg(1)); deltae spectral specific needed for calculating average error delta_lab = abs(imgold(:,:,4:6) imgnew(:,:,4:6)); tmp = sqrt(delta_lab(:,:,1).^2+delta_lab(:,:,2).^2+delta_lab(:,:,3).^2); result_avg(3) = sum(sum(tmp))/(imgsize(1)*imgsize(2)); deltae S CIELAB spectral specific needed for calculating average error img_xyz = imgold(:,:,1:3); ucimg_xyz = imgnew(:,:,1:3); samples=imgsize(3); white = [ ]; cd scielab tmp = scielab(samples, img_xyz, ucimg_xyz, white, xyz ); cd.. result_avg(4) = sum(sum(tmp))/(imgsize(1)*imgsize(2)); compression rate, size of original image / size of compressed image size of compressed image = size of basis vectors + inner product images result_avg(5) = (imgsize(1)*imgsize(2)*imgsize(3))/(nrofvectors*(imgsize(3)+imgsize(1)*imgs ize(2))); rounding values result_avg(1) = round(100000*result_avg(1))/100000; result_avg(2) = round(100*result_avg(2))/100; result_avg(3) = round(100*result_avg(3))/100; result_avg(4) = round(100*result_avg(4))/100; result_avg(5) = round(100*result_avg(5))/100; setting values visible set(handles.taemse, String,num2str(result_avg(1))); set(handles.taepsnr, String,num2str(result_avg(2))); set(handles.tae, String,num2str(result_avg(3))); set(handles.taes, String,num2str(result_avg(4))); set(handles.tcr, String,num2str(result_avg(5))); function ZoomProcess(handles, ztype, img) ZoomProcess is called when either "zactual" or "zfit" buttons are clicked. If parameter ztype == 1, then zooming and adjusting axes to original size ztype == 2 and zooming and adjusting axes to fit in imgframe area. Parameter img == 1, if processed image is the original one and 2, if image is the reconstructed one. setting necessary parameters for image zooming if (img == 1) img = handles.img; imgframe = handles.imgframe; imgaxes = handles.image; img = handles.ucimg; imgframe = handles.ucframe; imgaxes = handles.ucimage; pca.m Sep 17, 03 10:59 Page 15/19 size1 : original size of image, [width height] size2 : coordinates of image frame, [x y width height] size1 = get(img, Userdata ); size2 = get(imgframe, Position ); calculating how large image can be, result stored to vector finalsize sizex = size2(3)/size1(1); sizey = size2(4)/size1(2); if (ztype == 1) zooming to original size sizefact = 1; zooming to fit in window sizefact = min(sizex,sizey); finalsize(3) = sizefact*size1(1); finalsize(4) = sizefact*size1(2); finalsize(1) = size2(1)+(size2(3) finalsize(3))/2; finalsize(2) = size2(2)+(size2(4) finalsize(4))/2; set(imgaxes, Position,finalsize); axes(imgaxes); zoom on; zoom out; zoom off; function zoom_callback(hobject, eventdata, handles) Using interactive zoom for RGB images by commands zoom on and zoom off, zooming is controlled by pressing toggle button "zoom". button_state = get(hobject, Value ); if (button_state == get(hobject, Max )) toggle button is pressed zoom on; if (button_state == get(hobject, Min )) toggle button is not pressed zoom off; pca.m Sep 17, 03 10:59 Page 16/19 function zactual_callback(hobject, eventdata, handles) Pressing push button "zactual" zooms image to its original size ZoomProcess(handles, 1, 1); ZoomProcess(handles, 1, 2); set(handles.zoom, Value,get(handles.zoom, Min )); function zfit_callback(hobject, eventdata, handles) Pressing push button "zfit" zooms image to fit in imgframe area ZoomProcess(handles, 2, 1); ZoomProcess(handles, 2, 2); set(handles.zoom, Value,get(handles.zoom, Min )); Functions A_Callback, C_Callback, D50_Callback, D65_Callback: Actions for selecting light source from any of radio buttons: If any of radio buttons is selected, clearing all other radio buttons and the value of popupmenu. Function LightProcess takes care of illumination calculations. Color errors and pixel colors are also updated, when light source is changed. If selected spectrum type is radiance, also spectra axes are updated. function A_Callback(hObject, eventdata, handles) LightProcess(handles,[handles.D50,handles.C,handles.D65], A ); errors(handles); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); if (get(handles.rad, Value ) == 1) SpectraPlot(handles,tmp(2),tmp(1)); set(hobject, Value,1); function C_Callback(hObject, eventdata, handles) Wednesday September 17, 2003 pca.m 8/10

52 pca.m Sep 17, 03 10:59 Page 17/19 LightProcess(handles,[handles.D50,handles.A,handles.D65], C ); errors(handles); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); if (get(handles.rad, Value ) == 1) SpectraPlot(handles,tmp(2),tmp(1)); set(hobject, Value,1); function D65_Callback(hObject, eventdata, handles) LightProcess(handles,[handles.C,handles.A,handles.D50], D65 ); errors(handles); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); if (get(handles.rad, Value ) == 1) SpectraPlot(handles,tmp(2),tmp(1)); set(hobject, Value,1); function D50_Callback(hObject, eventdata, handles) LightProcess(handles,[handles.C,handles.A,handles.D65], D50 ); errors(handles); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); if (get(handles.rad, Value ) == 1) SpectraPlot(handles,tmp(2),tmp(1)); set(hobject, Value,1); function popupmenu_callback(hobject, eventdata, handles) Actions for selecting light source from popupmenu: If a popup item is selected, clearing all radio buttons. Function LightProcess takes care of illumination calculations. Color errors and pixel colors are also updated, when light source is changed. If selected spectrum type is radiance, also spectra axes are updated. val = get(hobject, Value ); string_list = get(hobject, String ); selected_string = string_list{val}; convert from cell array to string if (val ~= 1) ok = 1; if (strcmp(selected_string(1), D )) if "Define filter spectrum" is selected, first opening window for spectrum definition. After that checking, whether given spectrum is covers whole wavelength area if not, padding spectrum with zeros. If user makes some changes to filter spectrum, value of variable ok remains 1, otherwise it s changed and light processing etc. isn t necessary. [handles.filter, ok] = spectradef(handles.filter); ws = get(handles.wlength, Userdata ); if (ok == 1) some changes to filter spectrum if (handles.filter(1) > ws(1)) add = [ws(1):handles.filter(1) 1; zeros(1,handles.filter(1) ws(1))]; handles.filter = [add handles.filter]; guidata(gcbo, handles); fend = size(handles.filter,2); if (handles.filter(fend) < ws(3)) add = [handles.filter(1,fend)+1:ws(3); zeros(1,ws(3) handles.filter(1,fend) )]; handles.filter = [handles.filter add]; guidata(gcbo, handles); set(handles.img, handles, 1}); set(handles.ucimg, handles, 2}); if (ok == 1) If "Define filter spectrum" is selected, some changes have been made to the filter spectrum. Otherwise ok == 1 anyway. LightProcess(handles,[handles.A,handles.D50,handles.C,handles.D65],selected_string) ; errors(handles); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); if (get(handles.rad, Value ) == 1) SpectraPlot(handles,tmp(2),tmp(1)); functions ref_callback, rad_callback: according to radio button selection, either reflectance (ref_callback) of radiance (rad_callback) spectra are plotted on screen. Spectra axes are updated every time when either of radio buttons is clicked. function ref_callback(hobject, eventdata, handles) setting radio button rad value to 0, when button ref is clicked set(handles.rad, Value,0); set(handles.ref, Value,1); set(handles.ylabel, Visible, on ); tmp = get(handles.pix, Userdata ); axes(handles.spaxes); cla; set(handles.spaxes, Ylim,[0 100]); SpectraPlot(handles,tmp(2),tmp(1)); function rad_callback(hobject, eventdata, handles) setting radio button ref value to 0, when button rad is clicked set(handles.ref, Value,0); set(handles.rad, Value,1); set(handles.ylabel, Visible, off ); tmp = get(handles.pix, Userdata ); axes(handles.spaxes); cla; set(handles.spaxes, Ylim,[0 eps]); SpectraPlot(handles,tmp(2),tmp(1)); functions s1931_callback, s9164_callback: take care of CIE system selection. If either of buttons is clicked, necessary updates to RGB images and compressioin errors are made. function s1931_callback(hobject, eventdata, handles) setting radio button s1964 value to 0, when button 1931 is clicked set(handles.s1964, Value,0); set(handles.s1931, Value,1); selected_string = GetSource(handles); LightProcess(handles,[],selected_string); errors(handles); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); pca.m Sep 17, 03 10:59 Page 18/19 function s1964_callback(hobject, eventdata, handles) Wednesday September 17, 2003 pca.m 9/10 LIITE 2

53 LIITE 2 Sep 17, 03 10:59 pca.m Page 19/19 setting radio button s1931 value to 0, when button 1964 is clicked set(handles.s1931, Value,0); set(handles.s1964, Value,1); selected_string = GetSource(handles); LightProcess(handles,[],selected_string); errors(handles); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); Wednesday September 17, 2003 pca.m 10/10

54 function [out, ret_lcol] = colorconv(spec,wlength,lsource,system,w,filter) COLORCONV calculates color coordinates for input spectra. colorconv(spec,wlength,lsource,system,w,filter) The function calculates and returns color coordinates for input spectra according t o given parameters, wavelength and light source. spec = spectral image as 3 D matrix wlength = wavelength vector, [start resolution stop] lsource = light source, available source types are: A B C D50 D65 F2 F 8 F11 and samples L1, L2, L3 system = used system, either CIE1931 or CIE1964 use integer values 1931 or 1964 t o select system w = wait bar for (viewer / pca) GUI, showing calculation progress filter = user defined filter spectrum, can be left empty out(:,:,1:3) = RGB, scaled between 0 and 1 out(:,:,4:6) = XYZ out(:,:,7:9) = xyz out(:,:,10:12) = L*a*b* out(:,:,13:14) = u v commented out out(:,:,15:16) = u*v* commented out ret_lcol = column of selected light source, used in viewer.m and pca.m Spectral image must be a 3 D matrix, each wavelength as separate channel. Values of spectra must be between 0 and 1. All input parameters but w and filter are obligatory. coords = colorconv(specimage,[ ], D65,1931) stores color coordinate values calculated from specimage (using D65 light source and 1931 system) to coords colorconv , Tuija Kareinen , added possibility to use user defined spectrum instead of light source, Tuija Kareinen , replaced for loops for RGB value calculation with more efficient operat ions, Tuija Kareinen , added light source column number to output parameters, Tuija Kareinen Selecting light source lsource. If given parameter isn t found from list, using D65 lsource = upper(lsource); if(strcmp(lsource(1), A )) lcol = 2; if (strcmp(lsource(1), B )) lcol = 3; if (strcmp(lsource(1), C )) lcol = 4; if (strcmp(lsource, D65 )) lcol = 5; if (strcmp(lsource, SRGB )) lcol = 5; if (strcmp(lsource, D50 )) lcol = 6; if (strcmp(lsource, F2 )) lcol = 7; if (strcmp(lsource, F8 )) lcol = 8; if (strcmp(lsource, F11 )) lcol = 9; if (strcmp(lsource(1:2), L1 )) lcol = 10; if (strcmp(lsource(1:2), L2 )) lcol = 11; if (strcmp(lsource(1:2), L3 )) lcol = 12; if (strcmp(lsource(1:2), DE )) lcol = 0; lcol = 5; colorconv.m Aug 20, 02 15:43 Page 1/4 if (lcol == 0) using given filter instead of light source lcol = 2; ret_lcol = 0; lsources = filter ; if spectrum values are 0, some modifications must be done in order to avoid division by zero. test = find(lsources == 0); lsources(test) = eps; Aug 20, 02 15:43 Page 2/4 ret_lcol = lcol; load lsources.dat; Selecting color matching functions from 1931 or 1964 if (system == 1964) load xyz1964.dat; st = xyz1964; load xyz1931.dat; st = xyz1931; wave = (wlength(1):wlength(2):wlength(3)) ; if sum(abs(wave round(wave))) > 0 wavelength resolution not integer, interpolation needed ciex = interp1(st(:,1), st(:,2), wave); ciey = interp1(st(:,1), st(:,3), wave); ciez = interp1(st(:,1), st(:,4), wave); light = interp1(lsources(:,1), lsources(:,lcol), wave); no interpolation needed lsources = lsources((wlength(1) lsources(1,1) + 1):wlength(2):(wlength(3) lsour ces(1,1)+1),:); light = lsources(:,lcol); st = st((wlength(1) st(1,1) + 1):wlength(2):(wlength(3) st(1,1)+1),:); ciex = st(:,2); ciey = st(:,3); ciez = st(:,4); [a b c] = size(spec); k = 100/(ciey * light); Constants for XYZ, CIELAB: Calculate exact values for reference white if min(wave) < 420 & max(wave) > 680 X0 = k * (ciex * light); Y0 = 100; Y0 = k * (ciey * light); Z0 = k * (ciez * light); Use precalculated values, if spectra too narrow if system == 1931 (calc. from 380:10:780) if lcol == 2 X0 = ; Y0 = 100; Z0 = 35.55; if lcol == 3 X0 = 99.07; Y0 = 100; Z0 = 85.22; if lcol == 4 X0 = 98.04; Y0 = 100; Z0 = ; if lcol == 5 X0 = 95.02; Y0 = 100; Z0 = ; X0 = 95.02; Y0 = 100; Z0 = ; (calc. from 380:5:780) if lcol == 2 X0 = ; Y0 = 100; Z0 = 35.20; if lcol == 3 X0 = 99.19; Y0 = 100; Z0 = 84.36; if lcol == 4 X0 = 97.28; Y0 = 100; Z0 = ; if lcol == 5 X0 = 94.81; Y0 = 100; Z0 = ; X0 = 94.81; Y0 = 100; Z0 = ; out = zeros(a, b, 12); for i=1:a processing image: removing singleton dimensions, if needed image = squeeze(spec(i,:,:)) ; CIE XYZ coordinates, out(:,:,4:6) X = k * ((ciex.* light) * image); Y = k * ((ciey.* light) * image); Z = k * ((ciez.* light) * image); out(i,1:b,4)=x; out(i,1:b,5)=y; out(i,1:b,6)=z; colorconv.m Monday September 01, 2003 colorconv.m 1/2 LIITE 3

55 LIITE 3 ; ; RGB coordinates: if srgb is selected, multiplication with a different matrix if (strcmp(lsource, SRGB )) RGBs=([3.2410, , ; ,1.8760,0.0416;0.0556, ,1.0570]*[X;Y;Z]) RGBs=([2.3647, , ; ,1.4264,0.0888;0.0052, ,1.0092]*[X;Y;Z]) The range for valid RGB values in Matlab / RGB image is [0,1], dividing calculated va lues by 100. Replacing negative RGB values with zero and values bigger than 1 with one RGBs = RGBs/100; RGBs = min(1, RGBs); RGBs = max(0, RGBs); applying gamma correction tmp = find(rgbs <= ); tmp2 = find(rgbs > ); RGBs(tmp) = 12.92*RGBs(tmp); RGBs(tmp2) = 1.055*(RGBs(tmp2).^(1/2.4)) 0.055; out(i,1:b,1:3)=rgbs; colorconv.m Aug 20, 02 15:43 Page 3/4 out(i,1:b,10)=lt; out(i,1:b,11)=at; out(i,1:b,12)=bt; CIELUV coordinates, out(:,:,13:16) up = 4*X./ (X + 15*Y + 3*Z); up = 4*x./ ( 2*x + 12*y + 3); vp = 9*Y./ (X + 15*Y + 3*Z); vp = 9*y./ ( 2*x + 12*y + 3); up0 = 4*X0 / (X0 + 15*Y0 + 3*Z0); vp0 = 9*Y0 / (X0 + 15*Y0 + 3*Z0); ut = 13 * Lt.* (up up0); vt = 13 * Lt.* (vp vp0); out(i,1:b,13)=up; out(i,1:b,14)=vp; out(i,1:b,15)=ut; out(i,1:b,16)=vt; if (nargin > 4) waitbar(i/a); for i=1:a colorconv.m Aug 20, 02 15:43 Page 4/4 Relative XYZ coordinates, out(:,:,7:9) div = X + Y + Z; x = X./div; y = Y./div; z = Z./div; out(i,1:b,7)=x; out(i,1:b,8)=y; out(i,1:b,9)=z; CIELAB coordinates, out(:,:,10:12) FX = X/X0; FY = Y/Y0; FZ = Z/Z0; I = find(fy > ); if ~isempty(i) Lt(I) = 116 * FY(I).^(1/3) 16; YY(I) = FY(I).^(1/3); end I = find(fy <= ); if ~isempty(i) Lt(I) = * FY(I); YY(I) = * FY(I) + 16/116; end I = find(fx > ); if ~isempty(i) XX(I) = FX(I).^(1/3); end I = find(fx <= ); if ~isempty(i) XX(I) = * FX(I) + 16/116; end I = find(fz > ); if ~isempty(i) ZZ(I) = FZ(I).^(1/3); end I = find(fz <= ); if ~isempty(i) ZZ(I) = * FZ(I) + 16/116; end at = 500 * (XX YY); bt = 200 * (YY ZZ); Monday September 01, 2003 colorconv.m 2/2

56 spectradef.m Sep 17, 03 11:07 Page 1/6 function varargout = spectradef(varargin) SPECTRADEF Application M file for spectradef.fig spectradef(varargin) The function is application M file for graphical user interface spectradef.fig. It is used in GUIs viewer and pca for defining filter spectra to spectral images. varargin = cell array holding input parameters. If left empty, using default spectr um of zeros with wavelengths nm as initial spectrum. varargout = output parameters, [spectrum, ok]. Spectrum is the output spectrum and ok == 1, if user has made any changes to input spectrum, otherwise ok == 0. Needs a graphical user interface (e.g. Windows, X Window) to run. SPECTRADEF typed on command line launches GUI. Can be used also: [filter, ok] = spe ctradef > defined spectrum is stored to variable filter and information about making chang es to variable ok. viewer pca , Tuija Kareinen , added some small corrections to function SpecProcess and comments to th e entire file, Tuija Kareinen Begin initialization code DO NOT EDIT gui_singleton = 1; gui_state = struct( gui_name, mfilename,... gui_singleton, gui_singleton,... gui_layoutfcn, [],... gui_callback, []); if nargin & isstr(varargin{1}) gui_state.gui_callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_state, varargin{:}); gui_mainfcn(gui_state, varargin{:}); end End initialization code DO NOT EDIT Executes just before spectradef is made visible. function spectradef_openingfcn(hobject, eventdata, handles, varargin) This function has no output args, see OutputFcn. hobject handle to figure eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA) varargin command line arguments to spectradef (see VARARGIN) no parameters given or parameter is empty, using default spectrum if (nargin < 4) (length(varargin) == 1 & isempty(varargin{1})) temp = [400:1:700; zeros(1,301)]; using spectrum given as parameter if (length(varargin) == 1) temp = varargin{1}; handles.original = temp; handles.spectrum = []; handles.output = []; guidata(hobject, handles); axes(handles.axes); axis([temp(1,1) temp(1,size(temp,2)) 0 1]); set(handles.wlength, Userdata,[temp(1,1) temp(1,size(temp,2))],... String,[num2str(temp(1,1)), :,num2str(temp(1,size(temp,2)))]); axis manual; hold on; plot(temp(1,:),temp(2,:), b, Tag, Current ); freezing GUI to wait for filter spectrum definition uiwait; Outputs from this function are returned to the command line. function varargout = spectradef_outputfcn(hobject, eventdata, handles) varargout cell array for returning output args (see VARARGOUT); hobject handle to figure eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA) Get default command line output from handles structure varargout{1} = handles.output; varargout{2} = handles.ok; delete(hobject); Executes when user attempts to close figure1. function figure1_closerequestfcn(hobject, eventdata, handles) Hint: delete(hobject) closes the figure uiresume; function [out, n] = GetPoints GetPoints reads mouse clicks using function ginput and stores/returns their positions and number of clicks. clearing possible old marks h = findobj( Marker, x ); delete(h); Initially, the list of points is empty. xy = []; n = 0; Loop, picking up the points user clicks. but = 1; while (but == 1) [xi,yi,but] = ginput(1); plot(xi,yi, kx ) n = n+1; xy(:,n) = [xi;yi]; end sorting clicked points xy = sortrows(xy ); out = xy ; function out = SpecProcess(handles, xy, n, type, xdata, ydata) SpecProcess is used for getting values from user defined spectrum. Its behaviour is slightly different when it is called from define_callback (type == 1) or change_callback (type == 2). If function is called from change_callback, xdata and ydata include data of original spectrum that is to be changed. Otherwise values of xdata and ydata are calculated from points that user has clicked. t = 1:n; ts = 1:0.1:n; xy is a matrix holding spectra points, interpolating with a spline curve and finer spacing xys = spline(t,xy,ts); Plot the interpolated curve. h1 = plot(xys(1,:),xys(2,:), r ); spectradef.m Sep 17, 03 11:07 Page 2/6 Getting x and y values (xdata1, ydata1) from plotted curve. xdata1 = get(h1, XData ); ydata1 = get(h1, YData ); Wednesday September 17, 2003 spectradef.m 1/3 LIITE 4

57 Sep 17, 03 11:07 spectradef.m Page 3/6 wdata = get(handles.wlength, Userdata ); if (type == 1) Calculating values xdata (= integer wavelengths), ydata from xdata1, ydata1 by interpolation. First spreading values of plotted curve to meet values at wavelength start & end points, after that removing double wavelength values before interpolation. ydata1 = [ydata1(1) ydata1 ydata1(size(ydata1,2))]; xdata1 = [wdata(1) xdata1 wdata(2)]; Removing double wavelengths. rems = []; xy = [xdata1; ydata1]; xy = sortrows(xy ); xy = xy ; xdata1 = xy(1,:); ydata1 = xy(2,:); for (i=1:(size(xdata1,2) 1)) if (xdata1(i) == xdata1(i+1)) rems = [rems i]; xdata1(rems) = []; ydata1(rems) = []; if (type == 1) xdata = wdata(1):wdata(2); ydata = interp1(xdata1,ydata1,xdata); if (size(xdata1,2) > 1) If more than one point is left after removal, calculating new values for ydata with interp1. After that setting new ydata values to right place in original ydata. iv = ceil(xdata1(1)):floor(xdata1(size(xdata1,2))); newdata = interp1(xdata1,ydata1,iv); start = find(xdata == iv(1)); stop = find(xdata == iv(size(iv,2))); ydata(start:stop) = newdata; title( Selected points have identical wavelength values no changes can be made. T ry again with different points ); cla; plot(xdata,ydata, b, Tag, Current ) out = [xdata; ydata]; set(handles.change, Enable, on ); function define_callback(hobject, eventdata, handles) After clicking button "Define spectrum", user can define a spectrum by clicking left mouse button. The last click of spectrum must be done with right mouse button, clicks are read in function GetPoints. axes(handles.axes); title( ); axis manual hold on [xy, n] = GetPoints; if more than 1 point are selected, calling SpecProcess for processing spectrum if (n > 1) handles.spectrum = SpecProcess(handles, xy, n, 1); guidata(hobject, handles); title( Select more than one point to define spectrum! ); Sep 17, 03 11:07 Page 4/6 function change_callback(hobject, eventdata, handles) After clicking button "Change spectrum", user can change current spectrum by clicking left mouse button. The last click of spectrum must be done with right mouse button. If mouse is clicked only once (first click is right button), interpolating using values from current curve. Clicks are read in function GetPoints. axes(handles.axes); title( ); if (get(hobject, Value ) == get(hobject, Max )) [xy, n] = GetPoints; finding current spectrum and getting values from it h = findobj(handles.axes, Type, line, Tag, Current ); xdata = get(h, XData ); ydata = get(h, YData ); if (n == 1) Only one point selected, using values from current spectrum with selected point to make changes x = round(xy(1,1)); if (x < 1) x = 1; if (x > xdata(size(xdata,2))) x = xdata(size(xdata,2)); setting the width of new curve according to distance from original curve pos = find(xdata == x); if (abs(xy(2,1) ydata(pos)) < 0.005) diff = 1; if (abs(xy(2,1) ydata(pos)) < 0.01) diff = 3; if (abs(xy(2,1) ydata(pos)) < 0.05) diff = 5; if (abs(xy(2,1) ydata(pos)) < 0.1) diff = 10; diff = 20; start = pos diff; stop = pos+diff; if (start < 1) start = 1; if (stop > size(xdata,2)) stop = size(xdata,2); values = [xdata(start) x xdata(stop); ydata(start) xy(2,1) ydata(stop)]; iv = xdata(start):xdata(stop); newdata = interp1(values(1,:),values(2,:),iv, spline ); ydata(start:stop) = newdata; cla; plot(xdata,ydata, b, Tag, Current ) handles.spectrum = [xdata; ydata]; handles.spectrum = SpecProcess(handles, xy, n, 2, xdata, ydata); guidata(hobject, handles); set(hobject, Value,get(hObject, Min )); function clear_callback(hobject, eventdata, handles) Pressing button "Clear axes" clears spectrum axes. spectradef.m Wednesday September 17, 2003 spectradef.m 2/3 LIITE 4

58 LIITE 4 Sep 17, 03 11:07 spectradef.m Page 5/6 Sep 17, 03 11:07 spectradef.m Page 6/6 axes(handles.axes); set(handles.change, Enable, off, Value,get(handles.change, Min )); handles.spectrum = []; guidata(hobject, handles); cla; title( ); function restore_callback(hobject, eventdata, handles) Pressing button "Restore initial state" returns program status and variables to the same state than at the start of program. axes(handles.axes); cla; title( ); axis([handles.original(1,1) handles.original(1,size(handles.original,2)) 0 1]); plot(handles.original(1,:),handles.original(2,:), b, Tag, Current ); set(handles.change, Enable, on ); handles.spectrum = []; guidata(hobject, handles); function default_callback(hobject, eventdata, handles) Pressing button "Default spectrum" clears axes and plots spectrum whose value is constant, 0 at every wavelength wlength = get(handles.wlength, Userdata ); wlength = wlength(1):wlength(2); temp = [wlength; zeros(1,size(wlength,2))]; axes(handles.axes); axis([temp(1,1) temp(1,size(temp,2)) 0 1]); cla; title( ); plot(temp(1,:),temp(2,:), b, Tag, Current ); set(handles.change, Enable, on ); handles.spectrum = temp; guidata(hobject, handles); function export_callback(hobject, eventdata, handles) Pressing button "Export spectrum" closes GUI window and stores the last spectrum values to program output. If user hasn t specified any spectrum, output will be the spectrum loaded at the start of program. if ~isempty(handles.spectrum) handles.output = handles.spectrum; handles.output = handles.original; handles.ok = 1; guidata(hobject, handles); uiresume; function ignore_callback(hobject, eventdata, handles) Pressing button "Ignore changes" closes GUI window, output = GUI input. handles.output = handles.original; handles.ok = 0; guidata(hobject, handles); uiresume; function wchange_callback(hobject, eventdata, handles) If push button "wchange" is pressed, asking wavelength values from user and checking, if given values are correct. After check values are stored to fields of handles.wlength axvalues = get(handles.wlength, String ); prompt = { Enter wavelength values ( start:end ) }; dlgtitle = Spectral image wavelength resolution ; lines = 1; def = {axvalues}; axvalues = inputdlg(prompt,dlgtitle,lines,def); if (~cellfun( isempty,axvalues)) pressed ok, not cancel > making changes axvalues = StrProcess(axvalues{1,1}); set(handles.wlength, Userdata,axvalues, String,[num2str(axvalues(1)), :,num2str(axva lues(2))]); set(handles.axes, XLim,[axvalues(1) axvalues(2)], XTick,[axvalues(1):50:axvalues(2)]) ; function out = StrProcess(wstring) StrProcess checks, whether given string (wstring) is in proper Matlab format for wavelength (= start:end) dots = findstr(wstring, : ); if (size(dots) ~= 1) wavelength input not in specified Matlab format start:resolution:end error = errordlg( Input not in proper format, using default values nm, Error ) ; uiwait(error); start = 400; stop = 700; one colon found, checking given values start = str2num(wstring(1:dots 1)); stop = str2num(wstring(dots+1:size(wstring,2))); if (isempty(start)) (isempty(stop)); error = errordlg( At least one of wavelength components isn t numeric, using defau lt values nm, Error ); uiwait(error); start = 400; stop = 700; out = [start stop]; Wednesday September 17, 2003 spectradef.m 3/3

59 Aug 20, 02 15:43 Page 1/3 function cspace2(handles,type,c); CSPACE2 plots standard CIE color spaces on screen. cspace2(handles,type,c) The function plots plots standard CIE color spaces on screen according type selecti on. handles = object handles for (coord/viewer) GUI type = Color space to plot. Possible strings are: xyy, upvpy, Lab, Luv. C = Color coordinates of samples to plot. This version is for use with coord, viewer & filter GUIs only, see original cspace (written by Seppo Leppajarvi) for other purposes. cspace2(handles, Lab,C) plots values from matrix C as Lab coordinates. cspace , Tuija Kareinen if nargin < 3 C = []; Select coordinate axes axes(handles.coords); cla; loading color coordinates of spectral locus if strcmp(type, xyy ) strcmp(type, upvpy ) load curve.dat; Set initial values if strcmp(type, xyy ) x = 4; y = 5; z = 6; x2 = 1; y2 = 2; xlab = x ; ylab = y ; zlab = Y ; tit = CIE 1931 Chromaticity diagram ; if strcmp(type, upvpy ) x = 13; y = 14; z = 5; x2 = 3; y2 = 4; xlab = u ; ylab = v ; zlab = Y ; tit = CIE 1976 UCS Chromaticity diagram ; if strcmp(type, Lab ) x = 5; y = 6; z = 4; xlab = a* ; ylab = b* ; zlab = L* ; tit = CIE 1976 L*a*b* Color Space ; if strcmp(type, Luv ) x = 5; y = 6; z = 4; xlab = u* ; ylab = v* ; zlab = L* ; tit = CIE 1976 L*u*v* Color Space ; Find extends ext = [ ]; if ~isempty(c) mini = 1; maxi = 1; if size(c,2) > 1 [i,mini] = min(c([x y z],:) ); [i,maxi] = max(c([x y z],:) ); axes(handles.coords); h = plot(c(x,[mini maxi]),c(y,[mini maxi]),. ); ext = get(gca, Zlim ); view(2); ext = [get(gca, XLim ) get(gca, Ylim ) ext]; if strcmp(type, xyy ) a1 = 0; a2 = 1; b1 = 0; b2 = 1; cspace2.m Aug 20, 02 15:43 Page 2/3 ext = [ ]; if strcmp(type, upvpy ) a1 = 0.001; a2 = ; b1 = 0.001; b2 = ; ext = [ ]; if strcmp(type, Lab ) strcmp(type, Luv ) if ~isempty(c) out = get(handles.imgframe, Userdata ); amin = min(min(out(:,:,11))); amax = max(max(out(:,:,11))); bmin = min(min(out(:,:,12))); bmax = max(max(out(:,:,12))); a1 = amin mod(amin,5); a2 = amax+(5 mod(amax,5)); b1 = bmin mod(bmin,5); b2 = bmax+(5 mod(bmax,5)); clear out; a1 = 100; a2 = 100; b1 = 100; b2 = 100; ext = [a1 a2 b1 b2]; axes(handles.coords); hold on; Plot spectral locus if strcmp(type, xyy ) strcmp(type, upvpy ) RGB = curve(5:7,:); s = max(abs(rgb)); for i = 2:size(curve,2) h = plot(curve(x2,i 1:i),curve(y2,i 1:i)); rgb = RGB(:,i) / s(i); rgb(rgb<0) = zeros(sum(rgb<0),1); set(h, Color,rgb); Plot samples on color space if ~isempty(c) RGB = C(1:3,:); rgb = zeros(size(rgb)); s = max(rgb); for i = 1:size(C,2) rgb(:,i) = RGB(:,i) / s(i); rgb(rgb<0) = zeros(sum(sum(rgb<0)),1); for i = 1:size(C,2) h = plot(c(x,i),c(y,i), * ); set(h, Color,rgb(:,i)); Plot lightness axis axes(handles.lightness); cla; hold on; for i = 1:size(C,2) h = plot(0.5,c(z,i), * ); set(h, Color,rgb(:,i)); Set titles, labels and axis extends axes(handles.lightness); set(gca, Ylim,[0 100], Xlim,[0 1]); grid on; title(zlab, Fontsize,10); axes(handles.coords); axis([ext]); cspace2.m Monday September 01, 2003 cspace2.m 1/2 LIITE 5

60 LIITE 5 Aug 20, 02 15:43 Page 3/3 axis( square ); grid on; xlabel(xlab, Fontsize,10); ylabel(ylab, Fontsize,10); title(tit, Fontsize,10); cspace2.m Monday September 01, 2003 cspace2.m 2/2

61 LIITE 6 Aug 20, 02 15:43 Page 1/1 function out = reformat(image,label) REFORMAT reshapes and reduces spectral image reformat(image,label) The function reshapes 3 D matrix to 2 D matrix, n by m 6 image to n*m by 6 image fo r cspace2, and also reduces number of elements to be smaller than image = 3 D spectral image label = color coordinate label out = reduced, 2 D spectral image This version is for use with coord, viewer & filter GUIs only. out = reformat(spectral_image, Lab ) reduces spectral image according to L*a*b* coo rdinates cspace , Tuija Kareinen dims=size(image); newimage=reshape(image,dims(1)*dims(2),dims(3)); maxnum = 2500; if (strcmp(label, Lab )) cols = a* b* cols = [5 6]; d = 0.5; if (strcmp(label, xyy )) cols = x y cols = [4 5]; d = 0.001; sorting rows according to columns cols newimage = sortrows(newimage,cols); finding adjacent points that are closer than d from each other while (size(newimage,1) > maxnum) & (d > 0) y = find(diff(newimage(:,cols(1)))<d & diff(newimage(:,cols(2)))<d); while (size(y,1) > 0) & (size(newimage,1) > maxnum) newimage(y,:) = []; y = find(diff(newimage(:,cols(1)))<d & diff(newimage(:,cols(2)))<d); d = d + d/2; out = newimage ; reformat.m Monday September 01, 2003 reformat.m 1/1

62 ica.m Sep 17, 03 11:06 Page 1/19 function varargout = ica(varargin) ICA Application M file for ica.fig ica(varargin) The function is application M file for graphical user interface ica.fig varargin = cell array holding input parameters, can be left empty varargout = cell array holding output parameters Needs a graphical user interface (e.g. Windows, X Window) to run ICA typed on command line launches GUI for Independent Component Analysis colorconv spectradef , Tuija Kareinen Begin initialization code DO NOT EDIT gui_singleton = 1; gui_state = struct( gui_name, mfilename,... gui_singleton, gui_singleton,... gui_layoutfcn, [],... gui_callback, []); if nargin & isstr(varargin{1}) gui_state.gui_callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_state, varargin{:}); gui_mainfcn(gui_state, varargin{:}); end End initialization code DO NOT EDIT Executes just before ica is made visible. function ica_openingfcn(hobject, eventdata, handles, varargin) This function has no output args, see OutputFcn. hobject handle to figure eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA) varargin command line arguments to ica (see VARARGIN) Choose default command line output for ica handles.output = hobject; Update handles structure guidata(hobject, handles); setting titles and labels for component vector axes axes(handles.vectors); title( Independent component vectors, Units, pixels, Fontsize,9); xlabel( Wavelength (nm), Units, pixels, Fontsize,9); set(handles.iimages, Value,get(handles.iimages, Max )); Outputs from this function are returned to the command line. function varargout = ica_outputfcn(hobject, eventdata, handles) varargout cell array for returning output args (see VARARGOUT); hobject handle to figure eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA) Get default command line output from handles structure varargout{1} = handles.output; Executes during object creation, after setting all properties. function enumber_createfcn(hobject, eventdata, handles) hobject handle to enumber (see GCBO) eventdata reserved to be defined in a future version of MATLAB handles empty handles not created until after all CreateFcns called Sep 17, 03 11:06 ica.m Page 2/19 Executes during object creation, after setting all properties. function popupmenu_createfcn(hobject, eventdata, handles) hobject handle to popupmenu (see GCBO) eventdata reserved to be defined in a future version of MATLAB handles empty handles not created until after all CreateFcns called function varargout = file_callback(h, eventdata, handles, varargin) No actions for file, see subdirs load and exit function varargout = exit_callback(h, eventdata, handles, varargin) Selecting Exit from File menu launches a dialog box button = questdlg( Are you sure?, Exit Program, Exit, Cancel, Exit ); if strcmp(button, Exit ) close; function varargout = helpdir_callback(h, eventdata, handles, varargin) No actions for helpdir, see subdir help function varargout = help_callback(h, eventdata, handles, varargin) showing help.html in Matlab Help browser web(which( icahelp.html )); function HideShow(handles, selection) HideShow hides/shows GUI components according to parameter selection objects of Inner product images view, selection == 1 tags = []; for i=1:size(handles.imgs,1) if (strcmp(get(handles.imgs(i,2), Tag ), V )) tags = [tags handles.imgs(i,3)]; iimages_objects = [tags findobj( Tag, V ) get(handles.vectors, Children ) handles.vector s handles.bframe... handles.load handles.wtext handles.wlength handles.wchange handles.etext handles.ev alue handles.update... handles.enumber handles.itext]; objects for Compression errors view, selection == 2 err_objects = [get(handles.spaxes, Children ) handles.image handles.ucimg handles.ucimage handles.spaxes handles.aeframe... handles.aetitle handles.cr handles.d1 handles.ae handles.d2 handles.aes handles.aep snr handles.aemse... handles.eframe handles.etitle handles.pix handles.d3 handles.e handles.d4 handles.e s handles.epsnr... handles.emse handles.lframe handles.ltitle handles.a handles.c handles.d50 handles. D65 handles.popupmenu... handles.stitle handles.s1931 handles.s1964 handles.tcr handles.tae handles.taes han dles.taepsnr handles.taemse... handles.te handles.tes handles.tepsnr handles.temse handles.zoom handles.zactual ha ndles.zfit... get(handles.color, Children ), handles.color handles.sptext handles.ref handles.ra d]; if (selection == 1) set(iimages_objects, Visible, on ); set(err_objects, Visible, off ); set(handles.ylabel, Visible, off ); Wednesday September 17, 2003 ica.m 1/10 LIITE 7

63 Sep 17, 03 11:06 Page 3/19 set(iimages_objects, Visible, off ); set(err_objects, Visible, on ); if (get(handles.ref, Value ) == 1) set(handles.ylabel, Visible, on ); function iimages_callback(hobject, eventdata, handles) iimages_callback makes components of Inner product images view visible and hides components of Compression errors view. HideShow(handles,1); axes(handles.spaxes); legend( hide ); axes(handles.vectors); legend( show ); set(handles.err, Value,get(handles.err, Min )); set(handles.iimages, Value,get(handles.iimages, Max )); set(handles.img, ButtonDownFcn, ); function err_callback(hobject, eventdata, handles) err_callback makes components of Compression errors view visible and hides components of Inner product images view. If Compression errors view is selected first time or the number of component vectors has been changed, no object with tag ucimg can be found and reconstructed RGB image is updated. set(gcf, Pointer, watch ); if isempty(findobj( Tag, ucimg )) calling ImgProcess for showing reconstructed RGB image if function returns zoomcond == 0, then calling ZoomProcess in order to fit image on screen [handles.ucimg, cond] = ImgProcess(handles,2); if (cond == 0) ZoomProcess(handles,2,2); guidata(hobject,handles); updating spectra and color patch views and recalculating compression errors tmp = get(handles.pix, Userdata ); SpectraPlot(handles,tmp(2),tmp(1)); ColorPlot(handles,tmp(2),tmp(1)); errors(handles); PixelError(handles,tmp(2),tmp(1)); HideShow(handles,2); axes(handles.vectors); legend( hide ); axes(handles.spaxes); legend( show ); set(handles.iimages, Value,get(handles.iimages, Min )); set(handles.err, Value,get(handles.err, Max )); set(handles.img, handles, 1}); set(handles.ucimg, handles, 2}); set(gcf, Pointer, arrow ); function load_callback(hobject, eventdata, handles) load_callback is called when Load image button is pressed or Load image option is selected from File menu. load_callback takes care of loading image, checks whether the loaded image is in correct (3 D) format and asks wavelengths from user. load_callback also calls function colorconv to calculate color coordinates and makes the RGB and inner product images visible. If loaded image is not in proper format, an error message is given to user. [filename, pathname] = uigetfile({ *.mat, MAT Files (*.mat) ; *.*, All Files (*.*) }, Sel ect file ); if (filename ~= 0) ica.m Sep 17, 03 11:06 ica.m Page 4/19 )]); set(gcf, Pointer, watch ); w = waitbar(0, Loading image..., Units, pixels, Position,[ ]); waitbar(0); clearing variables and setting default values before loading a new image clear handles.pic; clear handles.newpic; clear handles.imgs; handles.filter = []; if (findobj( Tag, ucimg ) ~= 0) set(handles.ucimg, Tag, ); clear handles.ucimg; clear handles.img; guidata(gcbo,handles); off = [handles.a,handles.d50,handles.c,handles.d65]; set(off, Value,0); set(handles.popupmenu, Value,1); set(handles.zoom, Value,get(handles.zoom, Min )); set(handles.pix, Userdata,[1 1]); set(handles.imgframe, Userdata,[]); set(handles.ucframe, Userdata,[]); set(handles.left, Visible, off ); set(handles.right, Visible, off ); S = load([pathname filename]); names = fieldnames(s); handles.pic = getfield(s,names{1,1}); guidata(gcbo,handles); clear S; if loaded image is a 3 D matrix, starting process if (ndims(handles.pic) == 3) asking wavelength values from user with a dialog box axvalues = get(handles.wlength, String ); prompt = { Enter wavelength values ( start:resolution:end ) }; dlgtitle = Spectral image wavelength values ; lines = 1; def = {axvalues}; axvalues = inputdlg(prompt,dlgtitle,lines,def); if cancel is pressed in dialog box, using previous values for wavelength if (isempty(cellfun( isempty,axvalues))) axvalues{1} = get(handles.wlength, String ); checking, if current number of component vectors is suitable for loaded image. Also refreshing slider values according to new image. imgsize = size(handles.pic); if (imgsize(3) < get(handles.enumber, Value )) set(handles.enumber, Value,round(imgsize(3)/2)); set(handles.evalue, String,num2str(round(imgsize(3)/2))); set(handles.enumber, Max,imgsize(3), Sliderstep,[1/(imgsize(3) 1) 1/(imgsize(3) 1 processing wavelength string, storing integer values to wlength.userdata axvalues = StrProcess(axvalues{1},imgsize(3)); set(handles.wlength, Userdata,axvalues, String,... [num2str(axvalues(1)), :,num2str(axvalues(2)), :,num2str(axvalues(3))]); calling ImgProcess for showing RGB image if function returns zoomcond == 0, then calling ZoomProcess in order to fit image on screen [handles.img, cond] = ImgProcess(handles,1,w); guidata(hobject,handles); if (cond == 0) ZoomProcess(handles,2,1); set(handles.zactual, Enable, off ); set(handles.zfit, String, Original size ); set(handles.zactual, Enable, on ); set(handles.zfit, String, Fit in window ); Wednesday September 17, 2003 ica.m 2/10 LIITE 7

64 ica.m Sep 17, 03 11:06 Page 5/19 setting visibility conditions for image viewing set(handles.imgframe, Visible, off ); set(handles.note, Visible, off ); set(handles.err, Enable, on ); calculating and plotting component vectors axes(handles.vectors); cla; set(handles.vectors, Xlim,[axvalues(1) axvalues(3)]); set(handles.spaxes, Xlim,[axvalues(1) axvalues(3)]); n = round(get(handles.enumber, Value )); handles.ivectors = CompFunction(handles,n); guidata(hobject,handles); VectorPlot(handles, n); calculating and viewing inner product images, destroying possible old inner product images first test = findobj( Tag, V ); if (test ~= 0) delete(handles.imgs); set(handles.iframe, Visible, Off ); set(handles.update, Enable, On ); [handles.imgs handles.newpic] = IpImages(handles, 1, n); guidata(hobject,handles); loaded image not in proper 3 D format, showing warning to user close(w); set(handles.imgframe, Visible, on ); set(handles.iframe, Visible, on ); set(handles.note, Visible, on, String, Loaded spectra not in proper format (shou ld be a 3 D matrix) ); set(handles.update, Enable, off ); set(handles.err, Enable, off ); axes(handles.vectors); cla; legend( off ); set(handles.vectors, Visible, off ); set(handles.fvalue, String, ); test = findobj( Tag, img ); if (test ~= 0) set(handles.img, Tag, Unproper ); set(gcf, Pointer, arrow ); function out = StrProcess(wstring,imgdim) StrProcess checks, whether given string (wstring) is in proper Matlab format for wavelength (= start:resolution:end) Also wavelength resolution is checked according to spectral image dimensions (imgdim). dots = findstr(wstring, : ); if (size(dots) ~= 2) wavelength input not in specified Matlab format start:resolution:end error = errordlg( Input not in proper format, using default values nm, Error ) ; uiwait(error); start = 400; stop = 700; resolution = (stop start)/(imgdim 1); two dots found, checking given values start = str2num(wstring(1:dots(1) 1)); resolution = str2num(wstring(dots(1)+1:dots(2) 1)); stop = str2num(wstring(dots(2)+1:size(wstring,2))); if (isempty(start)) (isempty(resolution)) (isempty(stop)); error = errordlg( At least one of wavelength components isn t numeric, using defau lt values nm, Error ); uiwait(error); start = 400; stop = 700; resolution = (stop start)/(imgdim 1); if (start < 360) (stop > 830) error = errordlg( At least one of wavelength values is outside proper region, repla cing incorrect values with default ones, Error ); uiwait(error); if (start < 360) start = 360; if (stop > 830) stop = 830; resolution = (stop start)/(imgdim 1); xax = start:resolution:stop; if (size(xax,2) ~= imgdim) & (imgdim ~= 0) error = errordlg( Wavelength resolution doesn t match with spectra, adjusting values using given start and end points, Error ); uiwait(error); resolution = (stop start)/(imgdim 1); If input not in proper format and imgdim == 0 (no image loaded), resolution becames negative using 5 as default value. if (resolution < 0) resolution = 5; out = [start resolution stop]; function source = GetSource(handles) function GetSource finds out, which light source is selected and returns the corresponding string. if (get(handles.popupmenu, Value ) ~= 1); string_list = get(handles.popupmenu, String ); source = string_list{get(handles.popupmenu, Value )}; if (get(handles.a, Value ) == 1) source = A ; if (get(handles.c, Value ) == 1) source = C ; if (get(handles.d50, Value ) == 1) source = D50 ; if (get(handles.d65, Value ) == 1) source = D65 ; source = srgb ; ica.m Sep 17, 03 11:06 Page 6/19 function [img, zoomcond] = ImgProcess(handles, selimg, w) ImgProcess takes care of color coordinate calculations and viewing RGB images, when they are made visible for the first time. Parameter selimg == 1, if processed image is the original one and 2, if image is the reconstructed one. LIITE 7 setting necessary parameters for image viewing if (selimg == 1) spimg = handles.pic; imgframe = handles.imgframe; imgaxes = handles.image; tag = iimg ; waitbar(0,w, Processing image... ); spimg = handles.newpic; imgframe = handles.ucframe; imgaxes = handles.ucimage; tag = ucimg ; w = waitbar(0, Processing reconstructed image..., Units, pixels, Position,[ Wednesday September 17, 2003 ica.m 3/10

65 60 70]); waitbar(0); axvalues = get(handles.wlength, Userdata ); light = GetSource(handles); colorconv calculates color coordinates from spectral image if (get(handles.s1964, Value ) == 1) [out, lcol] = colorconv(spimg,axvalues,light,1964,w,handles.filter); [out, lcol] = colorconv(spimg,axvalues,light,1931,w,handles.filter); storing light source column number to handles.litle/userdata set(handles.ltitle, Userdata,lcol); tmp = zeros(size(handles.pic,1), size(handles.pic,2), 6); tmp(:,:,1:3) = out(:,:,4:6); tmp(:,:,4:6) = out(:,:,10:12); storing XYZ(tmp(:,:,1:3)) and Lab coordinates(tmp(:,:,4:6)) to imgframe/userdata set(imgframe, Userdata,tmp); clear tmp; close(w); RGB values = three first dimensions of out out = out(:,:,1:3); [a b c] = size(out); centering image to imageframe area fsize = get(imgframe, Position ); x = fsize(1)+(fsize(3) b)/2; y = fsize(2)+(fsize(4) a)/2; set(imgaxes, Position,[x y b a]); img is passed out from function, includes actual RGB image information img = image(out, Tag,tag, Parent,imgaxes, Userdata,[b a], HandleVisibility, callback ); clear out; axes(imgaxes); if (selimg == 1) title( Original image (1), FontSize,9); title( Reconstructed image (2), FontSize,9); set(imgaxes, Visible, off ); if constructed image is larger than image area, setting zoomcond to 0. if (x < fsize(1)) (y < fsize(2)) zoomcond = 0; zoomcond = 1; ica.m Sep 17, 03 11:06 Page 7/19 function vectors = CompFunction(handles,n) CompFunction calculates independent component vectors from spectral image. Calculations made with function Jade are based on max_pix randomly selected spectra. dims = size(handles.pic); image = reshape(handles.pic,dims(1)*dims(2),dims(3)) ; max_pix=1024; img_red=zeros(dims(3),max_pix); ri = floor(rand(1,max_pix)*size(image,2))+1; ri(ri>size(image,1)*size(image,2)) = size(image,1)*size(image,2); img_red = image(:,ri); clear image; clear ri; removing mean values from selected spectra newvectors = zeros(size(img_red )); meanvalue = mean(img_red) ; newvectors = img_red meanvalue*ones(1,size(img_red,1)); Sep 17, 03 11:06 Page 8/19 [c,base] = jade(newvectors,n); base has the components vectors=normc(base ); Components must be normalized function VectorPlot(handles, n) VectorPlot plots component vectors to axes handles.vectors wlength = get(handles.wlength, Userdata ); n = round(get(handles.enumber, Value )); getting component vectors for plotting x = wlength(1):wlength(2):wlength(3); axes(handles.vectors) plot(x,handles.ivectors); constructing labels for legend lstring = []; for i=1:n if (i < 10) lstring = [lstring; [ num2str(i)]]; lstring = [lstring; num2str(i)]; legend(lstring, 1) title( Independent component vectors, Units, pixels, Fontsize,9); xlabel( Wavelength (nm), Units, pixels, Fontsize,9); set(handles.vectors, Xlim,[wlength(1) wlength(3)]); function [x, y, spacing] = Scale(handles, imgsize, n) Scale calculates proper dimensions and spacing for inner product images in order to fit images into area defined by handles.iframe. areasize = get(handles.iframe, Position ); areasize = [x y w h] spacing = 5; x = (areasize(3) spacing*(n+1))/n; ymax = areasize(4) 2*spacing 100; y = (x/imgsize(2))*imgsize(1); if with current scaling y > ymax, current image is portrait image scaling according to image height if (y > ymax) y = ymax; x = (ymax/imgsize(1))*imgsize(2); spacing = (areasize(3) n*x)/(n+1); if scaling stretches image to be larger than its original size, returning size back to original if (y > imgsize(1)) (x > imgsize(2)) y = imgsize(1); x = imgsize(2); spacing = (areasize(3) n*x)/(n+1); function ButtonDown(obj, eventdata, handles, number) ButtonDown is executed when mouse button is pressed on an inner product image, it thickens the component vector that goes together with selected image. plots = get(handles.vectors, Children ); set(plots, LineWidth,0.5); set(plots(end number+1), LineWidth,4); axes(handles.vectors); legend(legend); Wednesday September 17, 2003 ica.m 4/10 ica.m LIITE 7

66 function [imghandles, new_spectra] = IpImages(handles, start, stop, imgnumber) IpImages calculates inner product images between the spectral image and chosen number of independent component vectors. It also takes care of showing images and finally reconstructs the spectral image. if (nargin < 4) imgnumber = stop; ica.m Sep 17, 03 11:06 Page 9/19 dims = size(handles.pic); image = reshape(handles.pic,dims(1)*dims(2),dims(3)) ; removing mean values from spectra newvectors = zeros(size(image )); means = mean(image) ; newvectors = image means*ones(1,size(image,1)); image = newvectors ; clear newvectors; getting vectors for calculation vectors = handles.ivectors(:,start:stop); calculating inner product between vectors and original image iprods2d = vectors *image; iprods = reshape(iprods2d,[dims(1) dims(2) stop start+1]); Making corrections to inner product image values for viewing: If negative values are found, subtracting minimum value from image. Values are also scaled to be in range of 0 to 1 by dividing values with maximum value. ipshow = zeros(dims(1), dims(2), stop start+1); for i=1:(stop start+1) minvalue = min(0, min(min(iprods(:,:,i)))); ipshow(:,:,i) = iprods(:,:,i) minvalue; maxvalue = max(max(max(ipshow(:,:,i)))); ipshow(:,:,i) = ipshow(:,:,i)/maxvalue; Calculating maximum size for inner product images using function Scale imgsize= size(ipshow); areasize = get(handles.iframe, Position ); [x, y, spacing] = Scale(handles, imgsize, imgnumber); If images would be too small when showed all at once, reducing number of images and making new size calculations until image size is large enough imgshowed = imgnumber; while (max(x,y) < 150) & (x/imgsize(2) < 0.8) imgshowed = imgshowed 1; [x, y, spacing] = Scale(handles, imgsize, imgshowed); If number of images on screen (= imgshowed) is smaller than total number of images, showing browsing buttons if (imgshowed < imgnumber) set(handles.left, Visible, on, Enable, off, Tag, V ); set(handles.right, Visible, on, Enable, on, Tag, V ); Matrix imghandles will include handles to all inner product image axes, images and xlabel s imghandles = zeros(imgshowed, 3); for i=1:imgshowed pos = [areasize(1)+i*spacing+(i 1)*x areasize(2)+(areasize(4)+5 y)/2 x y]; imghandles(i,1) = axes( Units, Pixels, position,pos, Parent,handles.figure2); axes(imghandles(i,1)); if (i <= (stop start+1)) image is meant to be showed imghandles(i,2) = imshow(ipshow(:,:,i)); set(imghandles(i,2), handles, start+i 1}, Tag, V ); imghandles(i,3) = xlabel(num2str(start+i 1), Tag, V ); image is needed only for filling screen, hiding it imghandles(i,2) = imshow(ipshow(:,:,1)); set(imghandles(i,2), Visible, off ); imghandles(i,3) = xlabel(num2str(start+i 1)); set(imghandles(i,3), Visible, off ); reconstructing spectral image only if function is called with three parameters all three parameter calls are made in such situations, where component vector set includes all basis vectors. if (nargin < 4) new_spectra = vectors*iprods2d; adding mean values back to spectra new_spectra = new_spectra + means*ones(1,size(new_spectra,1)); new_spectra = reshape(new_spectra,[dims(1) dims(2) dims(3)]); function wchange_callback(hobject, eventdata, handles) If push button "wchange" is pressed, asking wavelength values from user and checking, if given values are correct (comparing also to spectral image). After check values are stored to fields of handles.wlength and component vector axes are updated. test = findobj( Tag, iimg ); if (test ~= 0) imgsize = size(handles.pic); imgsize(3) = 0; ica.m Sep 17, 03 11:06 Page 10/19 axvalues = get(handles.wlength, String ); prompt = { Enter wavelength values ( start:resolution:end ) }; dlgtitle = Spectral image wavelength resolution ; lines = 1; def = {axvalues}; axvalues = inputdlg(prompt,dlgtitle,lines,def); if (~cellfun( isempty,axvalues)) pressed ok, not cancel > making changes axvalues = StrProcess(axvalues{1,1},imgsize(3)); set(handles.wlength, Userdata,axvalues, String,... [num2str(axvalues(1)), :,num2str(axvalues(2)), :,num2str(axvalues(3))]); selected_string = GetSource(handles); if (test ~= 0) proper image loaded, updating view LightProcess(handles, [], selected_string); test = findobj( Tag, ucimg ); if (test ~= 0) updating spectra axis tmp = get(handles.pix, Userdata ); SpectraPlot(handles, tmp(2), tmp(1), size(handles.pic,1), size(handles.pic, 2)); errors(handles); set(handles.spaxes, Xlim,[axvalues(1) axvalues(3)]); n = round(get(handles.enumber, Value )); VectorPlot(handles, n); function enumber_callback(hobject, eventdata, handles) Executes on slider movement, value of slider is shown in text field evalue. set(handles.evalue, String,num2str(round(get(hObject, Value )))); function update_callback(hobject, eventdata, handles) When button "Update view" is pressed, calculating new amount of component vectors. Wednesday September 17, 2003 ica.m 5/10 LIITE 7

67 ica.m Sep 17, 03 11:06 Page 11/19 After calculations, calling function VectorPlot to update component vector axes and IpImages to update inner product images. set(gcf, Pointer, watch ); set(handles.right, Visible, off, Tag, ); set(handles.left, Visible, off, Tag, ); test = findobj( Tag, ucimg ); if (test ~= 0) reconstructed image found, setting its label empty set(handles.ucimg, Tag, ); n = round(get(handles.enumber, Value )); handles.ivectors = CompFunction(handles,n); guidata(hobject,handles); VectorPlot(handles,n); delete(handles.imgs); [handles.imgs, handles.newpic] = IpImages(handles, 1, n); guidata(hobject,handles); set(gcf, Pointer, arrow ); If there are more inner product images to view than is reasonable to fit on screen at once, buttons right and left are visible. By pressing them user can browse images back and forth. In both functions, starting and end values for viewed images are calculated, and after that function IpImages is called with these values in order to show next/previous set of inner product images. function right_callback(hobject, eventdata, handles) set(gcf, Pointer, watch ); imgnumber = size(handles.imgs,1); maxnumber = round(get(handles.enumber, Value )); last = get(handles.imgs(imgnumber,3), String ); start = str2num(last)+1; stop = start+imgnumber 1; if (stop >= maxnumber) last page of images, no need to browse right stop = maxnumber; set(handles.right, Enable, off ); set(handles.left, Enable, on ); delete(handles.imgs); clearing old image set handles.imgs = IpImages(handles, start, stop, imgnumber); guidata(hobject,handles); set(gcf, Pointer, arrow ); function left_callback(hobject, eventdata, handles) set(gcf, Pointer, watch ); imgnumber = size(handles.imgs,1); maxnumber = round(get(handles.enumber, Value )); last = get(handles.imgs(1,3), String ); stop = str2num(last) 1; start = stop imgnumber+1; if (start == 1) first page, no need to browse left set(handles.left, Enable, off ); set(handles.right, Enable, on ); delete(handles.imgs); clearing old image set handles.imgs = IpImages(handles, start, stop, imgnumber); guidata(hobject,handles); set(gcf, Pointer, arrow ); function LightProcess(handles, off, light) LightProcess adjusts values of menu items according to user selection. It also calls function colorconv to calculate new color coordinate values from spectral image and updates RGB view of both, original and reconstructed, image Sep 17, 03 11:06 ica.m Page 12/19 set(off, Value,0); off includes handles of all radio buttons that must be resetted if (size(off,2) == 3) if number of resetted radio buttons is 3, then also popupmenu must be resetted set(handles.popupmenu, Value,1); w = waitbar(0, Processing image..., Units, pixels, Position,[ ]); waitbar(0); axvalues = get(handles.wlength, Userdata ); set(handles.imgframe, Userdata,[]); if (get(handles.s1964, Value ) == 1) [out, lcol] = colorconv(handles.pic,axvalues,light,1964,w,handles.filter); [out, lcol] = colorconv(handles.pic,axvalues,light,1931,w,handles.filter); storing new color coordinates to handles.imgframe/userdata and new light source column to handles.ltitle/userdata, also updating RGB view of image tmp = zeros(size(handles.pic,1), size(handles.pic,2), 6); tmp(:,:,1:3) = out(:,:,4:6); XYZ tmp(:,:,4:6) = out(:,:,10:12); Lab set(handles.imgframe, Userdata,tmp); set(handles.ltitle, Userdata,lcol); clear tmp; set(handles.img, CData,out(:,:,1:3)); test = findobj( Tag, ucimg ); if (test ~= 0) reconstructed image found waitbar(0,w, Processing reconstructed image... ); if (get(handles.s1964, Value ) == 1) out = colorconv(handles.newpic,axvalues,light,1931,w,handles.filter); out = colorconv(handles.newpic,axvalues,light,1931,w,handles.filter); storing new color coordinates to handles.ucframe/userdata, also updating RGB view of reconstructed image set(handles.ucimg, CData,out(:,:,1:3)); tmp = out(:,:,4:6); tmp(:,:,4:6) = out(:,:,10:12); set(handles.ucframe, Userdata,tmp); close(w); function BDown(obj, eventdata, handles, selimg) BDown is executed when mouse button is pressed on original or reconstructed RGB image in Compression errors view. It calls functions SpectraPlot, PixelError and ColorPlot to update spectral axes handles.spaxes, pixel errors and colors of selected pixel in axes handles.color getting location of latest mouse click on either of image axes if (selimg == 1) loc = get(handles.image, CurrentPoint ); loc = get(handles.ucimage, CurrentPoint ); SpectraPlot(handles,loc(1,1),loc(1,2)); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); function SpectraPlot(handles,x,y) SpectraPlot plots original and reconstucted spectra from a selected pixel on axes handles.spaxes Wednesday September 17, 2003 ica.m 6/10 LIITE 7

68 ymax = size(handles.pic,1); xmax = size(handles.pic,2); x = round(x); some modification must be done to coordinates when cursor is close to corners if (x==0) x=1; if (x>xmax) x=xmax; y = round(y); if (y==0) y=1; if (y>ymax) y=ymax; set(handles.pix, Userdata,[y x]); getting spectra from selected location spectrum = squeeze(handles.pic(y,x,:)); new_spectrum = squeeze(handles.newpic(y,x,:)); axes(handles.spaxes); cla; ica.m Sep 17, 03 11:06 Page 13/19 wlength = get(handles.wlength, Userdata ); xax = (wlength(1):wlength(2):wlength(3)) ; if (get(handles.rad, Value ) == 1) Spectrum type is radiance, taking the effect of light source into account. lcol = get(handles.ltitle, Userdata ); if (lcol == 0) using given filter instead of light source lcol = 2; lsources = handles.filter ; load lsources.dat; if sum(abs(xax round(xax))) > 0 wavelength resolution not integer, interpolation needed light = interp1(lsources(:,1), lsources(:,lcol), xax); lsources = lsources((wlength(1) lsources(1,1) + 1):wlength(2):(wlength(3) lsource s(1,1)+1),:); light = lsources(:,lcol); clear lsources; spectrum = spectrum.*light; new_spectrum = new_spectrum.*light; tmp = get(handles.spaxes, Ylim ); if (max([max(spectrum) max(new_spectrum)]) > tmp(2)) ylim([0 max([max(spectrum) max(new_spectrum)])]); spectrum = 100*spectrum; new_spectrum = 100*new_spectrum; ylim([0 100]); setting current coordinate values to text field handles.pix set(handles.pix, String,[ pixel,num2str(y),,,num2str(x), : ]); getting wavelength values for plotting plot(xax,[spectrum new_spectrum]); axis( tight ); legend( 1, 2, 1); title( Original and reconstructed spectra, Fontsize,9); xlabel( Wavelength (nm), Units, pixels, Fontsize,9); if (get(handles.ref, Value ) == 1) ylim([0 100]); function ColorPlot(handles,x,y) ColorPlot colors axes handles.color with original and reconstructed RGB colors calculated from spectral images axes(handles.color); img1 = get(handles.img, CData ); img2 = get(handles.ucimg, CData ); Y = [0.5, 0.5; 0.5, 0.5;]; cls = squeeze([img1(y,x,:); img2(y,x,:)]); h = area(0:1:1,y); get(h, Faces ); set(h(1), FaceColor, cls(2,:)); set(h(2), FaceColor, cls(1,:)); title( RGB, (1), Fontsize,9, Units, Pixels ); xlabel( RGB, (2), Fontsize,9, Units, Pixels ); set(handles.color, XTick,[], Ytick,[], XtickLabel,, Fontsize,2); function PixelError(handles, x, y) PixelError calculates and shows errors of single pixel (y,x) caused by compression getting spectra from selected location spectrum = squeeze(handles.pic(y,x,:)); new_spectrum = squeeze(handles.newpic(y,x,:)); calculating compression errors samples = size(handles.pic,3); mse = sum(abs(spectrum new_spectrum).^2)/samples; psnr = 10*log10(1/mse); imgold = get(handles.imgframe, Userdata ); Labold = imgold(y,x,4:6); imgnew = get(handles.ucframe, Userdata ); Labnew = imgnew(y,x,4:6); deltae = sqrt(sum((abs(labold Labnew)).^2)); xyzold = imgold(y,x,1:3); xyznew = imgnew(y,x,1:3); cd scielab deltaes = scielab(samples, xyzold, xyznew, [ ], xyz ); cd.. rounding values mse = round(100000*mse)/100000; psnr= round(100*psnr)/100; deltae = round(100*deltae)/100; deltaes = round(100*deltaes)/100; making values visible set(handles.temse, String,num2str(mse)); set(handles.tepsnr, String,num2str(psnr)); set(handles.te, String,num2str(deltae)); set(handles.tes, String,num2str(deltaes)); function errors(handles) errors calculates and shows average errors caused by compression imgsize = size(handles.pic); imgold = get(handles.imgframe, Userdata ); imgnew = get(handles.ucframe, Userdata ); nrofvectors = get(handles.enumber, Value ); Mean Square Error spectral specific needed for calculating average error err = abs(handles.pic handles.newpic); tmp = sum((err.^2),3)/imgsize(3); result_avg(1) = sum(sum(tmp))/(imgsize(1)*imgsize(2)); Peak Signal to Noise Ratio result_avg(2) = 10*log10(1/result_avg(1)); ica.m Sep 17, 03 11:06 Page 14/19 deltae spectral specific needed for calculating average error Wednesday September 17, 2003 ica.m 7/10 LIITE 7

69 LIITE 7 delta_lab = abs(imgold(:,:,4:6) imgnew(:,:,4:6)); tmp = sqrt(delta_lab(:,:,1).^2+delta_lab(:,:,2).^2+delta_lab(:,:,3).^2); result_avg(3) = sum(sum(tmp))/(imgsize(1)*imgsize(2)); deltae S CIELAB spectral specific needed for calculating average error img_xyz = imgold(:,:,1:3); ucimg_xyz = imgnew(:,:,1:3); samples=imgsize(3); white = [ ]; cd scielab tmp = scielab(samples, img_xyz, ucimg_xyz, white, xyz ); cd.. result_avg(4) = sum(sum(tmp))/(imgsize(1)*imgsize(2)); compression rate, size of original image / size of compressed image size of compressed image = size of basis vectors + inner product images result_avg(5) = (imgsize(1)*imgsize(2)*imgsize(3))/(nrofvectors*(imgsize(3)+imgsize(1)*imgs ize(2))); rounding values result_avg(1) = round(100000*result_avg(1))/100000; result_avg(2) = round(100*result_avg(2))/100; result_avg(3) = round(100*result_avg(3))/100; result_avg(4) = round(100*result_avg(4))/100; result_avg(5) = round(100*result_avg(5))/100; setting values visible set(handles.taemse, String,num2str(result_avg(1))); set(handles.taepsnr, String,num2str(result_avg(2))); set(handles.tae, String,num2str(result_avg(3))); set(handles.taes, String,num2str(result_avg(4))); set(handles.tcr, String,num2str(result_avg(5))); function ZoomProcess(handles, ztype, img) ZoomProcess is called when either "zactual" or "zfit" buttons are clicked. If parameter ztype == 1, then zooming and adjusting axes to original size ztype == 2 and zooming and adjusting axes to fit in imgframe area. Parameter img == 1, if processed image is the original one and 2, if image is the reconstructed one. setting necessary parameters for image zooming if (img == 1) img = handles.img; imgframe = handles.imgframe; imgaxes = handles.image; img = handles.ucimg; imgframe = handles.ucframe; imgaxes = handles.ucimage; ica.m Sep 17, 03 11:06 Page 15/19 size1 : original size of image, [width height] size2 : coordinates of image frame, [x y width height] size1 = get(img, Userdata ); size2 = get(imgframe, Position ); calculating how large image can be, result stored to vector finalsize sizex = size2(3)/size1(1); sizey = size2(4)/size1(2); if (ztype == 1) zooming to original size sizefact = 1; zooming to fit in window sizefact = min(sizex,sizey); finalsize(3) = sizefact*size1(1); finalsize(4) = sizefact*size1(2); finalsize(1) = size2(1)+(size2(3) finalsize(3))/2; finalsize(2) = size2(2)+(size2(4) finalsize(4))/2; set(imgaxes, Position,finalsize); axes(imgaxes); zoom on; zoom out; zoom off; function zoom_callback(hobject, eventdata, handles) Using interactive zoom for RGB images by commands zoom on and zoom off, zooming is controlled by pressing toggle button "zoom". button_state = get(hobject, Value ); if (button_state == get(hobject, Max )) toggle button is pressed zoom on; if (button_state == get(hobject, Min )) toggle button is not pressed zoom off; ica.m Sep 17, 03 11:06 Page 16/19 function zactual_callback(hobject, eventdata, handles) Pressing push button "zactual" zooms image to its original size ZoomProcess(handles, 1, 1); ZoomProcess(handles, 1, 2); set(handles.zoom, Value,get(handles.zoom, Min )); function zfit_callback(hobject, eventdata, handles) Pressing push button "zfit" zooms image to fit in imgframe area ZoomProcess(handles, 2, 1); ZoomProcess(handles, 2, 2); set(handles.zoom, Value,get(handles.zoom, Min )); Functions A_Callback, C_Callback, D50_Callback, D65_Callback: Actions for selecting light source from any of radio buttons: If any of radio buttons is selected, clearing all other radio buttons and the value of popupmenu. Function LightProcess takes care of illumination calculations. Color errors and pixel colors are also updated, when light source is changed. If selected spectrum type is radiance, also spectra axes are updated. function A_Callback(hObject, eventdata, handles) LightProcess(handles,[handles.D50,handles.C,handles.D65], A ); errors(handles); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); if (get(handles.rad, Value ) == 1) SpectraPlot(handles,tmp(2),tmp(1)); set(hobject, Value,1); function C_Callback(hObject, eventdata, handles) LightProcess(handles,[handles.D50,handles.A,handles.D65], C ); errors(handles); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); if (get(handles.rad, Value ) == 1) Wednesday September 17, 2003 ica.m 8/10

70 LIITE 7 SpectraPlot(handles,tmp(2),tmp(1)); set(hobject, Value,1); ica.m Sep 17, 03 11:06 Page 17/19 function D65_Callback(hObject, eventdata, handles) LightProcess(handles,[handles.C,handles.A,handles.D50], D65 ); errors(handles); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); if (get(handles.rad, Value ) == 1) SpectraPlot(handles,tmp(2),tmp(1)); set(hobject, Value,1); function D50_Callback(hObject, eventdata, handles) LightProcess(handles,[handles.C,handles.A,handles.D65], D50 ); errors(handles); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); if (get(handles.rad, Value ) == 1) SpectraPlot(handles,tmp(2),tmp(1)); set(hobject, Value,1); function popupmenu_callback(hobject, eventdata, handles) Actions for selecting light source from popupmenu: If a popup item is selected, clearing all radio buttons. Function LightProcess takes care of illumination calculations. Color errors and pixel colors are also updated, when light source is changed. If selected spectrum type is radiance, also spectra axes are updated. val = get(hobject, Value ); string_list = get(hobject, String ); selected_string = string_list{val}; convert from cell array to string if (val ~= 1) ok = 1; if (strcmp(selected_string(1), D )) if "Define filter spectrum" is selected, first opening window for spectrum definition. After that checking, whether given spectrum is covers whole wavelength area if not, padding spectrum with zeros. If user makes some changes to filter spectrum, value of variable ok remains 1, otherwise it s changed and light processing etc. isn t necessary. [handles.filter, ok] = spectradef(handles.filter); ws = get(handles.wlength, Userdata ); if (handles.filter(1) > ws(1)) add = [ws(1):handles.filter(1) 1; zeros(1,handles.filter(1) ws(1))]; handles.filter = [add handles.filter]; guidata(gcbo, handles); fend = size(handles.filter,2); if (handles.filter(fend) < ws(3)) add = [handles.filter(1,fend)+1:ws(3); zeros(1,ws(3) handles.filter(1,fend))]; handles.filter = [handles.filter add]; guidata(gcbo, handles); if (ok == 1) some changes have been done to the filter spectrum LightProcess(handles,[handles.A,handles.D50,handles.C,handles.D65],selected_string); set(handles.img, handles, 1}); Sep 17, 03 11:06 Page 18/19 set(handles.ucimg, handles, 2}); errors(handles); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); if (get(handles.rad, Value ) == 1) SpectraPlot(handles,tmp(2),tmp(1)); functions ref_callback, rad_callback: according to radio button selection, either reflectance (ref_callback) of radiance (rad_callback) spectra are plotted on screen. Spectra axes are updated every time when either of radio buttons is clicked. function ref_callback(hobject, eventdata, handles) setting radio button rad value to 0, when button ref is clicked set(handles.rad, Value,0); set(handles.ref, Value,1); set(handles.ylabel, Visible, on ); tmp = get(handles.pix, Userdata ); axes(handles.spaxes); cla; set(handles.spaxes, Ylim,[0 100]); SpectraPlot(handles,tmp(2),tmp(1)); function rad_callback(hobject, eventdata, handles) setting radio button ref value to 0, when button rad is clicked set(handles.ref, Value,0); set(handles.rad, Value,1); set(handles.ylabel, Visible, off ); tmp = get(handles.pix, Userdata ); axes(handles.spaxes); cla; set(handles.spaxes, Ylim,[0 eps]); SpectraPlot(handles,tmp(2),tmp(1)); functions s1931_callback, s9164_callback: take care of CIE system selection. If either of buttons is clicked, necessary updates to RGB images and compressioin errors are made. function s1931_callback(hobject, eventdata, handles) setting radio button s1964 value to 0, when button 1931 is clicked set(handles.s1964, Value,0); set(handles.s1931, Value,1); selected_string = GetSource(handles); LightProcess(handles,[],selected_string); errors(handles); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); function s1964_callback(hobject, eventdata, handles) setting radio button s1931 value to 0, when button 1964 is clicked set(handles.s1931, Value,0); set(handles.s1964, Value,1); selected_string = GetSource(handles); LightProcess(handles,[],selected_string); errors(handles); tmp = get(handles.pix, Userdata ); ColorPlot(handles,tmp(2),tmp(1)); PixelError(handles,tmp(2),tmp(1)); ica.m Wednesday September 17, 2003 ica.m 9/10

71 LIITE 7 Sep 17, 03 11:06 ica.m Page 19/19 Executes on button press in select. function select_callback(hobject, eventdata, handles) hobject handle to select (see GCBO) eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA) Hint: get(hobject, Value ) returns toggle state of select Executes on button press in clearsel. function clearsel_callback(hobject, eventdata, handles) hobject handle to clearsel (see GCBO) eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA) Wednesday September 17, 2003 ica.m 10/10

72 Aug 12, 03 15:23 Page 1/4 function [A,S]=jade(X,m) Source separation of complex signals with JADE. Jade performs Source Separation in the following sense: X is an n x T data matrix assumed modelled as X = A S + N where o A is an unknown n x m matrix with full rank. o S is a m x T data matrix (source signals) with the properties a) for each t, the components of S(:,t) are statistically independent b) for each p, the S(p,:) is the realization of a zero mean source signal. c) At most one of these processes has a vanishing 4th order cumulant. o N is a n x T matrix. It is a realization of a spatially white Gaussian noise, i.e. Cov(X) = sigma*eye(n) with unknown variance sigma. This is probably better than no modeling at all... Jade performs source separation via a Joint Approximate Diagonalization of Eigen matrices. THIS VERSION ASSUMES ZERO MEAN SIGNALS Input : * X: Each column of X is a sample from the n sensors * m: m is an optional argument for the number of sources. If ommited, JADE assumes as many sources as sensors. Output : * A is an n x m estimate of the mixing matrix * S is an m x T naive (ie pinv(a)*x) estimate of the source signals Version 1.5. Copyright: JF Cardoso. See notes, references and revision history at the bottom of this file [n,t] = size(x); source detection not implemented yet! if nargin==1, m=n ; A few parameters that could be adjusted nem = m; number of eigen matrices to be diagonalized seuil = 1/sqrt(T)/100; a statistical threshold for stopping joint diag whitening if m<n, assumes white noise [U,D] = eig((x*x )/T); [puiss,k]=sort(diag(d)); ibl = sqrt(puiss(n m+1:n) mean(puiss(1:n m))); bl = ones(m,1)./ ibl ; W = diag(bl)*u(1:n,k(n m+1:n)) ; IW = U(1:n,k(n m+1:n))*diag(ibl); assumes no noise IW = sqrtm((x*x )/T); Y W = W*X; = inv(iw); Cumulant estimation R = (Y*Y )/T ; jade.m C = (Y*Y. )/T ; Yl Ykl Yjkl = zeros(1,t); = zeros(1,t); = zeros(1,t); Q = zeros(m*m*m*m,1) ; index = 1; for lx = 1:m ; Yl = Y(lx,:); for kx = 1:m ; Ykl = Yl.*conj(Y(kx,:)); for jx = 1:m ; Yjkl = Ykl.*conj(Y(jx,:)); for ix = 1:m ; Q(index) =... (Yjkl * Y(ix,:). )/T R(ix,jx)*R(lx,kx) R(ix,kx)*R(lx,jx) C(ix,lx)*conj(C(j x,kx)) ; index = index + 1 ; end ; end ; end ; end If you prefer to use more memory and less CPU, you may prefer this code (due to J. Galy of ENSICA) for the estimation the cumulants ones_m = ones(m,1) ; T1 = kron(ones_m,y); T2 = kron(y,ones_m); TT = (T1.* conj(t2)) ; TS = (T1 * T2. )/T ; R = (Y*Y )/T ; Q = (TT*TT )/T kron(r,ones(m)).*kron(ones(m),conj(r)) R(:)*R(:) TS.*TS ; computation and reshaping of the significant eigen matrices [U,D] [la,k] = eig(reshape(q,m*m,m*m)); = sort(abs(diag(d))); jade.m Aug 12, 03 15:23 Page 2/4 reshaping the most (there are nem of them) significant eigenmatrice M = zeros(m,nem*m); array to hold the significant eigen matrices Z = zeros(m) ; buffer h = m*m; for u=1:m:nem*m, Z(:) = U(:,K(h)); M(:,u:u+m 1) = la(h)*z; h = h 1; joint approximate diagonalization of the eigen matrices Better declare the variables used in the loop : B = [ ; ; 0 i i ] ; Bt = B ; Ip = zeros(1,nem) ; Iq = zeros(1,nem) ; g = zeros(3,nem) ; G = zeros(2,2) ; vcp = zeros(3,3); D = zeros(3,3); la = zeros(3,1); K = zeros(3,3); angles = zeros(3,1); pair = zeros(1,2); c = 0 ; s = 0 ; Monday September 01, 2003 jade.m 1/2 LIITE 8

73 Aug 12, 03 15:23 jade.m Page 3/4 init; encore = 1; V = eye(m); Main loop while encore, encore=0; for p=1:m 1, for q=p+1:m, Ip = p:m:nem*m ; Iq = q:m:nem*m ; Computing the Givens angles g = [ M(p,Ip) M(q,Iq) ; M(p,Iq) ; M(q,Ip) ] ; [vcp,d] = eig(real(b*(g*g )*Bt)); [la, K] = sort(diag(d)); angles = vcp(:,k(3)); if angles(1)<0, angles= angles ; end ; c = sqrt(0.5+angles(1)/2); s = 0.5*(angles(2) j*angles(3))/c; if abs(s)>seuil, updates matrices M and V by a Givens rotation encore = 1 ; pair = [p;q] ; G = [ c conj(s) ; s c ] ; V(:,pair) = V(:,pair)*G ; M(pair,:) = G * M(pair,:) ; M(:,[Ip Iq]) = [ c*m(:,ip)+s*m(:,iq) conj(s)*m(:,ip)+c*m(:,iq) ] ; end if end q loop end p loop end while estimation of the mixing matrix and signal separation A = IW*V; S = V *Y ; return ; Note 1: This version does *not* assume circularly distributed signals as 1.1 did. The difference only entails more computations in estimating the cumulants Note 2: This code tries to minimize the work load by jointly diagonalizing only the m most significant eigenmatrices of the cumulant tensor. When the model holds, this avoids the diagonalization of m^2 matrices. However, when the model does not hold, there is in general more than m significant eigen matrices. In this case, this code still works but is no longer equivalent to the minimization of a well defined contrast function: this would require the diagonalization of *all* the eigen matrices. We note (see the companion paper) that diagonalizing **all** the eigen matrices is strictly equivalent to diagonalize all the parallel cumulants slices. In other words, when the model does not hold, it could be a good idea to diagonalize all the parallel cumulant slices. The joint diagonalization will require about m times more operations, but on the other hand, computation of the eigen matrices is avoided. Such an approach makes sense when dealing with a relatively small number of sources (say smaller than 10). Revision history Version 1.5 (Nov. 2, 97) : o Added the option kindly provided by Jerome Galy to compute the sample cumulant tensor. This option uses more memory but is faster (a similar piece of jade.m Aug 12, 03 15:23 Page 4/4 code was also passed to me by Sandip Bose). o Suppressed the useles variable oui. o Changed (angles=sign(angles(1))*angles) to (if angles(1)<0, angles= angles ; end ;) as suggested by Iain Collings This is safer (with probability 0 in the case of sample statistics) o Cosmetic rewriting of the doc. Fixed some typos and added new ones. Version 1.4 (Oct. 9, 97) : Changed the code for estimating cumulants. The new version loops thru the sensor indices rather than looping thru the time index. This is much faster for large sample sizes. Also did some clean up. One can now change the number of eigen matrices to be jointly diagonalized by just changing the variable nem. It is still hard coded below to be equal to the number of sources. This is more economical and OK when the model holds but not appropriate when the model does not hold (in which case, the algorithm is no longer asymptotically equivalent to minimizing a contrast function, unless nem is the square of the number of sources.) Version 1.3 (Oct. 6, 97) : Added various Matalb tricks to speed up things a bit. This is not very rewarding though, because the main computational burden still is in estimating the 4th order moments. Version 1.2 (Mar., Apr., Sept. 97) : Corrected some mistakes **in the comments!!**, Added note 2 When the model does not hold and the EUSIPCO reference. Version 1.1 (Feb. 94): Creation Contact JF Cardoso for any comment bug report,and UPDATED VERSIONS. or check the WEB page author = "Jean Fran\c{c}ois Cardoso and Antoine Souloumiac", journal = "IEE Proceedings F", title = "Blind beamforming for non {G}aussian signals", number = "6", volume = "140", month = dec, pages = { }, year = "1993"} Some analytical insights into the asymptotic performance of JADE are HTML = "ftp://sig.enst.fr/pub/jfc/papers/eusipco94_perf.ps.gz", author = "Jean Fran\c{c}ois Cardoso", address = {Edinburgh}, booktitle = "{Proc. EUSIPCO}", month = sep, pages = " ", title = "On the performance of orthogonal source separation algorithms", year = 1994} jade.m ends here Monday September 01, 2003 jade.m 2/2 LIITE 8

74 ÎÌÁÅÍËÅÊÁÌÌÄ ÎÖ Ó ½º¼ ÌÙ ÃÖÒÒ ½½½¾ ½ºº¾¼¼ ÂÓÒ ÙÙÒ ÝÐÓÔ ØÓ ÌØÓÒ ØØÐÝØØÒ ÐØÓ ÖÓ ØÝ

75 Ë ÐØ ½ Ð Ø ½ ¾ ÎØØØ ½ ¾º½ ÎØØÙ ÑÒ Ñ º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ¾º¾ ÎØØÙØ ÓÙÑÒØØ º º º º º º º º º º º º º º º º º º º º º º º º º ½ ÅÖØÐÑØ ½ ÌÓÑÒÒÐÐ ÙÙ ¾ º½ ÌØÓ ÐØ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ¾ º¾ ÌÓÑÒØÓÚØÑÙ Ø º º º º º º º º º º º º º º º º º º º º º º º º º ¾ º ØÒ ÓÔÚÙÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ËÓÚÐÐÙ ÐÙÒ ØÒÖÒ ÒÓÙØØÑÒÒ º º º º º º º º º º º º º º ÌÙÖÚÐÐ ÙÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ÌÓÑÒØÝÑÔÖ Ø º º º º º º º º º º º º º º º º º º º º º º º º º º ÄÙÓØØØÚÙÙ º½ ÃÝÔ ÝÝ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º¾ Î ØÓ ÙÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ÌÓÔÙÑ ÝÝ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ÄÙÓØØØÚÙÙ º½ ÑÑÖÖØØÚÝÝ º º º º º º º º º º º º º º º º º º º º º º º º º º º º¾ ÇÔØØÚÙÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ÇÔÖÓØÚÙÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ÌÓÙÙ º½ ÒÝØØ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º¾ ÅÙÒ Ö ÙÖ Ò ÝØØ º º º º º º º º º º º º º º º º º º º º º º º ÐÐÔØØÚÝÝ º½ ÒÐÝ ÓØÚÙÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º¾ ÅÙÙÒÒÐØÚÙÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ËØÐ ÙÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º Ì ØØØÚÙÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ËÖÖØØÚÝÝ º½ ÄØØØÚÝÝ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º¾ ÒÒØØÚÙÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ËÖÖØØÚÝÝØÒ ÐØØÝÚÒ ØÒÖÒ ÒÓÙØØÑÒÒ º º º º º º º º ÃÓÖÚÚÙÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º

76 ½ Ð Ø ÖÓ ØÝ ØÓØÙØØÒ ÖÐÐ Ø ÝØØÐØØÝÑ ÔØÖÙÚÒ ØÖ Ø¹ ÐÙÙÒº ÃÝØØÐØØÝÑØ ØÙÐÚØ ÓÐÑÒ Ó ËÓØÛÖ ÀÓÙ Ò Ò ÝØ ØÝ ØØØÚ ÚÖÐÓÖØÓÖÓÒ ÅØйØÓÓÐÓܺ ÐÐ ÝØØÐØØÝÑ Ø ØÖ ¹ ØÐÐÒ ÔØÖÙÚÒ ÚÖÓÓÖÒØØ ØÝ Ý ØØ ÔØÖ Ö ÚÐÓÒ¹ ÐØÒ ÐÐ ØÓÒÒ ÝØØÐØØÝÑ ÓÒ ØÖÓØØØÙ ÔÓÑÔÓÒÒØØÒÐÝÝ Ò ØÙÐÓ ØÒ ØÖ ØÐÙÙÒº ÈÓÑÔÓÒÒØØÒÐÝÝ Ò ØÙÐÓ ØÒ ØÖ ØÐÙ ÚÖØÒ ØÖ¹ ÓØØÙÒ ÝØØÐØÝÑÒ ÔÓÐØ ØÓØÙØØÒ ÑÝ Ú ØÚÒÐÒÒ ÝØØÐØØݹ Ñ ÖÔÔÙÑØØÓÑÒ ÓÑÔÓÒÒØØÒÐÝÝ Ò ØÙÐÓ ØÒ ØÖ ØÐÙÙÒº Ì ÓÙÑÒØ ÓÒ ÑÖØÐØÝ ÝØØÐØØÝÑÒ ØÙÐÚØ ÝÐ Ø ÓÑÒ ÙÙغ ÃÝØØÐØØÝÑÒÒ ØØÓ ÐØ ØÓÑÒÒÓØ ÖÖÓØÒ ÝÐ ÐÐ Ø ÓÐк Ä Ó¹ ÙÑÒØ ÐÚØØÒ ÝØØÐØØÝÑÐÐ ØØØÚØ ÚØÑÙ Ø ÖÓØ٠غ ¾ ¾º½ ÎØØØ ÎØØÙ ÑÒ Ñ ÎØØ ÙÐÓ Ò ÐØ Ò ÝØØÒ ÒÓØØÓØ ºµ Ñ ÓÒ ÖÒÐÝÒÒ ÚØØÙ Ø ÓÙÑÒØ Ø º ÓÒ ÐÙÚÙÒ Ø ÐÓÒ ÒÙÑÖÓº ÂÓ ÚØØÒ ÓÙÑÒØÒ ÐÐ ØÓ Ò ÓØÒ ÖÒÐÝÒÒØØ ÝØغ ¾º¾ ÎØØÙØ ÓÙÑÒØØ ÚØØØÙ ÓÙÑÒØغ ÅÖØÐÑØ Ä ÜÝ Ê ÅË ÈËÆÊ Á ½ ÚÖÚÖÙÙ ÁÄ Ü Ý ÖÓÑØØ ÙÙ ÐÙÑÒÒ ÓÑÔÖ ÓÒ ÊØ ÅÒ ËÕÙÖ ÖÖÓÖ È ËÒйØÓ¹ÆÓ ÊØÓ Õ ÁÄ ÚÖÖÓÑØØ Ä ¾ ¾ ¾ ËÔØÐÒÒ ÐÒÒÙ ÁÄ¹Ö ØÐÑÒ Ë¹ÁÄ ½

77 º½ ÌÓÑÒÒÐÐ ÙÙ ÌØÓ ÐØ ÃÝØØÐØØÝÑØ ØÓØÙØØÒ ØÒ ØØ Ò ÝØØÚØ ÑÙÙØØÙ ØÓÒ Øй ÐØØÑ Ò ÙÓÖØÙ Ò Òº ÃÝØØÐØØÝÑ ØÖÚØØÚØ ÚÐÓÒÐØÒ ÚÖ ÓÚØÙ ÙÒØÓÒ ÖÚÓØ ÐÙØÒ ÓÐÑÒ ØÓ ØÓ Ø ÙÓÖØÙ Ò Òº º¾ ÌÓÑÒØÓÚØÑÙ Ø ÌÓ ÐÐ ÝØØÐØØÝÑ Ø ØÖ ØÐÐÒ ÔØÖÙÚÒ ÚÖÓÓÖÒØØ ØÝ ¹ Ý ØØ ÔØÖ Ö ÚÐÓÒÐØÒ ÐÐ ØÓÒÒ ÝØØÐØØÝÑ ÓÒ ØÖÓ¹ ØØØÙ ÔÓÑÔÓÒÒØØÒÐÝÝ Ò ØÙÐÓ ØÒ ØÖ ØÐÙÙÒº ÂØÓ ÝØØÐØØÝÑÒ ÚØØÒ ÐÐ ØÐÐÝ Ö ØÝ ØÖÑÐÐ Ò ÑÑÒÒ ØÓÒÒ ÝØع ÐØØÝѺ ÅÓÐÑÔÒ ÝØØÐØØÝÑÒ ØÓØÙØØÒ ÔØÖÙÚÒ ØØÑÒÒ Ê¹ÑÙÓÓ Ö ÚÐÓÒÐØÒ Ðк ÅÝ Ê¹ÙÚÒ ÞÓÓÑÑ Ò ÓÒ ÓÐØÚ ÑÓÐРغ ÃÝØØÐØØÝÑØ ØÓØÙØØÒ ØÒ ØØ ÝØØ ÔÝ ØÝÝ ÐØÑÒ ÒÒ ÐÙ¹ ÑÒ ÔØÖÙÚÒ ÚÐØ ÑÒ ÑÒ ÚÐÓÒÐØÒ ÐÐ ÔØÖÙÚÒ Ê¹ ØÝ Ð ØÒº ÃÝØØÐØØÝÑÒ ØÓØÙØØÒ ÑÝ ÑÓÐÐ ÙÙ ÑÖØÐÐ Ò ÚÐÓÒÐØÒ Ø ÝØØØÚ ÙÓØÒ ÔØÖº ÃÝØØÐØØÝÑØ ØÓØÙØØÒ ØÓÑÑÒ ÔØÖÙÚÐÐ ÓØ ÓÚØ ÓÐÑÙÐÓØع ºÑعÑÙÓÓ ØÒ ØØ ÙÒ ÐÐÓÒÔØÙÙ ØØÒ ÓÑÒ ÙÐÓØع Ò Ø ÓÒÒº ÃÝØØÐØØÝÑØ ØÓØÙØØÒ ØÒ ØØ ÒÒ ÐØØÚÒ Ôع ÖÙÚÒ ÖÚÓÒ ÓÒ ÓÐØÚ ÖØÒ ÖÚÓ ÐØØÙÒ ÚÐÐÐ ¼ºº½º Ò ÑÑ Ò ÝØØÐØØÝÑÒ ØÓØÙØØÒ ÑÓÐÐ ÙÙ ØÖ ØÐÐ Ý ØØ ØÒ ÔØÖÒ ÖØÒ ¹ ÖÒ ØÝ º ÅÝ Ù ÑÑÒ ÔØÖÒ ØÖ Ø¹ ÐÑÒÒ ÑÒ Ø ÓÒ ÓÐØÚ ÑÓÐРغ ËÔØÖÒ ØÖ ØÐÑ Ò Ð ¹ ÝØØÐØØÝÑÒ ØÓØÙØØÒ ÑÝ ÑÓÐÐ ÙÙ ØÖ ØÐÐ ÔØÖÙÚÒ ÚÖ¹ ÓÓÖÒØØ ØÝ º ØØØÚ ÚÖÓÓÖÒØ ØÓ ÐÙØÒ ÜÝ Ä º ÃÝØØÐØØÝÑÒ ØÓØÙØØÒ ÓÓ ÙÚÒ ÚÖÓÓÖÒØ ØÓ ØÝ ÑÓÐй ÙÙ ØÖ ØÐÐ Ý ØØ ØÒ ÔØÖÒ ÚÖÓÓÖÒØ ØÓ ØÝ Ý Ø Ù ÑÔ ÖÖÐÐÒº ÌÓÒÒ ÝØØÐØØÝÑ ØÓØÙØØÒ ÔÓÑÔÓÒÒØØÒÐÝÝ Ò ØÙÐÓ ØÒ ØÖ Ø¹ ÐÙ ÚÖØÒº ÃÝØØÐØØÝÑ ØØÒ ÝØØÒ ÚÐØ Ñ ÑÖ ÔØÖÙ¹ Ú Ø Ð ØØÙ ÓÑÒ ÚØÓÖØ ÓÑÒ ÚØÓÖÒ ÔØÖÙÚÒ ÚÐй Ð Ð ØÙØ ØÙÐÓÙÚØ ÖÑØ ÓÙÚÒº ÃÝØØÐØØÝÑ ÒÝØØÒ ÐÙ¹ ÔÖ Ò ÓÑÒ ÚØÓÖ Ø ØÙÐÓÙÚ Ø ÖÓÒ ØÖÙÓÙÒ ÔØÖÙÚÒ ¾

78 ʹ ØÝ Øº ʹ ØÝ Ò Ð ÓÒ ÓÐØÚ ÑÓÐÐ Ø ØÖ ØÐÐ Ý Øع ÐÙÔÖ ÖÓÒ ØÖÙÓØÙ ÔØÖ ÔÖØØÒº ÈÓÑÔÓÒÒØØÒÐÝݹ ÙÓÖØØØÚÒ ÔÙ Ò ÙØØÑÒ ÚÖÒ ØÖ ØÐÑ ÝØØй ØÝÑ Ð ØÒ ÙÚÒ ÐÝÚÝÝ ÐØݵ ÔØÖÙÚÒ ÓÑÔÖ Ó Ù Ê ÓÑÔÖ ÓÒ Êص ÑÖÒÒ ÒÐÚÖ ÅË ÅÒ ËÕÙÖ ÖÖÓÖµ ¹ ÒÐÒ ÓÒ ÙØÒ ÙÔÔÙÖÚÓ ÈËÆÊ È ËÒйØÓ¹ÆÓ ÊØÓµ ˹Áĺ ÐÐ ÙÚØÙØ ÓÑÒ ÙÙØ ØÓØÙØØÒ ÑÝ ÖÔÔÙÑØØÓÑÐÐ ÓÑÔÓÒÒØØÒÐÝÝ Ðк º ØÒ ÓÔÚÙÙ ÃÝØØÐØØÝÑÒ ÓÒ ØÓÑØØÚ ÅØйÝÑÔÖ Ø ÚÖ Ó Ø º ÝÐ ÔÒº º ËÓÚÐÐÙ ÐÙÒ ØÒÖÒ ÒÓÙØØÑÒÒ ÚØÑÙ º º ÌÙÖÚÐÐ ÙÙ ÚØÑÙ º º ÌÓÑÒØÝÑÔÖ Ø ÇÐÑÒ ØÙÐ ØÓÑ ÅØйÝÑÔÖ Ø º º½ ÄÙÓØØØÚÙÙ ÃÝÔ ÝÝ ÚØÑÙ º º¾ Î ØÓ ÙÙ ÚØÑÙ º

79 º ÌÓÔÙÑ ÝÝ ÚØÑÙ º º½ ÄÙÓØØØÚÙÙ ÑÑÖÖØØÚÝÝ ÃÝØØÐØØÝÑ Ø ÓÒ ØØÚ ÑÓÐÐ ÑÑÒ ÐØ ÐÔÔÓÝØØ º ÃÝع ØÐØØÝÑØ ØÓØÙØØÒ ÒÐÒÒÒ ÐÐк º¾ ÇÔØØÚÙÙ ËÔØÖÙÚÒ ÐÐÓÒÔØÙÙ ÖÚÓÒ ØÙ ØÓØÙØØÒ ÅØÐÐÐ ÓÑÒ ÐÐ ¹ Ó Ô ØÒÓØØÓÐк º ÇÔÖÓØÚÙÙ ÚØÑÙ º º½ ÌÓÙÙ ÒÝØØ ÚØÑÙ º º¾ ÅÙÒ Ö ÙÖ Ò ÝØØ ÚØÑÙ º

80 º½ ÐÐÔØØÚÝÝ ÒÐÝ ÓØÚÙÙ ÚØÑÙ º º¾ ÅÙÙÒÒÐØÚÙÙ ÚØÑÙ º º ËØÐ ÙÙ ÚØÑÙ º º Ì ØØØÚÙÙ ÚØÑÙ º ËÖÖØØÚÝÝ º½ ÄØØØÚÝÝ ÚØÑÙ º º¾ ÒÒØØÚÙÙ ÚØÑÙ º º ËÖÖØØÚÝÝØÒ ÐØØÝÚÒ ØÒÖÒ ÒÓÙØØÑÒÒ ÚØÑÙ º

81 º ÃÓÖÚÚÙÙ ÚØÑÙ º

82 ÅÁÆÇË ËÔØÖ ÎÛÖ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ÌÙ ÃÖÒÒ ½½½¾ ½ºº¾¼¼ ÂÓÒ ÙÙÒ ÝÐÓÔ ØÓ ÌØÓÒ ØØÐÝØØÒ ÐØÓ ÖÓ ØÝ

83 SPECTRA VIEWER Spectra Viewer on graafinen käyttöliittymä, jolla pystyy helposti tarkastelemaan yksittäisiä spektrejä sekä spektrikuvan värikoordinaattiesityksiä. Käyttöliittymässä on myös mukana useita eri valonlähteitä, joiden vaikutusta värikoordinaattiesityksiin ja reflektanssispektreihin voi katsella vain yhden napin painalluksella. Valmiiden valonlähteiden lisäksi käyttäjä pystyy määrittelemään käsin suodatinspektrin. Käyttöliittymä on selkeä ja helppokäyttöinen ja siinä on useita käteviä toimintoja ja ominaisuuksia, muun muassa Yksittäisen tai useamman spektrin tarkastelu Yksittäisen tai useamman värikoordinaattiesityksen tarkastelu (xyy, L*a*b*) Spektrin tyypin valinta Spektrikuvan RGB-esityksen zoomaus Useita valmiiksi määriteltyjä standardivalonlähteitä Laitteistovaatimukset: 256 MB keskusmuistia 500 kb kiintolevytilaa käyttöliittymän tiedostoja varten Windows- tai Unix/Linux-käyttöjärjestelmä Matlab versio 6.5 tai uudempi

84 PRINCIPAL COMPONENT ANALYSIS Principal Component Analysis on graafinen käyttöliittymä, jolla voi kätevästi tarkastella pääkomponenttianalyysin kantavektoreita ja sisätulokuvia. Lisäksi pakkauksen aiheuttaman virheen tarkasteleminen on mahdollista koko kuvalle sekä yksittäisille spektreille. Käyttöliittymässä on myös mukana useita eri valonlähteitä, joiden vaikutusta virheisiin ja reflektanssispektreihin voi katsella vain yhden napin painalluksella. Valmiiden valonlähteiden lisäksi käyttäjä pystyy määrittelemään käsin suodatinspektrin. Käyttöliittymä on selkeä ja helppokäyttöinen ja siinä on useita käteviä toimintoja ja ominaisuuksia, muun muassa Yksittäisen spektrin virheiden tarkastelu graafisesti ja numeerisesti Spektrin tyypin valinta Spektrikuvien RGB-esitysten zoomaus Sisätulokuvaa vastaavan kantavektorin vahventaminen Useita valmiiksi määriteltyjä standardivalonlähteitä Laitteistovaatimukset: 256 MB keskusmuistia 500 kb kiintolevytilaa käyttöliittymän tiedostoja varten Windows- tai Unix/Linux-käyttöjärjestelmä Matlab versio 6.5 tai uudempi

85 INDEPENDENT COMPONENT ANALYSIS Independent Component Analysis on graafinen käyttöliittymä, jolla voi helposti tarkastella riippumattoman komponenttianalyysin komponenttivektoreita ja sisätulokuvia. Lisäksi pakkauksen aiheuttaman virheen tarkasteleminen on mahdollista koko kuvalle sekä yksittäisille spektreille. Käyttöliittymässä on myös mukana useita eri valonlähteitä, joiden vaikutusta virheisiin ja reflektanssispektreihin voi katsella vain yhden napin painalluksella. Valmiiden valonlähteiden lisäksi käyttäjä pystyy määrittelemään käsin suodatinspektrin. Käyttöliittymä on selkeä ja helppokäyttöinen ja siinä on useita käteviä toimintoja ja ominaisuuksia, muun muassa Yksittäisen spektrin virheiden tarkastelu graafisesti ja numeerisesti Spektrin tyypin valinta Spektrikuvien RGB-esitysten zoomaus Sisätulokuvaa vastaavan komponenttivektorin vahventaminen Useita valmiiksi määriteltyjä standardivalonlähteitä Laitteistovaatimukset: 256 MB keskusmuistia 500 kb kiintolevytilaa käyttöliittymän tiedostoja varten Windows- tai Unix/Linux-käyttöjärjestelmä Matlab versio 6.5 tai uudempi

86 ËÔØÖ ÎÛÖ ÃÝØØÓ ½ºº¾¼¼ ÌÙ ÃÖÒÒ ½½½¾ ÂÓÒ ÙÙÒ ÝÐÓÔ ØÓ ÌØÓÒ ØØÐÝØØÒ ÐØÓ

87 Ë ÐØ ½ Ð Ø ÝØØÓ Ø ½ ¾ Ð Ø ÝØØÐØØÝÑ Ø ¾ ÂÖ ØÐÑÚØÑÙ Ø º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ¾ ËÔØÖ ÎÛÖ¹ÝØØÐØØÝÑ ÃÝØØÐØØÝÑÒ ÝÒÒ ØÑÒÒ º º º º º º º º º º º º º º º º º º º º º º º º ËÔØÖÙÚÒ ÐØÑÒÒ º º º º º º º º º º º º º º º º º º º º º º º º º º º º ÐÐÓÒÔØÙÙ ÖÚÓÒ ØÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º ÎÐÓÒÐØÒ ÚÐÒØ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ÎÖ ÓÚØÙ ÙÒØÓÒ ÚÐÒØ º º º º º º º º º º º º º º º º º º º º º º º º º ËÔØÖÒ ØÖ ØÐÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ÎÖÓÓÖÒØØÒ ØÖ ØÐÙ º º º º º º º º º º º º º º º º º º º º º º º º º ÓÓÑÙ ¹ØÓÑÒÒÓÒ ÝØØ º º º º º º º º º º º º º º º º º º º º º º º º º º º ½¼ ÃÝØØÐØØÝÑÒ ÝØÒ ÐÓÔØØÑÒÒ º º º º º º º º º º º º º º º º º º º º º ½¼ ËÔØÖ ÒÖ ½½ ËÔØÖÒ ÑÖØØÑÒÒ º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½½ ËÔØÖÒ ÑÙÙØØÑÒÒ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½¾ ÐÐÓÒÔØÙÙ ÖÚÓÒ ÑÙÙØØÑÒÒ º º º º º º º º º º º º º º º º º º º º º º º ½¾ ËÔØÖÒ ÔÐÙØØÑÒÒ ÝØØÐØØÝÑÒ º º º º º º º º º º º º º º º º º º º ½ ÅÙØ ØÓÑÒØÓ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ÒÒÙ Ó ½ ÎÖÐÑÓØÙ Ø ½ ËÔØÖ ÎÛÖ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ËÔØÖ ÒÖ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ÀÑ ØÓ ½

88 ½ Ð Ø ÝØØÓ Ø Ì ÝØØÓ ÙÚØÒ ËÔØÖ ÎÛÖ¹ÝØØÐØØÝÑ ÝØØØ ØÖÚع ØÚØ ÓÑÒÒÓØ ØÓÑÒÒÓغ ÃÝØØÓ ÖÖÓØÒ ÑÝ ÙÒ ÝØØÐØØÝÑ ÒÒØÒ ÓÒÐÐ ÑØ ÚØÑÙ ØØ ÐØØ ØÓÐк ÃÝØØÐØØÝÑÒ Ò¹ ØÑØ ÚÖÐÑÓØÙ Ø Ò Ø ØÓÔÙÑÒÒ ÓÒ ÑÝ ØÐØݺ ÃÝØØÓÒ ÐÓÔÙ ÓÒ Ñ ØÓ ÝØØÐØØÝÑÒ Ø ØÖÑ Ø ØÓÒ Ø Ñ Ò ÐÔÓØØÑ º ½

89 ¾ Ð Ø ÝØØÐØØÝÑ Ø ËÔØÖ ÎÛÖ¹ÝØØÐØØÝÑ ÓÒ ØÓØÙØØØÙ Ó Ò ÂÓÒ ÙÙÒ ÝÐÓÔ ØÓÒ ÖÓ Øݹ ÙÖ º Ë ÓÒ ÓÐÑÓØÙ ÅØйÝÑÔÖ Ø ÝØØÒ ÅØÐÒ Ö ØÒ Ýع ØÐØØÝÑÒ ÐÙÓÒØÒ ØÖÓØØØÙ ØÝÐÙ ÍÁ ÅØÐÒ Å¹Ð ØÓÖº ÃÝØØÐØØÝÑ ÓÒ Ø ØØØÙ ÅØÐÒ ÚÖ ÓÐÐ º ÊÐ ½ µº ÃÝØØÐØØÝÑ ÓÒ ÒÐÒÒÒÐÒÒº ÃÝØØÐØØÝÑ ÓÒ ØÓØÙØØØÙ ÔØÖÙÚÒ ÒÒ ÚÖÓÓÖÒØØ ØÝ ØÒ ØÖ¹ ØÐÑ Ø ÚÖØÒº ÃÝØØ ÚÓ ÐØ ÝØØÐØØÝÑÒ ÐÙÑÒ ÔØÖÙÚÒ ØÖ ØÐÐ Ò Ê¹ Ä ¹ Üݹ ØÝ Ö ÚÐÓÒÐØÒ Ðк ÎÐÓÒÐØØ ÓÚØ ÚÐÑÒ ÖÐÐ ØÓ ØÓ º ÃÝØØÐØØÝÑ ÓÒ ÑÝ ÑÓÐÐ Ø Ñ¹ ÖØÐÐ Ò ÙÓØÒ ÔØÖ ÝØØÒ ÖÐÐ Ø ËÔØÖ ÒÖ¹ÙÒº ÃÝØØÒ ÑÖØØÑ ÙÓØÒ ÔØÖ ÝØØÒ ÚÐÓÒÐØÒ ØÚÓÒº ÎÖÓÓÖÒØØÒ Ð¹ ÝØØ ÚÓ ØÖ ØÐÐ ÓÓ Ý ØØ Ø Ø Ù ÑÔ ÔØÖ ÖÖÐÐÒ ÓÓ ÖØÒ ÔØÖÒ Ø ÖÒ ÔØÖÒº ÂÖ ØÐÑÚØÑÙ Ø ÃÝØØÐØØÝÑ ÓÒ ÙÙÒÒØÐØÙ ØÓÑÑÒ ÅØйÝÑÔÖ Ø ÚÖ Ó Ø º ÝÐ ¹ ÔÒº ÌÝÐÐ Ø ØÓÑÚÙÙØØ ÅØÐÒ ÚÒÑÔÒ ÚÖ ÓÒ Ò ÚÓ ØØ ÓØÙÒ ÅØÐÒ Ö ØÒ ÝØØÐØØÝÑÒ ÐÙÓÒØÒ ØÖÓØØÙÒ ØÝÐÙÒ ÍÁÒ ÓÒÐÑ Øº ÃÝØØØÚÒ Ö ØÐÑÒ ÓÒ ØÝØØØÚ ÐÐ ÐÙØÐÐÙØ ÚØÑÙ Ø ¾ Å Ù ÑÙ Ø ÚÔØ ÒØÓÐÚÝØÐ ÝØØÐØØÝÑÒ ØÓ ØÓ ÚÖØÒ ÚÒØÒ ¼¼ ÏÒÓÛ ¹ Ø ÍÒÜ»ÄÒÙܹÔÓÒÒ ÝØØÖ ØÐÑ Ö ÐÐ ÝØØÐØØݹ ÑÐÐ ¾

90 ËÔØÖ ÎÛÖ¹ÝØØÐØØÝÑ ËÔØÖ ÎÛÖ ÓÒ ÖÒÒ ÝØØÐØØÝÑ ÓØ ÝØØÒ ÅØйÝÑÔÖ Ø º ÇÒ ÙÓ ØÐØÚ ØØ ØØÓÓÒ Ò ÓÐÐ ÝØØÐØØÝÑ ÝØØÒ ÓÒ ÒÒع ØÙÒ ÅØÐ Ø ÚÒØÒ ÚÖ Ó ºº ÎÒÑÑÐÐ ÚÖ ÓÐÐ ÝØØÐØØÝÑ ÚÐع ØÑØØ ØÓÑ ÓÓØØÙÐÐ ØÚÐк ÌÑ ÝØØÓ ÙÚ ÝØØÐØØÝÑÒ ØÓÑÒØ ÅØÐ º¹ÝÑÔÖ Ø º ÃÝØØÓÒ ÖÙÙØÙÔÔÙ Ø ÓÒ ÓØØØÙ ÄÒÙܹÝØع Ö ØÐÑ ÓØÒ Ö ÖÓ ÑÒ ÏÒÓÛ Ò Ö Øº ÌÓÑÒÒÓØ ÓÚØ ÙØÒÒ ÑÒÐ Ø ÑÓÐÑÑ ÝØØÖ ØÐÑ º ÃÝØØÐØØÝÑÒ ÝÒÒ ØÑÒÒ ÒÒÒ ÝØØÐØØÝÑÒ ÝÒÒ ØÑ Ø ÝØØÒ ØÝØÝÝ ÖØÝ Ñ ØÓÓÒ Ó ØÓ ØÓØ ÚÛÖºÑ ÚÛÖº ÑÙÙØ ÝØØÐØØÝÑÒ ØÓ ØÓØ Ø Úغ ÂÓ Ñ ØÓ Ó ÐÐ ÑÒØÙØ ØÓ ØÓØ ÓÚØ ÓÒ ÑÖØÐØÝ ÅØÐÒ ÔÓÐÙ ¹ Ñ ØÓÓÒ ÖØÝÑÒÒ ÓÐ ÚÐØØÑØÒغ ËÔØÖ ÎÛÖ ÝÒÒ ØØÒ ÖÓØع ÑÐÐ ÅØÐÒ ÓÑÒØÓÖÚÐÐ ÚÛÖ ÓÐÐÓÒ ØØÓÓÒÒ ÒÝØÐÐ ÚÙØÙÙ ÝØع ÐØØÝÑÙÒº ÃÙÚ ½ ÃÝØØÐØØÝÑÒ ËÔØÖ ÎÛÖ¹Ó Ó

91 ÃÝØØÐØØÝÑ ÝÒÒ ØÝÝ ËÔØÖ ÎÛÖ¹ØÐÒº Ì ØÐ ÚÓÒ ØÖ Øй Ð Ý ØØ ÔØÖ Ý Ø Ù ÑÔ ÖÖÐÐÒº ÃÝØØÐØØÝÑÙÒÒ Ó ÐÖÙÒ Ø Ú Ø ÔÒ Ø ÚÓÒ ÖØÝ ÓÐÓÖ ÓÓÖÒØ ¹ØÐÒ ØÖ¹ ØÐÑÒ ÔØÖÙÚÒ ÚÖÓÓÖÒØØ ØÝ Ø Ø Ò ËÔØÖ ÎÛÖ¹ ØÐÒº ËÔØÖÙÚÒ ÐØÑÒÒ ÃÝØØÐØØÝÑÒ ÚÓÒ ÐØ ÔØÖÙÚ Ø ÙØØ ÓÓ ÐÑÐÐ Ýع ØÐØØÝÑÙÒÒ ÄÓ Ñ¹ÔÒØØ Ø ÑÒÑÐРйÚÐÓÒ ÄÓ Ñ¹ ÓØÒº ÃÙÑÑ Ò ØÔÙ ÚÙØÙÙ ÙÚÒ ¾ ÐØÒÒ ÚÐÒØÙÒ Ó Ø ÚÐØÒ ØÓ ØÓ Ó ÐØ ÐÙØÙÒ ÙÚÒ ÐØÒ ÇÔÒ¹ÔÒØغ ËÔع ÖÙÚÒ ÔÝ ØÝÝ ÐØÑÒ ËÔØÖ ÎÛÖ¹ ØØ ÓÐÓÖ ÓÓÖÒØ ¹ØÐ º ÀÍÇÅ ÄØØÚÒ ÔØÖÙÚÒ ÓÒ ÓÐØÚ ºÑعØÓ ØÓ ØÐÐÒÒØØÙÒ ÓÐÑÙ¹ ÐÓØØ Ò ÑÙÓØÓÓÒ ØÒ ØØ ÓÒÒ ÐÐÓÒÔØÙÙ ÓÒ ÓÑÒ ÙÐÓØØÙÚÙÙØÒÒº Ĺ ÔØÖÙÚÒ ÖÚÓÒ ÓÒ ÓÐØÚ ÖØÒ ÖÚÓ ÐØØÙÒ ÚÐÐÐ ¼ºº½º ÃÙÚ ¾ ËÔØÖÙÚÒ ÚÐÒØÙÒ

92 ÐÐÓÒÔØÙÙ ÖÚÓÒ ØÙ ÂÓ ÚÐØØÙ ØÓ ØÓ ÐØ Ó ÑÙÓÓ ÓÐÚÒ ÔØÖÙÚÒ ÝØØÐØ Ý¹ ÝØÒ ÔØÖÙÚÒ ÐÐÓÒÔØÙÙ ÖÚÓØ ÖÐÐ ÐÓ¹ÙÒ ÒÒÒ ÙÒ Ôع ÖÙÚÒ Ê¹ ØÝ ØÙÐ ÒÝÚÒ ÝØØÐØØÝÑÙÒÒº ÐÐÓÒÔØÙÙÒ ÖÚÓØ ÓÒ ÒÒØØÚ ÅØÐÐÐ ÓÑÒ ÑÙÓÓ ÐÙÒÝØØÒÓØØÓÚÐÐÓÔÔÙº ÄÙ¹ ÙÖÚÓÒ ÚÐÒ ØÙÐ Ó Ô Ø ÑÒÒ ÚÐÒ ØØ ØÝ ÑÖ¹ º ÂÓ ÐÐÓÒÔØÙÙÒ ÖÚÓØ ÚØ ÓÐ ÓÓÒ ÐÙÙ ÓÒ ÑÐÖÓØØÑÒ Ý¹ ØØØÚ Ô ØØØ ÔÐÙº ÀÍÇÅ ÐÐÓÒÔØÙÙ ÖÚÓÒ Ý ÓÒ ÒÒÓÑØÖ Òѵº ÃÙÚ ÐÐÓÒÔØÙÙ ÖÚÓÒ ØØÑÒÒ ËÝØØÝØ ÐÐÓÒÔØÙÙ ÖÚÓØ ÝÚ ÝØÒ ÐÑÐÐ ÖÐÐ ÐÓ¹ÙÒÒ Çù ÔÒØغ ÂÓ ÐØÒ ÒйÔÒØØ ÝØØÒ ÙÚÒ ÐÐÓÒÔØÙÙ ÖÚÓÒ ÓÐØÙ ÖÚÓ ¼¼ºº¼¼ ÒѺ ÐÐÓÒÔØÙÙÒ ÖÚÓ ÚÓ ÙÚÒ ÐØÑ Ò ÐÒ ÑÙÙع Ø ÝØØÐØØÝÑÒ Ò ÛÚÐÒعÔÒ Øº ÎÐÓÒÐØÒ ÚÐÒØ ÃÝØØØÚ ÚÐÓÒÐ ÚÓÒ ÚÐØ ÔÒÓÒÔ Ø ¼ µ Ø ÔÙÓ¹ ØÙ ÚÐÓ Ø ÑÙÙØ ÚÐÓÒÐØصº ÎÐÓÒÐØÒ ÚÐÒØ ÚÙØØ ÔØÖÙÚÒ Ê¹ ØÝ Ò ÖÒ ÔØÖÒ ÚÖÓÓÖÒØ ØÓ ØÝ Òº ÎÐÓÒÐØÒ ÚÐÒÒÒ ÐÒ ÐÐ ÓÐÚØ ÓÑÔÓÒÒØØ ÔÚØØÝÚØ ÙØÓÑØØ Ø Ú ØÑÒ ÝØØÒ ØÑÒ ÚÐÒغ ÃÝØØØÚ ÓÐÚØ ÚÐÓÒÐØØ ÓÚØ ØÒÖÚÐÓÒÐØØ ¼ ÙÓÖ ÓÚØ ÚÐÓÒÐØØ ¾ ½½ ÂÙ ÈÖ Ò ÈÖØØ ËÐ ØÒÒ ÑØØÑØ ÒÝØØØ Ä½ ľ Ä ÖÚÓØ ÑØØØÙ ËǹÒÝØØ Øµ ¹ Ľ ÔÐÚØÒ ØÚ ¹ ¼º º½ ½ ¼ ̵ ¹ ľ ÔÐÚÒÒ ÖÑ ØÚ ¹ ½¾ºº½ ½ ¼ ¹ Ä ÔÐÚØÒ ØÚ ÙÖÒÓÒÐ Ù ¹ ½ºº½ ¾¼º¾

93 ÎÐÑÒ ÓÐÚÒ ÚÐÓÒÐØÒ Ð ÝØØ ÚÓ ÑÖØÐÐ Ò ÙÓØÒ Ôع ÖÒ ÚÐØ ÑÐÐ ÔÙÓØÙ ÚÐÓ Ø ÚØÓÓÒ Ò ÐØÖ ÔØÖÙѺ ÃÝ ÒÒ Ú¹ ÐÒØ Ú ÖÐÐ Ò ÝØØÐØØÝÑÙÒÒ ÙÓØØÑÒ ÑÖØØÑ Ø ÚÖØÒº ËÙÓ¹ ØÒ ÔØÖ ÚÓ ÑÝÑÑÒ ÑÙÓØ ÚÐØ ÑÐÐ ÔÙÓØÙ ÚÐÓ Ø ÙÙÐÐÒ ¹ Ò ÐØÖ ÔØÖÙѹÚØÓÓÒº ÌÖÑÑØ ÓØ ÙÓØÒ ÔØÖÒ ÑÖØØÑ ÐÝØÝÚØ ÐÙÚÙ Ø º ÎÖ ÓÚØÙ ÙÒØÓÒ ÚÐÒØ ÎÐÓÒÐØÒ Ð ÑÝ ÝØØØÚØ ÚÖ ÓÚØÙ ÙÒØÓØ ÚÙØØÚØ ÔØÖÙÚÒ ÚÖÓÓÖÒØØ ØÝ Òº ÃÝØØÐØØÝÑ ÚÓÒ ÚÐØ ÔÒÐÐ ÝØØÒ¹ ÚÖÓÓÖÒØØÒ Ð Ñ Á ½ ½ Ú Á ½ ¹ÚÖ ÓÚØÙ ÙÒØÓغ ËÔØÖÙÚÒ ÚÖÓÓÖÒØØ ØÝ Ø Ê ÜÝ Ø Ä µ ÔÚØØÒ ¹ Ò ÚÖ ÓÚØÙ ÙÒØÓÒ ÚÐÒÒÒ ÐÒº ËÔØÖÒ ØÖ ØÐÙ ËÔØÖ ÎÛÖ¹ØÐ ÚÓÒ ÔØÖÙÚÒ Ê¹ ØÝ Ø ÐÑÐÐ ØÖ Øй Ð Ý ØØ ÔØÖº ÂÓ ÐÙØÒ ÒÝÚÒ Ù ÑÔ ÔØÖ ÖÖÐÐÒ ÓÒ ÀÓÐ ÔØÖ¹ÔÒÒ ÓÐØÚ ÔÓ º ÅÙÙØÓÒ ÔØÖ ÐØ ØÝÒÒØÒ Ò Ò¹ ÒÒ ÙÙÒ ÔØÖÒ ÔÖØÑ Øº ÃÙÒ ÀÓÐ ÔØÖ¹ÔÒ ÓÒ ÚÐØØÙÒ ÔØÖ ÔÖÖØÒ ÒÝØÐÐ ØÝÒØÑØØ ÐØ ÚÐÐк ÎÑ Ò ÚÐØØÙ ÔØÖ ÒÝÝ ÚÚÒÒØØÙÒ Ò ÓÓÖÒØØ ÓÚØ ÒÝÚ ÔØÖ ÐÒ ÝÐÔÙÓÐÐк ÐÖ Ü ¹ÔÒÒ ÐÑÒÒ ØÝÒØ ÔØÖ Ðغ ÓÒØÒÙÓÙ ÙÔع ÔÒÒ ÓÐÐ ÔÓ ÔØÖ ÐØ ÔÚØØÒ ÖÒ ÙÖ ÓÖÒ ÒÒÒ Ô¹ ÖÙ ØÐк ËÔØÖÙÚÒ Ê¹ ØÝ Ø ØÖÚØ ÐØ ÔØÖÒ ÒÑ ÚÒ ÖØØ ÙÒ ÖØ ÐÙØØ Ê¹ÙÚÒ ÔÐк ÀÓÐ ÔØÖ¹ ÓÒØÒÙÓ¹ Ù ÙÔعÔÒØ ÚÓÚØ ÓÐÐ ÝØ ÚÐØØÙÒº ÌÐÐÒ ÙÒÒ ÔÖØÝÚØ ÔØÖØ Ø Ò Ø Ó Ø Ó Ö ÓÒ ÐÙÒÙØ ÀÓÐ ÔØÖ¹ÔÒÒ ÓÐÐ ÚÐØØÙÒº ÌÖ ØÐØÚÒ ÔØÖÒ ØÝÝÔÔ ÖØÒ Ø ÙØÐÐÒÒ ÖÒ µ ÚÓÒ ÚÐØ ÔÒ Ø ÊØÒ ÊÐØÚ ÊÒº

94 ÃÙÚ ËÔØÖ ÎÛÖ¹ØÐ ÓÓÒ ÓÒ ÐØØÙ ÅعÐÙ Ø ÙÚØØÙ ÔØÖÙÚ

95 ÎÖÓÓÖÒØØÒ ØÖ ØÐÙ ÓÐÓÖ ÓÓÖÒØ ¹ØÐ ÚÓÒ ÔØÖÙÚÒ Ê¹ ØÝ Ø ÐÑÐÐ ØÖ ¹ ØÐÐ Ý ØØ ØÒ ÔØÖÒ ÚÖÓÓÖÒØØ ØÝ º ÎÖÓÓÖÒØ ØÓÒ ØÝÝÔÔ ÜÝ Ø Ä ÚÓÒ ÚÐØ ÝØØÐØØÝÑÒ Ú ØÚ Ø ÔÒ Øº ÃÐØÙÒ Ô ØÒ ÚÖÓÓÖÒØØ ØÝ ÒÝØØÒ ÓÓÖÒØ ØÓ ÑÙ ØÒ Ô ØÒ ÓÓÖ¹ ÒØØÒ ÐÙÙÖÚÓØ ÒÝÚØ ÓÓÖÒØØ ÐÒ ÐÔÙÓÐÐк ÂÓ ÐÙØÒ ÖÖÐÐ ÒÝÚÒ Ù ÑÑÒ ÔØÖÒ ÚÖÓÓÖÒØØ ØÝ ÓÒ ÀÓÐ ÓØ ¹ÔÒÒ ÓÐØÚ ÔÓ º ÅÙÙØÓÒ ÐÐÒÒ Ô Ø ÚÖØØÒ Ò ÒÒÒ ÙÙ¹ Ò Ô ØÒ ÒÝØØÑ Øº ÃÙÒ ÀÓÐ ÓØ ¹ÔÒ ÓÒ ÚÐØØÙÒ Ô ØØ ÔÖÖØÒ ÒÝØÐÐ ÚÖØØÑØØ ÒØ Ô ØØ ÚÐÐк ÎÑ ÑÑÒ Ô ØÒ ÓÓÖÒØØ ÓÚØ ÒÝÚ ÚÖÓÓÖÒØØ ÐÒ ÐÔÙÓÐÐк ÓÐÓÖ ÓØ ¹ÔÒÒ ÐÑÒÒ ÚÖØØ ÑÙ ØØ ÚÖÓÓÖÒØØÔ Øغ ÓÒØÒÙÓÙ ÙÔعÔÒÒ ÓÐÐ ÔÓ ÑÙ ØÒ ÒÝÚÒ ÚÖÓÓÖÒØÒ Ô ÔÚØØÒ ÖÒ ÙÖ ÓÖÒ ÒÒÒ ÔÖÙ ØÐк ËÔØÖÙÚÒ Ê¹ ØÝ Ø ØÖÚØ ÐØ ÚÖÓÓÖÒØØÒ ÒÑ ÚÒ ÖØØ ÙÒ ÖØ ÐÙع Ø Ê¹ÙÚÒ ÔÐк ÀÓÐ ÓØ ¹ ÓÒØÒÙÓÙ ÙÔعÔÒØ ÚÓÚØ ÓÐÐ ÝØ ÚÐØØÙÒº ÌÐÐÒ ÙÒ ÒÝÝ ÑÙ ØÒ ÚÖÓÓÖÒØØ ØÝ Ø Ò Ø Ó Ø Ó Ö ÓÒ ÐÙÒÙØ ÀÓÐ ÓØ ¹ÔÒÒ ÓÐÐ ÚÐØØÙÒº

96 ÃÙÚ ÓÐÓÖ ÓÓÖÒØ ¹ØÐ ÓÓÒ ÓÒ ÐØØÙ ÅعÐÙ Ø ÙÚØØÙ Ôع ÖÙÚ

97 ÓÓÑÙ ØÓÑÒÒÓÒ ÝØØ ÃÙÒ ÝØØÐØØÝÑ ÝÒÒ ØØÒ Ò ÓÒ ÝØØØÚ ÓÐÑ ÔÒØØ Ó Ø Ó¹ ÐÐ ÓÒ ÓÑ ÞÓÓÑÙ ØÓÑÒØÓÒ º ËÔØÖÙÚÒ ÐØÑ Ò ÐÒ ÙÒ ÓÓѹ ÔÒ ÓÒ ÔÓ ÔØÖÙÚÒ Ê¹ ØÝ Ø ÚÓÒ ÖÐÐ ÐÑÐÐ ÞÓÓ¹ ÑØ Ò¹ ÙÐÓ ÔÒº ÀÖÒ Ý ÔÒÒ ÝÐÒ Ú Ò ÔÒµ ÐÙ ÞÓÓÑ ÒÔÒ Ó ÔÒÒ ÐÙ ÙÐÓ ÔÒº ÌÙÔÐÐÙ Ý Ô¹ ÒÐÐ ÔÐÙØØ ÙÚÒ ÐÙÔÖ Ò ØÐÒº ÀÍÇÅ ÓÓѹÔÒÒ ÓÐÐ ÔÓ ÖÒ ÐÙ ÔØÖÙÚÒ Ê¹ ¹ ØÝ Ò ÔÐÐ ØÙÓ ÒÝÚÒ ÚÐØÙÒ Ô ØÒ ÔØÖ ÚÖÓÓÖÒØØ ØÝ Øº ÃÙÚ Ø ÔÝ ØÝÝ ÑÝ ÚÐØ ÑÒ ØØÝÒ ÐÙÒ ÓÓÒ ÞÓÓÑØÒº ÌÑ ØÔ¹ ØÙÙ ØÒ ØØ ÓØØÒ ÖÒ Ý ÔÒÐÐ ÙÚ Ø ÒÒ ÖØÒ ÙÚ Ø ÐÙ ÓÓÒ ÐÙØÒ ÞÓÓÑغ ÃÙÒ ÖÒ ÔÒ Ô ØØÒ ÖØ ÙÚ ÞÓÓÑÙØÙÙ ÚÐØØÙÙÒ ÐÙ Òº ÀÍÇÅ ÃÝØØÐØØÝÑÒ ÔØÖ¹ ÚÖÓÓÖÒØØ ÐØ ÚÓ ÞÓÓÑØ ÑÐÐ ÔÖØØÐÐ ÙÒ ÔØÖÙÚÒ Ê¹ ØÝ ØÒº ÂÓ ÔØÖ¹Ø ÚÖÓÓÖÒØع ÐÒ ÞÓÓÑÙ ÔÐÙÙ Ø Ò ÐÙÔÖ Ò ØÐÒ ØÙÔÐÐÙ ÐÐ ÐÒ ØÐÒ ÚÓ ÔÐÙØØ ÒÒÐÐÒ ÔØÖÒ ØÝÝÔÒ Ø ÚÖÓÓÖÒØØÒ ÚÐÒØÔÒØØ ÐÑÐк ÓÓѹÔÒÒ Ð ÝØØÐØØÝÑ ÓÒ ÑÝ ÔÒØ ØÙÐ ÔÜÐ Ø Ò ÛÒÓÛº ØÙÐ ÔÜÐ ¹ÔÒ ÔÐÙØØ Ê¹ÙÚÒ ÐÙÔÖ Ò ÓÓÓÒ º Ø Ò ÛÒÓÛ¹ÔÒ Ð ÙÚÒ ÑÓÐÐ ÑÑÒ ÙÙÖ ÙÚ¹ÐÙ Òº ÂÓ Ôع ÖÙÚÒ Ê¹ ØÝ ÓÒ ÒÒ ÙÙÖ ØØ ÐÙÔÖ ÓÓ Ò ÑÙ ÙÚ¹ ÐÙ Ò ØÙÐ Ø Ò ÛÒÓÛ¹ÔÒÒ ØÐÐÐ ÇÖÒÐ Þ¹ÔÒº ÌÐÐÒ ØÙÐ ÔÜÐ ¹ÔÒ ÓÐ ÝØ ÇÖÒÐ Þ¹ÔÒ ÔÐÙØØ ÙÚÒ ÞÓÓÑÙ Ò ÐÙÔÖ Ò ØÐÒº ÀÍÇÅ ÈÒØ ØÙÐ ÔÜÐ Ø Ò ÛÒÓÛ» ÇÖÒÐ Þ ÚØ ÚÙØ ÔØÖ¹ Ø ÚÖÓÓÖÒØØ ÐÒ ÞÓÓÑÙ Òº ÃÝØØÐØØÝÑÒ ÝØÒ ÐÓÔØØÑÒÒ ÃÝØØÐØØÝÑ ÚÓÒ ÙÐ ÐÑÐÐ ÙÒÒ Ó ÝÐÒÙÖ ÓÐÚ ÖÙ¹ º ÎØÓØÓÒÒ ÙÐÑ ØÔ ÓÒ ÑÒÒ Ð¹ÚÐÓÒ ÜعÓØÒº ÌÐÐÒ Òݹ ØÐÐ ÚÙØÙÙ ÖÐÐÒÒ ÙÒ Ó ÚÖÑ ØØÒ ÝØØÐØØÝÑÒ ÙÐÑÒÒº ½¼

98 ËÔØÖ ÒÖ ËÔØÖ ÒÖ ÓÒ ËÔØÖ ÎÛÖ¹ÝØØÐØØÝÑÒ Ð Ó Ó ÝØØ ÔÝ ØÝÝ Ò ÑÖØØÐÑÒ ÚÐÓÒÐØÒ Ø ÝØØØÚÒ ÙÓØÒ ÔØÖÒº ÃÝØØÒ ÑÖØØÑ ÔØÖ ÔÝ ÝÝ ØÐÐ ÙÒÒ ËÔØÖ ÎÛÖ¹ÝØØÐØØÝÑ ÙÐØÒº ËÙÓØÒ ÔØÖ ÚÓ Ý ÑÙÓÑ ÚÐØ ÑÐÐ ÚÐÓÒÐØÒ ÔÙÓØÙ Úй Ó Ø ÚØÓÓÒ Ò ÐØÖ ÔØÖÙѺ ÂÓ ÙÓØÒ ÔØÖ ÓÒ Ó Ó Ò Ú ÑÖØÐØÝ Ý ÒÒ ÔØÖ ØØÒ ËÔØÖ ÒÖÒ ÝÒÒ ØÝ ÓÐØÙ Ôع Ö º Ò ÑÑ ÐÐ ÝÒÒ ØÝ ÖÖÐÐ ÓÐØÙ ÔØÖÒ ÓÒ ÒÓÐйÖÚÓÒÒ ÔØÖº ËÔØÖÒ ÑÖØØÑÒÒ Ò ÔØÖÙѹÔÒÒ ÓÐÐ ÔÓ ÖÐÐ ÐØÙØ Ô ØØ ÑÖØØÚØ ÙÙ¹ Ò ÔØÖÒº ËÔØÖÒ ÑÖØØÑ ØÖÚØÒ ÚÒØÒ Ô ØØØ ÚÑÒÒ Ô Ø ÚÐØÒ ÖÒ Ó ÔÒÐÐ ÑÙÙØ Ô ØØ Ý ÔÒÐк ÃÙÚ ÃÝØØÒ ÚÐØ ÑØ Ô ØØ ÔØÖÒ ÑÖØØÑ ÀÖÒ Ó ÔÒÒ ÐÙ Ò ÐÒ ÒÝØÐÐ ÔÖØÝÝ ÚÐØØÙÒ Ô ØÒ ÙØØ ÙÐÚ ÝÖ Ó ÓÖÚ ÑÓÐÐ Ò ÑÑÒ ÝÖÒº ½½

99 ÃÙÚ ÃÝØØÒ ÚÐØ ÑÒ Ô ØÒ ÙØØ ÑÖØØØÝ ÔØÖ ËÔØÖÒ ÑÙÙØØÑÒÒ ÆÝØÐÐ ÒÝÚ ÔØÖ ÚÓ ÑÙÓØ ÐÑÐÐ ÖÐÐ ÐÙØØÙÒ ÓØÒ Ò ÔØÖÙѹÔÒÒ ÓÐÐ ÚÐØØÙÒº ÂÓ Ò ÑÑÒÒ ÐÙ ØÒ ÖÒ Ó ÔÒÐÐ ÓÚØØÒ ÐØÙÒ Ô ØÒ ÙØØ ÙÐÑÒ ØÓ Ò ¹ ØÒ ÝÖ Ó Ý ØÝÝ Ó ÓÐÑ ÓÐÚÒ ÔØÖÒº ÂÓ ÐÙ ØÒ Ò¹ Ò ÖÒ Ý ÔÒÐÐ ÙØÒ ÔØÖ ÑÖØØØ ÓÚØØÒ ÐÙÔÖÒÒ ÔØÖ ÙÐÑÒ ÐØØÙÒ Ô ØÒ ÙØغ ÂÓ ÐÙØÒ ÑÖØÐÐ Ù ÑÔ Ô Ø ÓÒ ÙØØ ÔØÖ ÙÐ ÓÒ ØÓÑØØÚ ÙØÒ ÔØÖ ÑÖØÐÐ Ò ÚÑÒÒ ÐÙ ØÒ ÖÒ Ó ÔÒÐÐ ÑÙÙØ ÐÙ Ø Ý Ô¹ ÒÐк ÐÐÓÒÔØÙÙ ÖÚÓÒ ÑÙÙØØÑÒÒ ÐÐÓÒÔØÙÙ ÐÒ ÖÚÓ ÚÓÒ ÑÙÙØØ Ò ÛÚÐÒعÔÒ Øº Ìй ÐÒ Ù ÐÓ¹ÙÒ ÓÓÒ ÝØØÒ ÐÙØÙØ ÐÐÓÒÔØÙÙÒ ÖÚÓغ ÖÚÓØ ÓÒ ÒÒØØÚ ÅØÐÐÐ ÓÑÒ ÑÙÓÓ ÐÙÐÓÔÔÙº ÄÙÙÖÚÓÒ ÚÐÒ ØÙÐ Ó Ô Ø ÑÒÒ ÚÐÒ ØØ ØÝ ÑÖº ÂÓ ÐÐÓÒÔØÙÙ Ö¹ ÚÓØ ÚØ ÓÐ ÓÓÒ ÐÙÙ ØÙÐ ÑÐÖÓØØÑÒ ÝØØ Ô ØØØ ÔÐÙº ½¾

100 ÀÍÇÅ ÐÐÓÒÔØÙÙ ÖÚÓÒ Ý ÓÒ ÒÒÓÑØÖ Òѵº ËÔØÖ ÎÛÖ¹ÝØع ÐØØÝÑ Ø ÔÓØÒ ÖÚÓ ÝØØÒ ÚÒ ÐÐÓÒÔØÙÙÒ ÐÙ¹ ÐÓÔÔÙÖÚÓغ ËÝØØÝØ ÐÐÓÒÔØÙÙ ÖÚÓØ ÝÚ ÝØÒ ÐÑÐÐ ÖÐÐ ÐÓ¹ÙÒÒ Çù ÔÒØغ ÂÓ ÐØÒ ÒйÔÒØØ ÝØØÒ ÐÐÓÒÔØÙÙ ÖÚÓÒ ÓÐØÙ Ö¹ ÚÓ ¼¼ºº¼¼ ÒѺ ËÔØÖÒ ÔÐÙØØÑÒÒ ÝØØÐØØÝÑÒ ÅÖØÐØÝ ÔØÖ ÔÐÙØØÒ ËÔØÖ ÎÛÖ¹ÝØØÐØØÝÑÒ ÜÔÓÖØ ÔØÖÙѹ ÔÒÐк ÌÐÐÒ ËÔØÖ ÒÖ¹ÙÒ ÙÐÙØÙÙ ËÔØÖ ÎÛÖ¹ÝØع ÐØØÝÑÒ ÓÑÔÓÒÒØØ ÔÚØØÒ ÝØØÒ ÚÖÓÓÖÒØØÐ Ù ÑÖØØØÝ ÙÓØÒ ÔØÖº ÂÓ ØØÝ ÑÙÙØÓ ÐÙØ ÚÐØØ ÝØØÐØØÝÑÒ ÔÙÓÐÐÐ ÚÓÒ ËÔØÖ ÒÖ ÙÐ ÁÒÓÖ Ò ¹ÔÒ Øº ÀÍÇÅ ÂÓ ÔØÖ ÐØ ÓÒ ØÝÒÒØØÝ ÐÖ Ü ¹ÔÒÐÐ ÙÙÖ ÒÒÒ ¹ ÙÒÒ ÙÐÑ Ø ÜÔÓÖØ ÔØÖÙѹÔÒ Ø ÔÐÙØØÒ ÝØØÐØØÝÑÒ Óй ØÙ ÔØÖº ÅÙØ ØÓÑÒØÓ ËÔØÖ ÐØ ÚÓ ØÝÒØ ÓÓÒÒ ÐÖ Ü ¹ÔÒÐÐ ÐÒ Ð¹ ØØÙ ÒÓÐйÖÚÓ Ò ÔØÖÒ ÙÐØ ÔØÖÙѹÔÒÐк ÈÒ Ê ØÓÖ Ò¹ ØÐ ØØ ÔÖØ ÐÒ ÔØÖÒ Ó ØØØÒ ÓÐØÙ ÔØÖ ÝØØÐØØÝÑÒ ÝÒÒ ØÝ º ½

101 ÒÒÙ Ó ÃÝØØÐØØÝÑÒ ÒØÑÒÒ Ú ÖÐÐ Ò ÒÒÙ ÓÐÑÒ ÝØغ ÃÝØØÐع ØÝÑ ÚÓÒ ÝÒÒ Ø ÙÓÖÒ ÐÚÝÐØ Ø ¹ÐÚÝÐØ ÑÙØØ ØÓÑÒÒÒ ÒÓ¹ ÔÙØØÑ ÓÒ ÙÓ ØÐØÚ ÓÔÓ ÝØØÐØØÝÑÒ ØÓ ØÓØ ØØÓÓÒÒ ÓÚ¹ ÐÚÝÐк ÃÝØØÑ Ò ÐÔÓØØÑ Ñ ØÓ Ó ÝØØÐØØÝÑÒ ØÓ ØÓØ ¹ Ø ÚØ ÒÒØØ Ð Ø ÅØÐÒ ÔÓÐÙÙÒº ÌÑ ÓÒÒ ØÙÙ ÅØÐÒ Ð¹ÚÐÓÒ ËØ ÈعÚÐÒÒ Øº ÃÙÒ Ñ ØÓ ÓÒ Ð ØØÝ ÅØÐÒ ÔÓÐÙÙÒ ÝØØÐØØÝÑ ÝÒÒ ØØØ Ý Ò Ñ ØÓÒ ØÖÚØ ÓÐÐ ÚÐØØÙÒ Ø Ó º ÃÝØع ÐØØÝÑÒ ÝÒÒ ØÑÒÒµº ½

102 ÎÖÐÑÓØÙ Ø Ì ÐÙÚÙ ÙÚØÒ ÚÖÐÑÓØÙ Ø ÓØ ËÔØÖ ÎÛÖ¹ÝØØÐØØÝÑ Ò Ð Ó ËÔØÖ ÒÖ ÚÓÚØ Òغ ÄÙÚÙ Ø ÐÝØÝÝ ÑÝ ÑÓÐÐÒÒ ÝÝ ÙÐй Ò ÚÖÐÑÓØÙ ÐÐ ÓØ ÙÒ ÚÖÐÑÓØÙ Ò ÚÓ ÚÐØØ Ø ÙÒ ÚÖÐÑÓØÙ Ò ÐÑØ ØÝØÝÝ ØÓѺ ÎÖÐÑÓØÙ Ø ÓÒ ØØØÝ Ó Ö ØÝ ÓÒ ÚÖÐÑÓØÙ Ò Ò ÐØØÝÚÒ ÓÒ ÐÝØÑ Ò ÐÔÓØØÑ º ÎÖÐÑÓØÙ ØÒ ÙÚÙ Ø ÒÓÙع ØÚØ ÙÖÚÒÐ Ø ÑÐÐ ÃÝØØÐØØÝÑÒ ÒØÑ ÚÖÐÑÓØÙ ËÝÝ ÑÓÐÐ Ø ØÓÑÒÔØØ ËÔØÖ ÎÛÖ Ø Ð Ø ÓÒ Ó Ø ÛÚÐÒØ ÓÑÔÓÒÒØ Ò³Ø ÒÙÑÖ Ù Ò ÙÐØ ÚÐÙ ¼¼¹¼¼ ÒÑ ÒÒ Ý ÝØØÐØØÝÑÒ ÝØØÝ Ø ÐÐÓÒÔØÙÙ ÖÚÓ Ø ÓÒ ÐØÒÝØ ÑÙÙØ ÙÒ ÒÙÑÖ Ø ØØÓº ÂÓ ÓÐÑÒ ÓÐØÙ Ò ÝØØÑØ ÖÚÓØ ¼¼¹¼¼ ÒÑ ¹ ÚØ ÓÐ ÓÒ ÖÚÓ ÚÓ ÑÙÓØ ÔØÖÙÚÒ ÐØÑ Ò ÐÒ ÝØØÐØØÝÑÒ Ò ÛÚÐÒعÔÒÐк ÐÐÓÒÔØÙÙ ÖÚÓÒ ÓÒ ÓÐØÚ Ø ÑÐÐÒ ÑÙÓØÓ ÐÙÒÝØØÒÓØØÓÚÐÐÓÔÔ٠Ѻ ¼¼¼¼ Ø Ð Ø ÓÒ Ó Ø ÛÚÐÒØ ÚÐÙ ÓÙØ ÔÖÓÔÖ ÖÓÒ ÖÔÐÒ ÒÓÖÖØ ÚÐÙ ÛØ ÙÐØ ÓÒ º ÒÒ Ý ÝØØÐØØÝÑÒ ÝØØÝ Ø ÐÐÓÒÔØÙÙ ÖÚÓ Ø ÑÙ ÚÖ ÓÚØÙ ¹ ÙÒØÓÒ ØØÑÐÐ ÐÙÐÐ ¼¹ ¼ Òѵº ÄÒ ÙÙÖ Ø ÔÒ ÖÚÓ ÓÖÚØÒ Ú ØÚÐÐ ÚÖ ÓÚØÙ ÙÒØÓÒ ÐÐÓÒÔØÙÙÒ Ú ØÚÐÐ Ñ Ñ¹ Ø ÑÒÑÖ¹ ÚÓÐк ÂÓ ÓÐÑÒ ÓÐØÙ Ò ÝØØÑØ ÖÚÓØ ÚØ ÓÐ ÓÒ ÖÚÓ ÚÓ ÑÙÓ¹ Ø ÔØÖÙÚÒ ÐØÑ Ò ÐÒ ÝØØÐØØÝÑÒ Ò ÛÚÐÒعÔÒÐк ÐÐÓÒÔØÙÙ ÖÚÓÒ ÓÒ ÓÐØÚ Ø ÑÐÐÒ ÑÙÓØÓ ÐÙÒÝØØÒÓØØÓÚÐÐÓÔÔ٠Ѻ ¼¼¼¼ ÓÐÓÖ ÓÓÖÒØ ÒÓØ ÐØ ÒÓØÒ Ò ÚÛ ËÔØÖÙÚ Ø ÓÒØÒÙÓÙ ÙÔعÔÒØØ ÓÒ ÐØØÙ ÓÐÓÖ ÓÓÖÒØ ¹ØÐ ÒÒÒ ÚÖÓÓÖÒØØÒ ÚÐØ Ñ Øº ÎÖÓÓÖÒØØ ÓÒ ÚÐØØÚ ÒÒÒ ÙÒ Ôع ÖÒ ÚÖÓÓÖÒØØ ØÝ ÚÓÒ ÒÝØغ ÁÑ ÒÓØ ÐÓ ÓÐÓÖ ÓÓÖÒØ Ò³Ø ÚÛ ÎÖÓÓÖÒØØ ÜÝ Ø Ä µ ÓÒ ÝÖØØØÝ ÚÐØ ÔÒÓÒÔ Øº ËÔØÖÙÚ ÓÒ ÐØØÚ ÒÒÒ ÙÒ ÚÖÓÓÖÒØØ ÚÓÒ ÚÐغ ÁÑ ÒÓØ ÐÓ ÐÓ Ñ Ö Ø Ò ÐØ ÐØ ÓÙÖ ØÖ ØØ ÎÐÓÒÐ ÓÒ ÝÖØØØÝ ÚÐØ ÓÓ ÔÒÓÒÔ Ø Ø ÔÙÓØÙ ÚÐÓ Ø ÒÒÒ ÔØÖ¹ ½

103 ÙÚÒ ÐØÑ Ø ÝØØÐØØÝÑÒº ËÔØÖÙÚ ÓÒ ÐØØÚ ÒÒÒ ÙÒ ÝØØØÚ ÚÐÓÒÐ ÚÓÒ ÚÐغ ÁÑ ÒÓØ ÐÓ ÔØÖ Ò³Ø ÚÛ ËÔØÖ ÎÛÖ¹ØÐÒ ÓÒØÒÙÓÙ ÙÔعÔÒØØ ÓÒ ÔÒØØÙ ÒÒÒ ÔØÖÙ¹ ÚÒ ÐØÑ Ø ÝØØÐØØÝÑÒº ËÔØÖÙÚ ÓÒ ÐØØÚ ÒÒÒ ÙÒ ÓÒØÒÙÓÙ ÙÔعÔÒ ÚÓÒ ØÚÓº ÁÑ ÒÓØ ÐÓ ÞÓÓÑÒ Ò³Ø ÔÓ Ð ÓÓÑÙ ÔÒØ º º ½¼ ÓÓÑÙ µ ÓÒ ÝÖØØØÝ ÝØØ ÒÒÒ ÔØÖÙÚÒ Ð¹ ØÑ Ø ÝØØÐØØÝÑÒº ËÔØÖÙÚ ÓÒ ÐØØÚ ÒÒÒ ÙÒ ÞÓÓÑÙ ÔÒØ ÚÓÒ ÝØغ ÁÒÔÙØ ÒÓØ Ò ÔÖÓÔÖ ÓÖÑØ Ù Ò ÙÐØ ÚÐÙ ¼¼¹¼¼ ÒÑ ÃÝØØÐØØÝÑÒ ÓÒ ÝØØØÝ ÐÐÓÒÔØÙÙ ÖÚÓØ ÚÖ ÓÖÑØ º ÂÓ ÓÐÑÒ ÓÐØÙ Ò ÝØØÑØ ÖÚÓØ ¼¼¹¼¼ ÒÑ ÚØ ÓÐ ÓÒ ÖÚÓ ÚÓ ÑÙÓØ Ôع ÖÙÚÒ ÐØÑ Ò ÐÒ ÝØØÐØØÝÑÒ Ò ÛÚÐÒعÔÒÐк й ÐÓÒÔØÙÙ ÖÚÓÒ ÓÒ ÓÐØÚ Ø ÑÐÐÒ ÑÙÓØÓ ÐÙÒÝØØÒÓØØÓÚÐÐÓÔÔ٠Ѻ ¼¼¼¼ ÄÓ ÔØÖ ÒÓØ Ò ÔÖÓÔÖ ÓÖÑØ ÓÙÐ ¹ ÑØÖܵ ÃÝØØÐØØÝÑÒ ÓÒ ÝÖØØØÝ ÐØ ØÓ ØÓ Ó ÐÐ ÓÒÐ Ø ÔØÖÙ¹ Úº ËÔØÖÙÚÐÐ ØØÙØ ÚØÑÙ Ø ÓÒ ÖÖÓØØÙ ØÖÑÑÒ ÚÙÐÐ º ÏÚÐÒØ Ö ÓÐÙØÓÒ Ó Ò³Ø ÑØ ÛØ ÔØÖ Ù ØÒ ÚÐÙ Ù Ò ÚÒ ØÖØ Ò Ò ÔÓÒØ º ÃÝØØÐØØÝÑÒ ÝØØØÝÒ ÐÐÓÒÔØÙÙ ÖÚÓÒ ÒÝØØÒÓØØÓÚÐ Ú Ø ÐØÙÒ ÔØÖÙÚÒ ÒÝØØÒÓØØÓÚк ÆÝØØÒÓØØÓÚÐ ÑÖØØÒ ÙØÓÑØØ Ø Ú ¹ ØÑÒ ÔØÖÙÚ ÝØØÒ ÒÒØØÙ ÐÐÓÒÔØÙÙÒ ÐÙ¹ ÐÓÔÔÙÖÚÓº ÂÓ ÓÐÑÒ Ð Ñ ÖÚÓ ÓÐ ÓÒ ÐÐÓÒÔØÙÙÒ ÖÚÓ ÚÓ ÑÙÓØ ÔØÖÙÚÒ ÐØÑ Ò ÐÒ ÝØØÐØØÝÑÒ Ò ÛÚÐÒعÔÒÐк ËÔØÖ ÒÖ Ø Ð Ø ÓÒ Ó Ø ÛÚÐÒØ ÓÑÔÓÒÒØ Ò³Ø ÒÙÑÖ Ù Ò ÙÐØ ÚÐÙ ¼¼¹¼¼ ÒÑ ÒÒ Ý ÝØØÝ Ø ÐÐÓÒÔØÙÙ ÖÚÓ Ø ÓÒ ÐØÒÝØ ÑÙÙØ ÙÒ ÒÙÑÖ Ø ØØÓº ÂÓ ÓÐÑÒ ÓÐØÙ Ò ÝØØÑØ ÖÚÓØ ¼¼¹¼¼ ÒÑ ÚØ ÓÐ ÓÒ Ö¹ ÚÓ ÚÓ ÑÙÓØ Ò ÛÚÐÒعÔÒÐк ÐÐÓÒÔØÙÙ ÖÚÓÒ ÓÒ ÓÐØÚ Ø ÑÐÐÒ ÑÙÓØÓ ÐÙÐÓÔÔ٠Ѻ ¼¼¼¼ ÁÒÔÙØ ÒÓØ Ò ÔÖÓÔÖ ÓÖÑØ Ù Ò ÙÐØ ÚÐÙ ¼¼¹¼¼ ÒÑ ÃÝØØÐØØÝÑÒ ÓÒ ÝØØØÝ ÐÐÓÒÔØÙÙ ÖÚÓØ ÚÖ ÓÖÑØ º ÂÓ ÓÐÑÒ ÓÐØÙ Ò ÝØØÑØ ÖÚÓØ ¼¼¹¼¼ ÒÑ ÚØ ÓÐ ÓÒ ÖÚÓ ÚÓ ÑÙÓØ Ò¹ ÛÚÐÒعÔÒÐк ÐÐÓÒÔØÙÙ ÖÚÓÒ ÓÒ ÓÐØÚ Ø ÑÐÐÒ ÑÙÓØÓ Ð¹ ÙÐÓÔÔ٠Ѻ ¼¼¼¼ ½

104 ËÐØ ÑÓÖ ØÒ ÓÒ ÔÓÒØ ØÓ Ò ÔØÖÙÑ Ò ÔØÖÙѹÔÒÒ ÔÒÑ Ò ÐÒ Ò ÑÑÒÒ ÐÙ ÔØÖ ¹ ÐÒ ÓÒ ØÔØÙÒÙØ ÖÒ Ó ÔÒÐк ËÔØÖÒ ÑÖØØÑ ØÖÚØÒ ÚÒØÒ Ô ØØØ Ó Ø Ò ÑÑÒÒ ÓÒ ÚÐØØÚ ÖÒ Ý ¹ ÚÑÒÒ ÖÒ Ó ÔÒÐк ËÐØ ÔÓÒØ Ú ÒØÐ ÛÚÐÒØ ÚÐÙ ¹ ÒÓ Ò Ò Ñ¹ º ÌÖÝ Ò ÛØ ÖÒØ ÔÓÒØ º Ò ÔØÖÙѹÔÒÒ ÔÒÑ Ò ÐÒ ÚÐØÙØ Ô ØØ Ó ÙÚØ Ø ÑÐÐÒ ÑÒ ÓØÒ ÐÐÓÒÔØÙÙ ÐÐк ÎÐØØÙÒ Ô ØÒ ÔÖÙ ØÐÐ ÓÐ ÑÓй Ð Ø ÑÖØØ Ñ ÔØÖÒ ÖÚÓÒ ØÝØÝ ÓÐÐ ÙÙÖ Ý Ó º ÌÐÐÒ ÓÒ ÚÐØØÚ ÙÙØ Ô ØØ ÔØÖÒ ÑÙÓÑ º ½

105 ÀÑ ØÓ ÒØÑÒÒ ½ ÂÖ ØÐÑÚØÑÙ Ø ¾ ÃÝÒÒ ØÑÒÒ ÄÓÔØÙ ½¼ ËÔØÖÒ ØÖ ØÐÙ ËÔØÖÙÚÒ ÐØÑÒÒ ËÔØÖÒ ØÝÝÔÔ ËÙÓØÒ ÔØÖ ½½ ÎÖÓÓÖÒØØ Ä ÜÝ ÎÖ ÓÚØÙ ÙÒØÓØ ÎÐÓÒÐØØ ÎÖÐÑÓØÙ Ø ½ ËÔØÖ ÒÖ ½ ËÔØÖ ÎÛÖ ½ ÓÓÑÙ ½¼ ½

106 ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ÃÝØØÓ ½ºº¾¼¼ ÌÙ ÃÖÒÒ ½½½¾ ÂÓÒ ÙÙÒ ÝÐÓÔ ØÓ ÌØÓÒ ØØÐÝØØÒ ÐØÓ

107 Ë ÐØ ½ Ð Ø ÝØØÓ Ø ½ ¾ Ð Ø ÝØØÐØØÝÑ Ø ¾ ÂÖ ØÐÑÚØÑÙ Ø º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ¾ ÈÖÒÔÐ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑØ ÃÝØØÐØØÝÑÒ ÝÒÒ ØÑÒÒ º º º º º º º º º º º º º º º º º º º º º º º º ËÔØÖÙÚÒ ÐØÑÒÒ º º º º º º º º º º º º º º º º º º º º º º º º º º º º ÐÐÓÒÔØÙÙ ÖÚÓÒ ØÙ º º º º º º º º º º º º º º º º º º º º º º º º º º º ÇÑÒ ÚØÓÖÒ ØÙÐÓÙÚÒ ØÖ ØÐÙ º º º º º º º º º º º º º º º º ÎÐÓÒÐØÒ ÚÐÒØ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ÎÖ ÓÚØÙ ÙÒØÓÒ ÚÐÒØ º º º º º º º º º º º º º º º º º º º º º º º º º ÈÙ Ò ÙØØÑÒ ÚÖÒ ØÖ ØÐÙ º º º º º º º º º º º º º º º º ÓÓÑÙ ¹ØÓÑÒÒÓÒ ÝØØ º º º º º º º º º º º º º º º º º º º º º º º º º º º ½¼ ÃÝØØÐØØÝÑÒ ÝØÒ ÐÓÔØØÑÒÒ º º º º º º º º º º º º º º º º º º º º º ½¼ ËÔØÖ ÒÖ ½½ ËÔØÖÒ ÑÖØØÑÒÒ º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½½ ËÔØÖÒ ÑÙÙØØÑÒÒ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½¾ ÐÐÓÒÔØÙÙ ÖÚÓÒ ÑÙÙØØÑÒÒ º º º º º º º º º º º º º º º º º º º º º º º ½¾ ËÔØÖÒ ÔÐÙØØÑÒÒ ÝØØÐØØÝÑÒ º º º º º º º º º º º º º º º º º º º ½ ÅÙØ ØÓÑÒØÓ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ÒÒÙ Ó ½ ÎÖÐÑÓØÙ Ø ½ ÈÖÒÔÐ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ º º º º º º º º º º º º º º º º ½ ËÔØÖ ÒÖ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ÀÑ ØÓ ½

108 ½ Ð Ø ÝØØÓ Ø Ì ÝØØÓ ÙÚØÒ ÈÖÒÔÐ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹Ýع ØÐØØÝÑ ÝØØØ ØÖÚØØÚØ ÓÑÒÒÓØ ØÓÑÒÒÓغ ÃÝØØÓ ÖÖÓ¹ ØÒ ÑÝ ÙÒ ÝØØÐØØÝÑØ ÒÒØÒ ÓÒÐÐ ÑØ ÚØÑÙ Ò Ø¹ ØÚØ ÐØØ ØÓÐк ÃÝØØÐØØÝÑÒ ÒØÑØ ÚÖÐÑÓØÙ Ø Ò Ø ØÓÔÙÑÒÒ ÓÒ ÑÝ ØÐØݺ ÃÝØØÓÒ ÐÓÔÙ ÓÒ Ñ ØÓ ÝØØÐØØÝÑÒ Ø ØÖÑ Ø ØÓÒ Ø Ñ Ò ÐÔÓØØÑ º ½

109 ¾ Ð Ø ÝØØÐØØÝÑ Ø ÈÖÒÔÐ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑØ ÓÒ ØÓØÙØØØÙ Ó Ò ÂÓÒ ÙÙÒ ÝÐÓÔ ØÓÒ ÖÓ ØÝÙÖ º Æ ÓÒ ÓÐÑÓØÙ ÅØйÝÑÔÖ Ø Ýع ØÒ ÅØÐÒ Ö ØÒ ÝØØÐØØÝÑÒ ÐÙÓÒØÒ ØÖÓØØØÙ ØÝÐÙ ÍÁ ÅØÐÒ Å¹Ð ØÓÖº ÃÝØØÐØØÝÑØ ÓÒ Ø ØØØÙ ÅØÐÒ ÚÖ ÓÐÐ º ÊÐ ½ µº ÃÝØØÐØØÝÑØ ÓÚØ ÒÐÒÒÒÐÒÒº ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑ ÓÒ ØÓØÙØØØÙ ÔØÖÙÚÒ ÔÓѹ ÔÓÒÒØØÒÐÝÝ Ò ØÙÐÓ ØÒ ØÖ ØÐÑ Ø ÚÖØÒ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ ÝØØÐØØÝÑ ÖÔÔÙÑØØÓÑÒ ÓÑÔÓÒÒØØÒÐÝÝ Ò ØÙÐÓ ØÒ ØÖ ØÐÑ Òº ÃÝع Ø ÚÓ ÐØ ÑÓÐÑÔÒ ÝØØÐØØÝÑÒ ÐÙÑÒ ÔØÖÙÚÒ ØÖ ØÐÐ Ø Ð ØØÙ ÓÑÒ ÚØÓÖØ ØÙÐÓÙÚº Ä ÝØØÐØØÝÑ ÚÓÒ ØÖ ØÐÐ ÐÙÔÖ Ò ÖÓÒ ØÖÙÓÙÒ ÔØÖÙÚÒ Ê¹ ØÝ Ö ÚÐÓÒй ØÒ Ðк ÎÐÓÒÐØØ ÓÚØ ÚÐÑÒ ÖÐÐ ØÓ ØÓ º ÃÝØØÐØØÝÑ ÓÒ ÑÝ ÑÓÐÐ Ø ÑÖØÐÐ Ò ÙÓØÒ ÔØÖ ÝØØÒ ÖÐÐ Ø ËÔØÖ ÒÖ¹ ÙÒº ÃÝØØÒ ÑÖØØÑ ÙÓØÒ ÔØÖ ÝØØÒ ÚÐÓÒÐØÒ ØÚÓÒº ÂÓØØ ÒØ Ò ÙÒ ÙÙÖÒ ÚÖÒ ÔØÖÙÚÒ ÔÙ ÙØØ ÝØØÐع ØÝÑ Ð ØÒ ÓÓ ÔØÖÙÚÐÐ Ý ØØ ÐÐ ÔØÖÐÐ Ù Ø ÚÖÑØØÓº ÎÖÑØØÓÒ Ð ÝØØ ÚÓ ØÖ ØÐÐ ÐÙÔÖ ÖÓÒ ØÖÙÓØÙ Ôع Ö ÓÓ ÖØÒ ÔØÖÒ Ø ÖÒ ÔØÖÒº ÂÖ ØÐÑÚØÑÙ Ø ÃÝØØÐØØÝÑØ ÓÒ ÙÙÒÒØÐØÙ ØÓÑÑÒ ÅØйÝÑÔÖ Ø ÚÖ Ó Ø º ÝÐ ¹ ÔÒº ÌÝÐÐ Ø ØÓÑÚÙÙØØ ÅØÐÒ ÚÒÑÔÒ ÚÖ ÓÒ Ò ÚÓ ØØ ÓØÙÒ ÅØÐÒ Ö ØÒ ÝØØÐØØÝÑÒ ÐÙÓÒØÒ ØÖÓØØÙÒ ØÝÐÙÒ ÍÁÒ ÓÒÐÑ Øº ÃÝØØØÚÒ Ö ØÐÑÒ ÓÒ ØÝØØØÚ ÐÐ ÐÙØÐÐÙØ ÚØÑÙ Ø ¾ Å Ù ÑÙ Ø ÚÔØ ÒØÓÐÚÝØÐ ÝØØÐØØÝÑÒ ØÓ ØÓ ÚÖØÒ ÚÒØÒ ¼¼ ÏÒÓÛ ¹ Ø ÍÒÜ»ÄÒÙܹÔÓÒÒ ÝØØÖ ØÐÑ Ö ÐÐ ÝØØÐØØݹ ÑÐÐ ¾

110 ÈÖÒÔÐ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ ÝØØÐØØÝÑØ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ÓÚØ Ö ÝØØÐØØÝÑ ÓØ ÝØØÒ ÅØйÝÑÔÖ Ø º ÇÒ ÙÓ ØÐØÚ ØØ ØØÓÓ¹ Ò Ò ÓÐÐ ÝØØÐØØÝÑ ÝØØÒ ÓÒ ÒÒØØÙÒ ÅØÐ Ø ÚÒØÒ ÚÖ¹ Ó ºº ÎÒÑÑÐÐ ÚÖ ÓÐÐ ÝØØÐØØÝÑØ ÚØ ÚÐØØÑØØ ØÓÑ ÓÓØØÙÐРع ÚÐк ÌÑ ÝØØÓ ÙÚ ÝØØÐØØÝÑÒ ØÓÑÒØ ÅØÐ º¹ÝÑÔÖ Ø º ÃÝØØÓÒ ÖÙÙØÙÔÔÙ Ø ÓÒ ÓØØØÙ ÄÒÙܹÝØØÖ ØÐÑ ÓØÒ Ö¹ ÖÓ ÑÒ ÏÒÓÛ Ò Ö Øº ÌÓÑÒÒÓØ ÓÚØ ÙØÒÒ ÑÒÐ Ø ÑÓ¹ ÐÑÑ ÝØØÖ ØÐÑ º ÊÙÙØÙÔÔÙ Ø ÓÒ ÓØØØÙ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑ Ø ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑ ÓÒ Ù¹ ØÒÒ ÙÐÓ ÙÐØÒ ØÓÑÒÒÓÐØÒ ÒØØÒÒ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ ÝØØÐØØÝÑÒ Ò º ÃÝØØÐØØÝÑÒ ÝÒÒ ØÑÒÒ ÒÒÒ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÒ ÝÒÒ ØÑ Ø ÝØØÒ Øݹ ØÝÝ ÖØÝ Ñ ØÓÓÒ Ó ØÓ ØÓØ ÔºÑ Ôº ÑÙÙØ ÝØØÐØØÝÑÒ ØÓ ØÓØ Ø Úغ ÀÑ ØÓ ÓÒ ÓÐØÚ ÐÑ ØÓ Ð Ó ÐØ ¹ ÝØØÐØØÝÑÒ ÑÙÒ Ý Ñ ØÓ ØÙÐÐØ ØÓ ØÓغ ÇÒ ¹ Ñ ØÓÓÒ ÖØÝÑÒÒ ÒÒÒ ÝØØÐØØÝÑÒ ÝÒÒ ØÑ Ø ÓÒ ÓÐÑÒ ØÓÑÒÒÒ ÒÒÐØ ÚÐØØÑØÒغ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ÝÒÒ ØØÒ ÖÓØØÑÐÐ ÅØÐÒ ÓÑÒØÓÖÚÐÐ Ô ÓÐÐÓÒ ØØÓÓÒÒ ÒÝØÐÐ ÚÙØÙÙ ÝØØÐØØÝѹ ÙÒº ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÒ ÝÒÒ ØÑÒÒ ÒÓÙØØ Ñ ÑÐÐ ÙÒ ÈÖÒÔÐ ÓÑÔÓÒÒØ ÒÐÝ ¹ÝØØÐØØÝÑÒ ÝÒÒ ØÑÒÒ ÝØع ÐØØÝÑØÓ ØÓØ ÓÚØ ºÑ ºº ÁÒÔÒÒØ ÓÑÔÓÒÒØ ÒÐÝ ÝÒÒ Ø¹ ØÒ ÖÓØØÑÐÐ ÅØÐÒ ÓÑÒØÓÖÚÐÐ º ÅÓÐÑÑØ ÝØØÐØØÝÑØ ÝÒÒ ØÝÚØ ÁÒÒÖ ÔÖÓÙØ Ñ ¹ØÐÒº Ì ØÐ ¹ ÚÓÒ ØÖ ØÐÐ ÔØÖÙÚ Ø Ð ØØÙ ÓÑÒ ÚØÓÖØ ØÙÐÓÙ¹ Úº ÃÝØØÐØØÝÑÙÒÒ Ú ÑÑ ÐÖÙÒ Ø Ú Ø ÔÒ Ø ÚÓ¹ Ò ÔØÖÙÚÒ ÐØÑ Ò ÐÒ ÖØÝ ÓÑÔÖ ÓÒ ÖÖÓÖ ¹ØÐÒ ØÖ Øй ÑÒ ÔØÖÙÚÒ ÔÙ ÙØÙÒØ ÚÖØ Ø Ø Ò ÁÒÒÖ ÈÖÓ¹ ÙØ Ñ ¹ØÐÒº

111 ÃÙÚ ½ ÃÝØØÐØØÝÑÒ ÁÒÒÖ ÔÖÓÙØ Ñ ¹ØÐ

Ð ØÖÓÒ Ø Ñ ÙÚÐ Ò Ø Ì ÑÙ Ê ÒØ ¹ Ó À Ð Ò ¾ º ÐÓ ÙÙØ ½ Ë Ò ÙÔ Ò ÝÒÒ Ò Ñ Ò Ö À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ Ì ØÓ Ò ØØ ÐÝØ Ø Ò Ð ØÓ Ë ÐØ ½ ÂÓ ÒØÓ ½ ¾ Å Ù Ö Ø ÐÑØ ¾ ¾º½ ÆÝ Ý Ø Ñ Ù Ö Ø ÐÑØ º º º º º º º º º º º º º º º º

Lisätiedot

ÍÐ ÓØ ÐÓ Ò Ô ÖØÓ ÃÙÒ Ô ÖÖ ØÒ Ð Ó ÙÐ ÓÒ ÝÑ ÓÒ Ò ØØ Ú Ñ ÐÐ Ñ ØÓ Ø ØÝÝÔ ÐÐ Ø Ú Ò Ð Ò ÙÙÖ ÓÚ ÐØÙ Ò Ö Ð Ò Ô ÖØÑ Ò Ñº Ó Ñ ÐÐ ÒÒ Ø Ò ½¼ Ü ½¼ Ñ ÐÙ ½¼ Ñ Ø Ö Ù

ÍÐ ÓØ ÐÓ Ò Ô ÖØÓ ÃÙÒ Ô ÖÖ ØÒ Ð Ó ÙÐ ÓÒ ÝÑ ÓÒ Ò ØØ Ú Ñ ÐÐ Ñ ØÓ Ø ØÝÝÔ ÐÐ Ø Ú Ò Ð Ò ÙÙÖ ÓÚ ÐØÙ Ò Ö Ð Ò Ô ÖØÑ Ò Ñº Ó Ñ ÐÐ ÒÒ Ø Ò ½¼ Ü ½¼ Ñ ÐÙ ½¼ Ñ Ø Ö Ù ØÙغ Ø Ò ÐÐ Ò Ò ÝÐ ÓÔ ØÓ Ì ÑÔ Ö Ò È Ð Ó ÐÑÓ ÒØ ÍÐ ÓØ ÐÓ Ò Ô ÖØÓ ÒØØ ÈÙ ÒØØ ºÔÙ Ç ÐÑ ØÓØ Ò ÍÐ ÓØ ÐÓ Ò Ô ÖØÓ ÃÙÒ Ô ÖÖ ØÒ Ð Ó ÙÐ ÓÒ ÝÑ ÓÒ Ò ØØ Ú Ñ ÐÐ Ñ ØÓ Ø ØÝÝÔ ÐÐ Ø Ú Ò Ð Ò ÙÙÖ ÓÚ ÐØÙ Ò Ö Ð Ò Ô ÖØÑ Ò Ñº

Lisätiedot

Ì Ð Ú Ø ÚÙÙ ÐÙÓ Ø Á ÅÖ Ø ÐÑ ÇÐ ÓÓÒ : Æ Ê ÙÒ Ø Óº Ì Ð Ú Ø ÚÙÙ ÐÙÓ Ø ËÈ ( (Ò)) ÆËÈ ( (Ò)) ÑÖ Ø ÐÐÒ ÙÖ Ú Ø ËÈ ( (Ò)) ÓÒ Ò Ò ÐØ Ò Ä ÓÙ Ó ÓØ ÚÓ Ò ØÙÒÒ Ø Ø

Ì Ð Ú Ø ÚÙÙ ÐÙÓ Ø Á ÅÖ Ø ÐÑ ÇÐ ÓÓÒ : Æ Ê ÙÒ Ø Óº Ì Ð Ú Ø ÚÙÙ ÐÙÓ Ø ËÈ ( (Ò)) ÆËÈ ( (Ò)) ÑÖ Ø ÐÐÒ ÙÖ Ú Ø ËÈ ( (Ò)) ÓÒ Ò Ò ÐØ Ò Ä ÓÙ Ó ÓØ ÚÓ Ò ØÙÒÒ Ø Ø Ì Ð Ú Ø ÚÙÙ Á ÅÖ Ø ÐÑ ÇÐ ÓÓÒ Å Ø ÖÑ Ò Ø Ò Ò ÌÙÖ Ò Ò ÓÒ Ó ÔÝ ØÝÝ ÐÐ Ý ØØ Ðк Å Ò Ø Ð Ú Ø ÚÙÙ ÓÒ ÙÒ Ø Ó : Æ Æ Ñ (Ò) ÓÒ Å Ò Ð Ñ Ò ÑÙ Ø Ô Ó Ò Ñ Ñ ÐÙ ÙÑÖ ÙÒ Ø Ö Ø ÐÐ Ò Ò Ò Ô ØÙ Ý ØØ Øº ÂÓ Å Ò Ø Ð Ú Ø ÑÙ ÓÒ

Lisätiedot

Kuvan piirto. Pelaaja. Maailman päivitys. Syötteen käsittely

Kuvan piirto. Pelaaja. Maailman päivitys. Syötteen käsittely ØÙغ Ø Ò ÐÐ Ò Ò ÝÐ ÓÔ ØÓ Ì ÑÔ Ö Ò È Ð Ó ÐÑÓ ÒØ È Ð Ó ÐÑ Ò Ö ÒÒ ÒØØ ÈÙ ÒØØ ºÔÙ Ç ÐÑ ØÓØ Ò Ò Ø ÐРؽ ؾ Ø È Ð Ó ÐÑ Ò Ô ÖÙ Ö ÒÒ Ì ØÓ ÓÒ Ô Ð Ò ÝØ Ñ Ò ÓÒ Ñ ÐÐ Ó Ø Ò ÙÚ ØØ ÐÐ Ø Ñ ÐÑ Ø ÚÓ ÓÐÐ Ú Ò Ý Ò ÖØ Ò Ò Ð

Lisätiedot

ÁÒ Ù Ø Ú Ø ØÝÝÔ Ø º Ñ Ö ÒÖ ÔÙÙÒ ÑÖ Ø ÐÑ Ú ØØ Ø Ò ÒÖ ÔÙÙ ÓÒ Ó Ó ØÝ Ø ÓÐÑÙ Ó ÓÒ Ð Ó ÓÒ Ú Ò Ó Ð ÔÙÙ ÓÚ Ø ÑÝ ÒÖ ÔÙ Ø º Ë ÚÓ Ò Ö Ó ØØ ÙÓÖ Ò Ø Ò ÖÝÌÖ ÑÔØÝ Æ

ÁÒ Ù Ø Ú Ø ØÝÝÔ Ø º Ñ Ö ÒÖ ÔÙÙÒ ÑÖ Ø ÐÑ Ú ØØ Ø Ò ÒÖ ÔÙÙ ÓÒ Ó Ó ØÝ Ø ÓÐÑÙ Ó ÓÒ Ð Ó ÓÒ Ú Ò Ó Ð ÔÙÙ ÓÚ Ø ÑÝ ÒÖ ÔÙ Ø º Ë ÚÓ Ò Ö Ó ØØ ÙÓÖ Ò Ø Ò ÖÝÌÖ ÑÔØÝ Æ ÁÒ Ù Ø Ú Ø ØÝÝÔ Ø º º ÁÒ Ù Ø Ú Ø ØÝÝÔ Ø Ø ¹ÑÖ ØØ ÐÝ º¾µ ÚÓ Ú Ø Ø ÑÝ Ø Ò ÑÖ Ø ÐØÚ Æ Ñ ÒØÝ ÑÝ ³ ³¹Ñ Ö Ò Ó ÐÐ ÔÙÓÐ ÐÐ º Ë Ò ÓÐ ÐÐ ØØÝ ØÝÔ ¹ÐÝ ÒØ º½µº ¾ ÁÒ Ù Ø Ú Ø ØÝÝÔ Ø º Ñ Ö ÒÖ ÔÙÙÒ ÑÖ Ø ÐÑ Ú ØØ Ø Ò ÒÖ

Lisätiedot

Ð ØÖÓÒ Ò Ú Ø Ò Ô ÓÒ Ö Ø Ð ØÖÓÒ Ò Ò Ú Ð ÙÒ ÝÐ ÓÔ ØÓ ÖÑ Ò ØÙØ ÑÙ ¹ Ð ØÓ ½ ¼¹ÐÙÚÙÐÐ Ù Ø Ó ÐÙ Ð ØÖÓÒ Ô Ð ºËº ÓÙ Ð Ø ½ ¾ Ñ Ö Ú Ø Ö Ò Ñ Ò ÓÒ Ò ÚÙÓÖÓÚ ÙØÙ Ø

Ð ØÖÓÒ Ò Ú Ø Ò Ô ÓÒ Ö Ø Ð ØÖÓÒ Ò Ò Ú Ð ÙÒ ÝÐ ÓÔ ØÓ ÖÑ Ò ØÙØ ÑÙ ¹ Ð ØÓ ½ ¼¹ÐÙÚÙÐÐ Ù Ø Ó ÐÙ Ð ØÖÓÒ Ô Ð ºËº ÓÙ Ð Ø ½ ¾ Ñ Ö Ú Ø Ö Ò Ñ Ò ÓÒ Ò ÚÙÓÖÓÚ ÙØÙ Ø ØÙغ Ø Ò ÐÐ Ò Ò ÝÐ ÓÔ ØÓ Ì ÑÔ Ö Ò È Ð Ó ÐÑÓ ÒØ È Ð Ó ÐÑÓ ÒÒ Ò ØÓÖ ÒØØ ÈÙ ÒØØ ºÔÙ Ç ÐÑ ØÓØ Ò Ð ØÖÓÒ Ò Ú Ø Ò Ô ÓÒ Ö Ø Ð ØÖÓÒ Ò Ò Ú Ð ÙÒ ÝÐ ÓÔ ØÓ ÖÑ Ò ØÙØ ÑÙ ¹ Ð ØÓ ½ ¼¹ÐÙÚÙÐÐ Ù Ø Ó ÐÙ Ð ØÖÓÒ Ô Ð ºËº ÓÙ Ð

Lisätiedot

È Ú Ö Ù ÆÈ ÁÁ Ë ÑÓ Ò Ó Ò Ý ÝÑÝ ÚÙØ ØØ Ò ØÝ Ø ÙÒ ËØ Ô Ò ÓÓ Ä ÓÒ Ä Ú Ò ØØ Ð ÚØ ÆȹØÝ ÐÐ ÝÝ Ò ØØ Òº µ º Ù Ø ÙÙØ ¾¼¼ ¾»

È Ú Ö Ù ÆÈ ÁÁ Ë ÑÓ Ò Ó Ò Ý ÝÑÝ ÚÙØ ØØ Ò ØÝ Ø ÙÒ ËØ Ô Ò ÓÓ Ä ÓÒ Ä Ú Ò ØØ Ð ÚØ ÆȹØÝ ÐÐ ÝÝ Ò ØØ Òº µ º Ù Ø ÙÙØ ¾¼¼ ¾» È Ú Ö Ù ÆÈ Á à РÐÙÓ Ø È ÆÈ ÒÝØØÚØ ØÝ Ò Ö Ð ÐØ Ë ÐÚ Ø È ÆȺ µ È ÓÒ Ð ÐÙÓ Ó Ð ÓÒ ÙÙÐÙÑ Ò Ò Ð Ò ÚÓ Ò Ö Ø Ø ÔÓÐÝÒÓÑ Ø ÖÑ Ò Ø ÐÐ ÌÙÖ Ò Ò ÓÒ ÐÐ º µ ÆÈ ÓÒ Ð ÐÙÓ Ó Ð ÓÒ ÙÙÐÙÑ Ò Ò Ð Ò ÚÓ Ò Ú Ö Ó ÔÓÐÝÒÓÑ Ð Ð ÓÒ

Lisätiedot

ABTEKNILLINEN KORKEAKOULU TEKNISKA HÖGSKOLAN HELSINKI UNIVERSITY OF TECHNOLOGY

ABTEKNILLINEN KORKEAKOULU TEKNISKA HÖGSKOLAN HELSINKI UNIVERSITY OF TECHNOLOGY ÆÖÒÒ ÂÖÓ ÓÖÓÙÐÙ ÌÒÐÐÒÒ ABTEKNILLINEN KORKEAKOULU TEKNISKA HÖGSKOLAN HELSINKI UNIVERSITY OF TECHNOLOGY ÔÖÓÖ¹ ÔÓ ØÖÓÖ ¹ÚÖÒÐÝÝ ÐØØÑÐÐÒ ÐÑÒØØÑÒØÐÑÐÐ ÄØÓ ÔÖÙÖ ÓÖ º½½º¾¼¼ ÅØÑØÒ ÐØÓ Ë ÐØ ½ ÂÓÒØÓ ¾ ÑÐÐÒÒÙ ÄØØÖÒØÒ

Lisätiedot

Symmetriatasot. y x. Lämmittimet

Symmetriatasot. y x. Lämmittimet Ì Ò ÐÐ Ò Ò ÓÖ ÓÙÐÙ ¹ÖÝ ÑĐ» ËÓÚ ÐÐ ØÙÒ Ø ÖÑÓ ÝÒ Ñ Ò Ð ÓÖ ØÓÖ Ó ÅÍÁËÌÁÇ ÆÓ»Ì ÊÅǹ ¹¾¼¼¼ ÔÚÑ ½¼º Ñ Ð ÙÙØ ¾¼¼¼ ÇÌËÁÃÃÇ Ø Ú ÒعØÙÐÓ ÐÑ Ð ØØ Ò ¹Ñ ÐÐ ÒÒÙ Ò ÖØ Ø ØÙØ ØÙÐÓ ÐÑ Ð Ø Ñ ÐÐ Ø Ä ÌÁ ̵ ÂÙ Ú Ó Ð ¹ÂÙÙ Ð

Lisätiedot

À Ö Ö Ð Ù Ø ÅÖ Ø ÐÑ ÙÒ Ø Ó : Æ Æ Ñ (Ò) = O(ÐÓ Ò) ÓÒ Ø Ð ÓÒ ØÖÙÓ ØÙÚ Ó ÐÐ Ò Ò ÙÒ Ø Ó Ó ÙÚ Ñ Ö ÓÒÓÒ ½ Ò (Ò) Ò ÒÖ ØÝ ÐÐ ÓÒ Ð ØØ Ú Ø Ð O( (Ò))º Ä Ù Å Ø Ø

À Ö Ö Ð Ù Ø ÅÖ Ø ÐÑ ÙÒ Ø Ó : Æ Æ Ñ (Ò) = O(ÐÓ Ò) ÓÒ Ø Ð ÓÒ ØÖÙÓ ØÙÚ Ó ÐÐ Ò Ò ÙÒ Ø Ó Ó ÙÚ Ñ Ö ÓÒÓÒ ½ Ò (Ò) Ò ÒÖ ØÝ ÐÐ ÓÒ Ð ØØ Ú Ø Ð O( (Ò))º Ä Ù Å Ø Ø Ì ÔÙÑ ØØÓÑÙÙ Ì Ó Ø ÐÐÒ ÓÒ ÐÑ ÓØ ÓÚ Ø Ô Ö ØØ Ö Ø Ú ÑÙØØ Ó Ò Ö Ø Ù Ú Ø Ò Ò Ô Ð ÓÒ Ø Ø Ð ØØ Ö Ø Ù ÓÐ ÝØÒÒ ÐÚÓÐÐ Ò Òº Í ÑÑ Ø ÓÐ ØØ Ú Ø ØØ ÆȹØÝ ÐÐ Ø ÔÖÓ Ð Ñ Ø ÓÚ Ø Ø ÔÙÑ ØØÓÑ ÒØÖ Ø Ð µ ÑÙØØ ØØ ÓÐ ØÓ Ø ØØÙº

Lisätiedot

À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ À ÄËÁÆ ÇÊË ÍÆÁÎ ÊËÁÌ Ì ÍÆÁÎ ÊËÁÌ Ç À ÄËÁÆÃÁ Ì ÙÒØ»Ç ØÓ ÙÐØ Ø»Ë Ø ÓÒ ÙÐØÝ Ä ØÓ ÁÒ Ø ØÙØ ÓÒ Ô ÖØÑ ÒØ Å Ø Ñ ØØ ¹ÐÙÓÒÒÓÒØ Ø ÐÐ Ò Ò Ì Ö

À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ À ÄËÁÆ ÇÊË ÍÆÁÎ ÊËÁÌ Ì ÍÆÁÎ ÊËÁÌ Ç À ÄËÁÆÃÁ Ì ÙÒØ»Ç ØÓ ÙÐØ Ø»Ë Ø ÓÒ ÙÐØÝ Ä ØÓ ÁÒ Ø ØÙØ ÓÒ Ô ÖØÑ ÒØ Å Ø Ñ ØØ ¹ÐÙÓÒÒÓÒØ Ø ÐÐ Ò Ò Ì Ö ÝÚ ÝÑ Ô Ú ÖÚÓ Ò ÖÚÓ Ø Ð Ä Ù ÓÑÔÓÒ ÒØ Ø Ã Ö Ì ÑÓÒ Ò À Ð Ò º º¾¼¼ Ç ÐÑ ØÓØÙÓØ ÒØÓ Ø ØÓ ÓÒ Ô Ð Ø ¹ Ñ Ò Ö À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ Ì ØÓ Ò ØØ ÐÝØ Ø Ò Ð ØÓ À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ À ÄËÁÆ ÇÊË ÍÆÁÎ ÊËÁÌ Ì ÍÆÁÎ ÊËÁÌ Ç À ÄËÁÆÃÁ

Lisätiedot

{(x, y) x {1,2,3,... }, y {2,4,6,...,10}, x < y}.

{(x, y) x {1,2,3,... }, y {2,4,6,...,10}, x < y}. Ä Ø ÓÓ Ø Ø º º Ä Ø ÓÓ Ø Ø Å Ø Ñ Ø ÓØ ÑÖ ØØ Ð ÚØ Ù Ò ÓÙ Ó ÑÔÐ ØØ ÐÐ ÒÓØ Ø ÓÐÐ Ò ÙØ Ò {(x, y) x {1,2,3,... }, y {2,4,6,...,10}, x < y}. À ÐÐ Ø Ö Ó Ú Ø Ú Ò ÒÓØ Ø ÓÒ Ð ØÓ ÐÐ Ò Ú ØÓ ØÓ Ò ÝÒØ Ò Ø Ú ÐÐ ÐÐ Ð Ø

Lisätiedot

ÓÑ ØÖ Ò Ø Ò Ø ØÓÖ ÒØ Ø Ã ÙÖ Ú Ø ÐØÚØ Ø ØÓÖ ÒØ Ø Ô ÖÙ ØÙÚ Ø Ñ ÒØÝÝÔ¹ Ô Ò Ò ÖÓØ ÐÐ Ò Ú ÖÙÙ Ø Ó Ó Ò ÐÐ ÓÒ Ô Ò ÑÔ Ó Ò Ò ÐÐ Ú Ð Ô Ò ÑÔ Ó Ò º ÒÑ Ö Ø ØÒ Ö Ö

ÓÑ ØÖ Ò Ø Ò Ø ØÓÖ ÒØ Ø Ã ÙÖ Ú Ø ÐØÚØ Ø ØÓÖ ÒØ Ø Ô ÖÙ ØÙÚ Ø Ñ ÒØÝÝÔ¹ Ô Ò Ò ÖÓØ ÐÐ Ò Ú ÖÙÙ Ø Ó Ó Ò ÐÐ ÓÒ Ô Ò ÑÔ Ó Ò Ò ÐÐ Ú Ð Ô Ò ÑÔ Ó Ò º ÒÑ Ö Ø ØÒ Ö Ö ØÙغ Ø Ò ÐÐ Ò Ò ÝÐ ÓÔ ØÓ Ì ÑÔ Ö Ò È Ð Ó ÐÑÓ ÒØ È Ð Ó ÐÑÓ ÒÒ Ý ÝÐÐ Ø ØÓÖ ÒØ Ø ÒØØ ÈÙ ÒØØ ºÔÙ Ç ÐÑ ØÓØ Ò ÓÑ ØÖ Ò Ø Ò Ø ØÓÖ ÒØ Ø Ã ÙÖ Ú Ø ÐØÚØ Ø ØÓÖ ÒØ Ø Ô ÖÙ ØÙÚ Ø Ñ ÒØÝÝÔ¹ Ô Ò Ò ÖÓØ ÐÐ Ò Ú ÖÙÙ Ø Ó Ó Ò ÐÐ

Lisätiedot

p q = (x 1 x 2 ) 2 + (y 1 y 2 ) 2 + (z 1 z 2 ) 2. x 1 y 1 z 1 x 2 y 2 z 2

p q = (x 1 x 2 ) 2 + (y 1 y 2 ) 2 + (z 1 z 2 ) 2. x 1 y 1 z 1 x 2 y 2 z 2 º ÅÓÒ ÙÐÓØØ Ø Ö ÒØ Ð Ð ÒØ º½ Â Ø ÙÚÙÙ Ó ØØ Ö Ú Ø Ø Ù Ò ÑÙÙØØÙ Ò ÙÒ Ø Ó Ò Ö ÒØ Ð Ð ÒØ ÐÑÔ Ø Ð ÓÒ Ò Ô Ò ÙÒ Ø Ó T(x, y, z.t) ÄÑÔ Ø Ð Ö ÒØØ ÐÑÓ ØØ Ñ Ò ÙÙÒØ Ò ÐÑÔ Ø Ð Ú ÚÓ Ñ ÑÑ Ò Ù Ò Ð ÐÑÔ Ø Ð Ö ÒØØ ½½ ÃÓÓÖ

Lisätiedot

el. konsentraatio p puolella : n p = N c e (E cp E F ) el. konsentraatio n puolella : n n = N c e (E cn E F ) n n n p = e (Ecp Ecn) V 0 = kt q ln (

el. konsentraatio p puolella : n p = N c e (E cp E F ) el. konsentraatio n puolella : n n = N c e (E cn E F ) n n n p = e (Ecp Ecn) V 0 = kt q ln ( ÈÙÓÐ Ó ÓÑÔÓÒ ÒØØ Ò Ô ÖÙ Ø Ø À Ì Øº ½º È ÖÖ ÔÒ¹ÔÙÓÐ Ó Ð ØÓ Ò Ò Ö ÚÝ Ñ ÐÐ ÙÒ ÙÐ Ó Ò Ò ÒØØ ÓÒ ÒÓÐÐ º ÂÓ ÓÒØ Ø ÔÓØ ÒØ Ð Ò V 0 Ý ØÐ µ ÃÙÚ Ò ÚÙÐÐ µ Ù ÓÚ ÖØ Ý ØÐ Ø Ô¹ Ò¹ØÝÝÔ Ø Ò Ñ Ø Ö Ð Ò Ò Ö Ø ÓØ Ô¹ÔÙÓÐ ÐÐ ÙÙÖ

Lisätiedot

È ÌÀÇƹÇÀ ÄÅÇÁÆÆÁÆ ËÇÎ ÄÄÍÃËÁ Å ÌÊÁÁËÁÄ Ëà ÆÌ Æ ÌÁÄ ËÌÇÌÁ Ì Ë Æ Â ÆÍÅ ÊÁË Æ Å Ì Å ÌÁÁÃÃ Æ ÄÍÃÁÇÄ ÁËÁÄÄ Ì Ò Ï ÐÐ Ö ¹Ä Ò ÈÖÓ Ö Ù ¹ØÙØ ÐÑ Å ÖÖ ÙÙ ¾¼¼ Å Ì Å ÌÁÁÃ Æ Ä ÁÌÇË ÌÍÊÍÆ ÄÁÇÈÁËÌÇ ÌÍÊÍÆ ÄÁÇÈÁËÌÇ Å

Lisätiedot

F n (a) = 1 n {i : 1 i n, x i a}, P n (a,b) = F n (b) F n (a). P n (a,b) = 1 n {i : 1 i n, a < x i b}.

F n (a) = 1 n {i : 1 i n, x i a}, P n (a,b) = F n (b) F n (a). P n (a,b) = 1 n {i : 1 i n, a < x i b}. Ë ÐØ ½ ÂÓ ÒØÓ ½ ½º½ ÌÓ ÒÒ ÝÝ Ø Ð ØÓØ º º º º º º º º º º º º º º º º º º ½ ½º¾ À Ú ØÙØ Ö Ú Ò Ø ÑÔ Ö Ø ÙÑ Ø º º º º º º º º º º º ½ ½º ÌÓ ÒÒ ÝÝ Ñ ÐÐ Ø º º º º º º º º º º º º º º º º º º º º º º º ½º º½

Lisätiedot

A c t a U n i v e r s i t a t i s T a m p e r e n s i s 1061

A c t a U n i v e r s i t a t i s T a m p e r e n s i s 1061 JORMA JOUTSENLAHTI Lukiolaisen tehtäväorientoituneen matemaattisen ajattelun piirteitä 1990-luvun pitkän matematiikan opiskelijoiden matemaattisen osaamisen ja uskomusten ilmentämänä AKATEEMINEN VÄITÖSKIRJA

Lisätiedot

ÚØ ØØ Ò ØÙÐ > ØÒÔØ ÑÝ ÐØ ÑÐ ØÐÐÒ Ö ØÝ Ò ½ ÌØÚÒ ØØÐÙ ØØÚÒ ÖØ ÑÒÒ ØØÓÓÒÐÐ ÐÐÝØØ ÓÔÚ ÐÓÖØÑ Í Ò ÑÐÓ ÝÐ ÐÐ Ø ÓÐÐ ÙÚÐØÙ ØÓÑÒØÓ À ØØÓÓÒÓÐÑ ÚÒ ØÓÑÒØÔÖØ ØÚÓØØÒ

ÚØ ØØ Ò ØÙÐ > ØÒÔØ ÑÝ ÐØ ÑÐ ØÐÐÒ Ö ØÝ Ò ½ ÌØÚÒ ØØÐÙ ØØÚÒ ÖØ ÑÒÒ ØØÓÓÒÐÐ ÐÐÝØØ ÓÔÚ ÐÓÖØÑ Í Ò ÑÐÓ ÝÐ ÐÐ Ø ÓÐÐ ÙÚÐØÙ ØÓÑÒØÓ À ØØÓÓÒÓÐÑ ÚÒ ØÓÑÒØÔÖØ ØÚÓØØÒ ØÒÐÐÒÒ ÝÐÓÔ ØÓ ÌÑÔÖÒ ÐØÓ ÅØÑØÒ ØØÓÓÒ ÓÐÐ ÖØØ ÎÓÓ ÝÑÔØÓÓØØÒÒ ÙÓÖØÙ ÊØÒ Ø ÑÒÒ ØØÓÓÒÐÐ ÎÐ Ù ÐÓÖØÑÒ ÑÐÑÒ ÒØØ ÎÐÑÖ ½ ÌØÚÒ ØØÐÙ ØÖÒ ÐÓÖØÑ ÈÖÓÖØØØÓÒÓ ÐÒÒÙÒØ¹Ø ÝÝÐÐ ØÒÚØÓ Î ÄÌ̹½¼¼ ÎÐ Ù ÐÓÖØÑÒ ÑÐÑÒ Ý Ý ¼½ ¼»½½

Lisätiedot

d 00 = 0, d i0 = i, 1 i m, d 0j

d 00 = 0, d i0 = i, 1 i m, d 0j ¾º¾º ÁÌÇÁÆÌÁ Ì ÁË Æ Ä Ëà ÅÁÆ Æ ¾ º ÇÔ Ö Ø Ó ÓÒÓ ÌÌÈÈÈÌÄÌÅÈÈ Ò Ù Ø¹Öݹ¹ Ò¹¹¹Ø Ö Ø º ÇÔ Ö Ø Ó Ò ÐÙ ØØ ÐÓ Ò Ù ØÖÝ d ǫ ÒØ ÖÝ ǫ e ÒÙ ØÖÝ u ǫ ÒØ Ö Ý y s Ò ØÖÝ s ǫ ÒØ Ö ǫ t ÒØÖÝ ǫ e ÒØ Ö Ø ¾º¾ ØÓ ÒØ Ø ÝÝ Ò Ð

Lisätiedot

Ë ÐØ ½ Ð Ø Ê Ø ¾ ¾ Ê Ò ÝÒØ ØÝ ÒØ ÐÝÒ ÐÓ ØØ Ñ Ò Ò ¾º½ Ç Ò ÝØØ Ê¹ ØÙÒÒÓÒ Ò º º º º º º º º º º º º º º º º ¾º¾ Ä Ô Ø Ø Ò ØÓØ º º º º º º º º º º º º º º

Ë ÐØ ½ Ð Ø Ê Ø ¾ ¾ Ê Ò ÝÒØ ØÝ ÒØ ÐÝÒ ÐÓ ØØ Ñ Ò Ò ¾º½ Ç Ò ÝØØ Ê¹ ØÙÒÒÓÒ Ò º º º º º º º º º º º º º º º º ¾º¾ Ä Ô Ø Ø Ò ØÓØ º º º º º º º º º º º º º º ÂÓ ÒØÓ Ñ ØÖ Ò Ð Ò Ö Ø Ò Ñ ÐÐ Ò ØØ ÐÝÝÒ Ê¹Ó ÐÑ ØÓÐÐ ÒÒ Ç Ö Ò Ò Å Ø Ñ Ø Ò Ø Ð ØÓØ Ø Ò ÐÓ Ó Ò Ð ØÓ Ì ÑÔ Ö Ò ÝÐ ÓÔ ØÓ ÐÓ ÙÙ ¾¼¼ Ë ÐØ ½ Ð Ø Ê Ø ¾ ¾ Ê Ò ÝÒØ ØÝ ÒØ ÐÝÒ ÐÓ ØØ Ñ Ò Ò ¾º½ Ç Ò ÝØØ Ê¹ ØÙÒÒÓÒ Ò º º

Lisätiedot

Ç Ø ØÙØ ÐÑ Ò Ð Ø Ó ÐÐ Ã Ö ¹ÂÓÙ Ó Ê Ì ÑÔ Ö Ò ÝÐ ÓÔ ØÓ ÁÒ ÓÖÑ Ø ÓØ Ø Ò Ý»Ø Ó Ø ÚØ ÈÖÓ Ö Ù ¹ØÙØ ÐÑ Ç Å ÖØØ Ì Ò Ö ¾ º½º¾¼½½ Ì ÑÔ Ö Ò ÝÐ ÓÔ ØÓ ÁÒ ÓÖÑ Ø ÓØ Ø Ò Ý»Ø Ó Ø ÚØ Ã Ö ¹ÂÓÙ Ó Ê Ç Ø ØÙØ ÐÑ Ò Ð Ø Ó ÐÐ

Lisätiedot

Ë Ø ÐÓ Ò Ô ÖØÓ Á ÔÖÓ Ó ÒØ ÃÙÒ Ð ÙØ Ò ÓÒ Ò Ö ÒÒÙ Ò ÐÐ ÓÒ ÝÐ Ò ÖÖ ÐÐ Ò Ú Ò Ô Ò Ó Ö ÒÒÙ Ò Ø ÐÓ Ø Ò ÝÚ Ñ ÐÐ ÓÒ Ù Ø ÐÐ Ò ÙÙÖ ÑÖ Ò Ø Ø ÓÐÙ Ö µ Ã ÙÐÓØØ Ò Ò Ñ

Ë Ø ÐÓ Ò Ô ÖØÓ Á ÔÖÓ Ó ÒØ ÃÙÒ Ð ÙØ Ò ÓÒ Ò Ö ÒÒÙ Ò ÐÐ ÓÒ ÝÐ Ò ÖÖ ÐÐ Ò Ú Ò Ô Ò Ó Ö ÒÒÙ Ò Ø ÐÓ Ø Ò ÝÚ Ñ ÐÐ ÓÒ Ù Ø ÐÐ Ò ÙÙÖ ÑÖ Ò Ø Ø ÓÐÙ Ö µ à ÙÐÓØØ Ò Ò Ñ ØÙغ Ø Ò ÐÐ Ò Ò ÝÐ ÓÔ ØÓ Ì ÑÔ Ö Ò È Ð Ó ÐÑÓ ÒØ Ë Ø ÐÓ Ò Ô ÖØÓ Ò ÝÚÝÝ Ð ÒØ ÒØØ ÈÙ ÒØØ ºÔÙ Ç ÐÑ ØÓØ Ò Ë Ø ÐÓ Ò Ô ÖØÓ Á ÔÖÓ Ó ÒØ ÃÙÒ Ð ÙØ Ò ÓÒ Ò Ö ÒÒÙ Ò ÐÐ ÓÒ ÝÐ Ò ÖÖ ÐÐ Ò Ú Ò Ô Ò Ó Ö ÒÒÙ Ò Ø ÐÓ Ø Ò ÝÚ Ñ

Lisätiedot

F n (a) = 1 n { i : 1 i n, x i a }, P n (a, b) = F n (b) F n (a). P n (a, b) = 1 n { i : 1 i n, a < x i b }.

F n (a) = 1 n { i : 1 i n, x i a }, P n (a, b) = F n (b) F n (a). P n (a, b) = 1 n { i : 1 i n, a < x i b }. Ë ÐØ ½ ÂÓ ÒØÓ ½ ½º½ ÌÓ ÒÒ ÝÝ Ø Ð ØÓØ º º º º º º º º º º º º º º º º º º ½ ½º¾ À Ú ØÙØ Ö Ú Ò Ø ÑÔ Ö Ø ÙÑ Ø º º º º º º º º º º º ½ ½º ÌÓ ÒÒ ÝÝ Ñ ÐÐ Ø º º º º º º º º º º º º º º º º º º º º º º º ½º º½

Lisätiedot

À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ À ÄËÁÆ ÇÊË ÍÆÁÎ ÊËÁÌ Ì ÍÆÁÎ ÊËÁÌ Ç À ÄËÁÆÃÁ Ì ÙÒØ»Ç ØÓ ÙÐØ Ø»Ë Ø ÓÒ ÙÐØÝ Ä ØÓ ÁÒ Ø ØÙØ ÓÒ Ô ÖØÑ ÒØ Ì Ö ØØ Ö ÙØ ÓÖ ÇÐÐ ÇÖ ÖÚ ÌÝ Ò Ò

À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ À ÄËÁÆ ÇÊË ÍÆÁÎ ÊËÁÌ Ì ÍÆÁÎ ÊËÁÌ Ç À ÄËÁÆÃÁ Ì ÙÒØ»Ç ØÓ ÙÐØ Ø»Ë Ø ÓÒ ÙÐØÝ Ä ØÓ ÁÒ Ø ØÙØ ÓÒ Ô ÖØÑ ÒØ Ì Ö ØØ Ö ÙØ ÓÖ ÇÐÐ ÇÖ ÖÚ ÌÝ Ò Ò ÝÚ ÝÑ Ô Ú ÖÚÓ Ò ÖÚÓ Ø Ð Ã ÒÓØ Ó Ø Ò Ò ÙÖÓÚ Ö Ó Ò ØÝ ØØ Ø ÇÐÐ ÇÖ ÖÚ À Ð Ò ¾º º¾¼¼ À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ Ì ØÓ Ò ØØ ÐÝØ Ø Ò Ð ØÓ À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ À ÄËÁÆ ÇÊË ÍÆÁÎ ÊËÁÌ Ì ÍÆÁÎ ÊËÁÌ Ç À ÄËÁÆÃÁ Ì ÙÒØ»Ç ØÓ ÙÐØ

Lisätiedot

:: γ1. g 1. :: γ2. g 2

:: γ1. g 1. :: γ2. g 2 ÌÝÝÔÔ Ú ØØ Ø ¹ Ý ÝÑÝ Ø º º¾ Ò ÑÙÙØØÙ Ò Ý ÝÑÝ Ð Ø x g Ò e? :: α Ö Ø Ø Ò ÓÐ ÐÐ Ø ÑÓ Ò Ô Ö Ñ ØÖ ØØ ÑÒ ÙÒ Ø ÓÒ ÑÙØØ À ÐÐ ÝÐ Ø Ò ÐÐ ÑÙÙØØÙ Ó ÐÐ ÐÑ ÒØÙ ØÝÝÔÔ ÐÙÓ Ð Ó º Ë Ø ÑÙØ ÑÑ Ò ÑÓÒ Ý ÝÑÝ Ð Ø p g Ò e? ::

Lisätiedot

T 2. f T (x)e i2π k T x dx. c k e i2π k T x = x dx. c k e i2π k T x = k Z. f T (x) =

T 2. f T (x)e i2π k T x dx. c k e i2π k T x = x dx. c k e i2π k T x = k Z. f T (x) = º ÓÙÖÖ¹ÑÙÙÒÒÓ ÓÙÖÖ Ò ÒØÖÐ Ð Ù ¹ ÓÐÐ Ò ÙÒ Ø ÓÒ f(x) PC(R) º½ ÓÙÖÖ¹ Ò ÐÝÝ º ÒÐ Òµ ÅÖ Ø ÐÐÒ T ¹ ÓÐÐ Ò Ò ÙÒ Ø Ó f T (x) = f(x), T 2 < x < T 2, ÃÓÑÔÐ Ò Ò ÓÙÖÖ¹ÖÖÓ Ò c k = 1 T T 2 T 2 f T (x)e i2π k T x dx.

Lisätiedot

3D piirron liukuhihna (3D Graphics Pipeline) Sovellus/mallinnus Geometrian käsittely Rasterointi/piirto

3D piirron liukuhihna (3D Graphics Pipeline) Sovellus/mallinnus Geometrian käsittely Rasterointi/piirto ØÙغ Ø Ò ÐÐ Ò Ò ÝÐ ÓÔ ØÓ Ì ÑÔ Ö Ò È Ð Ó ÐÑÓ ÒØ Ö Ò Ô ÖØÓ ÒØØ ÈÙ ÒØØ ºÔÙ Ç ÐÑ ØÓØ Ò ¹ Ö Ò Ô ÖØÑ Ò Ò ÙÚ Ø Ò Ù Ò Ð Ù Ù Ò Ò Ô Ô Ð Ò µ ÚÙÐÐ Ö Ð Ù Ù Ò Ö Ø ØÓ ÙÐ Ð Ù Ù Ò Ò Ö Ú Ò ÙØØ ÒÒ Ò Ù Ò Ô ÖÖ ØÒ ÖÙÙ ÙÐÐ Ö

Lisätiedot

Ë ÐØ ½ ÂÓ ÒØÓ ½ ¾ Ý ÒØØ Ð Ò Ò ÓÒ Ò Ù ÓÒ ÐÑ ¾ ¾º½ ÅÖ Ø ÐÑ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ¾ ¾º¾ Ý ÒØØ Ð Ø Ò ÒÖ Ð Ò ÓÒ Ð

Ë ÐØ ½ ÂÓ ÒØÓ ½ ¾ Ý ÒØØ Ð Ò Ò ÓÒ Ò Ù ÓÒ ÐÑ ¾ ¾º½ ÅÖ Ø ÐÑ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ¾ ¾º¾ Ý ÒØØ Ð Ø Ò ÒÖ Ð Ò ÓÒ Ð Ý ÒØØ Ð Ø ÒÖ Ð Ø ÒØØ Ì Ò À Ð Ò ¾ º½¼º¾¼¼ ÌÙØ ÐÑ À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ Ì ØÓ Ò ØØ ÐÝØ Ø Ò Ð ØÓ Ë ÐØ ½ ÂÓ ÒØÓ ½ ¾ Ý ÒØØ Ð Ò Ò ÓÒ Ò Ù ÓÒ ÐÑ ¾ ¾º½ ÅÖ Ø ÐÑ º º º º º º º º º º º º º º º º º º º º º º º º º º º

Lisätiedot

ÌÑ ØÙØ ÐÑ ØØ Ð Ð Ô Ò ÐÙ Ù ØØ Ò ØØÝÑ Ø ØØÑ Øº ÐÙ ¹ ØØ Ð ÑÑ Ñ Ø Ñ ØØ Ø Ñ ÐÐ Ó Ò ÚÙÐÐ Ñ Ø Ñ Ø Ò ÓÔÔ Ñ ÐÐ ÚÐØØÑØØ ÑØ ÐÙÓÒÒÓÐÐ Ø ÐÙÚÙØ ÚÓ Ò ÓÒ ØÖÙÓ ÓÐÑ Ô Ý

ÌÑ ØÙØ ÐÑ ØØ Ð Ð Ô Ò ÐÙ Ù ØØ Ò ØØÝÑ Ø ØØÑ Øº ÐÙ ¹ ØØ Ð ÑÑ Ñ Ø Ñ ØØ Ø Ñ ÐÐ Ó Ò ÚÙÐÐ Ñ Ø Ñ Ø Ò ÓÔÔ Ñ ÐÐ ÚÐØØÑØØ ÑØ ÐÙÓÒÒÓÐÐ Ø ÐÙÚÙØ ÚÓ Ò ÓÒ ØÖÙÓ ÓÐÑ Ô Ý Ä Ô Ò ÐÙ Ù ØØ Ò ØØÑ Ò Ò Ð Ñ Ô Ð Ò ÚÙÐÐ Î ÐÐ Ã ÒÒÙÒ Ò Å Ø Ñ Ø Ò ÔÖÓ Ö Ù ¹ØÙØ ÐÑ ÂÝÚ ÝÐÒ ÝÐ ÓÔ ØÓ Å Ø Ñ Ø Ò Ø Ð ØÓØ Ø Ò Ð ØÓ ËÝ Ý ¾¼¼ ÌÑ ØÙØ ÐÑ ØØ Ð Ð Ô Ò ÐÙ Ù ØØ Ò ØØÝÑ Ø ØØÑ Øº ÐÙ ¹ ØØ Ð ÑÑ Ñ Ø Ñ ØØ Ø

Lisätiedot

ÌÍÊÍÆ ÄÁÇÈÁËÌÇ Å Ø Ñ Ø Ò Ø Ð ØÓØ Ø Ò Ð ØÓ ÃÇÀÇ Ì ÊÇ ÇÔØ ÑÓ ÒØ ÐÙ ÓÐ ÐÐ ÈÖÓ Ö Ù ¹ØÙØ ÐÑ º º Å Ø Ñ Ø ÐÓ ÙÙ ¾¼½ ÇÔØ ÑÓ ÒØ ÓÒ ÓÚ ÐÐ ØÙÒ Ñ Ø Ñ Ø Ò Ó ¹ ÐÙ Ó

ÌÍÊÍÆ ÄÁÇÈÁËÌÇ Å Ø Ñ Ø Ò Ø Ð ØÓØ Ø Ò Ð ØÓ ÃÇÀÇ Ì ÊÇ ÇÔØ ÑÓ ÒØ ÐÙ ÓÐ ÐÐ ÈÖÓ Ö Ù ¹ØÙØ ÐÑ º º Å Ø Ñ Ø ÐÓ ÙÙ ¾¼½ ÇÔØ ÑÓ ÒØ ÓÒ ÓÚ ÐÐ ØÙÒ Ñ Ø Ñ Ø Ò Ó ¹ ÐÙ Ó ÇÔØ ÑÓ ÒØ ÐÙ ÓÐ ÐÐ ÈÖÓ Ö Ù¹ØÙØ ÐÑ Ì ÖÓ ÃÓ Ó Å Ø Ñ Ø Ò Ø Ð ØÓØ Ø Ò Ð ØÓ ÌÙÖÙÒ Ð ÓÔ ØÓ ½ º ÐÓ ÙÙØ ¾¼½ ÌÍÊÍÆ ÄÁÇÈÁËÌÇ Å Ø Ñ Ø Ò Ø Ð ØÓØ Ø Ò Ð ØÓ ÃÇÀÇ Ì ÊÇ ÇÔØ ÑÓ ÒØ ÐÙ ÓÐ ÐÐ ÈÖÓ Ö Ù ¹ØÙØ ÐÑ º º Å Ø Ñ Ø ÐÓ

Lisätiedot

à ÑÖ Ò ÙÙ Ò ÙÒØÓÐ Ò Ò ÓÖ ÓØ ÓÒ ÓÖ ÓÑ Ö Ò Ð Ò ÑÖÝØÝÑ Ò Ò ËÁË ÄÌ ËÁË ÄÌ Ë ÐØ ½ ÂÓ ÒØÓ ½º½ ÌÙØ ÑÙ Ý ÝÑÝ ØÙØ ÐÑ Ò Ö ÒÒ º º º º º º º º º º º º º º º º º ½º¾ ÙÒØÓÐ Ò Ñ Ö Ò Ø ËÙÓÑ º º º º º º º º º º º º º

Lisätiedot

Referenced. Object. StateSet. Node. Geode

Referenced. Object. StateSet. Node. Geode ÇÔ ÒË Ò Ö Ô ¹Ó Ø Ì ÑÓºÌÓ Ú Ò ÒØѺ Ùغ ÌÑ Ó ÙÑ ÒØØ ÓÒ ØÝ Ò Ø Ô Ú Ø ØÒ Ø ÖÔ Ò ÑÙ Òº ½ Ø ÇÔ ÒË Ò Ö Ô ÇË µ ÓÒ ÇÔ Ò Ä Ò Ô Ö ÒÒ ØØÙ ¹ÙÓ Ö¹ ØÓ Ó ÓÒ Ú Ô Ø Ø Ú Ó ØÓ Ñ ÑÓÒ ÝÑÔÖ Ø º ÇË Ó¹ ÙÑ ÒØÓ ØÙ ÓÜÝ Ò¹Ó Ñ ØÓÒ

Lisätiedot

Ì ØÓØÙÖÚ Ò ÓØØ ÐÙØ Á Ì ØÓØÙÖÚ ÓÒ Ð º Ë ÙÖ Ú Ð Ø ÓÒ ÐÙ Ø ÐØÙ Ø ØÓØÙÖÚ Ò Ö Ó ¹ ÐÙ Ø º Â ÓØØ ÐÙ ÓÒ Ñ Ð Ó ÝÐ Ò Ò Ø ØÒ ÝÐ Ø ØÓØÙÖÚ Ò ÓÔÔ Ö Ó º À ÐÐ ÒÒÓÐÐ Ò

Ì ØÓØÙÖÚ Ò ÓØØ ÐÙØ Á Ì ØÓØÙÖÚ ÓÒ Ð º Ë ÙÖ Ú Ð Ø ÓÒ ÐÙ Ø ÐØÙ Ø ØÓØÙÖÚ Ò Ö Ó ¹ ÐÙ Ø º  ÓØØ ÐÙ ÓÒ Ñ Ð Ó ÝÐ Ò Ò Ø ØÒ ÝÐ Ø ØÓØÙÖÚ Ò ÓÔÔ Ö Ó º À ÐÐ ÒÒÓÐÐ Ò ÌÁ ÌÇÌÍÊÎ Ó Á ̺ à ÖÚ ËÝÝ ÙÙ ¾¼¼ ̺ à ÖÚ µ ÌÁ ÌÇÌÍÊÎ Ó Á ËÝÝ ÙÙ ¾¼¼ ½» ½ Ì ØÓØÙÖÚ Ò ÓØØ ÐÙØ Á Ì ØÓØÙÖÚ ÓÒ Ð º Ë ÙÖ Ú Ð Ø ÓÒ ÐÙ Ø ÐØÙ Ø ØÓØÙÖÚ Ò Ö Ó ¹ ÐÙ Ø º  ÓØØ ÐÙ ÓÒ Ñ Ð Ó ÝÐ Ò Ò Ø ØÒ ÝÐ Ø ØÓØÙÖÚ Ò

Lisätiedot

À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ À ÄËÁÆ ÇÊË ÍÆÁÎ ÊËÁÌ Ì ÍÆÁÎ ÊËÁÌ Ç À ÄËÁÆÃÁ Ì ÙÒØ»Ç ØÓ ÙÐØ Ø»Ë Ø ÓÒ ÙÐØÝ Ä ØÓ ÁÒ Ø ØÙØ ÓÒ Ô ÖØÑ ÒØ Å Ø Ñ ØØ ¹ÐÙÓÒÒÓÒØ Ø ÐÐ Ò Ò Ì Ö

À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ À ÄËÁÆ ÇÊË ÍÆÁÎ ÊËÁÌ Ì ÍÆÁÎ ÊËÁÌ Ç À ÄËÁÆÃÁ Ì ÙÒØ»Ç ØÓ ÙÐØ Ø»Ë Ø ÓÒ ÙÐØÝ Ä ØÓ ÁÒ Ø ØÙØ ÓÒ Ô ÖØÑ ÒØ Å Ø Ñ ØØ ¹ÐÙÓÒÒÓÒØ Ø ÐÐ Ò Ò Ì Ö ÝÚ ÝÑ Ô Ú ÖÚÓ Ò ÖÚÓ Ø Ð ÈÓÐÙÒ Ø ÒØ Ù Ò ÒØ Ò ÝÑÔÖ Ø Ô Ð È Ä ÓÒ Ò À Ð Ò º º¾¼¼ ÄÙùØÙØ ÐÑ À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ Ì ØÓ Ò ØØ ÐÝØ Ø Ò Ð ØÓ À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ À ÄËÁÆ ÇÊË ÍÆÁÎ ÊËÁÌ Ì ÍÆÁÎ ÊËÁÌ Ç À ÄËÁÆÃÁ Ì ÙÒØ»Ç

Lisätiedot

ÄÇÄÁ ÇÈÌÁÅÇÁÆÌÁ ÈÇËÁÌÊÇÆÁÅÁËËÁÇÌÇÅÇÊÁ¹ÃÍÎÆÌÅÁËÆ ÄÁÁÌÌÎËË ÅÄÄÁÆÌÅÁËËË Ã ËÖÓÐÑ ÈÖÓ ÖÙ ¹ØÙØÐÑ ÌÑÑÙÙ ¾¼¼ ÌÍÊÍÆ ÄÁÇÈÁËÌÇ ÅÌÅÌÁÁÃÆ ÄÁÌÇË ¾¼¼½ ÌÍÊÃÍ ÌÍÊÍÆ ÄÁÇÈÁËÌÇ ÅØÑØÒ ÐØÓ ËÊÀÇÄÅ ÃÁË ÐÓÐ ÓÔØÑÓÒØ ÔÓ ØÖÓÒÑ ÓØÓÑÓÖ¹

Lisätiedot

Ë ÐØ ½ ÂÓ ÒØÓ ½ ¾ Ì Ø ÐÙÑ ÐÐ ÒÒÙ ½ ¾º½ Ì Ø ÐÙÑ ÐÐ ÒÒÙ Ò ØÓÖ º º º º º º º º º º º º º º º º º º ¾ ¾º¾ ËØÓ Ø Ò Ò Ø Ø ÐÙÑ ÐÐ ÒÒÙ º º º º º º º º º º º º

Ë ÐØ ½ ÂÓ ÒØÓ ½ ¾ Ì Ø ÐÙÑ ÐÐ ÒÒÙ ½ ¾º½ Ì Ø ÐÙÑ ÐÐ ÒÒÙ Ò ØÓÖ º º º º º º º º º º º º º º º º º º ¾ ¾º¾ ËØÓ Ø Ò Ò Ø Ø ÐÙÑ ÐÐ ÒÒÙ º º º º º º º º º º º º Šع¾º ½¼ ËÓÚ ÐÐ ØÙÒ Ñ Ø Ñ Ø Ò Ö Ó ØÝ Ø º½º¾¼¼ Ì Ø ÐÙÒ ÑÙÐÓ ÒØ ÑÔÙÑ Ø ÖÚ Ò Ö Ø ÐÑ Ò Ù Ø ÒÒÙ Ø Ó ÙÙ Ì Ò ÐÐ Ò Ò ÓÖ ÓÙÐÙ Ì Ò ÐÐ Ò Ý Ò Ñ Ø Ñ Ø Ò Ó ØÓ ËÝ Ø Ñ Ò ÐÝÝ Ò Ð ÓÖ ØÓÖ Ó Â ÒÒ Ä ØÓÒ Ò ¼¾ Ë ÐØ ½ ÂÓ ÒØÓ

Lisätiedot

A B P(A B) = P(A B) P(K) = 4 ( 52 5) =

A B P(A B) = P(A B) P(K) = 4 ( 52 5) = ËÁË ÄÌ ¾º º½ ÀÝÔ Ö ÓÑ ØÖ Ò Ò ÙÑ º º º º º º º º º º º º º º º ¾º º¾ Ì Ö ØÙ ÓØ ÒØ Ø ÓÐÐ ÙÙ º º º º º º º º º º º º º º ¾º ÇØ ÒØ Ô Ð ÙØØ Ò º º º º º º º º º º º º º º º º º º º º º º º º ¾º ÒÓÑ ÙÑ º º º

Lisätiedot

Ì Ê ÑÓ È Ø Ò Ò Ø Ý Ø ÓØ Ö Ô Ø Òº ÝÙº ÌÝ Ò Ò Ñ ÃÝØ ØØÚÝÝ ÙÙÒÒ ØØ ÐÙ Ó Ò Ó ÐÑ ØÓÔÖÓ Ì ØÐ Ò Ò Ð Í Ð ØÝ Ò Ò Ò Ó ØÛ Ö ÔÖÓ ÌÝ Ì ØÓØ Ò Ò ÔÖÓ Ö Ù ¹ØÙØ ÐÑ Ë ÚÙ

Ì Ê ÑÓ È Ø Ò Ò Ø Ý Ø ÓØ Ö Ô Ø Òº ÝÙº ÌÝ Ò Ò Ñ ÃÝØ ØØÚÝÝ ÙÙÒÒ ØØ ÐÙ Ó Ò Ó ÐÑ ØÓÔÖÓ Ì ØÐ Ò Ò Ð Í Ð ØÝ Ò Ò Ò Ó ØÛ Ö ÔÖÓ ÌÝ Ì ØÓØ Ò Ò ÔÖÓ Ö Ù ¹ØÙØ ÐÑ Ë ÚÙ Ê ÑÓ È Ø Ò Ò ÃÝØ ØØÚÝÝ ÙÙÒÒ ØØ ÐÙ Ó Ò Ó ÐÑ ØÓÔÖÓ Ì ØÓØ Ò Ò ÔÖÓ Ö Ù ¹ØÙØ ÐÑ ¾ º ÓÙÐÙ ÙÙØ ¾¼¼ ÂÝÚ ÝÐÒ ÝÐ ÓÔ ØÓ Ì ØÓØ Ò Ò Ð ØÓ ÂÝÚ ÝÐ Ì Ê ÑÓ È Ø Ò Ò Ø Ý Ø ÓØ Ö Ô Ø Òº ÝÙº ÌÝ Ò Ò Ñ ÃÝØ ØØÚÝÝ ÙÙÒÒ ØØ ÐÙ Ó Ò

Lisätiedot

a b = abº Z Q R C + : N N N, +(m,n) = m + n ( Ð (m,n) m + n), : N N N, (m,n) = m n (= mn) ( Ð (m,n) mn). A B (A,B) A Bº

a b = abº Z Q R C + : N N N, +(m,n) = m + n ( Ð (m,n) m + n), : N N N, (m,n) = m n (= mn) ( Ð (m,n) mn). A B (A,B) A Bº ÄÙ Ù ÐÙ Ø ÂÙ Ä Ö ÂÓÙÒ È Ö ÓÒ Ò ÄÙ ÐÐ ÌÑ ÑÓÒ Ø Ô ÖÙ ØÙÙ ÂÓÙÒ È Ö Ó Ò ÚÙÓ Ò ¾¼¼ ¾¼¼ ÂÙ Ä Ö Ò ÚÙÓÒÒ ¾¼¼ Ô ØÑ Ò ÄÙ Ù Ð٠ع ÙÖ Ò ÐÙ ÒØÓ Òº ÅÓÒ Ø Ò Ò Ò Ñ Ø ¹ Ö Ð ÓÒ Ø Ö Ó Ø ØØÙ Ú ÓÒ Ñ ØØ ÐÐ ÐÙ ÒØÓ ÙÖ ÐÐ Ð ÑÙ

Lisätiedot

ÂÙÐ Ò Ú Ñ Ò Ò Ö ØÖÙ ØÙÙÖ Ø ÇÒ ØÖ Ý Ø ØÓÑ Ò ÙÐ Ò Ò Ú Ò Ò ØÓ ÐÐ Ò Ò ÐØ ÐÙÓØ ØØ Ú Ø ØÓ Ò º ÃÓ Ò Ð Ö ÓÒ ½ Ò ÑÑ Ò ÓØØ ÒÙØ Ú ÖÑ ÒØ Ø Ó ÓÒ ÙÐ Ò Ò Ú Ò Ò ÐØ Ð

ÂÙÐ Ò Ú Ñ Ò Ò Ö ØÖÙ ØÙÙÖ Ø ÇÒ ØÖ Ý Ø ØÓÑ Ò ÙÐ Ò Ò Ú Ò Ò ØÓ ÐÐ Ò Ò ÐØ ÐÙÓØ ØØ Ú Ø ØÓ Ò º ÃÓ Ò Ð Ö ÓÒ ½ Ò ÑÑ Ò ÓØØ ÒÙØ Ú ÖÑ ÒØ Ø Ó ÓÒ ÙÐ Ò Ò Ú Ò Ò ÐØ Ð ÌÁ ÌÇÌÍÊÎ ÇË ÁÁÁ ÂÙÐ Ò Ú Ñ Ò Ò Ö ØÖÙ ØÙÙÖ Ì ÑÓ Ã ÖÚ ¾º½½º¾¼¼ Ì ÑÓ Ã ÖÚ µ ÌÁ ÌÇÌÍÊÎ ÇË ÁÁÁ ÂÙÐ Ò Ú Ñ Ò Ò Ö ØÖÙ ØÙÙÖ ¾º½½º¾¼¼ ½» ÂÙÐ Ò Ú Ñ Ò Ò Ö ØÖÙ ØÙÙÖ Ø ÇÒ ØÖ Ý Ø ØÓÑ Ò ÙÐ Ò Ò Ú Ò Ò ØÓ ÐÐ Ò Ò ÐØ ÐÙÓØ

Lisätiedot

Ì ÓÚ Ö ÓØ Ð Ò Ã ÐÐÙÒ Å Ø Ñ Ø Ò ÈÖÓ Ö Ù¹ØÙØ ÐÑ Å Ø Ñ Ø Ò Ø Ð ØÓØ Ø Ò Ð ØÓ ÂÝÚ ÝÐÒ ÝÐ ÓÔ ØÓ ËÝ Ý ¾¼¼ Ë ÐØ ÂÓ ÒØÓ ½ ½ À ØÓÖ ¾ Î Ö ÓØ ÓÖ ¾º½ Î Ö ÓÒ ÚÖ ØÝ º º º º º º º º º º º º º º º º º º º º º º º º º

Lisätiedot

ÌÍÊÍÆ ÄÁÇÈÁËÌÇ Å Ø Ñ Ø Ò Ð ØÓ ÃÍÄ ÊÁÁÃà ÔÝ ØÐ Ø ÈÖÓ Ö Ù ¹ØÙØ ÐÑ º ¾ Ð Ø º Å Ø Ñ Ø ÀÙ Ø ÙÙ ¾¼¼ ÌÙØ ÐÑ Ò Ò ÓÒ ÔÝ ØРغ Ì Ö Ó ØÙ Ò ÓÒ Ø Ö Ø ÐÐ Ö Ð ÔÝ ¹ Ø

ÌÍÊÍÆ ÄÁÇÈÁËÌÇ Å Ø Ñ Ø Ò Ð ØÓ ÃÍÄ ÊÁÁÃà ÔÝ ØÐ Ø ÈÖÓ Ö Ù ¹ØÙØ ÐÑ º ¾ Ð Ø º Å Ø Ñ Ø ÀÙ Ø ÙÙ ¾¼¼ ÌÙØ ÐÑ Ò Ò ÓÒ ÔÝ ØРغ Ì Ö Ó ØÙ Ò ÓÒ Ø Ö Ø ÐÐ Ö Ð ÔÝ ¹ Ø È ÀÌ Ä Ì Ê ÙÐ ÈÖÓ Ö Ù ¹ØÙØ ÐÑ ÀÙ Ø ÙÙ ¾¼¼ Å Ì Å ÌÁÁÃ Æ Ä ÁÌÇË ÌÍÊÍÆ ÄÁÇÈÁËÌÇ ÌÍÊÍÆ ÄÁÇÈÁËÌÇ Å Ø Ñ Ø Ò Ð ØÓ ÃÍÄ ÊÁÁÃà ÔÝ ØÐ Ø ÈÖÓ Ö Ù ¹ØÙØ ÐÑ º ¾ Ð Ø º Å Ø Ñ Ø ÀÙ Ø ÙÙ ¾¼¼ ÌÙØ ÐÑ Ò Ò ÓÒ ÔÝ ØРغ Ì Ö Ó ØÙ

Lisätiedot

λ (i,j) (i 1,j) = µ R j, i = 1,... N B, j = 0,... N R λ (i,j) (i,j 1) = µ B i, i = 0,... N B, j = 1,... N R λ (i,j) (k,l) = 0, muulloin.

λ (i,j) (i 1,j) = µ R j, i = 1,... N B, j = 0,... N R λ (i,j) (i,j 1) = µ B i, i = 0,... N B, j = 1,... N R λ (i,j) (k,l) = 0, muulloin. Šع¾º½¼ ËÓÚ ÐÐ ØÙÒ Ñ Ø Ñ Ø Ò Ö Ó ØÝ Ø ¾¼¼ ¹¼¾¹½¾ Ì Ø ÐÙÒ Ñ ÐÐ ÒÒÙ Ø Å Ö ÓÚ Ò Ø ÙÐÐ Ì Ò ÐÐ Ò Ò ÓÖ ÓÙÐÙ Ì Ò ÐÐ Ò Ý Ò Ñ Ø Ñ Ø Ò Ó ØÓ ËÝ Ø Ñ Ò ÐÝÝ Ò Ð ÓÖ ØÓÖ Ó Ä ÙÖ ÂÙ Ò Ã Ò ¼¼ È Ë ÐØ ½ ÂÓ ÒØÓ ½ ¾ Ì Ø ÐÙÑ

Lisätiedot

Aktiivisten DNA-muutosten seulonta riippuvuusmalleilla Elektroniikan, tietoliikenteen ja automaation tiedekunta

Aktiivisten DNA-muutosten seulonta riippuvuusmalleilla Elektroniikan, tietoliikenteen ja automaation tiedekunta ÇÐÐ ¹È ÀÙÓÚ Ð Ò Ò Aktiivisten DNA-muutosten seulonta riippuvuusmalleilla Elektroniikan, tietoliikenteen ja automaation tiedekunta ÔÐÓÑ ØÝ Ó ÓÒ Ø ØØÝ ÓÔ ÒÒÝØØ Ò Ø Ö Ø ØØ Ú ÔÐÓÑ ¹ Ò Ò Ö Ò ØÙØ ÒØÓ Ú ÖØ Ò

Lisätiedot

ÂÓ ÒØÓ ½ Ì ØÓ Ò ØØ ÐÝØ ÓÖ Ø ÒÒÓ ØÙÒ ÐÐ ÙÖ ØØ Ð Ö Ð Ø Ð ÒØ Ñ ÐÐ º ØÝ Ó Ø ÚÙÙØ Ø Òºµ Ç ÐÑÓ ÒÒ Ø ÒÒÓ ØÙÒ ÐÐ ØØ Ð Ö Ð Ø Ó ÐÑÓ ÒØ ¹ Ó ÐÑ Ò ÙÙÒÒ ØØ ÐÙØ Ô º

ÂÓ ÒØÓ ½ Ì ØÓ Ò ØØ ÐÝØ ÓÖ Ø ÒÒÓ ØÙÒ ÐÐ ÙÖ ØØ Ð Ö Ð Ø Ð ÒØ Ñ ÐÐ º ØÝ Ó Ø ÚÙÙØ Ø Òºµ Ç ÐÑÓ ÒÒ Ø ÒÒÓ ØÙÒ ÐÐ ØØ Ð Ö Ð Ø Ó ÐÑÓ ÒØ ¹ Ó ÐÑ Ò ÙÙÒÒ ØØ ÐÙØ Ô º ÂÓ ÒØÓ ½ ½ ÂÓ ÒØÓ ÃÙÖ ÐÐ ØÙØÙ ØÙØ Ò Ô ÖÙ Ø Ò ÙÒ Ø ÓÒ Ð Ø Ó ÐÑÓ ÒÒ Ø Ö ØÝ Ø Ñ Ø Ò ÖÓ ØÙØÙ Ø Ø Ð Ô ÖÙ Ø Ø Ó ÐÑÓ ÒÒ Ø Ó ÐÑÓ ÒØ Ð Ø À ÐÐ ÓÐÐ ÓÒ Ô Ó Ó ÐÑÓ ÙÒ Ø ÓÒ Ð Ø º ½ ÂÓ ÒØÓ ½ Ì ØÓ Ò ØØ ÐÝØ ÓÖ Ø ÒÒÓ ØÙÒ

Lisätiedot

ÁÁ Ì Ö Ø Ó ÌÙÖÙÒ Ò Ì Ö Ø ÝÚ ÝØØÝ ÄÙÓÒÒÓÒØ Ø Ò ÝÑÔÖ Ø Ø Ò Ò Ø ÙÒÒ Ò Ø ÙÒØ Ò ÙÚÓ ØÓÒ Ó ÓÙ ½ º¼ º¾¼¼

ÁÁ Ì Ö Ø Ó ÌÙÖÙÒ Ò Ì Ö Ø ÝÚ ÝØØÝ ÄÙÓÒÒÓÒØ Ø Ò ÝÑÔÖ Ø Ø Ò Ò Ø ÙÒÒ Ò Ø ÙÒØ Ò ÙÚÓ ØÓÒ Ó ÓÙ ½ º¼ º¾¼¼ Å Ð Ë Ú Ð ÂÓ ÒØÓ Ð Ø ÓÖ Òº ØÖ ÙØ Ú Ø Ð Ø ÔÐÓÑ ØÝ ÁÁ Ì Ö Ø Ó ÌÙÖÙÒ Ò Ì Ö Ø ÝÚ ÝØØÝ ÄÙÓÒÒÓÒØ Ø Ò ÝÑÔÖ Ø Ø Ò Ò Ø ÙÒÒ Ò Ø ÙÒØ Ò ÙÚÓ ØÓÒ Ó ÓÙ ½ º¼ º¾¼¼ ÁÁÁ ÌÁÁÎÁËÌ ÄÅ Ì ÅÈ Ê Æ Ì ÃÆÁÄÄÁÆ Æ ÄÁÇÈÁËÌÇ Ì Ò ¹ ÐÙÓÒÒÓÒØ

Lisätiedot

ËÁË ÄÌ ¾º º½ ÀÝÔ Ö ÓÑ ØÖ Ò Ò ÙÑ º º º º º º º º º º º º º º º ¾º º¾ Ì Ö ØÙ ÓØ ÒØ Ø ÓÐÐ ÙÙ º º º º º º º º º º º º º º ¾º ÇØ ÒØ Ô Ð ÙØØ Ò º º º º º º º

ËÁË ÄÌ ¾º º½ ÀÝÔ Ö ÓÑ ØÖ Ò Ò ÙÑ º º º º º º º º º º º º º º º ¾º º¾ Ì Ö ØÙ ÓØ ÒØ Ø ÓÐÐ ÙÙ º º º º º º º º º º º º º º ¾º ÇØ ÒØ Ô Ð ÙØØ Ò º º º º º º º Ë ÐØ ½ ÂÓ ÒØÓ ½ ½º½ ÌÓ ÒÒ ÝÝ Ø Ð ØÓØ º º º º º º º º º º º º º º º º º º ½ ½º¾ À Ú ØÙØ Ö Ú Ò Ø ÑÔ Ö Ø ÙÑ Ø º º º º º º º º º º º ½ ½º ÌÓ ÒÒ ÝÝ Ñ ÐÐ Ø º º º º º º º º º º º º º º º º º º º º º º º ½º º½

Lisätiedot

Hajasijoitettujen päätelaitteiden ohjelmistojen etähallintaratkaisu Elektroniikan, tietoliikenteen ja automaation tiedekunta

Hajasijoitettujen päätelaitteiden ohjelmistojen etähallintaratkaisu Elektroniikan, tietoliikenteen ja automaation tiedekunta È Ä Ø Hajasijoitettujen päätelaitteiden ohjelmistojen etähallintaratkaisu Elektroniikan, tietoliikenteen ja automaation tiedekunta ÔÐÓÑ ØÝ Ó ÓÒ Ø ØØÝ ÓÔ ÒÒÝØØ Ò Ø Ö Ø ØØ Ú ÔÐÓÑ ¹ Ò Ò Ö Ò ØÙØ ÒØÓ Ú ÖØ Ò

Lisätiedot

À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ À ÄËÁÆ ÇÊË ÍÆÁÎ ÊËÁÌ Ì ÍÆÁÎ ÊËÁÌ Ç À ÄËÁÆÃÁ Ì ÙÒØ»Ç ØÓ ÙÐØ Ø»Ë Ø ÓÒ ÙÐØÝ Ä ØÓ ÁÒ Ø ØÙØ ÓÒ Ô ÖØÑ ÒØ Å Ø Ñ ØØ ¹ÐÙÓÒÒÓÒØ Ø ÐÐ Ò Ò Ì Ö

À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ À ÄËÁÆ ÇÊË ÍÆÁÎ ÊËÁÌ Ì ÍÆÁÎ ÊËÁÌ Ç À ÄËÁÆÃÁ Ì ÙÒØ»Ç ØÓ ÙÐØ Ø»Ë Ø ÓÒ ÙÐØÝ Ä ØÓ ÁÒ Ø ØÙØ ÓÒ Ô ÖØÑ ÒØ Å Ø Ñ ØØ ¹ÐÙÓÒÒÓÒØ Ø ÐÐ Ò Ò Ì Ö ÁÖÖÐ Ø Ò Ò ¹ Ö ÑÓÓØØÓÖ Â ÒÒ Ä Ù Ö Ò Ò À Ð Ò ¾ º º¾¼¼ Ç ÐÑ ØÓØÙÓØ ÒØÓ Ø ØÓ ÓÒ Ô Ð Ø Ñ Ò Ö À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ Ì ØÓ Ò ØØ ÐÝØ Ø Ò Ð ØÓ À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ À ÄËÁÆ ÇÊË ÍÆÁÎ ÊËÁÌ Ì ÍÆÁÎ ÊËÁÌ Ç À ÄËÁÆÃÁ Ì ÙÒØ»Ç

Lisätiedot

ËÚÝØÝ Ò µ ÓÒ Ñ Ò ÔÑÖ Ò Ò Ø ÖÑ ÓÒ ÝØØ Ø ØÓ ÓÒ Ö ÓÒ ÐÓ ØÓÒÒÙØ Ñ Ð Ó Ù Ò Ò Ð ÙÔ Ö Ø Ñ Ö ØÝ Ø Ã ØØ ÐÐ Ø Ö Ó Ø Ø Ò ÒÝ ÝÒ Ø Ò Ó Ø Ó ÐÐ Ð Ø Ò ÚÖ Ú Ð ØÙ Ø ÔÔ

ËÚÝØÝ Ò µ ÓÒ Ñ Ò ÔÑÖ Ò Ò Ø ÖÑ ÓÒ ÝØØ Ø ØÓ ÓÒ Ö ÓÒ ÐÓ ØÓÒÒÙØ Ñ Ð Ó Ù Ò Ò Ð ÙÔ Ö Ø Ñ Ö ØÝ Ø Ã ØØ ÐÐ Ø Ö Ó Ø Ø Ò ÒÝ ÝÒ Ø Ò Ó Ø Ó ÐÐ Ð Ø Ò ÚÖ Ú Ð ØÙ Ø ÔÔ ØÙغ Ø Ò ÐÐ Ò Ò ÝÐ ÓÔ ØÓ Ì ÑÔ Ö Ò È Ð Ó ÐÑÓ ÒØ Ë Ò ² Ö Ø ÒØØ ÈÙ ÒØØ ºÔÙ Ç ÐÑ ØÓØ Ò ËÚÝØÝ Ò µ ÓÒ Ñ Ò ÔÑÖ Ò Ò Ø ÖÑ ÓÒ ÝØØ Ø ØÓ ÓÒ Ö ÓÒ ÐÓ ØÓÒÒÙØ Ñ Ð Ó Ù Ò Ò Ð ÙÔ Ö Ø Ñ Ö ØÝ Ø Ã ØØ ÐÐ Ø Ö Ó Ø Ø Ò ÒÝ ÝÒ Ø

Lisätiedot

(a,b)(c,d) = (ac bd,ad + bc).

(a,b)(c,d) = (ac bd,ad + bc). ÃÓÑÔÐ ÐÙÚÙ Ø ½ ½º ÂÓ ÒØÓ ØÐ ÐÐ x + 1 = 0 ÓÐ Ö Ø Ù Ö Ð ÐÙ Ù Ò ÓÙ Ó Ó Ó Ò Ö Ð ÐÙ¹ ÚÙÒ ØÓ Ò Ò ÔÓØ Ò ÓÒ ÔÓ Ø Ú Ò Òº ÂÓØØ ØÐÐ Ý ØÐ ÐÐ Ø Ò Ö Ø Ù Ñ Ò ØÝØÝÝ Ð ÒØ Ö Ð ÐÙ Ù Ò ÓÙ Ó Ð ÑÐÐ Ò ÙÙ Ð Ó Ñ Ö ØÒ Ø¹ Ø ØÓ Ø

Lisätiedot

Ì Å ÈÙÐ Ò Ò Ø Ý Ø ÓØ Ñ ºÔÙÐ Ò Ò ÝÙº ÌÝ Ò Ò Ñ ÙØÓÑ Ø Ó ØÙ Ý Ø Ø Ù ÆÍÒ Ø¹Ø Ø Ù ÝÑÔÖ Ø Ì ØÐ Ò Ò Ð ÙØÓÑ Ø ÍÒ Ø Ì Ø Ò Ò ÆÍÒ Ø Ì Ø Ò ÒÚ ÖÓÒÑ ÒØ ÌÝ Ì ØÓØ Ò Ò

Ì Å ÈÙÐ Ò Ò Ø Ý Ø ÓØ Ñ ºÔÙÐ Ò Ò ÝÙº ÌÝ Ò Ò Ñ ÙØÓÑ Ø Ó ØÙ Ý Ø Ø Ù ÆÍÒ Ø¹Ø Ø Ù ÝÑÔÖ Ø Ì ØÐ Ò Ò Ð ÙØÓÑ Ø ÍÒ Ø Ì Ø Ò Ò ÆÍÒ Ø Ì Ø Ò ÒÚ ÖÓÒÑ ÒØ ÌÝ Ì ØÓØ Ò Ò Å ÈÙÐ Ò Ò ÙØÓÑ Ø Ó ØÙ Ý Ø Ø Ù ÆÍÒ Ø¹Ø Ø Ù ÝÑÔÖ Ø Ì ØÓØ Ò Ò Ò Ø ÒØÙØ ÐÑ ¾ º ÐÑ ÙÙØ ¾¼¼ ÂÝÚ ÝÐÒ ÝÐ ÓÔ ØÓ Ì ØÓØ Ò Ò Ð ØÓ ÂÝÚ ÝÐ Ì Å ÈÙÐ Ò Ò Ø Ý Ø ÓØ Ñ ºÔÙÐ Ò Ò ÝÙº ÌÝ Ò Ò Ñ ÙØÓÑ Ø Ó ØÙ Ý Ø Ø Ù ÆÍÒ Ø¹Ø Ø Ù

Lisätiedot

139/ /11034 = 0.58

139/ /11034 = 0.58 Ú ËÁË ÄÌ ÅÓÒ ÙÐÓØ Ø ÙÑ Ø ½ º½ à ÙÐÓØØ Ø ÙÑ Ø º º º º º º º º º º º º º º º º º º º º º ½ º½º½ Ê ÙÒ ÙÑ Ø ÓÐÐ Ø ÙÑ Ø º º º º º º º º º ½ º½º¾ ÓÐÐ Ò Ó ÓØÙ ÖÚÓÒ ÓÑ Ò ÙÙ º º º º º º º º º ½ º½º À Ö Ö Ø Ñ ÐÐ

Lisätiedot

Ð Ø Ù ÁÈË Ò ÁÈË ÓÒ ÁÈ¹Ú Ö ÓÔÖÓØÓ ÓÐÐ Ò Ð ÒÒÙ Ñ ÐÐ Ø ØÒ ÁÈ¹Ô ØØ Ò ÙÖ Ñ Ò Ò ÑÙÙÒØ Ñ Ò Òº ÁÈË ÓÒ ÝÒØÝÒÝØ ÙÙ Ò ÁÈÚ ¹ÔÖÓØÓ ÓÐÐ Ò Ý Ø Ý ÁÈÚ ÓÒ Ò ÁÈË Ò ÐÙÓÒØ

Ð Ø Ù ÁÈË Ò ÁÈË ÓÒ ÁÈ¹Ú Ö ÓÔÖÓØÓ ÓÐÐ Ò Ð ÒÒÙ Ñ ÐÐ Ø ØÒ ÁÈ¹Ô ØØ Ò ÙÖ Ñ Ò Ò ÑÙÙÒØ Ñ Ò Òº ÁÈË ÓÒ ÝÒØÝÒÝØ ÙÙ Ò ÁÈÚ ¹ÔÖÓØÓ ÓÐÐ Ò Ý Ø Ý ÁÈÚ ÓÒ Ò ÁÈË Ò ÐÙÓÒØ ÌÁ ÌÇÌÍÊÎ ÇË ÁÎ ÁÈË Ì ÑÓ Ã ÖÚ º½¾º¾¼¼ Ì ÑÓ Ã ÖÚ µ ÌÁ ÌÇÌÍÊÎ ÇË ÁÎ ÁÈË º½¾º¾¼¼ ½» Ð Ø Ù ÁÈË Ò ÁÈË ÓÒ ÁÈ¹Ú Ö ÓÔÖÓØÓ ÓÐÐ Ò Ð ÒÒÙ Ñ ÐÐ Ø ØÒ ÁÈ¹Ô ØØ Ò ÙÖ Ñ Ò Ò ÑÙÙÒØ Ñ Ò Òº ÁÈË ÓÒ ÝÒØÝÒÝØ ÙÙ Ò ÁÈÚ ¹ÔÖÓØÓ ÓÐÐ

Lisätiedot

Ruuhkanhallinta-algoritmien toiminta haasteellisissa tietoverkoissa Elektroniikan, tietoliikenteen ja automaation tiedekunta

Ruuhkanhallinta-algoritmien toiminta haasteellisissa tietoverkoissa Elektroniikan, tietoliikenteen ja automaation tiedekunta Ä ÊÓÔÔÓÒ Ò Ruuhkanhallinta-algoritmien toiminta haasteellisissa tietoverkoissa Elektroniikan, tietoliikenteen ja automaation tiedekunta ÔÐÓÑ ØÝ Ó ÓÒ Ø ØØÝ ÓÔ ÒÒÝØØ Ò Ø Ö Ø ØØ Ú ÔÐÓÑ ¹ Ò Ò Ö Ò ØÙØ ÒØÓ Ú

Lisätiedot

ÂÝÚ ÝÐÒ ÝÐ ÓÔ ØÓ Å Ø Ñ Ø Ò Ø Ð ØÓØ Ø Ò Ð ØÓ ÃÁÆÆÍÆ Æ ÌÇÈÁ Ê ÒÒÙ Ø Ò Ø Ò ÓÐÓ Ø Ò ÐÑ ØÓÐÐ Ø Ò Ø Ò Ú ÙØÙ ÙÒØÓ Ò ÐÑ Ò Ö ÓÒÔ ØÓ ÙÙØ Òº ÈÖÓ Ö Ù ¹ØÙØ ÐÑ º ½

ÂÝÚ ÝÐÒ ÝÐ ÓÔ ØÓ Å Ø Ñ Ø Ò Ø Ð ØÓØ Ø Ò Ð ØÓ ÃÁÆÆÍÆ Æ ÌÇÈÁ Ê ÒÒÙ Ø Ò Ø Ò ÓÐÓ Ø Ò ÐÑ ØÓÐÐ Ø Ò Ø Ò Ú ÙØÙ ÙÒØÓ Ò ÐÑ Ò Ö ÓÒÔ ØÓ ÙÙØ Òº ÈÖÓ Ö Ù ¹ØÙØ ÐÑ º ½ Ê Ã ÆÆÍËÌ ÃÆÁËÌ Æ ÇÄÇ ÁËÌ Æ Â ÁÄÅ ËÌÇÄÄÁËÌ Æ Ì ÃÁ Á Æ Î ÁÃÍÌÍË ËÍÆÌÇÂ Æ ËÁË ÁÄÅ Æ Ê ÇÆÈÁÌÇÁËÍÍÌ Æ ÌÓÔ Ã ÒÒÙÒ Ò Ì Ð ØÓØ Ø Ò ÔÖÓ Ö Ù ¹ØÙØ ÐÑ ÂÝÚ ÝÐÒ ÝÐ ÓÔ ØÓ Å Ø Ñ Ø Ò Ø Ð ØÓØ Ø Ò Ð ØÓ ¾¼¼ ÂÝÚ ÝÐÒ ÝÐ ÓÔ

Lisätiedot

ÁÁ ÌÁÁÎÁËÌ ÄÅ Ì ÅÈ Ê Æ Ì ÃÆÁÄÄÁÆ Æ ÄÁÇÈÁËÌÇ Ì Ò ¹ÐÙÓÒÒÓÒØ Ø ÐÐ Ò Ò ÓÙÐÙØÙ Ó ÐÑ ÄÌÁÇ ËÍÎÁ È Ö ÒÑ ÐÐ ¾¼¼ ¾¼¼ Ø Ô ØÙÒ Ò Ð ÒÒ ÓÒÒ ØØÓÑÙÙ ¹ Ò Ò ÐÝ Ó ÒØ Ý Ú

ÁÁ ÌÁÁÎÁËÌ ÄÅ Ì ÅÈ Ê Æ Ì ÃÆÁÄÄÁÆ Æ ÄÁÇÈÁËÌÇ Ì Ò ¹ÐÙÓÒÒÓÒØ Ø ÐÐ Ò Ò ÓÙÐÙØÙ Ó ÐÑ ÄÌÁÇ ËÍÎÁ È Ö ÒÑ ÐÐ ¾¼¼ ¾¼¼ Ø Ô ØÙÒ Ò Ð ÒÒ ÓÒÒ ØØÓÑÙÙ ¹ Ò Ò ÐÝ Ó ÒØ Ý Ú ËÍÎÁ ÄÌÁÇ ÈÁÊà ÆÅ ÄÄ ¾¼¼ ¾¼¼ Ì È ÀÌÍÆ Á Æ ÄÁÁà ÆÆ ¹ ÇÆÆ ÌÌÇÅÍÍÃËÁ Æ Æ Ä ËÇÁÆÌÁ ËÎ ÊÃÃÇÂ Æ ÎÍÄÄ ÔÐÓÑ ØÝ Ì Ö Ø Ð ÓÔ ØÓÒÐ ØÓÖ Ó ÌÙÖÙÒ Ò Ì Ö Ø ÝÚ ÝØØÝ ÄÙÓÒÒÓÒØ Ø Ò ÝÑÔÖ Ø Ø Ò Ò Ø ÙÒÒ Ò Ø ÙÒØ Ò ÙÚÓ ØÓÒ Ó ÓÙ

Lisätiedot

½µ newstate := 0. µ state := goto[state,p i [j]] µ state := 0;j := 0. µ j := j + 1 µ newstate := newstate + 1

½µ newstate := 0. µ state := goto[state,p i [j]] µ state := 0;j := 0. µ j := j + 1 µ newstate := newstate + 1 ½º º Àǹ ÇÊ ËÁ ù Ä ÇÊÁÌÅÁ ½ à ÖÔ Ê Ò Ø Ö Ø Ð Ú Ø ÑÝ ÙÒ Ú Ö Ð Ò ÙØÙ Ò Ô ÖÙ ØÙÚ Ú Ö Ó Ø Ð ÓÖ ØÑ Ø Î Ð Ø Ò q ØÙÒÒ Ø ÐÙ Ù ÓÙ Ó Ø Qº Q Ò ÐÙÚÙØ ÚÓ Ú Ø ÓÐÐ Ô Ò Ò Ò Ò Ø ÖÚ Ø ÓÐÐ Ð ÙÐÙ Ù º ÎÖÒ Ø ÑÝ Ò ØÓ ÒÒ ÝÝ

Lisätiedot

arvostelija Elliptisen käyrän salauksen perusteita Mikko Alakunnas Helsinki HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

arvostelija Elliptisen käyrän salauksen perusteita Mikko Alakunnas Helsinki HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos hyväksymispäivä arvosana arvostelija Elliptisen käyrän salauksen perusteita Mikko Alakunnas Helsinki 12.4.2007 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET

Lisätiedot

1, x 0; 0, x < 0. ε(x) = p i ε(x i).

1, x 0; 0, x < 0. ε(x) = p i ε(x i). ËÁË ÄÌ Ö ØØ Ý ÙÐÓØØ ÙÑ ½½½ º½ Ö ØØ ØÙÒÒ ÑÙÙØØÙ º º º º º º º º º º º º º º º º º º ½½½ º¾ ÖÒÓÙÐÐ Ò Ó Ø ÒÓÑ ÙÑ º º º º º º º º º º º º º º º ½½ º¾º½  ÙÑ Ò ÝÑÑ ØÖ º º º º º º º º º º º º º º º º º º º ½½

Lisätiedot

ÁÁ ÌÁÁÎÁËÌ ÄÅ Ì ÅÈ Ê Æ Ì ÃÆÁÄÄÁÆ Æ ÄÁÇÈÁËÌÇ Ì Ò ¹ÐÙÓÒÒÓÒØ Ø ÐÐ Ò Ò ÓÙÐÙØÙ Ó ÐÑ ÆÌÌÁ¹ÁÄ ÊÁ È ÊÌ Æ Æ ÁÐÑ ØÓÒÑÙÓ Ù Ñ Ö ÙÓÐ Ò Ø Ó ÐÐ Ú Ù¹ ØÙ Ø Ñ Ö ÐÐ Ò ÙÑ

ÁÁ ÌÁÁÎÁËÌ ÄÅ Ì ÅÈ Ê Æ Ì ÃÆÁÄÄÁÆ Æ ÄÁÇÈÁËÌÇ Ì Ò ¹ÐÙÓÒÒÓÒØ Ø ÐÐ Ò Ò ÓÙÐÙØÙ Ó ÐÑ ÆÌÌÁ¹ÁÄ ÊÁ È ÊÌ Æ Æ ÁÐÑ ØÓÒÑÙÓ Ù Ñ Ö ÙÓÐ Ò Ø Ó ÐÐ Ú Ù¹ ØÙ Ø Ñ Ö ÐÐ Ò ÙÑ ÆÌÌÁ¹ÁÄ ÊÁ È ÊÌ Æ Æ ÁÄÅ ËÌÇÆÅÍÇÃà ÍË Å ÊÁËÍÇÄ ÁÆ ÃÌÁÇÁÄÄ Î ÁÃÍÌÍÃË Ì Å Ê ÄÄÁËÁÁÆ ÃÍÅÈÍà ÊÊÇËÈÁÄÎÁÁÆ Â Å È ÄÄÇÆ Ë Ì ÁÄ Ì Ë Ë Æ ÔÐÓÑ ØÝ Ì Ö Ø ÂÝÖ Å Ð Ì Ö Ø ÝÚ ÝØØÝ ÄÙÓÒÒÓÒØ Ø Ò ÝÑÔÖ Ø Ø Ò Ò Ø ÙÒØ Ò ÙÚÓ

Lisätiedot

Ì ÃÆÁÄÄÁÆ Æ ÃÇÊÃ ÃÇÍÄÍ Ì Å Ó Î Ø ÁÈÄÇÅÁÌ Æ ÌÁÁÎÁËÌ ÄÅ ÌÝ Ò Ò Ñ Î Ö ÚÖÓÓØØÓÖ Ò ÓÒ Ò Ò ÐÝÝ È ÚÑÖ º Ñ ÖÖ ÙÙØ ¾¼¼ Ë ÚÙÑÖ ¾ Ç ØÓ Ë ¹ Ø ØÓÐ ÒÒ Ø Ò Ò Ó ØÓ ÈÖ

Ì ÃÆÁÄÄÁÆ Æ ÃÇÊÃ ÃÇÍÄÍ Ì Å Ó Î Ø ÁÈÄÇÅÁÌ Æ ÌÁÁÎÁËÌ ÄÅ ÌÝ Ò Ò Ñ Î Ö ÚÖÓÓØØÓÖ Ò ÓÒ Ò Ò ÐÝÝ È ÚÑÖ º Ñ ÖÖ ÙÙØ ¾¼¼ Ë ÚÙÑÖ ¾ Ç ØÓ Ë ¹ Ø ØÓÐ ÒÒ Ø Ò Ò Ó ØÓ ÈÖ Ì ÃÆÁÄÄÁÆ Æ ÃÇÊÃ ÃÇÍÄÍ Ë ¹ Ø ØÓÐ ÒÒ Ø Ò Ò Ó ØÓ Å Ó Î Ø Î Ö ÚÖÓÓØØÓÖ Ò ÓÒ Ò Ò ÐÝÝ ÔÐÓÑ ØÝ Ó ÓÒ Ø ØØÝ ÓÔ ÒÒÝØØ Ò Ø Ö Ø ØØ Ú ÔÐÓÑ ¹ Ò Ò Ö Ò ØÙØ ÒØÓ Ú ÖØ Òº ÔÓÓ º Ñ ÖÖ ÙÙØ ¾¼¼ ÌÝ Ò Ú ÐÚÓ ÈÖÓ ÓÖ ÒØ ÖÓ Ö Ó ÌÝ

Lisätiedot

Ì ÂÝÖ Ä Ò Ò Ø Ý Ø ÓØ ÝÖ Ðº ÝÙº ÌÝ Ò Ò Ñ Å Ñ ØØ Ø Ð ÓÖ ØÑ Ø Ì ØÐ Ò Ò Ð ÇÒ Å Ñ Ø Ð ÓÖ Ø Ñ ÌÝ Ì ØÓØ Ò Ò ÔÖÓ Ö Ù ¹ØÙØ ÐÑ Ë ÚÙÑÖ Ì Ú Ø ÐÑ Å Ñ ØØ Ø Ð ÓÖ ØÑ

Ì ÂÝÖ Ä Ò Ò Ø Ý Ø ÓØ ÝÖ Ðº ÝÙº ÌÝ Ò Ò Ñ Å Ñ ØØ Ø Ð ÓÖ ØÑ Ø Ì ØÐ Ò Ò Ð ÇÒ Å Ñ Ø Ð ÓÖ Ø Ñ ÌÝ Ì ØÓØ Ò Ò ÔÖÓ Ö Ù ¹ØÙØ ÐÑ Ë ÚÙÑÖ Ì Ú Ø ÐÑ Å Ñ ØØ Ø Ð ÓÖ ØÑ ÂÝÖ Ä Ò Ò Å Ñ ØØ Ø Ð ÓÖ ØÑ Ø Ì ØÓØ Ò Ò ÔÖÓ Ö Ù ¹ØÙØ ÐÑ ½ º ÙÙØ ¾¼¼ ÂÝÚ ÝÐÒ ÝÐ ÓÔ ØÓ Ì ØÓØ Ò Ò Ð ØÓ ÂÝÚ ÝÐ Ì ÂÝÖ Ä Ò Ò Ø Ý Ø ÓØ ÝÖ Ðº ÝÙº ÌÝ Ò Ò Ñ Å Ñ ØØ Ø Ð ÓÖ ØÑ Ø Ì ØÐ Ò Ò Ð ÇÒ Å Ñ Ø Ð ÓÖ Ø Ñ ÌÝ Ì ØÓØ

Lisätiedot

ÐÖÒØÒ Ø ÒØ ÓÒ ÑÒØÐÑ ÒÒ ØØÒ ØÙÒÒ ØÑ Ò ÓØ Ù¹ ÚÚØ ÒÒÓ ØÚ Ø ØÓ ØÙÚ ÐÖÒØØ ÖÒØ Ø º ÃÙÒ ÐÖÒÒ Ø ÓÒ ÐÝØØÝ ÚÓÒ Ø ÝØØ Ý ÒÖØ ØÑÒ Ø ÓÖÚÑÐÐ ÐÖÒØÒ ÐÑÒ¹ ØÝÑ ÚØØÙ ÐÐ Ô

ÐÖÒØÒ Ø ÒØ ÓÒ ÑÒØÐÑ ÒÒ ØØÒ ØÙÒÒ ØÑ Ò ÓØ Ù¹ ÚÚØ ÒÒÓ ØÚ Ø ØÓ ØÙÚ ÐÖÒØØ ÖÒØ Ø º ÃÙÒ ÐÖÒÒ Ø ÓÒ ÐÝØØÝ ÚÓÒ Ø ÝØØ Ý ÒÖØ ØÑÒ Ø ÓÖÚÑÐÐ ÐÖÒØÒ ÐÑÒ¹ ØÝÑ ÚØØÙ ÐÐ Ô ÑÓÒ Ø ÒØ ÖÒØ Ø ÓÑÓÐÝÝÐÒ ØÓ Ø ÌÓÑ ÃÙÔÔÒÒ ÌÓѺÃÙÔÔÒÒ ºÐ Òº ÌÓÒ ÐÓÙÒØ ÓÑÓÐÝÝÐÒ ØÓ Ø Ð ÒÒ ÝÐÓÔ ØÓ ØØÓÒ ØØÐÝØØÒ ÐØÓ ÊÔÓÖØØ ¾¼¼ ¾ º ÑÖÖ ÙÙ ¾¼¼ ÌÚ ØÐÑ ÓÐÓ Ø Ò ØÓ ÐØÚÒ ØØÓÒØÓÒ ÑÖ ÓÒ ÚÒÙØ Ú ÐÐÒ ÒÓÔ Øº ËÑÐÐ ÓÒ ÒÒØØØÝ

Lisätiedot

x (t) = f(x(t)) u B δ (p) = ϕ t (v) = p, v B d (p) = lim e t AT e t A dt W =

x (t) = f(x(t)) u B δ (p) = ϕ t (v) = p, v B d (p) = lim e t AT e t A dt W = Á Ê ÆÌÁ ÄÁ ÀÌ Ä Ë ËÌ ÅÁÌ º Ì Ô ÒÓÔ Ø Ø Ø Ð ÙÙ Ì ÐÙÚÙ Ø ÑÑ Ö ÒØ Ð Ý ØÐ Ò Ø Ô ÒÓÖ Ø Ù Ò Ø Ð ÙÙ Ø Ö Ø ÐÙ¹ ÒÝØ ÔÐ Ò Ö ÐÐ Ý Ø Ñ ÐÐ º ÌÐÐ ÓÚ Ø Ñ Ö ÐÙÖ Ý Ø Ñ ÐÐ Ô ÐÐ Ò ÔÝ ØÝ ÙÓÖ Ò Ó Ó Ð Ø ÝÐ Ô Ò ÓÐ Ú ÐÙÖ º ÂÓ

Lisätiedot

º F(+, + ) = 1 F(, ) = F(, y) = F(x, ) = 0 й

º F(+, + ) = 1 F(, ) = F(, y) = F(x, ) = 0 й ËÁË ÄÌ Ö ØØ Ý ÙÐÓØØ ÙÑ ½¼ º½ Ö ØØ ØÙÒÒ ÑÙÙØØÙ º º º º º º º º º º º º º º º º º º ½¼ º¾ ÖÒÓÙÐÐ Ò Ó Ø ÒÓÑ ÙÑ º º º º º º º º º º º º º º º ½½½ º¾º½  ÙÑ Ò ÝÑÑ ØÖ º º º º º º º º º º º º º º º º º º º ½½

Lisätiedot

ÊÙ ÐØÓÖÖØ ÌÓ ÐØ Ó ÓØ ÓÓ ØÙÙ ÓÙÓ Ø ÔÒÑÔ ÔÔÐØ È ØÒ ÐØÝÑÒÒ ÓÓÖÒØØ ÐÒ ÙÙÒØ Ò ÙÓÖÙй ÚÐØØÑØØ ÓÐ ÖÚ ÝØØ ÔÐ ØÒ ÝØ ÖÙ ÐØÓ ÓÓÒ ÙÙÐÐ ËÒ Ò ÚÓÒ ÔÒÑÑÐÐ ÔÔÐÐÐ ÑÖØØ

ÊÙ ÐØÓÖÖØ ÌÓ ÐØ Ó ÓØ ÓÓ ØÙÙ ÓÙÓ Ø ÔÒÑÔ ÔÔÐØ È ØÒ ÐØÝÑÒÒ ÓÓÖÒØØ ÐÒ ÙÙÒØ Ò ÙÓÖÙй ÚÐØØÑØØ ÓÐ ÖÚ ÝØØ ÔÐ ØÒ ÝØ ÖÙ ÐØÓ ÓÓÒ ÙÙÐÐ ËÒ Ò ÚÓÒ ÔÒÑÑÐÐ ÔÔÐÐÐ ÑÖØØ ØÙغ ØÒÐÐÒÒ ÝÐÓÔ ØÓ ÌÑÔÖÒ ÈÐÓÐÑÓÒØ ÓÑØÖ Ò ØÒ ØØÓÖÒØ Ø Ã ÙÖÚ ØÐØÚØ ØØÓÖÒØØ ÔÖÙ ØÙÚØ ÑÒØÝÝÔ¹ ÈÐÓÐÑÓÒÒ ÝÝÐÐ ØØÓÖÒØØ Ô Ò Ò ÖÓØÐÐÒ ÚÖÙÙ Ø Ó ÓÒ ÐÐ ÓÒ ÔÒÑÔ ÒØØ ÈÙ Ó ÒÒ ÐÐ ÚÐ ÔÒÑÔ Ó Òº ÒÑ Ö ØØÒ ÒØغÔÙ ÖÖ ÔÙÙÖÒØ

Lisätiedot

284 = º Î Ø Ú Ø. A = kanta korkeus. A 1/2suunn = kanta+kanta 2

284 = º Î Ø Ú Ø. A = kanta korkeus. A 1/2suunn = kanta+kanta 2 ÈÝØ ÓÖ Ò Ð Ù ÈÝØ ÓÖ Ò ÓÐÑ ÓØ ÈÖÓ Ö Ù¹ØÙØ ÐÑ ÒÓ¹Ã Ö Ò ½ Å Ø Ñ Ø Ò Ý Ò Ð ØÓ ÁعËÙÓÑ Ò ÝÐ ÓÔ ØÓ º ÐÓ ÙÙØ ¾¼½¾ Ë ÐØ ½ ÂÓ ÒØÓ ½ ½º½ ÈÝØ ÓÖ º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ½º¾ ÈÝØ ÓÖ

Lisätiedot

I = I light k diffuse max(0, N L) + I light k spec max(0, N H) n

I = I light k diffuse max(0, N L) + I light k spec max(0, N H) n ØÙغ ØÒÐÐÒÒ ÝÐÓÔ ØÓ ÌÑÔÖÒ ËÚÝØÝ Òµ ÓÒ ÑÒ ÔÑÖÒÒ ØÖÑ ÓÒ ÝØØ ØØÓÓÒÖ ÓÒ ÐÓØÓÒÒÙØ ÑÐÓ Ù ÒÒ ÐÙÔÖ Ø ÑÖØÝ Ø Ã ØØÐÐ ØÖÓØØÒ ÒÝÝÒ ØÒÓØ ÓÐÐ Ð ØÒ ÚÖ ÈÐÓÐÑÓÒØ ËÒ ÚÐ ØÙ Ø ÔÔÐÒ ÔÒÒÓÐÐ Ø ÑÙÙØÒ ÑÖØØÒ ÔÒÒÒ ÙÐÓÒ ÊÐÖ Ò ÑÑ

Lisätiedot

x = [ x 1 x 2 x n (x i K) x = K (n) = {(x 1, x 2,...,x n ) : x i K} e 1 = (1, 0,..., 0) Ø, e 2 = (0, 1,..., 0) Ø,..., e n = (0, 0,...

x = [ x 1 x 2 x n (x i K) x = K (n) = {(x 1, x 2,...,x n ) : x i K} e 1 = (1, 0,..., 0) Ø, e 2 = (0, 1,..., 0) Ø,..., e n = (0, 0,... ¼¼ Ë Å ØÖ Ø ÓÖ Ì ÖÓ Î Ò ÙÓ Ù ¾º ØÓÙ Ó ÙÙØ ¾¼¼ Ë ÐØ ½ Ä Ò Ö Ð Ö ½º½ Å Ö ÒØ º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½º¾ È ÖÙ ÓÑ Ò ÙÙ º º º º º º º º º º º º º º º º º º º º º º º º ½º Å

Lisätiedot

x α 1... x (v ṽ)φdx = 0

x α 1... x (v ṽ)φdx = 0 Ð Ñ ÒØØ Ñ Ò Ø ÐÑ ÐÐ ÔØ ÐÐ ÓÒ ÐÑ ÐÐ ÈÖÓ Ö Ù ¹ØÙØ ÐÑ Ì ÑÙ ÅÙ ØÓÒ Ò ½ ½ ÁعËÙÓÑ Ò ÝÐ ÓÔ ØÓ ÄÙÓÒÒÓÒØ Ø Ò Ñ Ø Ø Ø Ò Ø ÙÒØ Ý Ò Ñ Ø Ñ Ø Ò Ð ØÓ ½ º ØÓÙ Ó ÙÙØ ¾¼½¾ Ë ÐØ ½ ÂÓ ÒØÓ ½ ¾ Ð Ñ ÒØØ Ñ Ò Ø ÐÑÒ ÙÒ Ø Ó Ú ÖÙÙ

Lisätiedot

f(x) =, x = 0,1,...,100. P(T 20) = P( X 50 20) 0.

f(x) =, x = 0,1,...,100. P(T 20) = P( X 50 20) 0. Ú ËÁË ÄÌ ½¾º ËÙ Ø ÐÐ Ø Ò Ó ÙÙ Ò ÐÙÓØØ ÑÙ ÚÐ Ø º º º º º º º º º º º º º º ¾ ½¾º ÇØÓ Ó Ó º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ¼ ½¾º Å Ò Ò ÙÑ Ø Ú Ô ÐÙÓØØ ÑÙ ÚÐ º º º º º º º º º º

Lisätiedot

ÙÒØÓÒ ÚÐØ Ñ Ò ÚÙ Ø º½ Ö ÙÓÖØÙ ÑÒ Ñ ÓÐÐ ÓÐ Ù Ò ÔÖÑÔ Ë Ø ÓÔÖØÓØ Øº ËØÒ ÓÓ ÚÐØÙÐÓ Ø Ó ÙÐ Ò Ð Ø a ÔØÒº ÓÐÖ Ø ÓÔÓ ÓÓ Ð ØÒ a ÖÙÖ ÓÔÒÓÓÒ ÒÒÒ ÙÒ Ð ÓÓÑÒ ÐÓÔÔÙØ

ÙÒØÓÒ ÚÐØ Ñ Ò ÚÙ Ø º½ Ö ÙÓÖØÙ ÑÒ Ñ ÓÐÐ ÓÐ Ù Ò ÔÖÑÔ Ë Ø ÓÔÖØÓØ Øº ËØÒ ÓÓ ÚÐØÙÐÓ Ø Ó ÙÐ Ò Ð Ø a ÔØÒº ÓÐÖ Ø ÓÔÓ ÓÓ Ð ØÒ a ÖÙÖ ÓÔÒÓÓÒ ÒÒÒ ÙÒ Ð ÓÓÑÒ ÐÓÔÔÙØ ÙÒØÓÒ ÚÐØ Ñ Ò ÚÙ Ø º½ º½ ÙÒØÓÒ ÚÐØ Ñ Ò ÚÙ Ø ËÑÒ ÙÒØÓÒ Ö ÑÙÓØÓÒ ÒØÖÔ ÚÓ ØØÒÒ ÓÐÐ ÙÙÖ ÖÓ ÇÐÓÓØ ÐÐ µ = (++) 0 l = 0 r = º ÃÙÑÔÒ ØÓØÙØØ ÚÓÖ ØÓÒ ÙÒØÓÒ ÓÒغ ÓÐÖ¹ØÓØÙØÙ ØÓÑ ÐÒÖ Ø ÓÐйØÓØÙØÙ ØÓÑ Ø ÒРغ ÖÓ ÓØÙÙ

Lisätiedot

Ë ÐØ ½ ÂÓ ÒØÓ ½ ½º½ È ÖÙ ØØ Ø º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ½º¾ Ò ÖØ Ø Ö ÒÒ Ñ ÐÐ Ø º º º º º º º º º º º º º º

Ë ÐØ ½ ÂÓ ÒØÓ ½ ½º½ È ÖÙ ØØ Ø º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ½º¾ Ò ÖØ Ø Ö ÒÒ Ñ ÐÐ Ø º º º º º º º º º º º º º º Ê ÒØ Ò Ø Ð ÙÙ Ø ÓÖ ÐÙ ÒØÓÑÓÒ Ø Å Ö Ù ÌÙÓÑ Ð ϕ v N N Ë ÐØ ½ ÂÓ ÒØÓ ½ ½º½ È ÖÙ ØØ Ø º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ½º¾ Ò ÖØ Ø Ö ÒÒ Ñ ÐÐ Ø º º º º º º º º º º º º º

Lisätiedot

Erkki Mäkinen ja Timo Poranen. Algoritmit

Erkki Mäkinen ja Timo Poranen. Algoritmit Erkki Mäkinen ja Timo Poranen Algoritmit INFORMAATIOTIETEIDEN YKSIKKÖ TAMPEREEN YLIOPISTO INFORMAATIOTIETEIDEN YKSIKÖN RAPORTTEJA 1/2011 TAMPERE 2011 TAMPEREEN YLIOPISTO INFORMAATIOTIETEIDEN YKSIKKÖ INFORMAATIOTIETEIDEN

Lisätiedot

Ë ÐØ ½ ÂÓ ÒØÓ ½ ½º½ È ÖÙ ØØ Ø º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ½º¾ Ò ÖØ Ø Ö ÒÒ Ñ ÐÐ Ø º º º º º º º º º º º º º º

Ë ÐØ ½ ÂÓ ÒØÓ ½ ½º½ È ÖÙ ØØ Ø º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ½º¾ Ò ÖØ Ø Ö ÒÒ Ñ ÐÐ Ø º º º º º º º º º º º º º º Ê ÒØ Ò Ø Ð ÙÙ Ø ÓÖ ÐÙ ÒØÓÑÓÒ Ø Å Ö Ù ÌÙÓÑ Ð ϕ v N N Ë ÐØ ½ ÂÓ ÒØÓ ½ ½º½ È ÖÙ ØØ Ø º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ½º¾ Ò ÖØ Ø Ö ÒÒ Ñ ÐÐ Ø º º º º º º º º º º º º º

Lisätiedot

f(x;n,θ) = θ x (1 θ) n x, x = 0,1,...,n; 0 θ 1. Θ = {θ 0 θ 1}. ˆθ = x n.

f(x;n,θ) = θ x (1 θ) n x, x = 0,1,...,n; 0 θ 1. Θ = {θ 0 θ 1}. ˆθ = x n. ËÁË ÄÌ Ú º º½ Å Ö ÓÚ Ò Ì Ý Ú Ò ÔÝ ØÐ Ø ÙÙÖØ Ò ÐÙ Ù¹ Ò Ð º º º º º º º º º º º º º º º º º º º º º º º º º º º ¾ º º¾ Â Ò Ò Ò ÔÝ ØÐ º º º º º º º º º º º º º º º º º º º º ¾ º º ËØÓ Ø Ò Ò ÙÔÔ Ò Ñ Ò Ò º

Lisätiedot

M Pv + q = 0, M = EIκ = EIv, (EIv ) + Pv = q. v(x) = Asin kx + B cos kx + Cx + D + v p. P kr = π2 EI L n

M Pv + q = 0, M = EIκ = EIv, (EIv ) + Pv = q. v(x) = Asin kx + B cos kx + Cx + D + v p. P kr = π2 EI L n ÄÙ Ù ½ ËØ Ð Ù Ú Ó Ó ÐÑ ½º½ ÈÙÖ Ø ØØÙ Ø ÚÙØ ØØÙ ÙÚ Ì Ô ÒÓ ÓØ Q v + q =, M = Q, ½º½µ ÑÑÓ ÐÐ ÙÚ ÐÐ M v + q =, M = EIκ = EIv, (EIv ) + v = q. ½º¾µ ½º µ ½º µ EI = Ú Ó ÆÙÖ Ù ÚÓ Ñ v (4) + k v = q EI, k = EI,

Lisätiedot

ONGELMA LASKENNALLINEN EI LASKENNALLINEN ONGELMA ONGELMA = RATKEAMATON RATKEAVA ONGELMA ONGELMA OSITTAIN RATKEAVA EI TEHOKASTA RATKAISUA

ONGELMA LASKENNALLINEN EI LASKENNALLINEN ONGELMA ONGELMA = RATKEAMATON RATKEAVA ONGELMA ONGELMA OSITTAIN RATKEAVA EI TEHOKASTA RATKAISUA Ô ÖÙ Ñ ÐÐ Ø Ä ÒÒ Ò ÚÐÐ ¾¼½¼ ÐÙ ÒÒÓØ ÖØ Ò Ñ Ø Ñ ØÒ Ô ÖÙ ØØغºº Â Ñ Ò ØÝÝÔÔ Ø ØØ ÐÙ Å Ø Ñ Ø ÖØØ µ Ñ Ø Ñ Ø º Ù Ò ÅÓØÛ Ò ÍÐÐÑ Ò ÁÒØÖÓ ÙØ ÓÒ ØÓ ÙØÓÑ Ø ÌÓÖÝ Ä Ò Ù ÀÓÔÖÓ Ø ÓÑÔÙØ Ø ÓÒº Ò ØØÓÒ ØØ ÐÝØØÒ ÔÓÐÐ Ò Ò

Lisätiedot

M : S N { }, S : S N.

M : S N { }, S : S N. Æ ¹Ð ÒØ ÙÒ Ú Ö Ð ÙÙ Æ ËÙÙØ Ö Ò Ò ÔÖÓ Ö Ù Ñ Ø Ñ Ø ÌÙÖÙÒ ÝÐ ÓÔ ØÓ ¾¼¼ Ë ÐØ ÂÓ ÒØÓ ¾ ½ ÓÖÑ Ð Ø Ò ÐØ Ò Ø ÓÖ Ò ØØ Ø ØÙÐÓ ½º½ ÅÙÐØ ÓÙ ÓØ Ö Ð Ø ÓØ º º º º º º º º º º º º º º º º º º º º º º ½º¾ Ë Ò Ø Ð Ø ÑÓÖ

Lisätiedot

ÂÝÖ Ë Ö Ò Ò ÌÝ Ò Ò Ñ Ö Ø Ø Ø Ø Ð Ì ØÐ ÂÙÐ Ò Ú Ñ Ò Ñ Ò Ø ÐÑ ÌËÁ Ò ÅË˹ÑÖ ØÝ ÇÔÔ Ò ÄÖÓÑÒ ËÙ Ø ÌÝ Ò Ð Ö Ø Ø ÖØ Ä Ú Ð ØÙÑ ÅÓÒØ Ò Ý Ö Ë ÚÙÑÖ Ë Ó ÒØ Ð ÆÙÑ Ö

ÂÝÖ Ë Ö Ò Ò ÌÝ Ò Ò Ñ Ö Ø Ø Ø Ø Ð Ì ØÐ ÂÙÐ Ò Ú Ñ Ò Ñ Ò Ø ÐÑ ÌËÁ Ò ÅË˹ÑÖ ØÝ ÇÔÔ Ò ÄÖÓÑÒ ËÙ Ø ÌÝ Ò Ð Ö Ø Ø ÖØ Ä Ú Ð ØÙÑ ÅÓÒØ Ò Ý Ö Ë ÚÙÑÖ Ë Ó ÒØ Ð ÆÙÑ Ö ÝÚ ÝÑ Ô Ú ÖÚÓ Ò ÖÚÓ Ø Ð ÂÙÐ Ò Ú Ñ Ò Ñ Ò Ø ÐÑ ÌËÁ Ò ÅË˹ÑÖ ØÝ ÂÝÖ Ë Ö Ò Ò À Ð Ò ½ º º¾¼¼ À ÄËÁÆ ÁÆ ÄÁÇÈÁËÌÇ Ì ØÓ Ò ØØ ÐÝØ Ø Ò Ð ØÓ ÂÝÖ Ë Ö Ò Ò ÌÝ Ò Ò Ñ Ö Ø Ø Ø Ø Ð Ì ØÐ ÂÙÐ Ò Ú Ñ Ò Ñ Ò Ø ÐÑ ÌËÁ Ò ÅË˹ÑÖ

Lisätiedot

Ì Ú Ø Ñ Ò Ó ÔÓÒ ÒØØ Ò Ô Ö Ò Ø ¹ Ú ÖÙÙ Ñ Ò ÓÚ Ù Ó Ó ÙÓ ÙÙ ¹ Ò ØÓÓÒº Ì ØÓØ Ø Ò ÔÖÓ Ö Ù ¹ØÙØ Ñ ÂÝÚ ÝÒ Ý ÓÔ ØÓ ½º Ó ÙÙØ ¾¼¼ º Ë ÚÙ ½ Ø º Ì ¹ Ú ÖÙÙ Ñ Ò Ý Ó

Ì Ú Ø Ñ Ò Ó ÔÓÒ ÒØØ Ò Ô Ö Ò Ø ¹ Ú ÖÙÙ Ñ Ò ÓÚ Ù Ó Ó ÙÓ ÙÙ ¹ Ò ØÓÓÒº Ì ØÓØ Ø Ò ÔÖÓ Ö Ù ¹ØÙØ Ñ ÂÝÚ ÝÒ Ý ÓÔ ØÓ ½º Ó ÙÙØ ¾¼¼ º Ë ÚÙ ½ Ø º Ì ¹ Ú ÖÙÙ Ñ Ò Ý Ó ÔÓÒ ÒØØ Ò Ô Ö Ò Ø ¹ Ú ÖÙÙ Ñ Ò ÓÚ Ù Ó Ó ÙÓ ÙÙ Ò ØÓÓÒ Ò Ó Ì ØÓØ Ø Ò ÔÖÓ Ö Ù ¹ØÙØ Ñ ÂÝÚ ÝÒ Ý ÓÔ ØÓ Å Ø Ñ Ø Ò Ø ØÓØ Ø Ò ØÓ ½º Ó ÙÙØ ¾¼¼ Ì Ú Ø Ñ Ò Ó ÔÓÒ ÒØØ Ò Ô Ö Ò Ø ¹ Ú ÖÙÙ Ñ Ò ÓÚ Ù Ó Ó ÙÓ ÙÙ ¹ Ò ØÓÓÒº Ì

Lisätiedot

Ì ÃÆÁÄÄÁÆ Æ ÃÇÊÃ ÃÇÍÄÍ Ì ÃÆÁÄÄÁË Æ ËÁÁÃ Æ Â Å Ì Å ÌÁÁÃ Æ ÇË ËÌÇ Ì Ç ØÓ È Ò Ë ÚÙ Ò ÌÝ Ò Ò Ñ Ì ØÐ Ò Ò Ð ÈÖÓ ÙÙÖ Ò ÓÓ Ò Ñ ÌÝ Ò Ú ÐÚÓ ÌÝ Ò Ó ÂÙ Ó Ã ÒÒ Ì Ò

Ì ÃÆÁÄÄÁÆ Æ ÃÇÊÃ ÃÇÍÄÍ Ì ÃÆÁÄÄÁË Æ ËÁÁÃ Æ Â Å Ì Å ÌÁÁÃ Æ ÇË ËÌÇ Ì Ç ØÓ È Ò Ë ÚÙ Ò ÌÝ Ò Ò Ñ Ì ØÐ Ò Ò Ð ÈÖÓ ÙÙÖ Ò ÓÓ Ò Ñ ÌÝ Ò Ú ÐÚÓ ÌÝ Ò Ó ÂÙ Ó Ã ÒÒ Ì Ò Ì Ò ÐÐ Ò Ò ÓÖ ÓÙÐÙ Ì Ò ÐÐ Ò Ý Ò Ñ Ø Ñ Ø Ò Ó ØÓ Å Ø Ñ Ø Ò Ð ØÓ ÂÙ Ó Ã ÒÒ ÃÓÑÔÓ ØØ Ð Ñ Ò ØØ Ò Ò ÐÝÝ Ð Ñ ÒØØ Ñ Ò Ø ÐÑÐÐ ÔÐÓÑ ¹ Ò Ò Ö Ò ØÙØ ÒØÓ Ú ÖØ Ò Ø Ö Ø ØØ Ú Ø ØØÝ ÔÐÓÑ ØÝ ÔÓÓ ¾ º ÐÓ ÙÙØ ¾¼¼ ÌÝ Ò Ú ÐÚÓ

Lisätiedot

Ë ÐØ ½ ÂÓ ÒØÓ ½º½ Ð Ø º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½º¾ ËØ Ø ÓÒ Ö Ò Ò ÔÖÓ º º º º º º º º º º º º º º º º º º º º º º

Ë ÐØ ½ ÂÓ ÒØÓ ½º½ Ð Ø º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½º¾ ËØ Ø ÓÒ Ö Ò Ò ÔÖÓ º º º º º º º º º º º º º º º º º º º º º º Ö ¹ Ò ÐÝÝ ½¼ ÓÔ ÖØÓ ÄÙÓÑ Ì Ð ØÓØ ÁÒ ÓÖÑ Ø ÓØ Ø Ò Ý ¼½ Ì ÅÈ Ê Æ ÄÁÇÈÁËÌÇ ËÝ Ý ¾¼½ Ë ÐØ ½ ÂÓ ÒØÓ ½º½ Ð Ø º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½º¾ ËØ Ø ÓÒ Ö Ò Ò ÔÖÓ º º º º º º º

Lisätiedot

º F(+,+ ) = 1 F(, ) = F(,y) = F(x, ) = 0 й

º F(+,+ ) = 1 F(, ) = F(,y) = F(x, ) = 0 й Ú ËÁË ÄÌ ÅÓÒ ÙÐÓØ Ø ÙÑ Ø ½ º½ à ÙÐÓØØ Ø ÙÑ Ø º º º º º º º º º º º º º º º º º º º º º ½ º½º½ Ê ÙÒ ÙÑ Ø ÓÐÐ Ø ÙÑ Ø º º º º º º º º º ½ º½º¾ ÓÐÐ Ò Ó ÓØÙ ÖÚÓÒ ÓÑ Ò ÙÙ º º º º º º º º º ½ º½º À Ö Ö Ø Ñ ÐÐ

Lisätiedot

Barysentrinen koordinaattisysteemi sekä pisteen konjugaatio kolmion suhteen

Barysentrinen koordinaattisysteemi sekä pisteen konjugaatio kolmion suhteen HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos Institution Department Matemaattis-luonnontieteellinen Tekijä Författare Author Jenni

Lisätiedot

u(0,t) = u(l,t) = 0, t > 0

u(0,t) = u(l,t) = 0, t > 0 ÓÙÖ Ö¹ Ö Ø ¹ÑÙÙÒÒÓ Ø ÈÖÓ Ö Ù ¹ØÙØ ÐÑ Ì ÑÙ ÀÓÒ Ò Ò ½ ¾ ÁعËÙÓÑ Ò ÝÐ ÓÔ ØÓ Ý Ò Ñ Ø Ñ Ø Ò Ð ØÓ ¾ º ØÓÙ Ó ÙÙØ ¾¼½¾ Ì Ú Ø ÐÑ Ì ÈÖÓ Ö Ù¹ØÙØ ÐÑ Ø ÐÐÒ ÓÙÖ Ö¹ Ò ÐÝÝ Ò ÑÔ ØÙ¹ ÐÓ Ó Ø Ò ÓÚ ÐÐÙ º Ä Ø Ò Ð ÐÐ ÓÑÔÐ Ø

Lisätiedot

ÁÆÇÊÅÌÁÇÌÃÆÇÄÇÁÆ ÁÆËÌÁÌÍÍÌÌÁ ÂÎËÃÄÆ ÅÅÌÌÁÃÇÊÃÃÇÍÄÍ ¾¼¼ ÁȾ ËÁÁÃà ÓÚµ ÎÖØÐݹ ÐØÓÝ Ç ÁÁ ÈËÁ ÊÈÇ ÄÙÒØÓÑÓÒ Ø ÂÝÚ ÝÐ ¾º º¾¼¼ Ë ÐØ ÐÙ ÒØ ½ Ò ½ ½º½ ÒÒ ÒÓÔÙ º º º º º º º º º º º º º º º º º º º º º º º º º º

Lisätiedot

f ÓÒ ÒØ ÓØ ÙÖÑÐÐ Ò ÖÚÓ ÙÒØÓ ÐÚº ÓÒØ λ¹óðñø ÚÓÒ ÒØ ÌÙÖÒÒ ØÓ Òº ËØØÒ Ö ÒÒ ÓÐÐÒ ÑÔÐÑÒØÓ ØØÓÓÒÐÐ Ø ØÙÐ ÄÁËȹ ÚÒØÒ Ä Ô ÓØØ ÑÙØØ ÔÓØ ÙÒØÓÒÐ Ò ÓÐÑÓÒØÒº Ä Ô Ó

f ÓÒ ÒØ ÓØ ÙÖÑÐÐ Ò ÖÚÓ ÙÒØÓ ÐÚº ÓÒØ λ¹óðñø ÚÓÒ ÒØ ÌÙÖÒÒ ØÓ Òº ËØØÒ Ö ÒÒ ÓÐÐÒ ÑÔÐÑÒØÓ ØØÓÓÒÐÐ Ø ØÙÐ ÄÁËȹ ÚÒØÒ Ä Ô ÓØØ ÑÙØØ ÔÓØ ÙÒØÓÒÐ Ò ÓÐÑÓÒØÒº Ä Ô Ó ÓÐÑÓÒÒ Ø ÖØÝ Ø ÑØÒ ÙÒØÓÒÐ Ø ÖÓ ØÙØÙ Ø ØÐÔÖÙ Ø Ø ÓÐÑÓÒÒ Ø À ÐÐ ÓÐÐ ÓÒ ÔÓ ÓÐÑÓ ÓÐÑÓÒØÐ Ø ÙÒØÓÒРغ ÒÒÓ ØÙÒÐÐ ÙÖ ØØÐ ÌØÓÒ ØØÐÝØÓÖ Ø Ð ÒØÑÐк ÖÐ Ø ÒÒÓ ØÙÒÐÐ ØØÐ ÖÐ Ø ÇÐÑÓÒÒ Ø ÓÐÑÒ ÙÙÒÒØØÐÙØÔº ÓÐÑÓÒع»Ø ÐÓ

Lisätiedot

̹ º ¼¼½ ÄÌÈ» à ÚØ ¾¼½¼ ÈÖ ØØ ÐÓ Ò Ñ ÒØØ Ø Ø ÙÐÙØ ¾ ½º Ì ÍÄÍË ÆÆ Ì ÃÎ ÆÌÌÇÊ ÁÄÄ ÅÙÓØÓ T xϕ(x) Ø E xϕ(x)µ ÓÐ Ú Ø ÒØ Ð Ò Ò ÓÐÑÙ T xϕ(x) E xϕ(x) ØÙÐ ÓØØ

̹ º ¼¼½ ÄÌÈ» à ÚØ ¾¼½¼ ÈÖ ØØ ÐÓ Ò Ñ ÒØØ Ø Ø ÙÐÙØ ¾ ½º Ì ÍÄÍË ÆÆ Ì ÃÎ ÆÌÌÇÊ ÁÄÄ ÅÙÓØÓ T xϕ(x) Ø E xϕ(x)µ ÓÐ Ú Ø ÒØ Ð Ò Ò ÓÐÑÙ T xϕ(x) E xϕ(x) ØÙÐ ÓØØ Ì¹ º ¼¼½ ÄÌÈ» à ÚØ ¾¼½¼ ÈÖ ØØ ÐÓ Ò Ñ ÒØØ Ø Ø ÙÐÙØ ½ ÄÙ ÒØÓ ÈÖ ØØ ÐÓ Ò Ñ ÒØØ Ø Ø ÙÐÙØ ½º Ì ÙÐÙÒÒ Ø Ú ÒØØÓÖ ÐÐ ¾º Ì ÙÐÙ Ò Ð ØØÝÚØ ÑÖ Ø ÐÑØ º Ç Ø ØÓ ØÙØ Ò Ð Ø Ñ Ò º ËÝØ Ñ ØØ Ò Ò Ø ÙÐÙ º Î Ø Ñ ÐÐ Ò ÑÙÓ ÓØ

Lisätiedot

i(t) = α i(t) s(t) β i(t) d(t) = γ i(t) r(t + 1) = r(t) + r(t) s(1) = 999 i(1) = 1 r(1) = 0.

i(t) = α i(t) s(t) β i(t) d(t) = γ i(t) r(t + 1) = r(t) + r(t) s(1) = 999 i(1) = 1 r(1) = 0. Åع¾º¾½¼ ËÓÚÐÐØÙÒ ÑØÑØÒ ØØÓÓÒØÝØ ÀÖÓØÙ ½ ÅØÐ ÌÙØÙ ØÙÑÒÒ ÅØйÓÐÑ ØÓÓÒ ½º ÌÙØÙ ØÙ ÅØйÓÐÑ ØÓÓÒ ØØÐÝÓÐÑÒ ÒØÖÓ ÑÓ ÚÙÐк ¾º ÄÙÓ ÑÙÙØÑ ÑØÖ Ñº A = [1 2 3; 3 2 1; 4 5 60] B = [1 2 3; 4 5 6; 7 8 9]º ÃÓÐ ÑØÖ Ò ÝØÒ¹

Lisätiedot

x x < 1 x = x º 0 x x < 1º Z Z + Z Q Q + Q R R + R i I i=2

x x < 1 x = x º 0 x x < 1º Z Z + Z Q Q + Q R R + R i I i=2 ÇÀ¹¾½¼¼ ÇÐÑ ØÓØØÒ ÔÖÙ ØÝÐÙ ÚØ ¾¼½ Ð ÙÖÓØÙ ÒØÖÓ ÃÒ ² ÒØØ ÎÐÑÖ ÌÑÔÖÒ ØÒÐÐÒÒ ÝÐÓÔ ØÓ ÇÐÑ ØÓØÒÒ ÐØÓ ½¾º ÓÙÐÙÙÙØ ¾¼½¾ ÃÝØÒÒÒ ÓØ ÃÖÓØ Ú ØÙ ÔÙØ ¹ÓÓ ÐÐ ÔÔÖÐÐ Ø ÓÒ ÔØÐк ÆÓ ÔÐÙØØØÚØ ÔÔÖØ ÝØÒ Ó ÒØ ÓÒ Ù ÑÔ ÙÒ Ý

Lisätiedot

È(a < θ < b X = x) = ( ) θ x n. ba n. x (1 θ) n x dθ

È(a < θ < b X = x) = ( ) θ x n. ba n. x (1 θ) n x dθ Ê Ö ÈÖ Ù Ì ÓÑ Ý Ò Öع Ò Ë¹ÌÁÄ ËÌÇÌÁ º ¾¼¼ ÒØØ È ÒØØ Ò Ò ÂÝÚ ÝÒ Ý ÓÔ ØÓ Å Ø Ñ ØÒ Ø ØÓØØÒ ØÓ Ý Ìº ½ µº Ò Ý ØÓÛ Ö ÓÚ Ò ÔÖÓ Ñ Ò Ø ÓØÖ Ò Ó Ò º ÈÓ ÓÔ ÌÖ Ò Ø ÓÒ Ó Ø ÊÓÝ ËÓØÝ ¼½ º Ê ÔÖ ÒØ Û Ø Ó¹ Ö Ô ÒÓØ Ý º º

Lisätiedot

a(z) = k 0 1 z k = k 0 2 k z k = k 0 z k = (1 + z) n. k

a(z) = k 0 1 z k = k 0 2 k z k = k 0 z k = (1 + z) n. k ̹ º ¾¼½ Ö Ø Ø Ö ÒØ Ø Ò ÖÓ Ú Ø ÙÒ Ø ÓØ È ÇÖÔÓÒ Ò Ì Ò ÐÐ Ò Ò ÓÖ ÓÙÐÙ Ì ØÓ Ò ØØ ÐÝØ Ø Ò Ð ØÓ ÄÙ ÐÐ ÌÑÒ ÑÓÒ Ø Ô ÖÙ ØÙÙ ÝÝ ÐÙ Ù Ù Ò ¾¼¼½ ÑÙ Ø ÒÔ ÒÓ Ò Ì Ò ÐÐ Ò ÓÖ ÓÙÐÙÒ Ì ØÓ Ò ØØ ÐÝØ ÓÖ Ò Ð ÓÖ ØÓÖ ÓÒ ÙÖ ÐØ

Lisätiedot

ONGELMA LASKENNALLINEN EI LASKENNALLINEN ONGELMA ONGELMA RATKEAMATON RATKEAVA ONGELMA ONGELMA OSITTAIN RATKEAVA EI TEHOKASTA RATKAISUA

ONGELMA LASKENNALLINEN EI LASKENNALLINEN ONGELMA ONGELMA RATKEAMATON RATKEAVA ONGELMA ONGELMA OSITTAIN RATKEAVA EI TEHOKASTA RATKAISUA ÚÒÒÓÐÐ Ø ÀÙ Ð ÒÒÒØÓÖ ÀÑÐÒÒ ÏÐÐÑÒ ½ ¾¼¼ ÄÙÒØÓÑÓÒ Ø ÐÙÒØÓÑÓÒ Ø ÓÒ ØÖÓØØØÙ ÂÓÒ ÙÙÒ ÝÐÓÔ ØÓÒ Ä ÒÒÒ ØÓÖ ¹ÙÖ ÐÐ ÌÑ ØÐÐ ÙÖ ÑÓÒ Ø ØØÚØ ÚÒ Ð ØØÚÙÙÒ ØÓÖÒ ÑÙØØ ØÓ ÌÐÐ ÓÒ ØØÝ ÔÑÒ Ø ÔÙÙØØØ Ñ ÐÐÐ ÒØÝÝ ÓÐÑ Óй ÅÓÒ Ø

Lisätiedot

ONGELMA LASKENNALLINEN EI LASKENNALLINEN ONGELMA ONGELMA RATKEAMATON RATKEAVA ONGELMA ONGELMA OSITTAIN RATKEAVA EI TEHOKASTA RATKAISUA

ONGELMA LASKENNALLINEN EI LASKENNALLINEN ONGELMA ONGELMA RATKEAMATON RATKEAVA ONGELMA ONGELMA OSITTAIN RATKEAVA EI TEHOKASTA RATKAISUA ÔÙ ÀÙ ÚÒÒÓÐÐ Ø Ð ÒÒÒØÓÖ ÌÑ ÐÙÒØÓÑÓÒ Ø ÓÒ ØÖÓØØØÙ ÂÓÒ ÙÙÒ ÝÐÓÔ ØÓÒ ÌØÓÒ ØØÐÝØØÒ ØÓÖØØ Ø ÔÖÙ ØØ ¹ÙÖ ÐÐ ÅÓÒ Ø ÙÒÒ ÓÐ ÚÐ ÚÐÑ ÚÒ ÔÓÒ Ø Ø ÓÒ Ý ÖÒ Ð Ò ÚÚÓÒ Ô ØÝÒØÝÝ ØÙÐÚÒ ÚÙÓ Ò ËÙ¹ Ó ØÐØÚ ÓÒÒ ØØ ØÝÒÒØ ÑÓÒ ØØØ

Lisätiedot

(C d D e C e ) (C e E d C d ) (D e E c D c )

(C d D e C e ) (C e E d C d ) (D e E c D c ) ÓÚ Ø Ú ÐÐ A B C ÌÐÐ Ò ÓÒ Ú ÐÐ Ò Ò A B Cº Ó Ò Ö ØÝ Ø Ó Ø Ò ÚÐ Ø Ò Ù Ø Ò ÙÚ Ñ Ò Ò ÓÒ Ò Ð Ô Ð ÓÒ Ð Ù Ø ÓØ ÓÚ Ø ÑÙÓ ÓÐØ Ò Ñ Ò ÐØ µº Ø ÖÚ Ø Ò x ÓÒ ÓÑÔ Ù Ò y y ÓÒ ÓÑÔ Ù Ò z ÂÓ x ÓÒ ÓÑÔ Ù Ò z º Ò Ò Ì¹ º ¼¼½ ÄÌÈ»

Lisätiedot

JULKISEN HALLINNON DIGITAALISEN TURVALLISUUDEN JOHTORYHMÄN SIHTEERISTÖN (VAHTI-sihteeristö) JA ASIANTUNTIJAJAOSTON ASETTAMINEN

JULKISEN HALLINNON DIGITAALISEN TURVALLISUUDEN JOHTORYHMÄN SIHTEERISTÖN (VAHTI-sihteeristö) JA ASIANTUNTIJAJAOSTON ASETTAMINEN Asettamispäätös ÊÓñîïëëñððòðïòððòðïñîðïê Ö«µ ÝÌó± ± ïòíòîðïé Ö«µ ²»² JULKISEN HALLINNON DIGITAALISEN TURVALLISUUDEN JOHTORYHMÄN SIHTEERISTÖN (VAHTI-sihteeristö) JA ASIANTUNTIJAJAOSTON ASETTAMINEN Ê ±ª

Lisätiedot

Käyttöliittymäohjelmointi

Käyttöliittymäohjelmointi Käyttöliittymäohjelmointi Graafisen käyttöliittymän (GUI) avulla voidaan Matlabissa kirjoittaa graafisia sovellutuksia, jotka sisältävät erilaisia komponentteja: Programming GUI Components (GUIDE) Push

Lisätiedot