<?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <id>https://www.yunseo.kim/sw/</id><title>Yunseo Kim's Study Notes</title><subtitle>Yunseo Kim's personal blog on mathematics, physics, and engineering, now expanding to business, AI agent ecosystems, software supply chains, and digital trust.</subtitle> <updated>2026-04-11T20:15:29+09:00</updated> <author> <name>Yunseo Kim</name> <uri>https://www.yunseo.kim/sw/</uri> </author><link rel="self" type="application/atom+xml" href="https://www.yunseo.kim/sw/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://www.yunseo.kim/" /><link rel="alternate" type="text/html" hreflang="ko" href="https://www.yunseo.kim/ko/" /><link rel="alternate" type="text/html" hreflang="ja" href="https://www.yunseo.kim/ja/" /><link rel="alternate" type="text/html" hreflang="zh-TW" href="https://www.yunseo.kim/zh-TW/" /><link rel="alternate" type="text/html" hreflang="es" href="https://www.yunseo.kim/es/" /><link rel="alternate" type="text/html" hreflang="pt-BR" href="https://www.yunseo.kim/pt-BR/" /><link rel="alternate" type="text/html" hreflang="fr" href="https://www.yunseo.kim/fr/" /><link rel="alternate" type="text/html" hreflang="de" href="https://www.yunseo.kim/de/" /><link rel="alternate" type="text/html" hreflang="pl" href="https://www.yunseo.kim/pl/" /><link rel="alternate" type="text/html" hreflang="cs" href="https://www.yunseo.kim/cs/" /><link rel="alternate" type="text/html" hreflang="sw" href="https://www.yunseo.kim/sw/" /><link rel="alternate" type="text/html" hreflang="am" href="https://www.yunseo.kim/am/" /> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Yunseo Kim </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title xml:lang="sw">Dokezo kuhusu tafsiri ya Kikorea ya Kanuni ya Maadili ya Contributor Covenant 3.0</title><link href="https://www.yunseo.kim/sw/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="am" /><published>2026-03-20T00:00:00+09:00</published> <updated>2026-03-20T00:00:00+09:00</updated> <id>https://www.yunseo.kim/sw/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/</id> <author> <name>Yunseo Kim</name> </author> <category term="Dev" /> <category term="Dev Culture" /> <summary xml:lang="sw">Nilipotafsiri kwa Kikorea toleo la 3.0 la Contributor Covenant lililotolewa Julai 12025, niliandika hapa mambo niliyoyazingatia, sababu za tafsiri za baadhi ya misemo, na maoni yangu binafsi.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Nilipotafsiri kwa Kikorea toleo la 3.0 la Contributor Covenant lililotolewa Julai 12025, niliandika hapa mambo niliyoyazingatia, sababu za tafsiri za baadhi ya misemo, na maoni yangu binafsi.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><blockquote class="prompt-info"><p>PR rasmi ya kuongeza tafsiri ya Kikorea ya Kanuni ya Maadili ya Contributor Covenant 3.0: <a href="https://github.com/EthicalSource/contributor_covenant/pull/1590">feat(i18n): add Korean translation for Contributor Covenant 3.0 (#1590)</a></p></blockquote><h2 id="contributor-covenant">Contributor Covenant</h2><p><a href="https://www.contributor-covenant.org/">Contributor Covenant</a> iliandikwa na kuchapishwa kwa mara ya kwanza mwaka 12014 na <strong>Coraline Ada Ehmke</strong>, na tangu 12021 imehamishiwa kwa <strong>OES (Organization for Ethical Source)</strong> ambako imekuwa ikidumishwa na kuboreshwa na wachangiaji wake. Leo hii ndiyo Kanuni ya Maadili ya jamii za kidijitali inayotumiwa kwa upana zaidi duniani. Lengo lake ni kuweka wazi maadili ya kimyakimya ambayo jamii zinaweza kushiriki, ili kujenga utamaduni wa jamii ambapo kila mtu anakaribishwa na anaweza kuwa salama.</p><p>Zamani, katika jamii za wasanidi programu, mara nyingi kauli chafu au za kibaguzi ziliachwa zipite kwa kisingizio cha meritocracy. Contributor Covenant ilikuwa kichocheo muhimu kilichosaidia jamii za wasanidi kujisafisha na kubadilika kuelekea utamaduni wa kibinadamu zaidi unaowajumuisha watu wa aina mbalimbali na kuthamini kuheshimiana pamoja na mrejesho wa kujenga. Leo, mamia ya maelfu ya miradi ya open source duniani kote, ikiwemo Creative Commons, Linux, Apple, Mastodon, Microsoft, WordPress, na IBM, imepitisha ahadi hii.</p><h2 id="mambo-yaliyobadilika-katika-sasisho-la-contributor-covenant-30">Mambo yaliyobadilika katika sasisho la Contributor Covenant 3.0</h2><p>OES ilianza kazi hii mwaka 12024 kuadhimisha miaka 10 ya Contributor Covenant, na baada ya takriban mwaka mmoja wa kazi, ikatoa toleo la 3.0 mnamo Julai 12025. Ikilinganishwa na toleo la awali la 2.1, mabadiliko makuu ni haya yafuatayo:</p><ul><li>Marejeo:<ul><li><a href="https://ethicalsource.dev/blog/contributor-covenant-3/">https://ethicalsource.dev/blog/contributor-covenant-3/</a><li><a href="https://www.contributor-covenant.org/faq/">https://www.contributor-covenant.org/faq/</a></ul></ul><h3 id="kupanuka-kwa-unyumbufu">Kupanuka kwa unyumbufu</h3><ul><li>Ikilinganishwa na matoleo ya awali yaliyoboreshwa hasa kwa jamii za open source, toleo hili limeundwa ili litumike pia katika jamii mbalimbali za mtandaoni na nje ya mtandao, si katika uundaji wa programu pekee<ul><li>mf. hutumia neno lisiloegemea upande wowote na linalojumuisha zaidi la <strong>‘Wasimamizi wa Jamii (Community Moderators)’</strong> badala ya <strong>‘Wadumishaji wa Mradi (Project Maintainers)’</strong></ul><li>Nahau zenye mwelekeo wa Kimarekani zimeondolewa na kubadilishwa na misemo iliyo wazi zaidi ili iwe rahisi kwa wazungumzaji wa tamaduni nyingine kuielewa na kuitafsiri</ul><h3 id="mabadiliko-ya-paradigma-kutoka-haki-ya-kulipiza-kisasi-hadi-haki-ya-urejeshaji">Mabadiliko ya paradigma kutoka haki ya kulipiza kisasi hadi haki ya urejeshaji</h3><p>Moja ya sehemu zilizobadilika zaidi katika Contributor Covenant 3.0 ikilinganishwa na toleo la awali ni mabadiliko ya paradigma kutoka <strong>haki ya kulipiza kisasi (Retributive Justice)</strong> kwenda <strong>haki ya urejeshaji (Restorative Justice)</strong>. Aya ya <strong>miongozo ya utekelezaji (enforcement guidelines)</strong>, ambayo hapo awali ililenga viwango vya hatua za kinidhamu kwa kila ngazi, imepangwa upya kuwa aya ya <strong>Kushughulikia na Kurekebisha Madhara (Addressing and Repairing Harm)</strong>.</p><ul><li>Majina ya baadhi ya hatua za mwitikio yamebadilishwa<li>Mbali na kipengele cha mwitikio wa zamani cha Consequence, mwongozo wa Repair umeongezwa, hivyo maandishi haya hayasimamii tu adhabu kwa mhusika bali pia jinsi ya kurejesha mahusiano yaliyovunjika kati ya wahusika, kutuliza migogoro, na kurekebisha kosa baada ya tukio<li>Badala ya kusisitiza tu utekelezaji na adhabu kutoka kwa mtu wa tatu, mwelekeo wake umebadilika kuelekea kuhamasisha tafakuri ya hiari, maridhiano, na maboresho inapowezekana, pamoja na kutafakari namna ya kuifanya jamii iwe na afya tena baada ya tatizo kutokea</ul><h3 id="mwongozo-ulio-wazi-zaidi">Mwongozo ulio wazi zaidi</h3><ul><li>Aya ya <strong>Viwango Vyetu (Our Standards)</strong> imegawanywa wazi katika aya mbili za <strong>Tabia Zinazohimizwa (Encouraged Behaviors)</strong> na <strong>Tabia Zilizozuiliwa (Restricted Behaviors)</strong> ili kuboresha usomaji<li>Hasa katika aya ya <strong>Tabia Zilizozuiliwa (Restricted Behaviors)</strong>, si tu kufanya vitendo vibaya kwa kweli ndiko kunakozuiliwa, bali pia kutishia kuvifanya au kuvitangaza, jambo linaloimarisha uwezo wa kuzuia mapema<blockquote><p>Tunakubaliana kuzuia tabia zifuatazo katika jamii yetu. Matukio ya tabia hizi, vitisho vya kuzifanya, na kuzihamasisha ni ukiukaji wa Kanuni hii ya Maadili.</p></blockquote><li>Pia, chini ya aya ya <strong>Tabia Zilizozuiliwa (Restricted Behaviors)</strong>, kipengele kipya cha <strong>Vizuizi Vingine (Other Restrictions)</strong> kimeongezwa, kikibainisha kwa uwazi zaidi mwongozo wa kuzuia kujificha utambulisho (Misleading identity), kutotaja vyanzo (Failing to credit sources), nyenzo za matangazo (Promotional materials), na mawasiliano yasiyo ya kuwajibika (Irresponsible communication), maeneo ambayo hapo awali hayakuwa na kanuni za wazi vya kutosha<li>Kwa kuakisi majibu ya utafiti uliolengwa kwa watu wa jamii ambao walikuwa tayari wakipitisha na kuendesha Contributor Covenant kwa vitendo, imewekwa wazi kuwa ngazi ya utekelezaji wa hatua kwa hatua (enforcement ladder) ni msingi mmoja tu na haizuii matumizi ya mamlaka ya hiari ya wasimamizi wa jamii<blockquote><p>Ngazi hii ya utekelezaji imekusudiwa kuwa mwongozo. Haiwazuii Wasimamizi wa Jamii kutumia hiari na uamuzi wao, kwa kuzingatia maslahi bora ya jamii yetu.</p></blockquote></ul><h3 id="kuimarishwa-kwa-vifungu-vya-haki-ya-usawa-na-marufuku-ya-ubaguzi">Kuimarishwa kwa vifungu vya haki ya usawa na marufuku ya ubaguzi</h3><p>Katika aya ya kwanza, <strong>Ahadi Yetu (Our Pledge)</strong>, vifungu vinavyohusu haki ya usawa na marufuku ya ubaguzi vimeimarishwa. Baadhi ya istilahi zimebadilishwa kwa misemo jumuishi zaidi, na baadhi ya maadili ya kisasa ya utofauti yameongezwa kwa uwazi, hivyo kufanya maandishi haya yawe mahsusi zaidi.</p><ul><li>Maneno ‘ukubwa wa mwili (body size)’ na ‘mwonekano wa binafsi (personal appearance)’ yamebadilishwa kwa usemi mpana zaidi wa ‘sifa za kimwili (physical characteristics)’<li>‘dini (religion)’ limebadilishwa na usemi mpana zaidi wa ‘falsafa au dini (philosophy or religion)’<li>‘uraia (nationality)’ limebadilishwa na usemi mpana zaidi wa ‘asili ya kitaifa au kijamii (national or social origin)’<li>‘tofauti za neva (neurodiversity)’ imeongezwa kwa uwazi<li>‘lugha (language)’ imeongezwa kwa uwazi, kwa kuzingatia zaidi wazungumzaji wasio wa Kiingereza<li>Marekebisho ya jumla ya tungo yametumika kuhusiana na usawa wa kijinsia na utofauti<blockquote><p><strong>v2.1</strong><br /> sifa za kijinsia, utambulisho na uwasilishaji wa kijinsia, au utambulisho na mwelekeo wa kingono</p><p><strong>v3.0</strong><br /> jinsia ya kibaolojia au kijamii, utambulisho au uwasilishaji wa kijinsia, mwelekeo wa kingono</p></blockquote></ul><h2 id="mambo-niliyoyazingatia-katika-kazi-hii-ya-tafsiri-ya-kikorea">Mambo niliyoyazingatia katika kazi hii ya tafsiri ya Kikorea</h2><h3 id="mambo-ya-jumla-ya-kuzingatia">Mambo ya jumla ya kuzingatia</h3><h4 id="matumizi-ya-mtindo-wa-heshima">Matumizi ya mtindo wa heshima</h4><p>Wakati wa kuandika ahadi na Kanuni ya Maadili kwa Kikorea, kuchagua kati ya mtindo wa heshima na mtindo wa kawaida hutegemea mwelekeo unaokusudiwa, utamaduni wa shirika, na mtazamo unaotaka kuwasilishwa. Zamani, mtindo wa kawaida uliosisitiza mamlaka na nidhamu ndio uliokuwa ukitumika zaidi, lakini siku hizi pia kuna mifano mingi ya kuandika kwa mtindo wa heshima ili kusisitiza utamaduni wa usawa na heshima.</p><table><thead><tr><th>Mtindo<th>Mtindo wa heshima(~합니다, ~하겠습니다)<th>Mtindo wa kawaida(~한다)<tbody><tr><td>Hisia ya jumla<td>kuheshimiana, ahadi ya hiari, mwaliko<td>uthabiti, athari ya kisheria, kanuni ya kiobjektivu<tr><td>Utamaduni wa shirika<td>utamaduni wenye unyumbufu na usawa<td>utamaduni mkali zaidi kwa kulinganisha<tr><td>Hali kuu za matumizi<td>Kanuni ya Maadili, tamko la maadili<td>waraka wa ahadi ya usalama, mkataba wa ajira, kanuni za kinidhamu za kisheria<tr><td>Athari ya kisaikolojia<td>‘tunailinda pamoja’ (ridhaa ya hiari)<td>‘ni lazima ifuatwe’ (inasisitiza zaidi tabia yake ya kulazimisha)</table><p>Ukiangalia <a href="https://github.com/EthicalSource/contributor_covenant/pull/895#pullrequestreview-563210153">majadiliano ya awali</a>, inaonekana kwamba wakati toleo la 2.0 lilipotafsiriwa kwa Kikorea, mwanzoni walifikiria kutumia mtindo wa heshima lakini baadaye <a href="https://github.com/EthicalSource/contributor_covenant/commit/3971299d81149b3fc0ce603a5dd26400509f090f">wakaandika upya kwa mtindo wa kawaida</a>. Ninaheshimu mjadala huo wa zamani na hitimisho lake, lakini sababu zilizonifanya nitafsiri tena safari hii kwa mtindo wa heshima ni kama zifuatazo.</p><p>Leo, utamaduni wa jamii za open source kwa ujumla uko mbali kidogo na udhibiti, ukali, au utekelezaji wa kulazimisha; badala yake unaelekea zaidi kwenye kuheshimiana, ushiriki wa hiari, na michango ya hiari. <a href="#mabadiliko-ya-paradigma-kutoka-haki-ya-kulipiza-kisasi-hadi-haki-ya-urejeshaji">Katika Contributor Covenant 3.0 ya safari hii hasa, falsafa hiyo imeonyeshwa kwa nguvu katika maandishi yote</a>. Kwa kuzingatia maadili na falsafa kuu ambazo matini ya awali ilitaka kuwasilisha katika sasisho hili, pamoja na utamaduni na mwenendo wa jamii, nilihitimisha kwamba mtindo wa heshima ndio unaofaa zaidi katika kuitafsiri maandishi haya kwa Kikorea. Vilevile, nilitazama mifano ya <a href="https://rust-kr.org/pages/code-of-conduct/">Kikundi cha Watumiaji wa Rust cha Korea</a>, <a href="https://pythonkr.github.io/pycon-code-of-conduct/ko/coc/a_intent_and_purpose.html">Kanuni ya Maadili ya PyCon KR</a>, na <a href="https://kubernetes.io/ko/community/code-of-conduct/">Kanuni ya Maadili ya jamii ya Kubernetes kwa Kikorea</a>, ambazo zote hutumia mtindo wa heshima.</p><h4 id="kuepuka-matumizi-yasiyo-ya-lazima-ya-kauli-pasifu">Kuepuka matumizi yasiyo ya lazima ya kauli pasifu</h4><p>Tofauti na Kiingereza, ambacho hutumia sana kauli pasifu, Kikorea kwa msingi hupendelea kauli tendaji kuliko pasifu. Ukiona kwamba matini ya Kiingereza ilitumia pasifu kisha ukaibeba moja kwa moja kwa namna ya kimakanika kwenye tafsiri ya Kikorea, maandishi huwa yasiyo ya asili na yanaonekana kama tafsiri, na wakati mwingine hata kisarufi huwa hayafai.</p><p>Bila shaka, si kwamba Kikorea hakitumii kabisa kauli pasifu, lakini mradi tu maana ya maandishi haipotoshwi, nilijaribu kadiri iwezekanavyo kubadilisha misemo iliyoandikwa kwa pasifu katika matini ya asili kuwa misemo ya tendaji katika tafsiri ya Kikorea.</p><p><strong>mf.</strong></p><ul><li>“Encouraged Behaviors”: “장려<strong>되는</strong> 행동”(X), “장려<strong>하는</strong> 행동”(O)<li>“enforcement actions are carried out in private”: “집행 조치는 비공개로 진행<strong>된다</strong>“(X), “집행 조치는 비공개로 진행<strong>한다</strong>“(O)<li>“its own established enforcement process”: “자체적으로 확립<strong>된</strong> 집행 절차”(X), “자체적으로 확립<strong>한</strong> 집행 절차”(O)<li>“the following enforcement ladder may be used”: “다음의 단계적 집행 기준<strong>이 사용될</strong> 수 있습니다”(X), “다음의 단계적 집행 기준<strong>을 사용할</strong> 수 있습니다”(O)<li>“are provided at”: “에서 제공<strong>됩니다</strong>“(X), “에서 제공<strong>합니다</strong>“(O)</ul><h4 id="kuzingatia-muktadha-wa-neno-linapotumika-ndani-ya-maandishi-kuliko-kulitafsiri-kwa-kamusi-au-kwa-namna-ya-kimakanika">Kuzingatia muktadha wa neno linapotumika ndani ya maandishi kuliko kulitafsiri kwa kamusi au kwa namna ya kimakanika</h4><p>Kwa kuwa Kiingereza na Kikorea ni lugha zilizo mbali kwa kiasi fulani, bila shaka maneno yake hayalingani moja kwa moja neno kwa neno. Hivyo ndivyo ilivyo hata kama kamusi inasema yana maana ileile.</p><p>Kwa mfano, katika sehemu ifuatayo, “intimate” kimuktadha kimetumika si kwa maana ya “친밀한” bali ya “성적인”.</p><blockquote><p><strong>Sexualization.</strong> Behaving in a way that would generally be considered inappropriately <u>intimate</u> in the context or purpose of the community.</p></blockquote><p>Pia, katika sehemu ifuatayo, ukitafsiri “process” kwa maana ya kamusi kama “처리할”, itakuwa na ukakasi. Kwa muktadha wa maandishi, “process” hapa ni bora kutafsiriwa kama “추스를”.</p><blockquote><p>… give the community members involved time to <u>process</u> the incident.</p></blockquote><blockquote class="prompt-tip"><p>(<a href="https://stdict.korean.go.kr/">표준국어대사전</a> 표제어 중)</p><p><strong>추스르다「3」</strong>: 일이나 생각 따위를 수습하여 처리하다.</p></blockquote><p>Kwa upande mwingine, kuna maneno ya asili ya kigeni ambayo hayana mbadala mzuri wa kuyahamishia katika maneno ya jadi ya Kikorea. Kwa mfano, kwa “community”, kwa neno la jadi ingewezekana kuitafsiri kama “공동체”, lakini niliona kwamba hisia inayobebwa na neno “community” kwa Kiingereza na hisia inayobebwa na “공동체” kwa Kikorea hutofautiana kwa kiasi kikubwa. Kadiri iwezekanavyo nilijaribu kubadilisha maneno ya asili ya kigeni kuwa maneno ya jadi, lakini katika hali kama hizi ambapo niliona kuna hatari kubwa ya kupotosha maana au hisia ya matini asili, niliyabaki nayo kama yalivyo, kama “커뮤니티”.</p><p>Kwa kuzingatia mambo haya, sikulenga kufanya ubadilishaji wa moja kwa moja wa maneno kwa namna ya kamusi au kimakanika, bali kuchagua misemo ya Kikorea iliyo karibu zaidi na maana na muktadha wa matini asili.</p><h4 id="pia-kuzingatia-kanuni-za-lugha-ya-kikorea">Pia kuzingatia kanuni za lugha ya Kikorea</h4><p>Nilijitahidi kuzingatia kwa usahihi iwezekanavyo kanuni za lugha ya Kikorea kama tahajia ya Hangul na kanuni za lugha sanifu.</p><h3 id="aya-ya-서약our-pledge">Aya ya “서약(Our Pledge)”</h3><h4 id="kichwa-kidogo">Kichwa kidogo</h4><p>Ukilitafsiri moja kwa moja “Our Pledge”, lingekuwa “ahadi yetu” au “kiapo chetu”, lakini katika <a href="https://www.contributor-covenant.org/ko/version/2/1/code_of_conduct/">tafsiri ya Kikorea iliyokuwapo</a> tayari lilikuwa limetafsiriwa kama “서약”, na kwa kuzingatia uasilia wa maandishi niliona hilo linakubalika vya kutosha, kwa hiyo safari hii pia nililiweka kama “서약”.</p><h4 id="tafsiri-ya-neno-caste">Tafsiri ya neno “caste”</h4><p>Katika <a href="https://www.contributor-covenant.org/ko/version/2/1/code_of_conduct/">tafsiri ya Kikorea ya toleo la 2.1</a>, hili lilitafsiriwa moja kwa moja kama “카스트 제도”. Neno caste, kwa kuwa pia lina maana ya nomino ya kitaaluma ya jumla inayorejelea <u>mfumo wa tabaka uliokita sana katika maeneo mbalimbali duniani</u>, si rahisi kusema kuwa hiyo ni tafsiri isiyo sahihi. Hata hivyo, bila maelezo hayo ya kina ya kimaudhui, katika matumizi ya kawaida ya Kikorea, watu wengi wakisikia “카스트 제도” hulielewa kama “mfumo wa tabaka wa pekee wa Wahindu nchini India uliotokana na Manusmriti na kadhalika”. Kwa hiyo, kwa kuzingatia muktadha wa matini asili, nililitafsiri kama “계급”. Ni halali zaidi kutafsiri “caste” hapa kuwa si jambo linalohusu nchi maalumu (India) au dini maalumu (Uhindu), bali aina zote za mifumo ya hadhi za kijamii na tabaka zinazotokana nayo.</p><h4 id="matumizi-ya-성-badala-ya-성별">Matumizi ya “성” badala ya “성별”</h4><blockquote><p>We are committed to fostering an environment that respects and promotes the dignity, rights, and contributions of all individuals, regardless of … sex or gender, gender identity or expression, sexual orientation … or other status.</p></blockquote><p>Kwa kuzingatia maadili na muktadha ambao matini asili ilitaka kuwasilisha, inaeleweka kwamba “sex”, “gender”, na “sexual orientation” hapa hazikusudiwa kumaanisha utengano wa kijinsia wa mfumo wa watu wawili tu wa kiume na wa kike. Kwa hiyo, badala ya “성별”, ambalo kwa kiasi fulani huficha ndani yake maana ya mgawanyo huo wa jinsia mbili, nilitumia neno “성”, na nikajaribu kadiri iwezekanavyo kuhifadhi tofauti za maana ambazo maneno sex, gender, na sexuality yana katika taaluma za ubinadamu na sayansi ya jamii, kwa kuyatafsiri kama ifuatavyo.</p><blockquote><p>… 생물학적 또는 사회적 성, 성 정체성 또는 성 표현, 성적 지향…</p></blockquote><h3 id="aya-za-장려하는-행동encouraged-behaviors-na-제한하는-행동restricted-behaviors">Aya za “장려하는 행동(Encouraged Behaviors)” na “제한하는 행동(Restricted Behaviors)”</h3><h4 id="kuondoa-koloni-">Kuondoa koloni (<code class="language-plaintext highlighter-rouge">:</code>)</h4><blockquote><p>With these considerations in mind, we agree to behave mindfully toward each other and act in ways that center our shared values, including:</p><ol><li>Respecting the <strong>purpose of our community</strong>, our activities, and our ways of gathering.<li>Engaging <strong>kindly and honestly</strong> with others. …</ol></blockquote><p>Katika Kiingereza, ni jambo la kawaida kutumia koloni kama hapo juu ili kuorodhesha mifano baada ya sentensi kamili. Hata hivyo, katika kanuni za kisasa za matumizi ya lugha ya Kikorea, matumizi ya koloni yanawekewa mipaka zaidi katika mitindo ya kuorodhesha, kama vile kutaja vipengele vinavyofuata kichwa au kuongeza maelezo baada ya kichwa. Kwa hiyo, isipokuwa maandishi yenyewe yaandikwe kwa mtindo wa kuorodhesha tangu mwanzo, kuyaandika hivi kama ifuatavyo huwa na ukakasi sana, na mara nyingi huacha hisia kwamba tafsiri ilifanywa kienyeji kwa mashine au kwa LLM. Binafsi, hii ilikuwa pia moja ya sehemu nilizohisi ni za kusikitisha sana katika <a href="https://www.contributor-covenant.org/ko/version/2/1/code_of_conduct/">tafsiri ya Kikorea ya toleo la 2.1</a>.</p><blockquote><p>이러한 점을 유념하며, 우리는 서로를 사려 깊게 대하고 우리가 공유하는 다음 가치를 중심으로 행동할 것에 동의합니다:</p><ol><li>우리 <strong>공동체의 목적</strong>, 활동 및 모임 방식을 존중합니다.<li><strong>친절하고 정직하게</strong> 다른 사람들과 소통합니다. …</ol></blockquote><p>Kwa hiyo, ili maandishi yawe ya asili kulingana na matumizi ya Kikorea, badala ya kuhamisha moja kwa moja sehemu iliyotumia koloni kwa kuitumia tena kama koloni, niliibadilisha iwe nukta (<code class="language-plaintext highlighter-rouge">.</code>).</p><h4 id="tafsiri-ya-usemi-that-would-generally-be-considered-inappropriately">Tafsiri ya usemi “that would generally be considered inappropriately”</h4><p>Hapa, badala ya kutafsiri “generally” moja kwa moja kama “kwa jumla”, nilitafsiri kwa namna ya asili zaidi kimuktadha kuwa “na watu wengi”.</p><blockquote><p>…<u>대부분의 사람들이</u> 부적절하다고 간주할 만한…</p></blockquote><h3 id="tafsiri-ya-usemi-act-on">Tafsiri ya usemi “act on”</h3><p>Mwanzoni nilifikiria kutafsiri “act on” kwa urahisi kama “kutumia”, lakini kwa muktadha wake inaelekea zaidi kumaanisha kukataza vitendo vyote vinavyofanywa <u>kwa msingi wa taarifa za utambulisho au taarifa za binafsi za mtu mwingine, bila kujali nia</u>. Nikaona kwamba kuitafsiri kama “kutumia” kungepunguza maana, hivyo nikaitafsiri kama ifuatavyo.</p><blockquote><p><strong>비밀 침해.</strong> 타인의 신상 관련 정보 또는 개인적인 정보를 당사자의 허락 없이 공유하거나, 그 정보<u>를 바탕으로 행하는</u> 모든 행위.</p></blockquote><h3 id="aya-ya-문제-신고reporting-an-issue">Aya ya “문제 신고(Reporting an Issue)”</h3><ul><li>“this Code of Conduct <strong>reinforces</strong> encouraged behaviors and norms that …”: imetafsiriwa kama “본 행동 강령은 …는 권장 행동 방식과 규범을 <strong>증진합니다</strong>”<li>“in a timely manner”: imetafsiriwa kama “적시에”<li>“while prioritizing safety and confidentiality”: imetafsiriwa kama “안전과 비밀 유지를 우선시한다는 전제 하에”<li>“In order to <strong>honor</strong> these values”: imetafsiriwa kama “이들 가치를 <strong>지키기</strong> 위해”<blockquote class="prompt-tip"><p>(<a href="https://www.oxfordlearnersdictionaries.com/">Oxford Learner’s Dictionaries</a> 표제어 중)</p><p><a href="https://www.oxfordlearnersdictionaries.com/definition/english/honor_2"><strong>honor</strong></a> <em>verb</em><br /> <u>keep promise</u> 3. <strong>honor something</strong> <em>(formal)</em> to do what you have agreed or promised to do</p></blockquote></ul><h3 id="aya-ya-피해-대응-및-교정addressing-and-repairing-harm">Aya ya “피해 대응 및 교정(Addressing and Repairing Harm)”</h3><ul><li>“Addressing”: imetafsiriwa kama “대응”<li>“Repairing”: imetafsiriwa kama “교정”</ul><h4 id="tafsiri-ya-event-consequence-repair">Tafsiri ya <code class="language-plaintext highlighter-rouge">Event:</code>, <code class="language-plaintext highlighter-rouge">Consequence:</code>, <code class="language-plaintext highlighter-rouge">Repair:</code></h4><p>Hii ilikuwa sehemu iliyonifanya nitafakari kwa muda kwa sababu ni vigumu kiasi kuihamisha kwa Kikorea. Ukiitafsiri moja kwa moja kama “tukio”, “matokeo”, na “marekebisho”, maandishi huwa ya ajabu sana.</p><p>Ili maandishi yawe ya asili huku yakibeba kwa ukamilifu iwezekanavyo <a href="#mabadiliko-ya-paradigma-kutoka-haki-ya-kulipiza-kisasi-hadi-haki-ya-urejeshaji">falsafa ya matini asilia</a>, baada ya kutafakari kwa makini nilitafsiri kama ifuatavyo.</p><ul><li>“Event”: imetafsiriwa kama “적용 상황”<li>“Consequence”: imetafsiriwa kama “대응 조치”<li>“Repair”: mwanzoni nilifikiria “회복 조치”, lakini nikaikataa kwa kuwa usemi “조치” una hisia ya kuingiliwa na kutekelezwa na mtu mwingine kuliko tafakuri ya hiari na maboresho ya mhusika, jambo ambalo linapingana na nia ya matini asili. Hatimaye niliitafsiri kama “교정 노력”.</ul><h4 id="tafsiri-ya-usemi-seeking-clarification-on-expectations">Tafsiri ya usemi “seeking clarification on expectations”</h4><p>“expectations” inaweza kutafsiriwa moja kwa moja kama “mambo yanayotarajiwa”, na hata hivyo maana ingeweza kufikika, lakini kwa ajili ya mtiririko mzuri zaidi wa maandishi niliitafsiri kama “준수 사항”.</p><blockquote class="prompt-tip"><p>(<a href="https://www.oxfordlearnersdictionaries.com/">Oxford Learner’s Dictionaries</a> 표제어 중)</p><p><a href="https://www.oxfordlearnersdictionaries.com/definition/english/expectation"><strong>expectation</strong></a> <em>noun</em><br /> 3. [countable, usually plural] a strong belief about the way something should happen or how somebody should behave</p></blockquote><p>“seeking clarification” ingeweza pia kutafsiriwa kama “kuomba ufafanuzi”, lakini katika muktadha wa kipengele cha Repair, kinachoelezwa ni hatua na mtazamo mzuri wa baada ya tukio ambao anayesababisha tatizo anapaswa kuchukua. Kwa hiyo, ukitafsiri clarification na seeking kila moja kama “ufafanuzi” na “kuomba”, maana huwa ya ajabu. Hapa, niliona kuwa tafsiri inayofaa zaidi ni ile inayomaanisha jitihada za mtu <u>kuhakiki na kuelewa kwa uwazi</u> “준수 사항” ili ajitafakari na asirudie kosa lilelile.</p><blockquote class="prompt-tip"><p>(<a href="https://www.oxfordlearnersdictionaries.com/">Oxford Learner’s Dictionaries</a> 표제어 중)</p><p><a href="https://www.oxfordlearnersdictionaries.com/definition/english/seek"><strong>seek</strong></a> <em>verb</em><br /> 2. [transitive] to ask somebody for something; to try to obtain or achieve something</p><p><a href="https://www.oxfordlearnersdictionaries.com/definition/english/clarification"><strong>clarification</strong></a> <em>noun</em><br /> [uncountable, countable] (formal)<br /> the act or process of making something clearer or easier to understand</p><ul><li><em>I am <strong>seeking clarification of</strong> the regulations.</em></ul></blockquote><h4 id="tafsiri-ya-usemi-cooldown">Tafsiri ya usemi “cooldown”</h4><p>Kikamusi, lina maana ya kupoa, mazoezi ya kumalizia baada ya mazoezi makuu, au kutulia, na hapa limetumika kwa maana iliyo karibu zaidi na kutulia. Ni karibu zaidi na maana ya “kupoa” katika usemi kama “tuliza kichwa kidogo.”</p><p>Hata hivyo, kutafsiri “time-limited cooldown period” kama “kipindi cha kutulia cha muda maalumu” kulionekana kuwa na ukakasi, hivyo katika tafsiri hii ya Kikorea niliitafsiri “cooldown period” kama “자숙 기간”.</p><h4 id="tafsiri-ya-usemi-time-to-process-the-incident">Tafsiri ya usemi “time to process the incident”</h4><p><a href="#kuzingatia-muktadha-wa-neno-linapotumika-ndani-ya-maandishi-kuliko-kulitafsiri-kwa-kamusi-au-kwa-namna-ya-kimakanika">Kama nilivyoeleza hapo juu</a>, niliitafsiri kama “해당 일을 추스를 시간”.</p><h4 id="tafsiri-ya-misemo-suspension-na-ban">Tafsiri ya misemo “suspension” na “ban”</h4><p>Katika <a href="https://www.contributor-covenant.org/ko/version/2/1/code_of_conduct/">tafsiri ya Kikorea ya toleo la 2.1</a>, “ban” ilitafsiriwa kama “제재”, lakini “제재” ni neno linalojumuisha hatua zote zinazoweza kuchukuliwa dhidi ya ukiukaji, ikiwemo ngazi za chini kama onyo au kizuizi cha muda cha shughuli, hivyo maana yake hapa si ya wazi. Aidha, neno la Kiingereza “ban” lenyewe lina maana iliyo wazi ya kusimamisha au kupiga marufuku, na usemi kama “kusimamishwa kabisa kwa akaunti” pia hutumika mara nyingi kwa asili katika Kikorea, kwa hiyo sikuona sababu ya kulikwepa na kulitafsiri kwa mzunguko.</p><p>Hali ni hiyo hiyo kwa “suspension”; lina maana wazi ya kusimamishwa kwa muda, kama katika adhabu ya kazi au shule, kwa hivyo hakuna haja ya kulifasiri kwa kuzunguka.</p><p>Kwa hiyo, “Temporary Suspension” na “Permanent Ban” nilivitafsiri kama “일시적 정지” na “영구 정지” mtawalia.</p><h4 id="tafsiri-ya-sentensi-this-enforcement-ladder-is-intended-as-a-guideline">Tafsiri ya sentensi “This enforcement ladder is intended as a guideline.”</h4><p>Usemi “enforcement ladder” niliutafsiri kama “단계적 집행 기준”. Vilevile, sentensi hii ilitumika katika muktadha wa kusema kwamba viwango hivyo vya hatua kwa hatua vya utekelezaji vinatolewa tu kama mojawapo ya chaguo zinazowezekana, huku vikihakikisha hiari na mamlaka ya maamuzi ya wasimamizi wa jamii. Kwa hiyo, artikeli “a” niliitafsiri kama “하나의”. Ndiyo maana katika tafsiri niliandika kama ifuatavyo.</p><blockquote><p><u>이 단계적 집행 기준은 하나의 기준선으로 마련한 것입니다.</u> 이는 커뮤니티의 최선의 이익에 부합하는 커뮤니티 관리자의 재량권과 판단 권한을 제한하지 않습니다.</p></blockquote><h2 id="kwa-kumalizia">Kwa kumalizia</h2><p>Nyaraka na miradi mingi ya manufaa ya umma ya aina hii mara nyingi hutafsiriwa kwa lugha nyingi na wajitolea na wachangiaji. Hata hivyo, kwa bahati mbaya, katika tafsiri za Kikorea, mara nyingi hakuna mchango wa kutosha na hivyo aidha hakuna tafsiri kabisa, au hata kama ipo, maandishi yake huwa ya kukariri na ya kimakanika kiasi kwamba, hata nikiwa Mkorea, nimejikuta si mara chache nikisema, “afadhali nisome kwa Kiingereza,” kisha kuhamia kwenye ukurasa wa Kiingereza.</p><p>Nilipoamua kuchangia tafsiri ya Kikorea safari hii, nilijiambia kwamba ikiwa tayari nitaichangia, basi nihakikishe natengeneza tafsiri yenye ubora wa kiwango ambacho msomaji angeweza kuisoma bila kuhisi ugeni hata kama angeambiwa kwamba iliandikwa kwa Kikorea tangu mwanzo na mwandishi Mkorea. Nilijitahidi kuelewa na kuingiza katika tafsiri falsafa ambayo matini asili ilitaka kubeba na muktadha wake finyu, hasa ni misemo ipi imebadilika kutoka toleo la 2.1 kwenda 3.0 na kwa sababu zipi waandishi wa asili waliamua kufanya chaguo hizo.</p><p>Kwa asili ya lugha za kibinadamu, tafsiri si kitu kinachotoa matokeo yale yale kama kazi ya kihisabati kwa sababu tu umeweka chanzo kilekile. Kila mfasiri atatoa tafsiri iliyo tofauti kidogo, na hili linatokana si tu na umahiri wa mfasiri bali pia na hulka ya kimsingi ya tafsiri na uandishi, ambako hakuna jibu moja lililowekwa. Siku hizi ninatumia AI kama msaidizi katika karibu kazi zangu zote, na hata machapisho ya blogu hii ninayatafsiri na kuyachapisha kiotomatiki katika lugha mbalimbali kwa kuunganisha API ya LLM. Hata hivyo, kwa kazi hii moja, nilitaka kwa dhati kufanya tafsiri sahihi kabisa, bora zaidi niwezavyo. Nilipitia kila usemi mara nyingi kwa mkono wangu mwenyewe, nikitafakari ni usemi upi ungeweza kubeba maana ya matini asili kwa ukamilifu zaidi bila kuipotosha, huku ukiendelea kuwa wa asili. Matokeo yake ndiyo haya: tafsiri inayobeba uamuzi na ufasiri wangu binafsi, lakini ulio bora zaidi nilioweza kufanya. Katika nyakati hizi ambapo kila mtu anatumia AI, naamini kwamba angalau kwa tafsiri za nyaraka muhimu kama ahadi na Kanuni ya Maadili, tafsiri lazima iwe na thamani kwa sababu ina ubora unaozidi matokeo ya kumtupia AI matini asili na kuamuru itafsiri. Angalau kufikia Machi 12026, ninajivunia kwamba <a href="https://github.com/EthicalSource/contributor_covenant/pull/1590">tafsiri hii</a> imehifadhi kikamilifu hisia na muktadha mwembamba wa matini asili ambavyo tafsiri za mashine au LLM bado haziwezi kuvikamata vyote.</p><p>Kufikia Machi 20, 12026, toleo la 3.0 la Contributor Covenant, mbali na matini ya Kiingereza na tafsiri hii ya Kikorea ninayowasilisha, limekamilishwa kutafsiriwa kwa lugha tatu tu: Kibengali, Kijerumani, na Kichina cha Bara. Ukiangalia <a href="https://github.com/EthicalSource/contributor_covenant/pulls">orodha ya PR zilizo wazi</a>, utaona pia kuna lugha nyingi ambazo rasimu za tafsiri zimewasilishwa kama PR lakini bado hazijaidhinishwa kwa mwisho kwa sababu hakuna wakaguzi. Hata zaidi, kuna lugha nyingi ambazo hazijafika hata toleo la 3.0 na bado zipo kwenye 1.4. Ikiwa kwa sababu yoyote kuna msomaji wa lugha nyingine isipokuwa Kikorea anayesoma makala hii, <a href="https://github.com/EthicalSource/contributor_covenant?tab=contributing-ov-file#translators-and-native-speakers">kwa kuwa namna ya kuchangia si ngumu sana</a>, ningeomba atenge hata siku moja ya wikendi na kuchangia; bila shaka hilo litakuwa msaada mkubwa kwa OES na kwa watumiaji wa lugha hiyo. Hata mimi mwenyewe, huu ulikuwa uzoefu wangu wa kwanza kuchangia kazi ya aina hii ya tafsiri na pia wa kwanza kusoma kwa makini Kanuni nzima ya Maadili, lakini nahisi kabisa ulikuwa ni kazi iliyostahili saa kadhaa nilizowekeza. Korea ni miongoni mwa nchi zilizo na idadi kubwa ya wasanidi wanaoshiriki kwa bidii katika jamii za open source kama GitHub ikilinganishwa na idadi ya watu kwa ujumla. Kwa hiyo, ningefurahi sana kama <a href="https://github.com/EthicalSource/contributor_covenant/pull/1590">tafsiri ya Kikorea</a> ya Kanuni ya Maadili ya Contributor Covenant 3.0 niliyotafsiri na kuwasilisha safari hii itapata ushiriki wa Wakorea wengine wengi katika mapitio, na ikiwa ikiwezekana, watu wengi pia waipitishe na kuitumia kwa manufaa katika maeneo mbalimbali.</p><p>Kama alivyosema <strong>Profesa Nathan Schneider</strong> katika <a href="https://ethicalsource.dev/blog/contributor-covenant-3/">makala ya blogu ya OES</a> niliyonukuu, Contributor Covenant hutumika kama msingi wa lazima wa kujenga jamii zenye uwajibikaji na uwazi, na kwa kweli imechangia katika kutatua migogoro. Kwa desturi, mara nyingi watu hubofya kitufe cha “Add a code of conduct” kwenye GitHub au mahali pengine na kubandika tu templeti, lakini kwa sababu isiyoeleweka templeti ambayo GitHub hutoa moja kwa moja haijasasishwa tangu toleo la 2.0. Kwa kuwa toleo la 3.0 lina mabadiliko na maboresho makubwa ikilinganishwa na matoleo ya 2.0 na 2.1, ningependa kupendekeza kwamba, ikiwezekana, upitishe toleo jipya kupitia <a href="https://www.contributor-covenant.org/adopt/">ukurasa rasmi</a>. Matini yenyewe si ndefu sana, kwa hiyo naamini itakuwa na maana zaidi ukiisoma angalau mara moja kwa utulivu katika mchakato huo. Natarajia mtavutiwa sana na Kanuni ya Maadili ya Contributor Covenant 3.0 na <a href="https://github.com/EthicalSource/contributor_covenant/pull/1590">tafsiri ya Kikorea</a> niliyoifanyia kazi safari hii, nami naishia hapa.</p>]]> </content> </entry> <entry><title xml:lang="sw">Jinsi ya Kuandaa Nyenzo za IR</title><link href="https://www.yunseo.kim/sw/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="am" /><published>2026-01-11T00:00:00+09:00</published> <updated>2026-01-11T00:00:00+09:00</updated> <id>https://www.yunseo.kim/sw/posts/how-to-prepare-ir-materials/</id> <author> <name>Yunseo Kim</name> </author> <category term="Startup" /> <category term="IR" /> <summary xml:lang="sw">Elewa IR materials ni nini, na panga mambo yanayopaswa kujumuishwa katika nyenzo nzuri za IR ili kufanikiwa kuvutia uwekezaji.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Elewa IR materials ni nini, na panga mambo yanayopaswa kujumuishwa katika nyenzo nzuri za IR ili kufanikiwa kuvutia uwekezaji.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="ir-ni-nini">IR ni nini?</h2><p><strong>IR</strong> ni kifupi cha <strong>Investor Relations</strong>, yaani neno linalorejelea kwa upana nyenzo na shughuli zote zinazohitajika kueleza na kutangaza kampuni kwa wawekezaji, kujenga uhusiano nao, na kuvutia uwekezaji. Kwa kawaida, nyenzo za IR humaanisha nyenzo ambazo kampuni huwasilisha kwa wawekezaji ili kupata uwekezaji.</p><h2 id="mambo-yanayopaswa-kujumuishwa-katika-nyenzo-za-ir">Mambo yanayopaswa kujumuishwa katika nyenzo za IR</h2><p>Kwa kuwa lengo la nyenzo za IR ni kupata uwekezaji, ni muhimu kuwasilisha kwa njia ya kushawishi sababu zinazomfanya mwekezaji aone kwa nini anapaswa kuwekeza katika kampuni hii. Kwa hiyo, zinapaswa kujumuisha maudhui ya jumla ya biashara kama vile muhtasari wa huduma, mazingira ya soko, maelezo ya bidhaa/huduma, mazingira ya ushindani, matokeo, modeli ya biashara, mpango wa ukuaji wa baadaye, na muundo wa timu.</p><ul><li><strong>Pitch Deck</strong>:<ul><li>Lengo ni kuwa <strong>fupi na yenye athari</strong>, na kuacha <strong>hisia nzuri ya kwanza</strong> kwa kundi pana la wawekezaji watarajiwa<li>Hutumika katika hatua za awali za kutafuta uwekezaji<li>Kwa kawaida huwa na slaidi 10-15, na hujengwa zaidi kwa nyenzo fupi na za kuona</ul><li><strong>IR Deck</strong>:<ul><li>Hutoa <strong>taarifa za kifedha za kina na mkakati wa muda mrefu</strong> wa kampuni<li>Hutolewa kwa wawekezaji wa kitaalamu ambao wameanza kuonyesha kiwango fulani cha nia na wako karibu kufanya uamuzi<li>Huwasaidia wawekezaji kufanya <strong>tathmini na maamuzi ya kina zaidi</strong><li>Kwa kawaida huwa na slaidi 20-30, na hutoa taarifa za kina zaidi kama <strong>mpango wa kifedha, uchambuzi wa soko, muundo wa timu, na uchambuzi wa washindani</strong></ul></ul><h3 id="dhamiramaono-missionvision">Dhamira/Maono (Mission/Vision)</h3><ul><li>Thamani ya msingi ambayo kampuni yetu inataka kutoa ni ipi?</ul><blockquote class="prompt-tip"><p>Hii ni sehemu inayoweza kusemwa kuwa utambulisho mkuu wa kampuni, hivyo ni vizuri kueleza dhamira na maono ya kampuni mwanzoni kabisa mwa nyenzo za IR kwa sentensi moja moja, kwa ufupi lakini kwa uwazi.</p></blockquote><h3 id="muhtasari-wa-huduma">Muhtasari wa huduma</h3><h4 id="tatizo-problem">Tatizo (Problem)</h4><ul><li>Ni tatizo gani la sokoni ambalo huduma hii inataka kutatua?<li>Watumiaji wanahisi usumbufu kiasi gani kuhusu tatizo hili?<li>Kwa nini tatizo hilo ni muhimu?<li>Je, kuna mahitaji ya utatuzi wa tatizo hili? Walengwa ni nani?</ul><h4 id="suluhisho-solution">Suluhisho (Solution)</h4><ul><li>Tatizo lililotajwa hapo juu litatatuliwaje kwa njia ya konkret?<li>Ni faida gani ambazo watumiaji na watumiaji wa mwisho watapata ikilinganishwa na njia zilizopo sasa?</ul><blockquote class="prompt-tip"><p>Kwa kuwa wawekezaji mara nyingi si wataalamu wa eneo husika, ni bora kueleza huduma kutoka mtazamo wa mtumiaji wa kawaida badala ya waendelezaji, na maelezo ya kiufundi yashughulikiwe baadaye endapo kutatokea maswali ya ziada.</p></blockquote><h3 id="ukubwa-wa-soko-market-size">Ukubwa wa soko (Market Size)</h3><p>Ikiwa utaweka ukubwa wa soko moja kwa moja kwa thamani ya fedha, matokeo yanaweza kutofautiana sana kulingana na mbinu ya ukokotoaji au vigezo mbalimbali, na pia kuna hatari kubwa kiasi ya kuzuka kwa pingamizi. Ni salama na yenye ufanisi zaidi kuonyesha ukubwa wa soko kwa kuweka viashiria vingine kama idadi ya watumiaji watarajiwa, idadi/marudio ya miamala, n.k.</p><ul><li><strong>TAM(Total Addressable Market, soko lote)</strong>: ukubwa wa juu kabisa wa soko ambao kwa nadharia unaweza kufikiwa ikiwa bidhaa au huduma ingetolewa kwa soko la dunia nzima, kwa kudhani hali ya kiideali ambapo washindani wote hawapo na kampuni inafikia asilimia 100 ya soko<li><strong>SAM(Service Available Market, soko linalofikika)</strong>: ukubwa wa soko katika wigo ambao kampuni inalenga kwa uhalisia, ikizingatia vizuizi vya kijiografia, miundombinu, na udhibiti<li><strong>SOM(Service Obtainable Market, soko la mapato)</strong>: ukubwa wa soko ambao kampuni inaweza kuumiliki mwanzoni ndani ya SAM, kwa kuzingatia ushindani, uwezo wa kampuni, na mkakati wa masoko</ul><blockquote class="prompt-tip"><p>Wakati wa kukadiria ukubwa wa soko, mara nyingi hutokea kwamba kuhusu ukubwa wa soko lote au soko linalofikika, watu hunukuu tafiti za soko za wahusika wa tatu na kuwasilisha takwimu na viashiria mahususi; lakini kuhusu ukubwa wa soko la mapato, ambalo kwa mtazamo wa startup ndilo muhimu zaidi kwa sasa, hueleza kwa mtindo wa “tukifikia asilimia fulani ya soko hili, tunaweza kupata kiasi fulani cha mauzo.” Kwa kusema kweli, hata mimi nilikuwa nimeandika rasimu ya kwanza ya nyenzo za ndani za IR kwa namna hii nilipoanza kujiandaa kuanzisha biashara.</p><p>Hata hivyo, tatizo la kufanya hivi ni kwamba kwa mtazamo wa mwekezaji, ni vigumu kuamini mpango wa kuchukua asilimia fulani ya soko. Sio kwamba ukizindua huduma tu utaweza kukamata soko kwa urahisi, na kudai kwa ujumla kwamba utapata asilimia fulani ya soko kwa kulenga washiriki wote wa soko hilo hakushawishi vya kutosha.</p><p>Ni muhimu kuonyesha kwamba ukubwa wa soko lote na soko linalofikika unatosha, huku pia ukitoa mantiki ya jinsi unavyolitazama <strong>kundi la wateja wa mwanzo (Immediate Market)</strong>, na ni makundi gani ya wateja utaongezea hatua kwa hatua baadaye ili kupanua soko la mapato.</p></blockquote><blockquote class="prompt-tip"><p><strong>Muda wa biashara</strong></p><ul><li>Katika biashara, muda pia ni muhimu sana<li>Lazima uweze kuwaeleza wawekezaji kwa nini biashara hii inaweza kufanikiwa sasa na kwa nini wanapaswa kuwekeza sasa<li>Unapaswa kuwasilisha sababu zinazofanya kipindi hiki kiwe mwafaka kwa kutekeleza biashara hii, kama vile uwezekano wa kiteknolojia, mabadiliko ya tabia za watu, mikondo ya kijamii, na mabadiliko ya kimazingira</ul></blockquote><h3 id="maelezo-ya-bidhaahuduma-product">Maelezo ya bidhaa/huduma (Product)</h3><ul><li>Sifa na vipengele muhimu vya bidhaa/huduma ni vipi?<li>Njia mahsusi ya utendaji na mifano ni ipi?</ul><h3 id="modeli-ya-biashara-business-model">Modeli ya biashara (Business Model)</h3><ul><li>Mtaingiza fedha vipi?<li>Ni nani anayelipa? (Kwa kuwa mtumiaji wa mwisho na mteja anayelipa si lazima wawe mtu yuleyule kila wakati, ni muhimu kufafanua wazi ni nani hasa anayezalisha mapato)<li>Mtalipisha kwa sehemu gani? Bei itawekewa mpangilio gani?</ul><h3 id="mazingira-ya-ushindani-competition">Mazingira ya ushindani (Competition)</h3><ul><li>Washindani wakuu ni nani?<li><strong>Kwa mtazamo wa mteja</strong>, huduma na bidhaa zetu zina ubora na faida gani ikilinganishwa na huduma na bidhaa za kampuni nyingine?<li>Ni huduma zipi mtakazozichukulia kuwa huduma shindani, na ni wateja gani mtawalenga kama walengwa wakuu?</ul><blockquote class="prompt-tip"><p>Uchambuzi mzuri wa washindani hukusaidia kuonyesha kwa ufanisi kwa wawekezaji kwamba unaelewa vizuri hali ya soko.</p></blockquote><h3 id="matokeo-na-mkakati-wa-kuingia-sokoni-go-to-market-strategy">Matokeo na mkakati wa kuingia sokoni (Go-to Market Strategy)</h3><ul><li>Kiashiria gani cha msingi ndicho muhimu zaidi kwa mafanikio ya biashara?<ul><li>e.g. idadi ya oda, watumiaji hai wa kila mwezi(MAU), thamani ya miamala ya kila mwezi, n.k.</ul><li>Kwa kuzingatia kiashiria hicho, ni matokeo gani yamepatikana?<li>Njia na njia kuu za masoko za kampuni ni zipi?<li>Mbinu na gharama za kupata wateja wapya ni kiasi gani?<li>*<strong>Thamani ya maisha ya mteja(LTV)</strong> ni kiasi gani?</ul><blockquote class="prompt-info"><p>*<strong>Thamani ya maisha ya mteja(Customer Lifetime Value, LTV)</strong>: kipimo kinachoonyesha faida ya jumla ambayo mtumiaji mmoja huleta katika kipindi chote anachotumia huduma hiyo</p></blockquote><blockquote class="prompt-tip"><p>Ni bora kuondoa viashiria vya ziada ambavyo si vya msingi.</p></blockquote><blockquote class="prompt-tip"><p><strong>Ikiwa ni startup ya hatua ya mwanzo kabisa ambayo bado haina mapato</strong></p><ul><li>Weka na uwasilishe <strong>kiwango cha kufikia faida bila hasara (break-even point)</strong> cha huduma unayotaka kutoa<li>Hapa, usipandishe kupita kiasi viashiria vinavyohusiana na mapato; viweke kwa uhalisia na kwa mtazamo wa kihafidhina<li>Ni vizuri kuwasilisha hali ya mapato ya mwaka wa kwanza wa kuzalisha mapato, na kuongezea mpango wa mauzo wa miaka michache ijayo ili kutoa imani kwamba biashara inaweza kukua kwa uthabiti<ul><li>Makadirio ya muda mfupi ya mwaka 1<li>Makadirio ya muda wa kati ya miaka 3<li>Makadirio ya muda mrefu ya miaka 5</ul><li>Tumia kwa bidii grafu na jedwali ili maudhui yaonekane kwa haraka kwa mtazamo mmoja<li>Ni vizuri kujumuisha <strong>slaidi ya uthibitishaji wa nadharia</strong> ili kuimarisha msingi wa hoja kwa kuwasilisha kwa kushawishi sababu za kwa nini viashiria vya msingi na hali ya mapato viliwekwa hivyo<ul><li>Unahitaji kujenga msingi thabiti wa hali ya mapato inayotarajiwa kupitia majaribio ya mara nyingi na uthibitishaji wa nadharia</ul></ul></blockquote><h3 id="muundo-wa-timu-the-team">Muundo wa timu (The Team)</h3><ul><li>Badala ya kuwatambulisha wote, watambulishe zaidi wanatimu wakuu wanaotekeleza majukumu muhimu, akiwemo mwanzilishi/CEO mwenyewe<li>Uzoefu na ujuzi viwasilishwe kwa idadi ya takriban 2-3, kwa kutumia logo n.k. ili kuongeza usomaji<li>Ikiwa kuna wawekezaji au washauri waliotoa au wanaotoa mchango muhimu, ni vizuri kuwajumuisha pia</ul><h3 id="mpango-wa-ukuaji-wa-baadaye-milestones">Mpango wa ukuaji wa baadaye (Milestones)</h3><ul><li>Wasilisha malengo yanayotakiwa kufikiwa kwa kipindi na kwa hatua<li>Kwa kawaida, malengo huwekwa hadi kabla ya hatua inayofuata ya uwekezaji (ikiwa ni seed basi hadi kabla ya Series A, ikiwa ni Series A basi hadi kabla ya Series B)<li>Wasilisha kiasi cha uwekezaji kinachotakiwa na mpango wa matumizi yake<li>Hapa, badala ya kuweka vipindi virefu mno vya zaidi ya nusu mwaka, ni bora kuvigawanya kwa vipindi vya takriban miezi 2</ul><h3 id="mpango-wa-kifedha-financials">Mpango wa kifedha (Financials)</h3><p>Kwa IR Deck, ni lazima kujumuisha mpango wa kifedha.</p><ul><li>Jedwali la mpango wa kifedha wa miaka 3-5 ijayo<li><strong>Unit economics</strong>: mapato na gharama kwa kila kitengo cha mteja katika biashara<li><strong>Burn rate</strong>: kiwango cha matumizi ya fedha taslimu kwa gharama za kuanzisha biashara, utafiti na maendeleo, na gharama nyingine katika kampuni changa<li>Jumla ya mapato na gharama<li>EBITDA au taarifa ya mtiririko wa fedha n.k.</ul><blockquote class="prompt-warning"><ul><li>Lazima uwe mwangalifu usiwasilishe mpango wa kifedha usio halisi sana<li>Mara nyingi mapato yanayotarajiwa huzidishwa kupita kiasi na gharama zinazohitajika hupunguzwa kupita kiasi, hivyo ni lazima kuwa makini katika kukadiria kiwango cha mapato kinachotarajiwa<li>Gharama zinazohitajika zikadiriwe kwa usahihi kadri iwezekanavyo kwa kuzingatia gharama za kutengeneza bidhaa/huduma pamoja na gharama za uendeshaji</ul></blockquote><h2 id="mambo-ya-kusisitiza-kwa-kila-hatua-ya-uwekezaji">Mambo ya kusisitiza kwa kila hatua ya uwekezaji</h2><h3 id="seed">Seed</h3><ul><li>Hii ni hatua ya kutengeneza MVP, kuthibitisha mwitikio wa soko, na kuhakiki uhalali wa modeli ya biashara<li>Unapaswa kusisitiza sana matokeo ya uthibitishaji wa nadharia za awali na modeli ya biashara, matokeo ya majaribio ya MVP, na mapato yaliyotokana nayo</ul><h3 id="pre-a">Pre-A</h3><ul><li>Hii ni hatua ya kuthibitisha uwezo wa ukuaji na kupata fedha za ziada zinazohitajika kwa maendeleo ya bidhaa, masoko, ajira, n.k.<li>Inahitajika kueleza kiashiria gani ndicho cha msingi katika biashara, biashara inakua vizuri kiasi gani kupitia shughuli zipi, na kuna uwezekano gani wa ukuaji wa baadaye</ul><h3 id="series-a">Series A</h3><ul><li>Hii ni hatua ya kukua kwa dhati na kuongeza thamani ya kampuni<li>Kwa wakati huu uthibitishaji wa nadharia unapaswa kuwa umekamilika, hivyo ni lazima kupata imani ya wawekezaji kupitia matokeo ya kiasi kuhusu utendaji wa biashara</ul><h2 id="vidokezo-kadhaa">Vidokezo kadhaa</h2><ul><li>Slaidi tano za kwanza zipewe umakini wa pekee ili kuacha hisia nzuri ya kwanza<li>Dhamira/maono ya ukurasa wa kwanza ni vizuri pia kuyaweka tena kwenye ukurasa wa mwisho<li>Maudhui yote yawasilishwe kwa hitimisho kwanza<li>Kwa kuwa lengo la uwekezaji ni <strong>kampuni</strong>, katika nyenzo za IR pia jina la kampuni liwekwe mbele kuliko jina la huduma<li>Wawekezaji watarajiwa wanaosoma nyenzo za IR huenda wasiwe watu wa tasnia hiyo, hivyo eleza kwa maneno rahisi iwezekanavyo, na ikiwa matumizi ya istilahi za kitaalamu hayaepukiki basi ongeza ufafanuzi<li>Usichanganye tatizo la soko na suluhisho; yatenge<li>Tumia maandishi zaidi kama maneno muhimu, na unapoitumia picha epuka picha za skrini ili kuboresha usomaji<li>Weka takwimu sahihi na mahususi kwa majedwali au grafu<li>Hakikisha hutoi nje utambulisho wa wanatimu, kiasi cha uwekezaji unachotaka, na mpango wa matumizi yake<li>Ni vizuri pia kuwasilisha mkakati wa kurejesha uwekezaji<li>Hata kama si kamilifu, wasilisha kwa ufupi mpango wa jinsi mgawanyo wa hisa utakavyoundwa<li>Usiweke nyenzo nyingi mno katika mwili mkuu; ikihitajika zitenganishe kama nyongeza<li>Kwenye slaidi ya mwisho, andika mawasiliano (barua pepe, namba ya simu, jina)<li>Kwa kuwa fonti pia ni muhimu sana, tumia fonti zenye usomaji mzuri kama <a href="https://cactus.tistory.com/306">Pretendard</a>, na uandae kwa PDF ili kuepuka kuvunjika kwa mwonekano</ul><h2 id="marejeo">Marejeo</h2><h3 id="kituo-cha-ufunuo-wa-kampuni-kind">Kituo cha Ufunuo wa Kampuni KIND</h3><p><a href="https://kind.krx.co.kr/corpgeneral/irschedule.do?method=searchIRScheduleMain&amp;gubun=iRMaterials">https://kind.krx.co.kr/corpgeneral/irschedule.do?method=searchIRScheduleMain&amp;gubun=iRMaterials</a></p><ul><li>Kituo cha ufunuo wa kampuni kinachoendeshwa na Korea Exchange<li>Hutoa taarifa za ufunuo wa kampuni zilizoorodheshwa kwenye KOSPI, KOSDAQ, na KONEX<li>Unaweza kuangalia nyenzo za IR za kampuni zilizoorodheshwa na hivyo kuona jinsi nyenzo nyingine za IR zilizotengenezwa hivi karibuni zimeundwa</ul>]]> </content> </entry> <entry><title xml:lang="sw">Dhana za Msingi za Kriptografia</title><link href="https://www.yunseo.kim/sw/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="am" /><published>2025-11-26T00:00:00+09:00</published> <updated>2025-11-26T00:00:00+09:00</updated> <id>https://www.yunseo.kim/sw/posts/basic-concepts-of-cryptography/</id> <author> <name>Yunseo Kim</name> </author> <category term="Dev" /> <category term="Cryptography" /> <summary xml:lang="sw">Elewa kriptografia ni nini, na ujifunze dhana za msingi kama kriptografia ya simetri, kriptografia ya asimetri, na kanuni ya Kerckhoffs.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Elewa kriptografia ni nini, na ujifunze dhana za msingi kama kriptografia ya simetri, kriptografia ya asimetri, na kanuni ya Kerckhoffs.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="kriptografia-ni-nini">Kriptografia ni nini</h2><p><strong>Kriptografia(cryptography)</strong> kimsingi ni tawi dogo la sayansi linalolenga kulinda <strong>itifaki(protocol)</strong> dhidi ya vitendo vya kiadui.</p><p>Hapa, itifaki ni orodha ya hatua ambazo mtu mmoja au zaidi wanapaswa kufuata ili kufanikisha jambo fulani. Kwa mfano, kama unataka kushiriki ubao wa kunakili (clipboard) kati ya vifaa, yafuatayo ni itifaki ya kushiriki clipboard.</p><ol><li>Mabadiliko yanapotokea kwenye clipboard ya kifaa chochote, yaliyomo kwenye clipboard hiyo hunakiliwa na kupakiwa kwenye seva.<li>Seva hufahamisha vifaa vingine kwamba mabadiliko yametokea kwenye clipboard ya pamoja.<li>Vifaa vilivyobaki hupakua yaliyomo kwenye clipboard hiyo iliyoshirikiwa kutoka kwenye seva.</ol><p>Hata hivyo, hii si itifaki nzuri, kwa sababu ikiwa yaliyomo kwenye clipboard yatapakiwa na kupakuliwa kama maandishi wazi, mtu fulani katikati ya mawasiliano, au hata upande wa seva yenyewe, anaweza kuyaona kwa siri. Hapa, jukumu la kriptografia ni kutetea kwa kuzingatia uwepo wa adui anayetaka kuchungulia yaliyomo kwenye clipboard.</p><h2 id="kriptografia-ya-simetri">Kriptografia ya simetri</h2><h3 id="usimbaji-fiche-wa-simetri">Usimbaji fiche wa simetri</h3><blockquote><p>Hebu fikiria hali ambapo Alice anahitaji kumtumia Bob barua. Ili kumfikishia Bob taarifa za siri, Alice anamwamuru mjumbe(messenger) aibebe barua hiyo na kuipeleka. Hata hivyo, Alice hamwamini mjumbe huyo kikamilifu, na anataka ujumbe unaosafirishwa ubaki siri kwa kila mtu isipokuwa Bob, akiwemo huyo mjumbe anayebeba barua.</p></blockquote><p>Algoriti ya kikiriptografia iliyobuniwa zamani kwa matumizi katika hali kama hii ni <strong>algoriti ya usimbaji fiche wa simetri(symmetric encryption algorithm)</strong>.</p><blockquote class="prompt-info"><p><strong>Primitive</strong><br /> Neno primitive katika kamusi humaanisha kwa kawaida “cha awali” au “cha msingi”. Hata hivyo, katika kriptografia neno hili hutumiwa mara nyingi pia, na hapa primitive humaanisha kazi au algoriti ndogo zaidi inayounda mfumo wa kikiriptografia. Unaweza kulielewa kama “kipengele cha msingi” au “mantiki ya msingi”.</p></blockquote><p>Hebu tufikirie primitive fulani inayotoa kazi mbili zifuatazo.</p><ul><li><code class="language-plaintext highlighter-rouge">ENCRYPT</code>: hupokea <strong>ufunguo wa siri(secret key)</strong> (kwa kawaida namba kubwa) na <strong>ujumbe(message)</strong> kama ingizo, kisha hutoa mfuatano wa namba kama ujumbe uliosimbwa<li><code class="language-plaintext highlighter-rouge">DECRYPT</code>: kazi kinyume ya <code class="language-plaintext highlighter-rouge">ENCRYPT</code>; hupokea ufunguo huo huo wa siri na ujumbe uliosimbwa, kisha hutoa ujumbe wa asili</ul><p>Ili kutumia primitive ya aina hii kuficha ujumbe wa Alice ili mtu wa tatu, akiwemo mjumbe, asiweze kuusoma, Alice na Bob lazima kwanza wakutane mapema na wakubaliane ni ufunguo gani wa siri watatumia. Baadaye Alice anaweza kutumia kazi ya <code class="language-plaintext highlighter-rouge">ENCRYPT</code> kusimba ujumbe kwa ufunguo huo wa siri waliokubaliana, kisha akamtumia Bob ujumbe huo uliosimbwa kupitia kwa mjumbe. Bob kisha hutumia ufunguo huo huo wa siri pamoja na kazi ya <code class="language-plaintext highlighter-rouge">DECRYPT</code> kupata ujumbe wa asili.</p><p>Kwa namna hii, mchakato wa kusimba kitu kwa kutumia ufunguo wa siri ili kisitofautishwe kwa mwonekano na kelele isiyo na maana ni njia ya kawaida katika kriptografia ya kulinda itifaki.</p><p>Usimbaji fiche wa simetri ni sehemu ya kundi kubwa la algoriti za kriptografia linaloitwa <strong>kriptografia ya simetri(symmetric cryptography)</strong> au <strong>kriptografia ya ufunguo wa siri(secret key cryptography)</strong>, na katika baadhi ya hali kunaweza hata kuwa na funguo zaidi ya mmoja.</p><h2 id="kanuni-ya-kerckhoffs">Kanuni ya Kerckhoffs</h2><p>Leo tunaweza kuwasiliana karibu papo hapo kwa kutumia kompyuta na mtandao, vyombo vya mawasiliano vyenye nguvu zaidi kuliko barua za karatasi. Hata hivyo, kwa maneno mengine, hii pia inamaanisha kwamba wajumbe waovu wamekuwa na nguvu zaidi; wanaweza kuwa Wi-Fi ya umma isiyo salama kama ile ya kwenye kahawa, mtoa huduma wa intaneti(ISP), vifaa na seva mbalimbali za mawasiliano zinazounda mtandao na kusafirisha ujumbe, taasisi za serikali, au hata ndani ya kifaa chako mwenyewe kinachoendesha algoriti. Adui wanaweza kutazama ujumbe mwingi zaidi kwa wakati halisi, na bila kugunduliwa wanaweza kuharibu, kubadilisha, kunasa, au kukagua ujumbe kwa vipindi vya nanosekondi.</p><p>Katika mchakato mrefu wa majaribio na makosa ndani ya kriptografia, kanuni kuu moja imejitokeza kwa ajili ya usalama unaoweza kuaminiwa: <u>primitive lazima zichunguzwe hadharani</u>. Mbinu iliyo kinyume na hili inaweza kuitwa <strong>usalama kwa kutegemea kuficha(security by obscurity)</strong>, na kwa kuwa mipaka yake iko wazi, imeachwa katika enzi ya leo.</p><p>Kanuni hii ilibainishwa kwa mara ya kwanza mwaka 11883 na mtaalamu wa isimu na mwanakryptografia wa Uholanzi Auguste Kerckhoffs, na huitwa <strong>kanuni ya Kerckhoffs(Kerckhoffs’s principle)</strong>. Kanuni hiyo hiyo ilielezwa pia na Claude Shannon, mwanahisabati, mwanasayansi wa kompyuta, mwanakryptografia wa Marekani, na baba wa nadharia ya taarifa, kwa kauli kwamba “adui anajua mfumo(The enemy knows the system)”, yaani “unapobuni mfumo wowote, lazima udhanie kwamba adui ataujua mfumo huo.” Kauli hii huitwa <strong>kauli mashuhuri ya Shannon(Shannon’s maxim)</strong>.</p><p>Usalama wa mfumo wa usimbaji fiche unapaswa kutegemea usiri wa ufunguo pekee; haipaswi kuwa tatizo hata kama mfumo wenyewe unajulikana, na kwa kweli unapaswa kuchapishwa wazi ili <strong>wachambuzi wa kriptografia(cryptanalyst)</strong> wengi waweze kuuthibitisha, kama ilivyokuwa kwa AES. Siri daima iko katika hatari ya kuvuja, na kwa hiyo ni sehemu inayowezekana kushindwa; kutoka upande wa mlinzi, ni bora kadiri sehemu zinazopaswa kubaki siri zinavyokuwa chache. Ni vigumu sana kuweka mfumo mzima mkubwa na changamano kama mfumo wa usimbaji fiche kuwa siri kwa muda mrefu, ilhali ni rahisi zaidi kuweka ufunguo pekee kuwa siri. Zaidi ya hayo, hata siri ikivuja, kubadilisha ufunguo uliovuja kwa ufunguo mpya ni rahisi sana kuliko kubadilisha mfumo mzima wa usimbaji fiche.</p><h2 id="kriptografia-ya-asimetri">Kriptografia ya asimetri</h2><p>Itifaki nyingi kwa kweli hufanya kazi kwa msingi wa kriptografia ya simetri, lakini mtindo huu hudhani kwamba washiriki wawili lazima wakutane angalau mara moja mwanzoni ili waamue ufunguo. Hivyo basi, tatizo huwa ni jinsi ya kuamua ufunguo mapema na kuushiriki kwa usalama; tatizo hili huitwa <strong>usambazaji wa funguo(key distribution)</strong>. Tatizo la usambazaji wa funguo lilikuwa gumu kwa muda mrefu, na hatimaye lilitatuliwa mwishoni mwa miaka ya 11970 kwa kuibuka kwa algoriti za kriptografia zinazoitwa <strong>kriptografia ya asimetri(asymmetric cryptography)</strong> au <strong>kriptografia ya ufunguo wa umma(public key cryptography)</strong>.</p><p>Primitive zinazowakilisha kriptografia ya asimetri ni pamoja na <strong>ubadilishanaji wa funguo(key exchange)</strong>, <strong>usimbaji fiche wa asimetri(asymmetric encryption)</strong>, na <strong>saini ya kidijitali(digital signature)</strong>.</p><h3 id="ubadilishanaji-wa-funguo">Ubadilishanaji wa funguo</h3><p><strong>Ubadilishanaji wa funguo</strong> hufanya kazi kwa muhtasari kama ifuatavyo.</p><ol><li>Alice na Bob wanakubaliana kutumia kwa pamoja seti fulani ya vigezo $G$<li>Alice na Bob kila mmoja huamua <strong>ufunguo wa siri binafsi(private key)</strong> wake, $a, b$<li>Alice na Bob huchanganya kila mmoja ufunguo wake wa siri $a$, $b$ na kigezo cha pamoja $G$ walichokubaliana mwanzoni ili kukokotoa <strong>ufunguo wa umma(public key)</strong> $A = f(G,a)$, $B = f(G,b)$, kisha wanashiriki funguo hizi hadharani<li>Alice hutumia ufunguo wa umma wa Bob $B = f(G,b)$ pamoja na ufunguo wake wa siri $a$ kukokotoa $f(B,a) = f(f(G,b),a)$, na Bob vivyo hivyo hutumia ufunguo wa umma wa Alice $A = f(G,a)$ pamoja na ufunguo wake wa siri $b$ kukokotoa $f(A,b) = f(f(G,a),b)$<li>Hapa, tukitumia $f$ inayofaa yenye sifa kwamba $f(f(G,a),b) = f(f(G,b),a)$, hatimaye Alice na Bob watashiriki siri ile ile, na mtu wa tatu, ingawa anajua $G$ na funguo za umma $A = f(G,a)$, $B = f(G,b)$, hataweza kupata $f(A,b)$ kwa taarifa hizo pekee, hivyo siri inaweza kubaki salama</ol><p>Kwa kawaida siri inayoshirikiwa kwa namna hii hutumiwa baadaye kama ufunguo wa siri wa <a href="#usimbaji-fiche-wa-simetri">usimbaji fiche wa simetri</a> ili kubadilishana ujumbe mwingine.</p><p>Algoriti ya kwanza kuchapishwa, na pia maarufu zaidi, ya ubadilishanaji wa funguo ni algoriti ya Diffie-Hellman, iliyopewa jina kutokana na majina ya koo ya waandishi wake wawili, Diffie na Hellman.</p><p>Hata hivyo, ubadilishanaji wa funguo wa Diffie-Hellman pia una mipaka yake. Hebu fikiria hali ambapo mshambuliaji ananasa funguo za umma $A = f(G,a)$ na $B = f(G,b)$ katika hatua ya kubadilishana funguo za umma, kisha anazibadilisha na yake mwenyewe $M = f(G,m)$ na kuziwasilisha kwa Alice na Bob. Katika hali hii, Alice na mshambuliaji hushiriki siri bandia $f(M, a) = f(A, m)$, na Bob na mshambuliaji hushiriki siri nyingine bandia $f(M, b) = f(B, m)$. Hivyo, mshambuliaji anaweza kujifanya Bob kwa Alice, na kujifanya Alice kwa Bob. Hali hii huitwa kwamba <u><strong>mshambuliaji wa mtu-katikati(man-in-the-middle, MITM)</strong> amefaulu kuivamia itifaki</u>. Kwa sababu hii, ubadilishanaji wa funguo hausuluhishi tatizo la uaminifu, bali hurahisisha tu taratibu pale washiriki wanapokuwa wengi.</p><h3 id="usimbaji-fiche-wa-asimetri">Usimbaji fiche wa asimetri</h3><p>Baada ya kugunduliwa kwa algoriti ya ubadilishanaji wa funguo ya Diffie-Hellman, uvumbuzi wa ufuatiliaji ulitokea kwa haraka: <strong>algoriti ya RSA(RSA algorithm)</strong>, iliyopewa jina kutokana na herufi za kwanza za majina ya wavumbuzi wake Ronald Rivest, Adi Shamir, na Leonard Adleman. RSA inajumuisha primitive mbili: usimbaji fiche wa ufunguo wa umma (usimbaji fiche wa asimetri) na saini ya kielektroniki; zote mbili ni sehemu ya kriptografia ya asimetri.</p><p>Kwa upande wa <strong>usimbaji fiche wa asimetri</strong>, lengo lake la msingi la kusimba ujumbe ili kupata usiri linafanana na <a href="#usimbaji-fiche-wa-simetri">usimbaji fiche wa simetri</a>. Hata hivyo, tofauti na usimbaji fiche wa simetri ambao hutumia ufunguo ule ule wa simetri kwa usimbaji na usimbuaji, usimbaji fiche wa asimetri una sifa zifuatazo.</p><ul><li>Hufanya kazi kwa funguo mbili, ufunguo wa umma na ufunguo wa siri<li>Mtu yeyote anaweza kusimba kwa ufunguo wa umma, lakini usimbuaji unaweza kufanywa tu na mtu aliye na ufunguo wa siri</ul><ol><li>Kuna kisanduku kilicho wazi (ufunguo wa umma) ambacho mtu yeyote anaweza kuweka ujumbe ndani na kukifunga, lakini kikishafungwa mara moja, kinaweza kufunguliwa tu kwa ufunguo (ufunguo wa siri) alio nao Bob<li>Alice huweka ujumbe anaotaka kutuma ndani ya kisanduku na kukifunga (yaani, kuusimba), kisha humkabidhi Bob<li>Bob hupokea kisanduku kilichofungwa (ujumbe uliosimbwa), kisha hutumia ufunguo wake (ufunguo wa siri) kukifungua na kutoa ujumbe (yaani, kuusimbua)</ol><h3 id="saini-ya-kidijitali">Saini ya kidijitali</h3><p>RSA haitoi tu usimbaji fiche wa asimetri bali pia <strong>saini ya kidijitali</strong>, na primitive hii ya saini ya kidijitali ilisaidia sana kujenga uaminifu kati ya Alice na Bob. Wakati wa kutia saini ujumbe, mtu hutumia ufunguo wake wa siri, na mtu mwingine anapotaka kuthibitisha uhalisi wa saini hiyo, hutumia ujumbe uliotiwa saini, saini yenyewe, pamoja na ufunguo wa umma wa mtiaji saini ili kufanya uthibitishaji.</p><h2 id="matumizi-ya-kriptografia">Matumizi ya kriptografia</h2><p>Kwa kuwa lengo la kriptografia ni kulinda itifaki dhidi ya vitendo vya kiadui, manufaa yake huamuliwa na lengo ambalo itifaki hiyo inajaribu kulifikia. Primitive na itifaki nyingi za kriptografia huwa na angalau sifa moja au zaidi kati ya zifuatazo.</p><ul><li><strong>Usiri(confidentiality)</strong>: kuficha na kulinda sehemu ya taarifa dhidi ya watu wasiopaswa kuiona<li><strong>Uthibitishaji(authentication)</strong>: kumtambua unayewasiliana naye (k.m. kuthibitisha kwamba ujumbe uliopokelewa umetumwa kweli na Alice)</ul><h2 id="mfumo-ikolojia-wa-kriptografia">Mfumo ikolojia wa kriptografia</h2><pre><code class="language-mermaid">flowchart TD
    Alice[Watafiti wa kriptografia]-- Ugunduzi wa primitive --&gt;Primitive(Pendekezo la primitive mpya)
    Alice-- Ugunduzi wa itifaki --&gt;Protocol(Pendekezo la itifaki mpya)
    Alice-. Kuandaa mashindano .-&gt;C(Mashindano ya algoriti)

    David[Sekta binafsi]-. Ufadhili .-&gt;Alice
    David-. Kuandaa mashindano .-&gt;C

    Eve[Taasisi za serikali]-. Ufadhili .-&gt;Alice
    Eve-. Kuandaa mashindano .-&gt;C

    Primitive --&gt; t1{"Je, inaweza kutekelezwa?"}
    t1-- Ndiyo --&gt;Protocol
    t1-- Hapana --&gt;term1@{ shape: framed-circle, label: "Stop" }

    Protocol-- Kushiriki mashindanoni --&gt;C
    Protocol-- Uwekaji sanifu --&gt;Standard(Kiwango)
    Protocol-- Maombi ya hati miliki --&gt;Patent(Kuisha kwa hati miliki)
    Protocol-- Utekelezaji --&gt;Library(Maktaba)
    
    C-- Kushinda mashindano --&gt;Standard
    C-- Kutupiliwa mbali --&gt;term2@{ shape: framed-circle, label: "Stop" }

    Standard-- Utekelezaji --&gt;Library
    Standard-- Kutupiliwa mbali --&gt;term3@{ shape: framed-circle, label: "Stop" }

    Patent-- Kutupiliwa mbali --&gt;term2@{ shape: framed-circle, label: "Stop" }
    Patent-- Uwekaji sanifu --&gt;Standard
    Patent-- Utekelezaji --&gt;Library

    Library-- Uwekaji sanifu --&gt;Standard
    Library-- Kuvunjwa kwa usalama --&gt;term4@{ shape: framed-circle, label: "Stop" }
</code></pre>]]> </content> </entry> <entry><title xml:lang="sw">Linear Transformations, Null Space, and Image</title><link href="https://www.yunseo.kim/sw/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="am" /><published>2025-09-18T00:00:00+09:00</published> <updated>2025-09-18T00:00:00+09:00</updated> <id>https://www.yunseo.kim/sw/posts/linear-transformation-nullspace-and-image/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Linear Algebra" /> <summary xml:lang="sw">Define linear transformations and study their null space (kernel) and image (range). Prove rank–nullity, relate injectivity/surjectivity to rank and nullity, and show how bases determine linear maps.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Define linear transformations and study their null space (kernel) and image (range). Prove rank–nullity, relate injectivity/surjectivity to rank and nullity, and show how bases determine linear maps.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="prerequisites">Prerequisites</h2><ul><li><a href="/sw/posts/vectors-and-linear-combinations/">Vectors and Linear Combinations</a><li><a href="/sw/posts/vector-spaces-subspaces-and-matrices/">Vector Spaces, Subspaces, and Matrices</a><li><a href="posts/linear-dependence-and-independence-basis-and-dimension/">Linear Dependence and Independence, Bases and Dimension</a><li>Injection, surjection</ul><h2 id="linear-transformations">Linear transformations</h2><p>A special class of functions that preserve the structure of vector spaces are called <strong>linear transformations</strong>. They are fundamental across pure and applied mathematics, social and natural sciences, and engineering.</p><blockquote class="prompt-info"><p><strong>Definition</strong><br /> Let $\mathbb{V}$ and $\mathbb{W}$ be $F$-vector spaces. A function $T: \mathbb{V} \to \mathbb{W}$ is called a <strong>linear transformation</strong> from $\mathbb{V}$ to $\mathbb{W}$ if, for all $\mathbf{x}, \mathbf{y} \in \mathbb{V}$ and $c \in F$, the following hold:</p><ol><li>$T(\mathbf{x}+\mathbf{y}) = T(\mathbf{x}) + T(\mathbf{y})$<li>$T(c\mathbf{x}) = cT(\mathbf{x})$</ol></blockquote><p>When $T$ is a linear transformation, we also simply say that $T$ is <strong>linear</strong>. A linear transformation $T: \mathbb{V} \to \mathbb{W}$ satisfies the following four properties.</p><blockquote class="prompt-info"><ol><li>$T$ linear $\quad \Rightarrow \quad T(\mathbf{0}) = \mathbf{0}$<li>$T$ linear $\quad \Leftrightarrow \quad T(c\mathbf{x} + \mathbf{y}) = cT(\mathbf{x}) + T(\mathbf{y}) \; \forall \, \mathbf{x}, \mathbf{y} \in \mathbb{V},\, c \in F$<li>$T$ linear $\quad \Rightarrow \quad T(\mathbf{x} - \mathbf{y}) = T(\mathbf{x}) - T(\mathbf{y}) \; \forall \, \mathbf{x}, \mathbf{y} \in \mathbb{V}$<li>$T$ linear $\quad \Leftrightarrow \quad T\left( \sum_{i=1}^n a_i \mathbf{x}_i \right) = \sum_{i=1}^n a_i T(\mathbf{x}_i)$</ol></blockquote><blockquote class="prompt-tip"><p>When proving that a function is linear, it is often convenient to use Property 2.</p></blockquote><blockquote class="prompt-tip"><p>Linear algebra has wide and varied applications in geometry because many important geometric maps are linear. In particular, the three principal geometric transformations—<strong>rotation</strong>, <strong>reflection</strong>, and <strong>projection</strong>—are linear transformations.</p></blockquote><p>Two linear transformations occur especially often:</p><blockquote class="prompt-info"><p><strong>Identity and zero transformations</strong><br /> For $F$-vector spaces $\mathbb{V}, \mathbb{W}$:</p><ul><li><strong>Identity transformation</strong>: the function $I_\mathbb{V}: \mathbb{V} \to \mathbb{V}$ defined by $I_\mathbb{V}(\mathbf{x}) = \mathbf{x}$ for all $\mathbf{x} \in \mathbb{V}$<li><strong>Zero transformation</strong>: the function $T_0: \mathbb{V} \to \mathbb{W}$ defined by $T_0(\mathbf{x}) = \mathbf{0}$ for all $\mathbf{x} \in \mathbb{V}$</ul></blockquote><p>Many other familiar operations are linear transformations.</p><blockquote class="prompt-tip"><p><strong>Examples of linear transformations</strong></p><ul><li>Rotation<li>Reflection<li>Projection<li><a href="/sw/posts/vector-spaces-subspaces-and-matrices/#transpose-symmetric-and-skew-symmetric-matrices">Transpose</a><li>Differentiation of a differentiable function<li>Integration of a continuous function</ul></blockquote><h2 id="null-space-and-image">Null space and image</h2><h3 id="definitions-of-the-null-space-and-the-image">Definitions of the null space and the image</h3><blockquote class="prompt-info"><p><strong>Definition</strong><br /> For vector spaces $\mathbb{V}, \mathbb{W}$ and a linear transformation $T: \mathbb{V} \to \mathbb{W}$:</p><ul><li><p><strong>Null space</strong> (or <strong>kernel</strong>): the set of vectors $\mathbf{x} \in \mathbb{V}$ such that $T(\mathbf{x}) = \mathbf{0}$, denoted $\mathrm{N}(T)$</p>\[\mathrm{N}(T) = \{ \mathbf{x} \in \mathbb{V}: T(\mathbf{x}) = \mathbf{0} \}\]<li><p><strong>Range</strong> (or <strong>image</strong>): the subset of $\mathbb{W}$ consisting of all values of $T$, denoted $\mathrm{R}(T)$</p>\[\mathrm{R}(T) = \{ T(\mathbf{x}): \mathbf{x} \in \mathbb{V} \}\]</ul></blockquote><blockquote class="prompt-tip"><p><strong>e.g.</strong> For vector spaces $\mathbb{V}, \mathbb{W}$, the identity $I: \mathbb{V} \to \mathbb{V}$ and the zero map $T_0: \mathbb{V} \to \mathbb{W}$ satisfy:</p><ul><li>$\mathrm{N}(I) = \{\mathbf{0}\}$<li>$\mathrm{R}(I) = \mathbb{V}$<li>$\mathrm{N}(T_0) = \mathbb{V}$<li>$\mathrm{R}(T_0) = \{\mathbf{0}\}$</ul></blockquote><p>A key point going forward is that the null space and the image of a linear transformation are <a href="/sw/posts/vector-spaces-subspaces-and-matrices/#subspaces">subspaces</a> of the corresponding vector spaces.</p><blockquote class="prompt-info"><p><strong>Theorem 1</strong><br /> For vector spaces $\mathbb{V}, \mathbb{W}$ and a linear transformation $T: \mathbb{V} \to \mathbb{W}$, the sets $\mathrm{N}(T)$ and $\mathrm{R}(T)$ are subspaces of $\mathbb{V}$ and $\mathbb{W}$, respectively.</p><p><strong>Proof</strong><br /> Denote the zero vectors of $\mathbb{V}$ and $\mathbb{W}$ by $\mathbf{0}_\mathbb{V}$ and $\mathbf{0}_\mathbb{W}$, respectively.</p><p>Since $T(\mathbf{0}_\mathbb{V}) = \mathbf{0}_\mathbb{W}$, we have $\mathbf{0}_\mathbb{V} \in \mathrm{N}(T)$. Moreover, for $\mathbf{x}, \mathbf{y} \in \mathrm{N}(T)$ and $c \in F$,</p>\[\begin{align*} T(\mathbf{x} + \mathbf{y}) &amp;= T(\mathbf{x}) + T(\mathbf{y}) = \mathbf{0}_\mathbb{W} + \mathbf{0}_\mathbb{W} = \mathbf{0}_\mathbb{W}, \\ T(c\mathbf{x}) &amp;= cT(\mathbf{x}) = c\mathbf{0}_\mathbb{W} = \mathbf{0}_\mathbb{W}. \end{align*}\]<p>$\therefore$ <a href="/sw/posts/vector-spaces-subspaces-and-matrices/#subspaces">Since $\mathbf{0}_\mathbb{V} \in \mathrm{N}(T)$ and $\mathrm{N}(T)$ is closed under addition and scalar multiplication, $\mathrm{N}(T)$ is a subspace of $\mathbb{V}$</a>.</p><p>Similarly, $T(\mathbf{0}_\mathbb{V}) = \mathbf{0}_\mathbb{W}$ implies $\mathbf{0}_\mathbb{W} \in \mathrm{R}(T)$. For all $\mathbf{x}, \mathbf{y} \in \mathrm{R}(T)$ and $c \in F$ (there exist $\mathbf{v}, \mathbf{w} \in \mathbb{V}$ with $T(\mathbf{v}) = \mathbf{x}$ and $T(\mathbf{w}) = \mathbf{y}$), we have</p>\[\begin{align*} T(\mathbf{v} + \mathbf{w}) &amp;= T(\mathbf{v}) + T(\mathbf{w}) = \mathbf{x} + \mathbf{y}, \\ T(c\mathbf{v}) &amp;= cT(\mathbf{v}) = c\mathbf{x}. \end{align*}\]<p>$\therefore$ <a href="/sw/posts/vector-spaces-subspaces-and-matrices/#subspaces">Since $\mathbf{0}_\mathbb{W} \in \mathrm{R}(T)$ and $\mathrm{R}(T)$ is closed under addition and scalar multiplication, $\mathrm{R}(T)$ is a subspace of $\mathbb{W}$</a>. $\blacksquare$</p></blockquote><p>Furthermore, given a basis $\beta = \{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_n \}$ of $\mathbb{V}$, we can find a generating set of the image $\mathrm{R}(T)$ as follows.</p><blockquote class="prompt-info"><p><strong>Theorem 2</strong><br /> For vector spaces $\mathbb{V}, \mathbb{W}$, a linear transformation $T: \mathbb{V} \to \mathbb{W}$, and a <a href="/sw/posts/linear-dependence-and-independence-basis-and-dimension/#basis">basis</a> $\beta = \{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_n \}$ of $\mathbb{V}$, we have</p>\[\mathrm{R}(T) = \mathrm{span}(\{T(\mathbf{v}): \mathbf{v} \in \beta \}) = \mathrm{span}(\{T(\mathbf{v}_1), T(\mathbf{v}_2), \dots, T(\mathbf{v}_n) \})\]<p><strong>Proof</strong></p>\[T(\mathbf{v}_i) \in \mathrm{R}(T) \quad \forall \mathbf{v}_i \in \beta.\]<p>Since $\mathrm{R}(T)$ is a subspace, by <strong>Theorem 2</strong> of <a href="/sw/posts/vector-spaces-subspaces-and-matrices/#subspaces">Vector Spaces, Subspaces, and Matrices</a>,</p>\[\mathrm{span}(\{T(\mathbf{v}_1), T(\mathbf{v}_2), \dots, T(\mathbf{v}_n) \}) = \mathrm{span}(\{T(\mathbf{v}_i): \mathbf{v}_i \in \beta \}) \subseteq \mathrm{R}(T).\]<p>Also,</p>\[\forall \mathbf{w} \in \mathrm{R}(T) \ (\exists \mathbf{v} \in \mathbb{V} \ (\mathbf{w} = T(\mathbf{v}))).\]<p>Because $\beta$ is a basis of $\mathbb{V}$,</p>\[\mathbf{v} = \sum_{i=1}^n a_i \mathbf{v}_i \quad \text{(where } a_1, a_2, \dots, a_n \in F \text{)}.\]<p>Since $T$ is linear,</p>\[\mathbf{w} = T(\mathbf{v}) = \sum_{i=1}^n a_i T(\mathbf{v}_i) \in \mathrm{span}(\{T(\mathbf{v}_i): \mathbf{v}_i \in \beta \})\] \[\mathrm{R}(T) \subseteq \mathrm{span}(\{T(\mathbf{v}_i): \mathbf{v}_i \in \beta \}) = \mathrm{span}(\{T(\mathbf{v}_1), T(\mathbf{v}_2), \dots, T(\mathbf{v}_n) \}).\]<p>$\therefore$ Since both contain each other, $\mathrm{R}(T) = \mathrm{span}({T(\mathbf{v}): \mathbf{v} \in \beta })$. $\blacksquare$</p></blockquote><p>This theorem remains valid even when the basis $\beta$ is infinite.</p><h3 id="dimension-theorem">Dimension theorem</h3><p>Because the null space and image are especially important subspaces, we give special names to their <a href="/sw/posts/linear-dependence-and-independence-basis-and-dimension/#dimension">dimensions</a>.</p><blockquote class="prompt-info"><p>For vector spaces $\mathbb{V}, \mathbb{W}$ and a linear transformation $T: \mathbb{V} \to \mathbb{W}$, assume $\mathrm{N}(T)$ and $\mathrm{R}(T)$ are finite-dimensional.</p><ul><li><strong>Nullity</strong>: the dimension of $\mathrm{N}(T)$, denoted $\mathrm{nullity}(T)$<li><strong>Rank</strong>: the dimension of $\mathrm{R}(T)$, denoted $\mathrm{rank}(T)$</ul></blockquote><p>For a linear transformation, the larger the nullity, the smaller the rank, and vice versa.</p><blockquote class="prompt-info"><p><strong>Theorem 3: Dimension theorem</strong><br /> For vector spaces $\mathbb{V}, \mathbb{W}$ and a linear transformation $T: \mathbb{V}\to \mathbb{W}$, if $\mathbb{V}$ is finite-dimensional, then</p>\[\mathrm{nullity}(T) + \mathrm{rank}(T) = \dim(\mathbb{V})\]</blockquote><h4 id="proof">Proof</h4><p>Let $\dim(\mathbb{V}) = n$ and $\mathrm{nullity}(T) = \dim(\mathrm{N}(T)) = k$, and let a basis of $\mathrm{N}(T)$ be $\{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_k \}$.</p><p>By <a href="/sw/posts/linear-dependence-and-independence-basis-and-dimension/#dimension-of-subspaces">“Linear Dependence and Independence, Bases and Dimension” — <strong>Corollary 6-1</strong></a>, we can extend $\{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_k \}$ to a basis $\beta = \{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_n \}$ of $\mathbb{V}$.</p><p>We now show that $S = \{T(\mathbf{v}_{k+1}), T(\mathbf{v}_{k+2}), \dots, T(\mathbf{v}_n) \}$ is a basis of $\mathrm{R}(T)$. First, for $1 \leq i \leq k$, $T(\mathbf{v}_i) = 0$, so by <a href="#definitions-of-the-null-space-and-the-image"><strong>Theorem 2</strong></a>,</p>\[\begin{align*} \mathrm{R}(T) &amp;= \mathrm{span}(\{T(\mathbf{v}_1), T(\mathbf{v}_2), \dots, T(\mathbf{v}_n) \}) \\ &amp;= \mathrm{span}(\{T(\mathbf{v}_{k+1}), T(\mathbf{v}_{k+2}), \dots, T(\mathbf{v}_n) \}) \\ &amp;= \mathrm{span}(S). \end{align*}\]<p>Thus $S$ generates $\mathrm{R}(T)$. By <a href="/sw/posts/linear-dependence-and-independence-basis-and-dimension/#dimension"><strong>Corollary 5-2 of the replacement theorem</strong></a>, it suffices to show that $S$ is linearly independent.</p><p>Suppose $\sum_{i=k+1}^n b_i T(\mathbf{v}_i) = 0$ (with $b_{k+1}, b_{k+2}, \dots, b_n \in F$). Since $T$ is linear,</p>\[\sum_{i=k+1}^n b_i T(\mathbf{v}_i) = 0 \Leftrightarrow T\left(\sum_{i=k+1}^n b_i \mathbf{v}_i \right) = 0 \Leftrightarrow \sum_{i=k+1}^n b_i \mathbf{v}_i \in \mathrm{N}(T).\]<p>Therefore,</p>\[\begin{align*} &amp;\exists c_1, c_2, \dots, c_k \in F, \\ &amp;\sum_{i=k+1}^n b_i \mathbf{v}_i = \sum_{i=1}^k c_i \mathbf{v}_i \\ \Leftrightarrow &amp;\sum_{i=1}^k (-c_i)\mathbf{v}_i + \sum_{i=k+1}^n b_i \mathbf{v}_i = 0. \end{align*}\]<p>Since $\beta$ is a basis of $\mathbb{V}$, the unique solution of $\sum_{i=1}^k (-c_i)\mathbf{v}_i + \sum_{i=k+1}^n b_i \mathbf{v}_i = 0$ is</p>\[c_1 = c_2 = \cdots = c_k = b_{k+1} = b_{k+2} = \cdots = b_n = 0\]<p>and hence</p>\[\sum_{i=k+1}^n b_i T(\mathbf{v}_i) = 0 \quad \Rightarrow \quad b_i = 0.\]<p>Thus $S$ is linearly independent and is a basis of $\mathrm{R}(T)$.</p>\[\therefore \mathrm{rank}(T) = n - k = \dim{\mathbb{V}} - \mathrm{nullity}(T). \blacksquare\]<h3 id="linear-transformations-and-injectionssurjections">Linear transformations and injections/surjections</h3><p>For linear transformations, injectivity and surjectivity are closely tied to rank and nullity.</p><blockquote class="prompt-info"><p><strong>Theorem 4</strong><br /> For vector spaces $\mathbb{V}, \mathbb{W}$ and a linear transformation $T: \mathbb{V} \to \mathbb{W}$,</p>\[T \text{ is injective} \quad \Leftrightarrow \quad \mathrm{N}(T) = \{\mathbf{0}\}.\]</blockquote><blockquote class="prompt-info"><p><strong>Theorem 5</strong><br /> If finite-dimensional vector spaces $\mathbb{V}, \mathbb{W}$ have the same dimension and $T: \mathbb{V} \to \mathbb{W}$ is linear, then the following four statements are equivalent.</p><ol><li>$T$ is injective.<li>$\mathrm{nullity}(T) = 0$<li>$\mathrm{rank}(T) = \dim(\mathbb{V})$<li>$T$ is surjective.</ol></blockquote><p>Using the <a href="#dimension-theorem">dimension theorem</a>, <a href="#linear-transformations">Properties 1 and 3 of linear transformations</a>, and <a href="/sw/posts/linear-dependence-and-independence-basis-and-dimension/#dimension-of-subspaces">“Linear Dependence and Independence, Bases and Dimension” — <strong>Theorem 6</strong></a>, one can prove <strong>Theorem 4</strong> and <strong>Theorem 5</strong>.</p><p>These two theorems are useful when deciding whether a given linear transformation is injective or surjective.</p><blockquote class="prompt-warning"><p>For an infinite-dimensional vector space $\mathbb{V}$ and a linear transformation $T: \mathbb{V} \to \mathbb{V}$, injectivity and surjectivity are not equivalent.</p></blockquote><p>If a linear transformation is injective, the following theorem can be useful in some cases for testing whether a subset of the domain is linearly independent.</p><blockquote class="prompt-info"><p><strong>Theorem 6</strong><br /> For vector spaces $\mathbb{V}, \mathbb{W}$, an injective linear transformation $T: \mathbb{V} \to \mathbb{W}$, and a subset $S \subseteq \mathbb{V}$,</p>\[S \text{ is linearly independent} \quad \Leftrightarrow \quad \{T(\mathbf{v}): \mathbf{v} \in S \} \text{ is linearly independent.}\]</blockquote><h2 id="linear-transformations-and-bases">Linear transformations and bases</h2><p>A key feature of linear transformations is that their action is determined by their values on a basis.</p><blockquote class="prompt-info"><p><strong>Theorem 7</strong><br /> Let $\mathbb{V}, \mathbb{W}$ be $F$-vector spaces, let $\{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_n \}$ be a basis of $\mathbb{V}$, and let $\mathbf{w}_1, \mathbf{w}_2, \dots, \mathbf{w}_n \in \mathbb{W}$. Then there exists a unique linear transformation $T: \mathbb{V} \to \mathbb{W}$ such that</p>\[T(\mathbf{v}_i) = \mathbf{w}_i \quad (i = 1, 2, \dots, n).\]<p><strong>Proof</strong><br /> For $\mathbf{x} \in \mathbb{V}$, the representation</p>\[\mathbf{x} = \sum_{i=1}^n a_i \mathbf{v}_i \text{ (}a_1, a_2, \dots, a_n \in F \text{)}\]<p>is unique. Define a linear transformation $T: \mathbb{V} \to \mathbb{W}$ by</p>\[T(\mathbf{x}) = T\left( \sum_{i=1}^n a_i \mathbf{v}_i \right) = \sum_{i=1}^n a_i \mathbf{w}_i.\]<p>i) For $i = 1, 2, \dots, n$, $T(\mathbf{v}_i) = \mathbf{w}_i$.</p><p>ii) Suppose another linear transformation $U: \mathbb{V} \to \mathbb{W}$ satisfies $U(\mathbf{v}_i) = \mathbf{w}_i$ for $i = 1, 2, \dots, n$. Then for $\mathbf{x} = \sum_{i=1}^n a_i \mathbf{v}_i \in \mathbb{V}$,</p>\[U(\mathbf{x}) = \sum_{i=1}^n a_i U(\mathbf{v}_i) = \sum_{i=1}^n a_i \mathbf{w}_i = T(\mathbf{x}_i)\] \[\therefore U = T.\]<p>From i) and ii), the linear transformation satisfying $T(\mathbf{v}_i) = \mathbf{w}_i$ for $i = 1, 2, \dots, n$ is unique and given by</p>\[T(\mathbf{x}) = T\left( \sum_{i=1}^n a_i \mathbf{v}_i \right) = \sum_{i=1}^n a_i \mathbf{w}_i. \ \blacksquare\]<p><strong>Corollary 7-1</strong><br /> Let $\mathbb{V}, \mathbb{W}$ be vector spaces and suppose $\mathbb{V}$ has a finite basis $\{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_n \}$. If two linear transformations $U, T: \mathbb{V} \to \mathbf{W}$ satisfy $U(\mathbf{v}_i) = T(\mathbf{v}_i)$ for $i = 1, 2, \dots, n$, then $U = T$.<br /> In other words, <u>if two linear transformations agree on a basis, they are equal.</u></p></blockquote>]]> </content> </entry> <entry><title xml:lang="sw">Linear Dependence and Independence, Bases and Dimension</title><link href="https://www.yunseo.kim/sw/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="am" /><published>2025-09-16T00:00:00+09:00</published> <updated>2025-10-25T21:21:39+09:00</updated> <id>https://www.yunseo.kim/sw/posts/linear-dependence-and-independence-basis-and-dimension/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Linear Algebra" /> <summary xml:lang="sw">A concise guide to linear dependence and independence, and to bases and dimension of vector spaces: definitions, key propositions, replacement theorem, and subspace dimension.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>A concise guide to linear dependence and independence, and to bases and dimension of vector spaces: definitions, key propositions, replacement theorem, and subspace dimension.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="prerequisites">Prerequisites</h2><ul><li><a href="/sw/posts/vectors-and-linear-combinations/">Vectors and Linear Combinations</a><li><a href="/sw/posts/vector-spaces-subspaces-and-matrices/">Vector Spaces, Subspaces, and Matrices</a></ul><h2 id="linear-dependence-and-linear-independence">Linear dependence and linear independence</h2><p>Given a <a href="/sw/posts/vector-spaces-subspaces-and-matrices/#vector-spaces">vector space</a> $\mathbb{V}$ and a <a href="/sw/posts/vector-spaces-subspaces-and-matrices/#subspaces">subspace</a> $\mathbb{W}$, suppose we wish to find a minimal finite subset $S$ that <a href="/sw/posts/vectors-and-linear-combinations/#the-linear-combination-cmathbfv--dmathbfw">spans</a> $\mathbb{W}$.</p><p>Let $S = \{\mathbf{u}_1, \mathbf{u}_2, \mathbf{u}_3, \mathbf{u}_4 \}$ with $\mathrm{span}(S) = \mathbb{W}$. How can we decide whether there exists a proper subset of $S$ that still spans $\mathbb{W}$? This is equivalent to asking whether some vector in $S$ can be written as a <a href="/sw/posts/vectors-and-linear-combinations/#linear-combinations-of-vectors">linear combination</a> of the others. For example, a necessary and sufficient condition for expressing $\mathbf{u}_4$ as a linear combination of the remaining three vectors is the existence of scalars $a_1, a_2, a_3$ satisfying</p>\[\mathbf{u}_4 = a_1\mathbf{u}_1 + a_2\mathbf{u}_2 + a_3\mathbf{u}_3\]<p>However, solving a new linear system each time for $\mathbf{u}_1$, $\mathbf{u}_2$, $\mathbf{u}_3$, $\mathbf{u}_4$ is tedious. Instead, consider</p>\[a_1\mathbf{u}_1 + a_2\mathbf{u}_2 + a_3\mathbf{u}_3 + a_4\mathbf{u}_4 = \mathbf{0}\]<p>If some vector in $S$ is a linear combination of the others, then there exists a representation of the zero vector as a linear combination of elements of $S$ in which at least one among $a_1, a_2, a_3, a_4$ is nonzero. The converse is also true: if there is a nontrivial linear combination of vectors in $S$ that equals the zero vector (i.e., at least one of $a_1, a_2, a_3, a_4$ is nonzero), then some vector in $S$ is a linear combination of the others.</p><p>Generalizing this, we define <strong>linear dependence</strong> and <strong>linear independence</strong> as follows.</p><blockquote class="prompt-info"><p><strong>Definition</strong><br /> For a subset $S$ of a vector space $\mathbb{V}$, if there exist finitely many distinct vectors $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n \in S$ and scalars $a_1, a_2, \dots, a_n$, not all $0$, such that $a_1\mathbf{u}_1 + a_2\mathbf{u}_2 + \cdots + a_n\mathbf{u}_n = \mathbf{0}$, then the set $S$ (and those vectors) is called <strong>linearly dependent</strong>. Otherwise, it is called <strong>linearly independent</strong>.</p></blockquote><p>For any vectors $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n$, if $a_1 = a_2 = \cdots = a_n = 0$ then $a_1\mathbf{u}_1 + a_2\mathbf{u}_2 + \cdots + a_n\mathbf{u}_n = \mathbf{0}$; this is called the <strong>trivial representation of the zero vector</strong>.</p><p>The following three propositions about linearly independent sets hold in every vector space. In particular, <strong>Proposition 3</strong> is very useful for testing whether a finite set is linearly independent.</p><blockquote class="prompt-info"><ul><li><strong>Proposition 1</strong>: The empty set is linearly independent. A set must be nonempty to be linearly dependent.<li><strong>Proposition 2</strong>: A set consisting of a single nonzero vector is linearly independent.<li><strong>Proposition 3</strong>: A set is linearly independent if and only if the only way to express $\mathbf{0}$ as a linear combination of its vectors is the trivial one.</ul></blockquote><p>The following theorems are also important.</p><blockquote class="prompt-info"><p><strong>Theorem 1</strong><br /> If $\mathbb{V}$ is a vector space and $S_1 \subseteq S_2 \subseteq \mathbb{V}$, then $S_2$ is linearly dependent whenever $S_1$ is linearly dependent.</p><p><strong>Corollary 1-1</strong><br /> If $\mathbb{V}$ is a vector space and $S_1 \subseteq S_2 \subseteq \mathbb{V}$, then $S_1$ is linearly independent whenever $S_2$ is linearly independent.</p></blockquote><blockquote class="prompt-info"><p><strong>Theorem 2</strong><br /> Let $\mathbb{V}$ be a vector space and $S$ a linearly independent subset. For a vector $\mathbf{v} \in \mathbb{V}\setminus S$, $S \cup \{\mathbf{v}\}$ is linearly dependent if and only if $\mathbf{v} \in \mathrm{span}(S)$.</p><p>In other words, <strong>if no proper subset of $S$ spans the same space as $S$, then $S$ is linearly independent.</strong></p></blockquote><h2 id="bases-and-dimension">Bases and dimension</h2><h3 id="basis">Basis</h3><p>A spanning set $S$ of $\mathbb{W}$ that is <a href="#linear-dependence-and-linear-independence">linearly independent</a> has a special property: every vector in $\mathbb{W}$ can be expressed as a linear combination of $S$, and that expression is unique (<strong>Theorem 3</strong>). Thus, we define a linearly independent spanning set of a vector space to be a <strong>basis</strong>.</p><blockquote class="prompt-info"><p><strong>Definition of a basis</strong><br /> For a vector space $\mathbb{V}$ and a subset $\beta$, if $\beta$ is linearly independent and spans $\mathbb{V}$, then $\beta$ is called a <strong>basis</strong> of $\mathbb{V}$. In this case, the vectors in $\beta$ are said to form a basis of $\mathbb{V}$.</p></blockquote><blockquote class="prompt-tip"><p>$\mathrm{span}(\emptyset) = \{\mathbf{0}\}$ and $\emptyset$ is linearly independent. Therefore, $\emptyset$ is a basis of the zero space.</p></blockquote><p>In particular, the following distinguished basis of $F^n$ is called the <strong>standard basis</strong> of $F^n$.</p><blockquote class="prompt-info"><p><strong>Definition of the standard basis</strong><br /> For the vector space $F^n$, consider</p>\[\mathbf{e}_1 = (1,0,0,\dots,0),\ \mathbf{e}_2 = (0,1,0,\dots,0),\ \dots, \mathbf{e}_n = (0,0,0,\dots,1)\]<p>Then the set $\{\mathbf{e}_1, \mathbf{e}_2, \dots, \mathbf{e}_n \}$ is a basis of $F^n$, called the <strong>standard basis</strong>.</p></blockquote><blockquote class="prompt-info"><p><strong>Theorem 3</strong><br /> Let $\mathbb{V}$ be a vector space and $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n \in \mathbb{V}$ be distinct vectors. A necessary and sufficient condition for $\beta = \{\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n \}$ to be a basis of $\mathbb{V}$ is that every vector $\mathbf{v} \in \mathbb{V}$ can be expressed as a linear combination of vectors in $\beta$, and that this expression is unique. That is, there exist unique scalars $(a_1, a_2, \dots, a_n)$ such that</p>\[\mathbf{v} = a_1\mathbf{u}_1 + a_2\mathbf{u}_2 + \cdots + a_n\mathbf{u}_n\]</blockquote><p>By <strong>Theorem 3</strong>, if the distinct vectors $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n$ form a basis of a vector space $\mathbb{V}$, then within $\mathbb{V}$, a vector $\mathbf{v}$ uniquely determines the scalar $n$-tuple $(a_1, a_2, \dots, a_n)$, and conversely a scalar $n$-tuple uniquely determines the corresponding vector $\mathbf{v}$. We will revisit this when studying <strong>invertibility</strong> and <strong>isomorphisms</strong>; in this case, $\mathbb{V}$ and $F^n$ are <u>essentially the same</u>.</p><blockquote class="prompt-info"><p><strong>Theorem 4</strong><br /> If $S$ is a finite set with $\mathrm{span}(S) = \mathbb{V}$, then some subset of $S$ is a basis of $\mathbb{V}$. In particular, in this case every basis of $\mathbb{V}$ is finite.</p></blockquote><blockquote><p>Many vector spaces fall under the scope of <strong>Theorem 4</strong>, but not all do. <u>A basis need not be finite</u>.{: .prompt-tip }</p></blockquote><h3 id="dimension">Dimension</h3><blockquote class="prompt-info"><p><strong>Theorem 5: Replacement theorem</strong><br /> Let $G$ be a set of $n$ vectors with $\mathrm{span}(G) = \mathbb{V}$. If $L$ is a subset of $\mathbb{V}$ consisting of $m$ linearly independent vectors, then $m \le n$. Moreover, there exists a set $H \subseteq G$ with $n-m$ vectors such that $\mathrm{span}(L \cup H) = \mathbb{V}$.</p></blockquote><p>From this we obtain two very important corollaries.</p><blockquote class="prompt-info"><p><strong>Corollary 5-1 of the replacement theorem</strong><br /> If a vector space $\mathbb{V}$ has a finite basis, then every basis of $\mathbb{V}$ is finite and all bases have the same number of vectors.</p></blockquote><p>Hence the number of vectors in a basis of $\mathbb{V}$ is an invariant, intrinsic property of $\mathbb{V}$, called its <strong>dimension</strong>.</p><blockquote class="prompt-info"><p><strong>Definition of dimension</strong><br /> A vector space that has a finite basis is called <strong>finite-dimensional</strong>; in this case, the number $n$ of basis elements is the <strong>dimension</strong> of the vector space, denoted $\dim(\mathbb{V})$. A vector space that is not finite-dimensional is called <strong>infinite-dimensional</strong>.</p></blockquote><blockquote class="prompt-tip"><ul><li>$\dim(\{\mathbf{0}\}) = 0$<li>$\dim(F^n) = n$<li>$\dim(\mathcal{M}_{m \times n}(F)) = mn$</ul></blockquote><blockquote class="prompt-tip"><p>The dimension of a vector space depends on the underlying field.</p><ul><li>Over the complex field $\mathbb{C}$, the complex numbers form a 1-dimensional vector space with basis $\{1\}$<li>Over the real field $\mathbb{R}$, the complex numbers form a 2-dimensional vector space with basis $\{1,i\}$</ul></blockquote><p>In a finite-dimensional vector space $\mathbb{V}$, any subset with more than $\dim(\mathbb{V})$ vectors can never be linearly independent.</p><blockquote class="prompt-info"><p><strong>Corollary 5-2 of the replacement theorem</strong><br /> Let $\mathbb{V}$ be a vector space of dimension $n$.</p><ol><li>Any finite spanning set of $\mathbb{V}$ has at least $n$ vectors, and any spanning set of $\mathbb{V}$ with exactly $n$ vectors is a basis.<li>Any linearly independent subset of $\mathbb{V}$ with exactly $n$ vectors is a basis of $\mathbb{V}$. 3. Any linearly independent subset of $\mathbb{V}$ can be extended to a basis. That is, if $L \subseteq \mathbb{V}$ is linearly independent, there exists a basis $\beta \supseteq L$ of $\mathbb{V}$.</ol></blockquote><h3 id="dimension-of-subspaces">Dimension of subspaces</h3><blockquote class="prompt-info"><p><strong>Theorem 6</strong><br /> In a finite-dimensional vector space $\mathbb{V}$, every subspace $\mathbb{W}$ is finite-dimensional and satisfies $\dim(\mathbb{W}) \le \dim(\mathbb{V})$. In particular, if $\dim(\mathbb{W}) = \dim(\mathbb{V})$, then $\mathbb{V} = \mathbb{W}$.</p><p><strong>Corollary 6-1</strong><br /> For a subspace $\mathbb{W}$ of a finite-dimensional vector space $\mathbb{V}$, any basis of $\mathbb{W}$ can be extended to a basis of $\mathbb{V}$.</p></blockquote><p>By <strong>Theorem 6</strong>, the dimension of a subspace of $\mathbb{R}^3$ can be $0,1,2,$ or $3$.</p><ul><li>0-dimensional: the zero space $\{\mathbf{0}\}$ containing only the origin ($\mathbf{0}$)<li>1-dimensional: a line through the origin ($\mathbf{0}$)<li>2-dimensional: a plane containing the origin ($\mathbf{0}$)<li>3-dimensional: the entire 3D Euclidean space</ul>]]> </content> </entry> <entry><title xml:lang="sw">Vector Spaces, Subspaces, and Matrices</title><link href="https://www.yunseo.kim/sw/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="am" /><published>2025-09-13T00:00:00+09:00</published> <updated>2025-10-28T18:44:54+09:00</updated> <id>https://www.yunseo.kim/sw/posts/vector-spaces-subspaces-and-matrices/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Linear Algebra" /> <summary xml:lang="sw">Define vector spaces and subspaces with canonical examples (R^n, matrix, and function spaces). Focus on matrix spaces: symmetric/skew, triangular, and diagonal subspaces.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Define vector spaces and subspaces with canonical examples (R^n, matrix, and function spaces). Focus on matrix spaces: symmetric/skew, triangular, and diagonal subspaces.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><ul><li><strong>Matrix</strong><ul><li>The entry of a matrix $A$ in the $i$-th row and $j$-th column is denoted $A_{ij}$ or $a_{ij}$<li><strong>Diagonal entry</strong>: an entry $a_{ij}$ with $i=j$<li>The components $a_{i1}, a_{i2}, \dots, a_{in}$ are the $i$-th <strong>row</strong> of the matrix<ul><li>Each row of a matrix can be regarded as a vector in $F^n$<li>Moreover, a row vector in $F^n$ can be viewed as another matrix of size $1 \times n$</ul><li>The components $a_{1j}, a_{2j}, \dots, a_{mj}$ are the $j$-th <strong>column</strong> of the matrix<ul><li>Each column of a matrix can be regarded as a vector in $F^m$<li>Moreover, a column vector in $F^m$ can be viewed as another matrix of size $m \times 1$</ul><li><strong>Zero matrix</strong>: a matrix all of whose entries are $0$, denoted by $O$<li><strong>Square matrix</strong>: a matrix with the same number of rows and columns<li>For two $m \times n$ matrices $A, B$, if $A_{ij} = B_{ij}$ for all $1 \leq i \leq m$, $1 \leq j \leq n$ (i.e., every corresponding entry agrees), then the two matrices are defined to be <strong>equal</strong> ($A=B$)<li><strong>Transpose (transpose matrix)</strong>: for an $m \times n$ matrix $A$, the $n \times m$ matrix $A^T$ obtained by swapping rows and columns of $A$<li><strong>Symmetric matrix</strong>: a square matrix $A$ with $A^T = A$<li><strong>Skew-symmetric matrix</strong>: a square matrix $B$ with $B^T = -B$<li><strong>Triangular matrix</strong><ul><li><strong>Upper triangular matrix</strong>: a matrix whose entries below the diagonal are all $0$ (i.e., $i&gt;j \Rightarrow A_{ij}=0$), usually denoted by $U$<li><strong>Lower triangular matrix</strong>: a matrix whose entries above the diagonal are all $0$ (i.e., $i&lt;j \Rightarrow A_{ij}=0$), usually denoted by $L$</ul><li><strong>Diagonal matrix</strong>: an $n \times n$ square matrix whose off-diagonal entries are all $0$ (i.e., $i \neq j \Rightarrow M_{ij}=0$), usually denoted by $D$</ul><li>Representative vector spaces<ul><li><strong>The $n$-tuples $F^n$</strong>:<ul><li>The set of all $n$-tuples with entries in a field $F$<li>Denoted $F^n$; an $F$-vector space</ul><li><strong>Matrix space</strong>:<ul><li>The set of all $m \times n$ matrices with entries in a field $F$<li>Denoted $\mathcal{M}_{m \times n}(F)$; a vector space</ul><li><strong>Function space</strong>:<ul><li>For a nonempty set $S$ over a field $F$, the set of all functions from $S$ to $F$<li>Denoted $\mathcal{F}(S,F)$; a vector space</ul></ul><li><strong>Subspace</strong><ul><li>A subset $\mathbb{W}$ of an $F$-vector space $\mathbb{V}$ is called a <strong>subspace</strong> of $\mathbb{V}$ if it is an $F$-vector space under the same addition and scalar multiplication as defined on $\mathbb{V}$<li>For every vector space $\mathbb{V}$, both $\mathbb{V}$ itself and $\{0\}$ are subspaces; in particular, $\{0\}$ is called the <strong>zero subspace</strong><li>If a subset of a vector space contains the zero vector and is closed under <a href="/sw/posts/vectors-and-linear-combinations/#linear-combinations-of-vectors">linear combinations</a> (i.e., if $\mathrm{span}(\mathbb{W})=\mathbb{W}$), then it is a subspace</ul></ul></blockquote><h2 id="prerequisites">Prerequisites</h2><ul><li><a href="/sw/posts/vectors-and-linear-combinations/">Vectors and Linear Combinations</a></ul><h2 id="vector-spaces">Vector spaces</h2><p>As briefly noted in <a href="/sw/posts/vectors-and-linear-combinations/#vector-in-the-broad-sense-an-element-of-a-vector-space">Vectors and Linear Combinations</a>, the definitions of vectors and vector spaces as algebraic structures are as follows.</p><blockquote class="prompt-info"><p><strong>Definition</strong><br /> A <strong>vector space</strong> (or <strong>linear space</strong>) $\mathbb{V}$ over a field $F$ is a set equipped with two operations, <strong>sum</strong> and <strong>scalar multiplication</strong>, satisfying the following eight axioms. Elements of the field $F$ are called <strong>scalars</strong>, and elements of the vector space $\mathbb{V}$ are called <strong>vectors</strong>.</p><ul><li><strong>Sum</strong>: For $\mathbf{x}, \mathbf{y} \in \mathbb{V}$, there exists a unique element $\mathbf{x} + \mathbf{y} \in \mathbb{V}$. We call $\mathbf{x} + \mathbf{y}$ the <strong>sum</strong> of $\mathbf{x}$ and $\mathbf{y}$.<li><strong>Scalar multiplication</strong>: For $a \in F$ and $\mathbf{x} \in \mathbb{V}$, there exists a unique element $a\mathbf{x} \in \mathbb{V}$. We call $a\mathbf{x}$ a <strong>scalar multiple</strong> of $\mathbf{x}$.</ul><ol><li>For all $\mathbf{x},\mathbf{y} \in \mathbb{V}$, $\mathbf{x} + \mathbf{y} = \mathbf{y} + \mathbf{x}$. (commutativity of addition)<li>For all $\mathbf{x},\mathbf{y},\mathbf{z} \in \mathbb{V}$, $(\mathbf{x}+\mathbf{y})+\mathbf{z} = \mathbf{x}+(\mathbf{y}+\mathbf{z})$. (associativity of addition)<li>There exists $\mathbf{0} \in \mathbb{V}$ such that $\mathbf{x} + \mathbf{0} = \mathbf{x}$ for all $\mathbf{x} \in \mathbb{V}$. (zero vector, additive identity)<li>For each $\mathbf{x} \in \mathbb{V}$, there exists $\mathbf{y} \in \mathbb{V}$ such that $\mathbf{x}+\mathbf{y}=\mathbf{0}$. (additive inverse)<li>For each $\mathbf{x} \in \mathbb{V}$, $1\mathbf{x} = \mathbf{x}$. (multiplicative identity)<li>For all $a,b \in F$ and $\mathbf{x} \in \mathbb{V}$, $(ab)\mathbf{x} = a(b\mathbf{x})$. (associativity of scalar multiplication)<li>For all $a \in F$ and $\mathbf{x},\mathbf{y} \in \mathbb{V}$, $a(\mathbf{x}+\mathbf{y}) = a\mathbf{x} + a\mathbf{y}$. (distributivity of scalar multiplication over vector addition)<li>For all $a,b \in F$ and $\mathbf{x},\mathbf{y} \in \mathbb{V}$, $(a+b)\mathbf{x} = a\mathbf{x} + b\mathbf{x}$. (distributivity of scalar multiplication over field addition)</ol></blockquote><p>Strictly speaking, one should write “the $F$-vector space $\mathbb{V}$,” but when discussing vector spaces the specific field is often not essential; thus, when there is no risk of confusion, we omit $F$ and simply write “the vector space $\mathbb{V}$.”</p><h3 id="matrix-spaces">Matrix spaces</h3><h4 id="row-and-column-vectors">Row and column vectors</h4><p>The set of all $n$-tuples with entries in a field $F$ is denoted $F^n$. For $u = (a_1, a_2, \dots, a_n) \in F^n$ and $v = (b_1, b_2, \dots, b_n) \in F^n$, defining addition and scalar multiplication by</p>\[\begin{align*} u + v &amp;= (a_1+b_1, a_2+b_2, \dots, a_n+b_n), \\ cu &amp;= (ca_1, ca_2, \dots, ca_n) \end{align*}\]<p>makes $F^n$ into an $F$-vector space.</p><p>Vectors in $F^n$ are usually written as <strong>column vectors</strong> rather than standalone <strong>row vectors</strong> $(a_1, a_2, \dots, a_n)$:</p>\[\begin{pmatrix} a_1 \\ a_2 \\ \vdots \\ a_n \end{pmatrix}\]<blockquote class="prompt-tip"><p>Because column-vector notation takes more vertical space, one often uses the <a href="#transpose-symmetric-and-skew-symmetric-matrices">transpose</a> to write $(a_1, a_2, \dots, a_n)^T$ instead.</p></blockquote><h4 id="matrices-and-matrix-spaces">Matrices and matrix spaces</h4><p>An $m \times n$ <strong>matrix</strong> with entries in $F$ is a rectangular array, typically denoted by italic capitals ($A, B, C$, etc.):</p>\[\begin{pmatrix} a_{11} &amp; a_{12} &amp; \cdots &amp; a_{1n} \\ a_{21} &amp; a_{22} &amp; \cdots &amp; a_{2n} \\ \vdots &amp; \vdots &amp; &amp; \vdots \\ a_{m1} &amp; a_{m2} &amp; \cdots &amp; a_{mn} \end{pmatrix}\]<ul><li>The entry of a matrix $A$ in the $i$-th row and $j$-th column is denoted $A_{ij}$ or $a_{ij}$.<li>Each $a_{ij}$ ($1 \leq i \leq m$, $1 \leq j \leq n$) belongs to $F$.<li>An entry $a_{ij}$ with $i=j$ is called a <strong>diagonal entry</strong>.<li>The components $a_{i1}, a_{i2}, \dots, a_{in}$ form the $i$-th <strong>row</strong> of the matrix. Each row can be regarded as a vector in $F^n$, and, furthermore, a row vector in $F^n$ can be viewed as another matrix of size $1 \times n$.<li>The components $a_{1j}, a_{2j}, \dots, a_{mj}$ form the $j$-th <strong>column</strong> of the matrix. Each column can be regarded as a vector in $F^m$, and, furthermore, a column vector in $F^m$ can be viewed as another matrix of size $m \times 1$.<li>An $m \times n$ matrix whose entries are all $0$ is called the <strong>zero matrix</strong>, denoted $O$.<li>A matrix with the same number of rows and columns is called a <strong>square matrix</strong>.<li>For two $m \times n$ matrices $A, B$, if $A_{ij} = B_{ij}$ for all $1 \leq i \leq m$, $1 \leq j \leq n$ (i.e., every corresponding entry agrees), we define the matrices to be <strong>equal</strong> ($A=B$).</ul><p>The set of all $m \times n$ matrices with entries in $F$ is denoted $\mathcal{M}_{m \times n}(F)$. For $\mathbf{A},\mathbf{B} \in \mathcal{M}_{m \times n}(F)$ and $c \in F$, defining addition and scalar multiplication by</p>\[\begin{align*} (\mathbf{A}+\mathbf{B})_{ij} &amp;= \mathbf{A}_{ij} + \mathbf{B}_{ij}, \\ (c\mathbf{A})_{ij} &amp;= c\mathbf{A}_{ij} \\ \text{(for }1 \leq i \leq &amp;m, 1 \leq j \leq n \text{)} \end{align*}\]<p>makes $\mathcal{M}_{m \times n}(F)$ a vector space, called a <strong>matrix space</strong>.</p><p>This naturally extends the operations defined on $F^n$ and $F^m$.</p><h3 id="function-spaces">Function spaces</h3><p>For a nonempty set $S$ over a field $F$, $\mathcal{F}(S,F)$ denotes the set of all functions from $S$ to $F$. For $f,g \in \mathcal{F}(S,F)$, we declare $f$ and $g$ <strong>equal</strong> ($f=g$) if $f(s) = g(s)$ for all $s \in S$.</p><p>For $f,g \in \mathcal{F}(S,F)$, $c \in F$, and $s \in S$, defining addition and scalar multiplication by</p>\[\begin{align*} (f + g)(s) &amp;= f(s) + g(s), \\ (cf)(s) &amp;= c[f(s)] \end{align*}\]<p>makes $\mathcal{F}(S,F)$ a vector space, called a <strong>function space</strong>.</p><h2 id="subspaces">Subspaces</h2><blockquote class="prompt-info"><p><strong>Definition</strong><br /> A subset $\mathbb{W}$ of an $F$-vector space $\mathbb{V}$ is called a <strong>subspace</strong> of $\mathbb{V}$ if it is an $F$-vector space under the same addition and scalar multiplication as those defined on $\mathbb{V}$.</p></blockquote><p>For every vector space $\mathbb{V}$, both $\mathbb{V}$ itself and $\{0\}$ are subspaces; in particular, $\{0\}$ is called the <strong>zero subspace</strong>.</p><p>Whether a subset is a subspace can be checked using the following theorem.</p><blockquote class="prompt-info"><p><strong>Theorem 1</strong><br /> For a vector space $\mathbb{V}$ and a subset $\mathbb{W}$, $\mathbb{W}$ is a subspace of $\mathbb{V}$ if and only if the following three conditions hold (with the operations inherited from $\mathbb{V}$):</p><ol><li>$\mathbf{0} \in \mathbb{W}$<li>$\mathbf{x}+\mathbf{y} \in \mathbb{W} \quad \forall\ \mathbf{x} \in \mathbb{W},\ \mathbf{y} \in \mathbb{W}$<li>$c\mathbf{x} \in \mathbb{W} \quad \forall\ c \in F,\ \mathbf{x} \in \mathbb{W}$</ol><p>In short, if it contains the zero vector and is closed under <a href="/sw/posts/vectors-and-linear-combinations/#linear-combinations-of-vectors">linear combinations</a> (i.e., if $\mathrm{span}(\mathbb{W})=\mathbb{W}$), then it is a subspace.</p></blockquote><p>The following theorems also hold.</p><blockquote class="prompt-info"><p><strong>Theorem 2</strong></p><ul><li><p>For any subset $S$ of a vector space $\mathbb{V}$, the span $\mathrm{span}(S)$ is a subspace of $\mathbb{V}$ containing $S$.</p>\[S \subset \mathrm{span}(S) \leq \mathbb{V} \quad \forall\ S \subset \mathbb{V}.\]<li><p>Any subspace of $\mathbb{V}$ that contains $S$ must contain the span of $S$.</p>\[\mathbb{W}\supset \mathrm{span}(S) \quad \forall\ S \subset \mathbb{W} \leq \mathbb{V}.\]</ul></blockquote><blockquote class="prompt-info"><p><strong>Theorem 3</strong><br /> For subspaces of a vector space $\mathbb{V}$, the intersection of any collection of such subspaces is again a subspace of $\mathbb{V}$.</p></blockquote><h3 id="transpose-symmetric-and-skew-symmetric-matrices">Transpose, symmetric, and skew-symmetric matrices</h3><p>The <strong>transpose</strong> $A^T$ of an $m \times n$ matrix $A$ is the $n \times m$ matrix obtained by swapping the rows and columns of $A$:</p>\[(A^T)_{ij} = A_{ji}\] \[\begin{pmatrix} 1 &amp; 2 &amp; 3 \\ 4 &amp; 5 &amp; 6 \end{pmatrix}^T = \begin{pmatrix} 1 &amp; 4 \\ 2 &amp; 5 \\ 3 &amp; 6 \end{pmatrix}\]<p>A matrix $A$ with $A^T = A$ is called <strong>symmetric</strong>, and a matrix $B$ with $B^T = -B$ is called <strong>skew-symmetric</strong>. Symmetric and skew-symmetric matrices must be square.</p><p>Let $\mathbb{W}_1$ and $\mathbb{W}_2$ be the sets of all symmetric and all skew-symmetric matrices in $\mathcal{M}_{n \times n}(F)$, respectively. Then $\mathbb{W}_1$ and $\mathbb{W}_2$ are subspaces of $\mathcal{M}_{n \times n}(F)$; that is, they are closed under addition and scalar multiplication.</p><h3 id="triangular-and-diagonal-matrices">Triangular and diagonal matrices</h3><p>These two classes of matrices are also particularly important.</p><p>First, we collectively call the following two types of matrices <strong>triangular matrices</strong>:</p><ul><li><strong>Upper triangular matrix</strong>: a matrix whose entries below the diagonal are all $0$ (i.e., $i&gt;j \Rightarrow A_{ij}=0$), usually denoted by $U$<li><strong>Lower triangular matrix</strong>: a matrix whose entries above the diagonal are all $0$ (i.e., $i&lt;j \Rightarrow A_{ij}=0$), usually denoted by $L$</ul><p>An $n \times n$ square matrix in which all off-diagonal entries are $0$—that is, $i \neq j \Rightarrow M_{ij}=0$—is called a <strong>diagonal matrix</strong>, usually denoted by $D$. A diagonal matrix is both upper and lower triangular.</p><p>The sets of upper triangular matrices, lower triangular matrices, and diagonal matrices are all subspaces of $\mathcal{M}_{m \times n}(F)$.</p>]]> </content> </entry> <entry><title xml:lang="sw">Inner Product and Norm</title><link href="https://www.yunseo.kim/sw/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="am" /><published>2025-09-10T00:00:00+09:00</published> <updated>2025-10-15T05:48:53+09:00</updated> <id>https://www.yunseo.kim/sw/posts/inner-product-and-norm/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Linear Algebra" /> <summary xml:lang="sw">Define the inner product and the dot product, derive vector length/norm from them, and see how to compute the angle between vectors in R^n and general inner product spaces.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Define the inner product and the dot product, derive vector length/norm from them, and see how to compute the angle between vectors in R^n and general inner product spaces.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="prerequisites">Prerequisites</h2><ul><li><a href="/sw/posts/vectors-and-linear-combinations/">Vectors and Linear Combinations</a></ul><h2 id="inner-product">Inner Product</h2><p>In a general $F$-vector space, the definition of an <strong>inner product</strong> is as follows.</p><blockquote class="prompt-info"><p><strong>Definition of the inner product and inner product space</strong><br /> Consider an $F$-vector space $\mathbb{V}$. An <strong>inner product</strong> on $\mathbb{V}$, denoted $\langle \mathbf{x},\mathbf{y} \rangle$, is a function that assigns to each ordered pair of vectors $\mathbf{x}, \mathbf{y} \in \mathbb{V}$ a scalar in $F$ and satisfies the following:</p><p>For all $\mathbf{x},\mathbf{y},\mathbf{z} \in \mathbb{V}$ and all $c \in F$,</p><ol><li>$\langle \mathbf{x}+\mathbf{z}, \mathbf{y} \rangle = \langle \mathbf{x}, \mathbf{y} \rangle + \langle \mathbf{z}, \mathbf{y} \rangle$<li>$\langle c\mathbf{x}, \mathbf{y} \rangle = c \langle \mathbf{x}, \mathbf{y} \rangle$<li>$\overline{\langle \mathbf{x}, \mathbf{y} \rangle} = \langle \mathbf{y}, \mathbf{x} \rangle$ (where the overline denotes complex conjugation)<li>If $\mathbf{x} \neq \mathbf{0}$, then $\langle \mathbf{x}, \mathbf{x} \rangle$ is positive.</ol><p>An $F$-vector space $\mathbb{V}$ equipped with an inner product is called an <strong>inner product space</strong>. In particular, when $F=\mathbb{C}$ it is a <strong>complex inner product space</strong>, and when $F=\mathbb{R}$ it is a <strong>real inner product space</strong>.</p></blockquote><p>In particular, the following inner product is called the <strong>standard inner product</strong>. One can check that it satisfies all four axioms above.</p><blockquote class="prompt-info"><p><strong>Definition of the standard inner product</strong><br /> For two vectors in $F^n$, $\mathbf{x}=(a_1, a_2, \dots, a_n)$ and $\mathbf{y}=(b_1, b_2, \dots, b_n)$, the <strong>standard inner product</strong> on $F^n$ is defined by</p>\[\langle \mathbf{x}, \mathbf{y} \rangle = \sum_{i=1}^n a_i \overline{b_i}\]</blockquote><p>When $F=\mathbb{R}$, complex conjugation is trivial, so the standard inner product becomes $\sum_{i=1}^n a_i b_i$. In this special case we often write $\mathbf{x} \cdot \mathbf{y}$ instead of $\langle \mathbf{x}, \mathbf{y} \rangle$ and call it the <strong>dot product</strong> or <strong>scalar product</strong>.</p><blockquote class="prompt-info"><p><strong>Definition of the dot product/scalar product</strong><br /> For $\mathbf{v}=(v_1, v_2, \dots, v_n)$ and $\mathbf{w}=(w_1, w_2, \dots, w_n)$ in $\mathbb{R}^n$, the <strong>dot product</strong> (or <strong>scalar product</strong>) is defined by</p>\[\mathbf{v} \cdot \mathbf{w} = \sum_{i=1}^n v_i w_i = v_1 w_1 + v_2 w_2 + \cdots + v_n w_n\]</blockquote><blockquote class="prompt-warning"><p>The “scalar product” mentioned here is an operation between two vectors and is distinct from the operation between a scalar and a vector, “scalar multiplication,” discussed in <a href="/sw/posts/vectors-and-linear-combinations/">Vectors and Linear Combinations</a>. The English terms are similar, and <a href="https://www.kms.or.kr/mathdict/list.html?key=kname&amp;keyword=%EC%8A%A4%EC%B9%BC%EB%9D%BC%EA%B3%B1">per the Korean Mathematical Society’s standard terminology the Korean translations are identical</a>, so be careful not to confuse them.</p><p>To avoid confusion, I will refer to it as the <strong>dot product</strong> whenever possible.</p></blockquote><blockquote class="prompt-tip"><p>In Euclidean space, the inner product coincides with the dot product, so when the context is clear, the dot product is often simply called the inner product. Strictly speaking, however, an inner product is a more general notion that includes the dot product as a special case.</p></blockquote><pre><code class="language-mermaid">flowchart TD
    A["Inner Product"] --&gt;|includes| B["Standard Inner Product"]
    B --&gt;|"when F = R (real numbers)"| C["Dot/Scalar Product"]

    %% inclusion notation
    C -. included in .-&gt; B
    B -. included in .-&gt; A
</code></pre><h2 id="lengthnorm-of-a-vector">Length/Norm of a Vector</h2><p>For a vector $\mathbf{v}=(v_1, v_2, \dots, v_n)$ in $\mathbb{R}^n$, the Euclidean length of $\mathbf{v}$ is defined via the dot product as</p>\[\| \mathbf{v} \| = \sqrt{\mathbf{v} \cdot \mathbf{v}} = \left[ \sum_{i=1}^n |v_i|^2 \right]^{1/2} = \sqrt{v_1^2 + v_2^2 + \cdots + v_n^2}\]<p>More generally, in any inner product space, the <strong>length</strong> or <strong>norm</strong> of a vector is defined by</p>\[\| \mathbf{x} \| = \sqrt{\langle \mathbf{x}, \mathbf{x} \rangle}\]<p>In a general inner product space, the norm satisfies the following fundamental properties.</p><blockquote class="prompt-info"><p><strong>Theorem</strong><br /> Let $\mathbb{V}$ be an $F$-inner product space and let $\mathbf{x}, \mathbf{y} \in \mathbb{V}$ and $c \in F$. Then:</p><ol><li>$\|c\mathbf{x}\| = |c| \cdot \|\mathbf{x}\|$<li>The following hold:<ul><li>$\|\mathbf{x}\| = 0 \iff \mathbf{x}=\mathbf{0}$<li>$\|\mathbf{x}\| \geq 0 \ \forall \mathbf{x}$</ul><li><strong>Cauchy–Schwarz inequality</strong>: $| \langle \mathbf{x}, \mathbf{y} \rangle | \leq \|\mathbf{x}\| \cdot \|\mathbf{y}\|$ (with equality if and only if one of $\mathbf{x}$ and $\mathbf{y}$ is a scalar multiple of the other)<li><strong>Triangle inequality</strong>: $\| \mathbf{x} + \mathbf{y} \| \leq \|\mathbf{x}\| + \|\mathbf{y}\|$ (with equality if and only if one is a scalar multiple of the other and they point in the same direction)</ol></blockquote><h2 id="angle-between-vectors-and-unit-vectors">Angle Between Vectors and Unit Vectors</h2><p>A vector of length $1$ is called a <strong>unit vector</strong>. For two vectors $\mathbf{v}=(v_1, v_2, \dots, v_n)$ and $\mathbf{w}=(w_1, w_2, \dots, w_n)$ in $\mathbb{R}^n$, we have $\mathbf{v} \cdot \mathbf{w} = \|\mathbf{v}\| \cdot \|\mathbf{w}\| \cos\theta$, from which the angle $\theta$ between $\mathbf{v}$ and $\mathbf{w}$ ($0 \leq \theta \leq \pi$) can be obtained:</p>\[\theta = \arccos{\frac{\mathbf{v} \cdot \mathbf{w}}{\|\mathbf{v}\| \cdot \|\mathbf{w}\|}}\]<p>If $\mathbf{v} \cdot \mathbf{w} = 0$, the two vectors are said to be <strong>perpendicular</strong> or <strong>orthogonal</strong>.</p><blockquote class="prompt-tip"><p>If vectors $\mathbf{v}$ and $\mathbf{w}$ are perpendicular, then</p>\[\begin{align*} \| \mathbf{v} + \mathbf{w} \|^2 &amp;= (\mathbf{v} + \mathbf{w}) \cdot (\mathbf{v} + \mathbf{w}) \\ &amp;= \mathbf{v} \cdot \mathbf{v} + \mathbf{v} \cdot \mathbf{w} + \mathbf{w} \cdot \mathbf{v} + \mathbf{w} \cdot \mathbf{w} \\ &amp;= \mathbf{v} \cdot \mathbf{v} + \mathbf{w} \cdot \mathbf{w} \\ &amp;= \|\mathbf{v}\|^2 + \|\mathbf{w}\|^2. \end{align*}\]</blockquote><p>Generalizing to an arbitrary inner product space:</p><blockquote class="prompt-info"><p><strong>Definition</strong><br /> Let $\mathbb{V}$ be an inner product space. For vectors $\mathbf{x}, \mathbf{y} \in \mathbb{V}$, if $\langle \mathbf{x}, \mathbf{y} \rangle = 0$, then $\mathbf{x}$ and $\mathbf{y}$ are said to be <strong>orthogonal</strong> or <strong>perpendicular</strong>. Moreover,</p><ol><li>For a subset $S \subset \mathbb{V}$, if any two distinct vectors in $S$ are orthogonal, then $S$ is called an <strong>orthogonal set</strong>.<li>A vector $\mathbf{x} \in \mathbb{V}$ with $\|\mathbf{x}\|=1$ is called a <strong>unit vector</strong>.<li>If a subset $S \subset \mathbb{V}$ is an orthogonal set consisting only of unit vectors, then $S$ is called an <strong>orthonormal set</strong>.</ol></blockquote><p>A set $S = { \mathbf{v}_1, \mathbf{v}_2, \dots }$ is orthonormal if and only if $\langle \mathbf{v}_i, \mathbf{v}_j \rangle = \delta_{ij}$. Multiplying a vector by a nonzero scalar does not affect orthogonality.</p><p>For any nonzero vector $\mathbf{x}$, the vector $\cfrac{\mathbf{x}}{\|\mathbf{x}\|}$ is a unit vector. Obtaining a unit vector by multiplying a nonzero vector by the reciprocal of its length is called <strong>normalizing</strong>.</p>]]> </content> </entry> <entry><title xml:lang="sw">Vectors and Linear Combinations</title><link href="https://www.yunseo.kim/sw/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="am" /><published>2025-09-07T00:00:00+09:00</published> <updated>2025-10-28T20:47:49+09:00</updated> <id>https://www.yunseo.kim/sw/posts/vectors-and-linear-combinations/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Linear Algebra" /> <summary xml:lang="sw">Learn what vectors are, how to represent them, and the basics of vector operations (addition, scalar multiplication). Build intuition for linear combinations and span.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Learn what vectors are, how to represent them, and the basics of vector operations (addition, scalar multiplication). Build intuition for linear combinations and span.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><ul><li><strong>Definition of a vector</strong><ul><li><strong>Vector in the narrow sense (Euclidean vector)</strong>: a physical quantity that has both magnitude and direction<li><strong>Vector in the broad, linear-algebraic sense</strong>: an element of a vector space</ul><li><strong>Ways to represent vectors</strong><ul><li><strong>Arrow representation</strong>: the vector’s magnitude is the length of the arrow, and its direction is the arrow’s direction. It is easy to visualize and intuitive, but it is difficult to represent higher-dimensional vectors (4D and above) or non-Euclidean vectors.<li><strong>Component representation</strong>: place the tail of the vector at the origin of a coordinate space and express the vector by the coordinates of its head.</ul><li><strong>Basic operations on vectors</strong><ul><li><strong>Sum</strong>: $(a_1, a_2, \cdots, a_n) + (b_1, b_2, \cdots, b_n) := (a_1+b_1, a_2+b_2, \cdots, a_n+b_n)$<li><strong>Scalar multiplication</strong>: $c(a_1, a_2, \cdots, a_n) := (ca_1, ca_2, \cdots, ca_n)$</ul><li><strong>Linear combination of vectors</strong><ul><li>For finitely many vectors $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n$ and scalars $a_1, a_2, \dots, a_n$, a vector $\mathbf{v}$ satisfying $\mathbf{v} = a_1\mathbf{u}_1 + a_2\mathbf{u}_2 + \cdots + a_n\mathbf{u}_n$ is called a <strong>linear combination</strong> of $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n$.<li>The numbers $a_1, a_2, \dots, a_n$ are called the <strong>coefficients</strong> of this linear combination.</ul><li><strong>Span</strong><ul><li>For a nonempty subset $S$ of a vector space $\mathbb{V}$, the set of all linear combinations formed from vectors in $S$, denoted $\mathrm{span}(S)$.<li>By definition, $\mathrm{span}(\emptyset) = \{0\}$.<li>For a subset $S$ of a vector space $\mathbb{V}$, if $\mathrm{span}(S) = \mathbb{V}$, then $S$ is said to generate (or span) $\mathbb{V}$.</ul></ul></blockquote><h2 id="prerequisites">Prerequisites</h2><ul><li>Coordinate plane/coordinate space<li>Field</ul><h2 id="what-is-a-vector">What is a vector?</h2><h3 id="vector-in-the-narrow-sense-euclidean-vector">Vector in the narrow sense: Euclidean vector</h3><blockquote class="prompt-info"><p>Many physical quantities such as force, velocity, and acceleration carry not only magnitude but also directional information. A physical quantity that has both magnitude and direction is called a <strong>vector</strong>.</p></blockquote><p>The definition above is the one used in mechanics in physics and in high-school-level mathematics. A vector in this geometric sense—“the magnitude and direction of a directed line segment,” grounded in physical intuition—is more precisely called a <strong>Euclidean vector</strong>.</p><h3 id="vector-in-the-broad-sense-an-element-of-a-vector-space">Vector in the broad sense: an element of a vector space</h3><p>In linear algebra, vectors are defined more broadly than Euclidean vectors, as an abstract algebraic structure:</p><blockquote class="prompt-info"><p><strong>Definition</strong><br /> A <strong>vector space</strong> (or <strong>linear space</strong>) $\mathbb{V}$ over a field $F$ is a set equipped with two operations, <strong>sum</strong> and <strong>scalar multiplication</strong>, satisfying the following eight axioms. Elements of the field $F$ are called <strong>scalars</strong>, and elements of the vector space $\mathbb{V}$ are called <strong>vectors</strong>.</p><ul><li><strong>Sum</strong>: For any $\mathbf{x}, \mathbf{y} \in \mathbb{V}$, there exists a unique element $\mathbf{x} + \mathbf{y} \in \mathbb{V}$. We call $\mathbf{x} + \mathbf{y}$ the <strong>sum</strong> of $\mathbf{x}$ and $\mathbf{y}$.<li><strong>Scalar multiplication</strong>: For any $a \in F$ and $\mathbf{x} \in \mathbb{V}$, there exists a unique element $a\mathbf{x} \in \mathbb{V}$. In this case, $a\mathbf{x}$ is called the <strong>scalar multiple</strong> of $\mathbf{x}$.</ul><ol><li>For all $\mathbf{x},\mathbf{y} \in \mathbb{V}$, $\mathbf{x} + \mathbf{y} = \mathbf{y} + \mathbf{x}$. (commutativity of addition)<li>For all $\mathbf{x},\mathbf{y},\mathbf{z} \in \mathbb{V}$, $(\mathbf{x}+\mathbf{y})+\mathbf{z} = \mathbf{x}+(\mathbf{y}+\mathbf{z})$. (associativity of addition)<li>There exists $\mathbf{0} \in \mathbb{V}$ such that $\mathbf{x} + \mathbf{0} = \mathbf{x}$ for all $\mathbf{x} \in \mathbb{V}$. (zero vector, additive identity)<li>For each $\mathbf{x} \in \mathbb{V}$, there exists $\mathbf{y} \in \mathbb{V}$ such that $\mathbf{x} + \mathbf{y} = \mathbf{0}$. (additive inverse)<li>For each $\mathbf{x} \in \mathbb{V}$, $1\mathbf{x} = \mathbf{x}$. (multiplicative identity)<li>For all $a,b \in F$ and $\mathbf{x} \in \mathbb{V}$, $(ab)\mathbf{x} = a(b\mathbf{x})$. (associativity of scalar multiplication)<li>For all $a \in F$ and $\mathbf{x},\mathbf{y} \in \mathbb{V}$, $a(\mathbf{x}+\mathbf{y}) = a\mathbf{x} + a\mathbf{y}$. (distributivity of scalar multiplication over vector addition)<li>For all $a,b \in F$ and $\mathbf{x} \in \mathbb{V}$, $(a+b)\mathbf{x} = a\mathbf{x} + b\mathbf{x}$. (distributivity of scalar multiplication over field addition)</ol></blockquote><p>This definition of a vector in linear algebra encompasses a broader class than the previously mentioned <a href="#vector-in-the-narrow-sense-euclidean-vector">Euclidean vector</a>. You can verify that <a href="#vector-in-the-narrow-sense-euclidean-vector">Euclidean vectors</a> satisfy these eight properties.</p><p>The origin and development of vectors are closely tied to practical problems in physics—such as describing force, motion, rotation, and fields quantitatively. The concept was first introduced as <a href="#vector-in-the-narrow-sense-euclidean-vector">Euclidean vectors</a> to meet the physical need to mathematically express natural phenomena. Mathematics then generalized and systematized these physical ideas, establishing formal structures such as vector spaces, inner products, and exterior products, leading to today’s definition of vectors. In other words, vectors are concepts demanded by physics and formalized by mathematics—an interdisciplinary product developed through close interaction between the two communities, rather than a creation of pure mathematics alone.</p><p>The <a href="#vector-in-the-narrow-sense-euclidean-vector">Euclidean vectors</a> handled in classical mechanics can be expressed within a <a href="#vector-in-the-broad-sense-an-element-of-a-vector-space">more general framework</a> mathematically. Modern physics actively uses not only <a href="#vector-in-the-narrow-sense-euclidean-vector">Euclidean vectors</a> but also more abstract notions defined in mathematics—vector spaces, function spaces, etc.—and attaches physical meaning to them. Hence it is inappropriate to regard the two definitions of a vector as merely “the physical definition” and “the mathematical definition.”</p><p>We will defer a deeper dive into vector spaces and, for now, focus on Euclidean vectors—vectors in the narrow sense that admit geometric representation in coordinate spaces. Building intuition with Euclidean vectors first will be helpful when generalizing to other kinds of vectors later.</p><h2 id="ways-to-represent-vectors">Ways to represent vectors</h2><h3 id="arrow-representation">Arrow representation</h3><p>This is the most common and most geometrically intuitive representation. The vector’s magnitude is represented by the length of an arrow, and its direction by the direction of the arrow.</p><p><img src="https://upload.wikimedia.org/wikipedia/commons/9/95/Vector_from_A_to_B.svg" alt="Euclidean Vector from A to B" width="972" /></p><blockquote><p><em>Image credits</em></p><ul><li>Author: Wikipedia user <a href="https://en.wikipedia.org/wiki/User:Nguyenthephuc">Nguyenthephuc</a><li>License: <a href="https://creativecommons.org/licenses/by-sa/3.0/deed.en">CC BY-SA 3.0</a></ul></blockquote><p>While intuitive, this arrow representation has clear limitations for higher-dimensional vectors (4D and above). Moreover, we will eventually need to handle non-Euclidean vectors that are not easily depicted geometrically, so it is important to become comfortable with the component representation described next.</p><h3 id="component-representation">Component representation</h3><p>Regardless of where a vector is located, if its magnitude and direction are the same, we consider it the same vector. Therefore, given a coordinate space, if we fix the tail of the vector at the origin of that coordinate space, then <u>an $n$-dimensional vector corresponds to an arbitrary point in $n$-dimensional space</u>, and we can represent the vector by the coordinates of its head. This is called the <strong>component representation</strong> of a vector.</p>\[(a_1, a_2, \cdots, a_n) \in \mathbb{R}^n \text{ or } \mathbb{C}^n\]<p><img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Position_vector.svg" alt="Position vector" /></p><blockquote><p><em>Image credits</em></p><ul><li>Author: Wikimedia user <a href="https://commons.wikimedia.org/wiki/User:Acdx">Acdx</a><li>License: <a href="https://creativecommons.org/licenses/by-sa/3.0/deed.en">CC BY-SA 3.0</a></ul></blockquote><h2 id="basic-operations-on-vectors">Basic operations on vectors</h2><p>The two basic operations on vectors are <strong>sum</strong> and <strong>scalar multiplication</strong>. Every vector operation can be expressed as a combination of these two.</p><h3 id="vector-addition">Vector addition</h3><p>The sum of two vectors is again a vector; its components are obtained by adding the corresponding components of the two vectors.</p>\[(a_1, a_2, \cdots, a_n) + (b_1, b_2, \cdots, b_n) := (a_1+b_1, a_2+b_2, \cdots, a_n+b_n)\]<h3 id="scalar-multiplication-of-vectors">Scalar multiplication of vectors</h3><p>A vector can be scaled up or down by multiplying it by a scalar (a constant); the result is obtained by multiplying each component by that scalar.</p>\[c(a_1, a_2, \cdots, a_n) := (ca_1, ca_2, \cdots, ca_n)\]<p><img src="https://upload.wikimedia.org/wikipedia/commons/1/1b/Scalar_multiplication_of_vectors2.svg" alt="Scalar multiplication of vectors" /></p><blockquote><p><em>Image credits</em></p><ul><li>Author: Wikipedia user <a href="https://en.wikipedia.org/wiki/User:Silly_rabbit">Silly rabbit</a><li>License: <a href="https://creativecommons.org/licenses/by-sa/3.0/deed.en">CC BY-SA 3.0</a></ul></blockquote><h2 id="linear-combinations-of-vectors">Linear combinations of vectors</h2><p>Just as calculus starts from numbers $x$ and functions $f(x)$, linear algebra starts from vectors $\mathbf{v}, \mathbf{w}, \dots$ and their linear combinations $c\mathbf{v} + d\mathbf{w} + \cdots$. Every linear combination of vectors is built from the two basic operations above, <a href="#vector-addition">sum</a> and <a href="#scalar-multiplication-of-vectors">scalar multiplication</a>.</p><blockquote class="prompt-info"><p>Given finitely many vectors $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n$ and scalars $a_1, a_2, \dots, a_n$, a vector $\mathbf{v}$ satisfying</p>\[\mathbf{v} = a_1\mathbf{u}_1 + a_2\mathbf{u}_2 + \cdots + a_n\mathbf{u}_n\]<p>is called a <strong>linear combination</strong> of $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n$. The numbers $a_1, a_2, \dots, a_n$ are the <strong>coefficients</strong> of this linear combination.</p></blockquote><p>Why are linear combinations important? Consider the following situation: <strong>$n$ vectors in $m$-dimensional space form the $n$ columns of an $m \times n$ matrix.</strong></p>\[\begin{gather*} \mathbf{v}_1 = (a_{11}, a_{21}, \dots, a_{m1}), \\ \mathbf{v}_2 = (a_{12}, a_{22}, \dots, a_{m2}), \\ \vdots \\ \mathbf{v}_n = (a_{1n}, a_{2n}, \dots, a_{mn}) \\ \\ A = \Bigg[ \mathbf{v}_1 \quad \mathbf{v}_2 \quad \cdots \quad \mathbf{v}_n \Bigg] \end{gather*}\]<p>The key questions are:</p><ol><li><strong>Describe all possible linear combinations $Ax = x_1\mathbf{v}_1 + x_2\mathbf{v}_2 + \cdots + x_n\mathbf{v}_n$.</strong> What do they form?<li>Given a desired output vector $b$, <strong>find numbers $x_1, x_2, \dots, x_n$ such that $Ax = b$.</strong></ol><p>We will return to the second question later; for now, focus on the first. To simplify, consider the case of two nonzero 2D vectors ($m=2$, $n=2$).</p><h3 id="the-linear-combination-cmathbfv--dmathbfw">The linear combination $c\mathbf{v} + d\mathbf{w}$</h3><p>A vector $\mathbf{v}$ in 2D has two components. For any scalar $c$, <u>the vector $c\mathbf{v}$ traces an infinitely long line through the origin in the $xy$-plane, parallel to the original vector $\mathbf{v}$.</u></p><p>If the given second vector $\mathbf{w}$ is not on this line (i.e., $\mathbf{v}$ and $\mathbf{w}$ are not parallel), then $d\mathbf{w}$ traces another line. Combining these two lines, we see that <strong>the linear combination $c\mathbf{v} + d\mathbf{w}$ fills a single plane that includes the origin.</strong></p><p><img src="https://upload.wikimedia.org/wikipedia/commons/6/6f/Linjcomb.png" alt="Linear combinations of two vectors" /></p><blockquote><p><em>Image credits</em></p><ul><li>Author: Wikimedia user <a href="https://commons.wikimedia.org/wiki/User:Svjo">Svjo</a><li>License: <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC BY-SA 4.0</a></ul></blockquote><h3 id="span">Span</h3><p>In this way, linear combinations of vectors form a vector space, a process called <strong>spanning</strong>.</p><blockquote class="prompt-info"><p><strong>Definition</strong><br /> For a nonempty subset $S$ of a vector space $\mathbb{V}$, the set of all linear combinations formed from vectors in $S$ is called the <strong>span</strong> of $S$ and is denoted by $\mathrm{span}(S)$. By definition, $\mathrm{span}(\emptyset) = \{0\}$.</p></blockquote><blockquote class="prompt-info"><p><strong>Definition</strong><br /> For a subset $S$ of a vector space $\mathbb{V}$, if $\mathrm{span}(S) = \mathbb{V}$, then $S$ is said to generate (or span) $\mathbb{V}$.</p></blockquote><p>Although we have not yet introduced concepts such as subspaces and bases, recalling this example will help you understand the concept of a vector space.</p>]]> </content> </entry> <entry><title xml:lang="sw">Summary of Kaggle 'Pandas' Course (2) - Lessons 4–6</title><link href="https://www.yunseo.kim/sw/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="am" /><published>2025-08-24T00:00:00+09:00</published> <updated>2025-08-24T00:00:00+09:00</updated> <id>https://www.yunseo.kim/sw/posts/summary-of-kaggle-pandas-course-2/</id> <author> <name>Yunseo Kim</name> </author> <category term="AI & Data" /> <category term="Machine Learning" /> <summary xml:lang="sw">Practical Pandas for data cleaning and wrangling: a concise summary of Kaggle’s free &apos;Pandas&apos; course with added notes. This part covers Lessons 4–6—grouping/sorting, data types &amp; missing values, renaming and combining.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Practical Pandas for data cleaning and wrangling: a concise summary of Kaggle’s free 'Pandas' course with added notes. This part covers Lessons 4–6—grouping/sorting, data types & missing values, renaming and combining.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><p>I summarize here what I studied through Kaggle’s <a href="https://www.kaggle.com/learn/pandas">Pandas</a> course.<br /> Since it’s fairly long, I split it into two parts.</p><ul><li><a href="/sw/posts/summary-of-kaggle-pandas-course-1/">Part 1: Lessons 1–3</a><li>Part 2: Lessons 4–6 (this post)</ul><p><img src="/assets/img/kaggle-pandas/certificate.png" alt="Certificate of Completion" /></p><h2 id="lesson-4-grouping-and-sorting">Lesson 4. Grouping and Sorting</h2><p>Sometimes you need to categorize data and perform operations per group, or sort by specific criteria.</p><h3 id="group-wise-analysis">Group-wise analysis</h3><p>Using the <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.groupby.html"><code class="language-plaintext highlighter-rouge">groupby()</code></a> method, you can group rows sharing the same values in a given column and then compute summaries or apply operations per group.</p><p>Previously, we saw the <a href="/sw/posts/summary-of-kaggle-pandas-course-1/#quick-summaries"><code class="language-plaintext highlighter-rouge">value_counts()</code> method</a>. You can implement the same behavior with <code class="language-plaintext highlighter-rouge">groupby()</code> as follows:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">groupby</span><span class="p">(</span><span class="sh">'</span><span class="s">taster_name</span><span class="sh">'</span><span class="p">).</span><span class="nf">size</span><span class="p">()</span>
</pre></div></div><ol><li>Group the <code class="language-plaintext highlighter-rouge">reviews</code> DataFrame by identical values in the <code class="language-plaintext highlighter-rouge">taster_name</code> column<li>Return a Series of group sizes (number of rows in each group)</ol><p>Or:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">groupby</span><span class="p">(</span><span class="sh">'</span><span class="s">taster_name</span><span class="sh">'</span><span class="p">).</span><span class="n">taster_name</span><span class="p">.</span><span class="nf">count</span><span class="p">()</span>
</pre></div></div><ol><li>Group the <code class="language-plaintext highlighter-rouge">reviews</code> DataFrame by identical values in the <code class="language-plaintext highlighter-rouge">taster_name</code> column<li>Within each group, select the <code class="language-plaintext highlighter-rouge">taster_name</code> column<li>Return a Series with the count of non-missing values</ol><p>In other words, the <code class="language-plaintext highlighter-rouge">value_counts()</code> method is essentially shorthand for the behavior above. Beyond <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.count.html"><code class="language-plaintext highlighter-rouge">count()</code></a>, you can use any summary function similarly. For instance, to find the minimum price per score in the wine data:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">groupby</span><span class="p">(</span><span class="sh">'</span><span class="s">points</span><span class="sh">'</span><span class="p">).</span><span class="n">price</span><span class="p">.</span><span class="nf">min</span><span class="p">()</span>
</pre></div></div><div class="language-plaintext highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
</pre><td class="rouge-code"><pre>points
80      5.0
81      5.0
       ... 
99     44.0
100    80.0
Name: price, Length: 21, dtype: float64
</pre></div></div><ol><li>Group the <code class="language-plaintext highlighter-rouge">reviews</code> DataFrame by identical values in the <code class="language-plaintext highlighter-rouge">points</code> column<li>Within each group, select the <code class="language-plaintext highlighter-rouge">price</code> column<li>Return the minimum value per group as a Series</ol><p>You can also group by multiple columns. To select the highest-rated wine per country and province:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">groupby</span><span class="p">([</span><span class="sh">'</span><span class="s">country</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">province</span><span class="sh">'</span><span class="p">]).</span><span class="nf">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">df</span><span class="p">:</span> <span class="n">df</span><span class="p">.</span><span class="n">loc</span><span class="p">[</span><span class="n">df</span><span class="p">.</span><span class="n">points</span><span class="p">.</span><span class="nf">idxmax</span><span class="p">()])</span>
</pre></div></div><p>Another DataFrameGroupBy method worth knowing is <a href="https://pandas.pydata.org/docs/reference/api/pandas.core.groupby.DataFrameGroupBy.agg.html"><code class="language-plaintext highlighter-rouge">agg()</code></a>. It lets you run multiple functions per group after grouping.</p><blockquote class="prompt-tip"><p>You can pass as the argument:</p><ul><li>a function<li>a string with the function name<li>a list of functions or function-name strings<li>a dictionary mapping axis labels to a function or list of functions to apply on that axis</ul><p>The function must be able to:</p><ul><li>accept a DataFrame as input, or<li>be a function acceptable to <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html"><code class="language-plaintext highlighter-rouge">DataFrame.apply()</code></a> <a href="/sw/posts/summary-of-kaggle-pandas-course-1/#maps">as covered earlier</a>.</ul><p>This clarification isn’t in the original Kaggle course; I added it based on the official pandas docs.</p></blockquote><p>For example, compute per-country price statistics:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">groupby</span><span class="p">([</span><span class="sh">'</span><span class="s">country</span><span class="sh">'</span><span class="p">]).</span><span class="n">price</span><span class="p">.</span><span class="nf">agg</span><span class="p">([</span><span class="nb">len</span><span class="p">,</span> <span class="nb">min</span><span class="p">,</span> <span class="nb">max</span><span class="p">])</span>
</pre></div></div><blockquote class="prompt-tip"><p>Here <code class="language-plaintext highlighter-rouge">len</code> refers to Python’s built-in <a href="https://docs.python.org/3/library/functions.html#len"><code class="language-plaintext highlighter-rouge">len()</code></a>. In this example it reports the number of price (<code class="language-plaintext highlighter-rouge">price</code>) entries per group (<code class="language-plaintext highlighter-rouge">country</code>), <u>including missing values</u>. Since it accepts a DataFrame or Series as input, it can be used this way.</p><p>In contrast, pandas’ <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.count.html"><code class="language-plaintext highlighter-rouge">count()</code></a> returns the count of <u>non-missing values only</u>.</p><p>This note isn’t in the original Kaggle course; I added it based on the official Python and pandas documentation.</p></blockquote><h3 id="multiindex">MultiIndex</h3><p>When you perform groupby-based transformations and analyses, you’ll sometimes get a DataFrame with a MultiIndex composed of more than one level.</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
</pre><td class="rouge-code"><pre><span class="n">countries_reviewed</span> <span class="o">=</span> <span class="n">reviews</span><span class="p">.</span><span class="nf">groupby</span><span class="p">([</span><span class="sh">'</span><span class="s">country</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">province</span><span class="sh">'</span><span class="p">]).</span><span class="n">description</span><span class="p">.</span><span class="nf">agg</span><span class="p">([</span><span class="nb">len</span><span class="p">])</span>
<span class="n">countries_reviewed</span>
</pre></div></div><table><tr><th><th><th>len<tr><th>Country<th>province<th><tr><td rowspan="2">Argentina<td>Mendoza Province<td>3264<tr><td>Other<td>536<tr><td>...<td>...<td>...<tr><td rowspan="2">Uruguay<td>San Jose<td>3<tr><td>Uruguay<td>24</table><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
</pre><td class="rouge-code"><pre><span class="n">mi</span> <span class="o">=</span> <span class="n">countries_reviewed</span><span class="p">.</span><span class="n">index</span>
<span class="nf">type</span><span class="p">(</span><span class="n">mi</span><span class="p">)</span>
</pre></div></div><div class="language-plaintext highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre>pandas.core.indexes.multi.MultiIndex
</pre></div></div><p>A MultiIndex provides methods not present on a simple Index to handle hierarchical structures. For detailed usage and guidelines, see the <a href="https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html">MultiIndex / advanced indexing section of the pandas User Guide</a>.</p><p>That said, the method you’ll likely use most often is <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.reset_index.html"><code class="language-plaintext highlighter-rouge">reset_index()</code></a> to flatten back to a regular Index:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">countries_reviewed</span><span class="p">.</span><span class="nf">reset_index</span><span class="p">()</span>
</pre></div></div><table><thead><tr><th> <th>country<th>province<th>len<tbody><tr><td>0<td>Argentina<td>Mendoza Province<td>3264<tr><td>1<td>Argentina<td>Other<td>536<tr><td>…<td>…<td>…<td>…<tr><td>423<td>Uruguay<td>San Jose<td>3<tr><td>424<td>Uruguay<td>Uruguay<td>24</table><h3 id="sorting">Sorting</h3><p>Looking at <code class="language-plaintext highlighter-rouge">countries_reviewed</code>, you’ll notice grouped results are returned in index order. That is, the row order of a <code class="language-plaintext highlighter-rouge">groupby</code> result is determined by index values, not by data content.</p><p>When needed, you can sort explicitly using <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sort_values.html"><code class="language-plaintext highlighter-rouge">sort_values()</code></a>. For example, to sort country–province pairs in ascending order by the number of entries (‘len’):</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
</pre><td class="rouge-code"><pre><span class="n">countries_reviewed</span> <span class="o">=</span> <span class="n">countries_reviewed</span><span class="p">.</span><span class="nf">reset_index</span><span class="p">()</span>
<span class="n">countries_reviewed</span><span class="p">.</span><span class="nf">sort_values</span><span class="p">(</span><span class="n">by</span><span class="o">=</span><span class="sh">'</span><span class="s">len</span><span class="sh">'</span><span class="p">)</span>
</pre></div></div><table><thead><tr><th> <th>country<th>province<th>len<tbody><tr><td>179<td>Greece<td>Muscat of Kefallonian<td>1<tr><td>192<td>Greece<td>Sterea Ellada<td>1<tr><td>…<td>…<td>…<td>…<tr><td>415<td>US<td>Washington<td>8639<tr><td>392<td>US<td>California<td>36247</table><p><code class="language-plaintext highlighter-rouge">sort_values()</code> sorts ascending by default (low to high), but you can sort descending (high to low) by specifying:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">countries_reviewed</span><span class="p">.</span><span class="nf">sort_values</span><span class="p">(</span><span class="n">by</span><span class="o">=</span><span class="sh">'</span><span class="s">len</span><span class="sh">'</span><span class="p">,</span> <span class="n">ascending</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
</pre></div></div><table><thead><tr><th> <th>country<th>province<th>len<tbody><tr><td>392<td>US<td>California<td>36247<tr><td>415<td>US<td>Washington<td>8639<tr><td>…<td>…<td>…<td>…<tr><td>63<td>Chile<td>Coelemu<td>1<tr><td>149<td>Greece<td>Beotia<td>1</table><p>To sort by index instead, use <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sort_index.html"><code class="language-plaintext highlighter-rouge">sort_index()</code></a>. It accepts the same parameters and has the same default order (descending) as <code class="language-plaintext highlighter-rouge">sort_values()</code>.</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">countries_reviewed</span><span class="p">.</span><span class="nf">sort_index</span><span class="p">()</span>
</pre></div></div><table><thead><tr><th> <th>country<th>province<th>len<tbody><tr><td>0<td>Argentina<td>Mendoza Province<td>3264<tr><td>1<td>Argentina<td>Other<td>536<tr><td>…<td>…<td>…<td>…<tr><td>423<td>Uruguay<td>San Jose<td>3<tr><td>424<td>Uruguay<td>Uruguay<td>24</table><p>Lastly, you can sort by multiple columns at once:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">countries_reviewed</span><span class="p">.</span><span class="nf">sort_values</span><span class="p">(</span><span class="n">by</span><span class="o">=</span><span class="p">[</span><span class="sh">'</span><span class="s">country</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">len</span><span class="sh">'</span><span class="p">])</span>
</pre></div></div><h2 id="lesson-5-data-types-and-missing-values">Lesson 5. Data Types and Missing Values</h2><p>In practice, data rarely comes perfectly clean. More often than not, column types aren’t what you want and need conversion, and missing values appear throughout and must be handled carefully. For most data workflows, this stage is the biggest hurdle.</p><h3 id="data-types">Data types</h3><p>The data type of a DataFrame column or a Series is its <strong>dtype</strong>. Use the <code class="language-plaintext highlighter-rouge">dtype</code> attribute to check the type of a specific column. For example, to inspect the dtype of the <code class="language-plaintext highlighter-rouge">price</code> column in <code class="language-plaintext highlighter-rouge">reviews</code>:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="n">price</span><span class="p">.</span><span class="n">dtype</span>
</pre></div></div><div class="language-plaintext highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre>dtype('float64')
</pre></div></div><p>Or use the <code class="language-plaintext highlighter-rouge">dtypes</code> attribute to inspect all column dtypes at once:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="n">dtypes</span>
</pre></div></div><div class="language-plaintext highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
</pre><td class="rouge-code"><pre>country        object
description    object
                ...  
variety        object
winery         object
Length: 13, dtype: object
</pre></div></div><p>A dtype reflects how pandas stores data internally. For instance, <code class="language-plaintext highlighter-rouge">float64</code> is a 64-bit floating-point number, and <code class="language-plaintext highlighter-rouge">int64</code> is a 64-bit integer.</p><p>One peculiarity: columns of pure strings don’t have a dedicated string type (in this context) and are treated as generic Python objects (<code class="language-plaintext highlighter-rouge">object</code>).</p><p>Use <a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.astype.html"><code class="language-plaintext highlighter-rouge">astype()</code></a> to convert a column from one type to another. For example, convert the <code class="language-plaintext highlighter-rouge">points</code> column from <code class="language-plaintext highlighter-rouge">int64</code> to <code class="language-plaintext highlighter-rouge">float64</code>:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="n">points</span><span class="p">.</span><span class="nf">astype</span><span class="p">(</span><span class="sh">'</span><span class="s">float64</span><span class="sh">'</span><span class="p">)</span>
</pre></div></div><div class="language-plaintext highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
</pre><td class="rouge-code"><pre>0         87.0
1         87.0
          ... 
129969    90.0
129970    90.0
Name: points, Length: 129971, dtype: float64
</pre></div></div><p>A DataFrame (or Series) index also has a dtype:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="n">index</span><span class="p">.</span><span class="n">dtype</span>
</pre></div></div><div class="language-plaintext highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre>dtype('int64')
</pre></div></div><p>Pandas also supports “extension” dtypes such as categorical and various time-series types.</p><h3 id="missing-values">Missing values</h3><p>Empty entries are represented as <code class="language-plaintext highlighter-rouge">NaN</code> (short for “Not a Number”). For technical reasons, <code class="language-plaintext highlighter-rouge">NaN</code> is always of dtype <code class="language-plaintext highlighter-rouge">float64</code>.</p><p>Pandas provides helper functions for missing data. <a href="/sw/posts/summary-of-kaggle-pandas-course-1/#conditional-selection">We briefly saw something similar before</a>: in addition to methods, pandas has standalone functions <a href="https://pandas.pydata.org/docs/reference/api/pandas.isna.html"><code class="language-plaintext highlighter-rouge">pd.isna</code></a> and <a href="https://pandas.pydata.org/docs/reference/api/pandas.notna.html"><code class="language-plaintext highlighter-rouge">pd.notna</code></a>. They return a single boolean or a boolean array indicating whether entries are missing (or not), and can be used like this:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">[</span><span class="n">pd</span><span class="p">.</span><span class="nf">isna</span><span class="p">(</span><span class="n">reviews</span><span class="p">.</span><span class="n">country</span><span class="p">)]</span>
</pre></div></div><p>Often you’ll want to detect missing values and then fill them with appropriate replacements. One strategy is to use <a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.fillna.html"><code class="language-plaintext highlighter-rouge">fillna()</code></a> to replace <code class="language-plaintext highlighter-rouge">NaN</code>s with a chosen value. For example, replace all <code class="language-plaintext highlighter-rouge">NaN</code> in the <code class="language-plaintext highlighter-rouge">region_2</code> column with <code class="language-plaintext highlighter-rouge">"Unknown"</code>:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="n">region_2</span><span class="p">.</span><span class="nf">fillna</span><span class="p">(</span><span class="sh">"</span><span class="s">Unknown</span><span class="sh">"</span><span class="p">)</span>
</pre></div></div><p>Alternatively, you can use forward fill or backward fill to propagate the nearest valid value from above or below, via <a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.ffill.html"><code class="language-plaintext highlighter-rouge">ffill()</code></a> and <a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.bfill.html"><code class="language-plaintext highlighter-rouge">bfill()</code></a>, respectively.</p><blockquote class="prompt-danger"><p>Previously you could pass <code class="language-plaintext highlighter-rouge">'ffill'</code>/<code class="language-plaintext highlighter-rouge">'bfill'</code> to the <code class="language-plaintext highlighter-rouge">method</code> parameter of <code class="language-plaintext highlighter-rouge">fillna()</code>, but this became deprecated starting in pandas 2.1.0. Prefer <code class="language-plaintext highlighter-rouge">ffill()</code> or <code class="language-plaintext highlighter-rouge">bfill()</code> directly instead.</p></blockquote><p>Sometimes you need to replace a value with another even if it’s not missing. The original Kaggle course gives an example of a reviewer changing their Twitter handle. That’s a fine example, but here’s one that may feel more relatable to Korean readers:</p><p>Suppose South Korea split the northern part of Gyeonggi-do and established a new administrative region called <strong>Gyeonggibuk-do</strong>, and you have a dataset reflecting that change. Now imagine someone floated the harebrained idea of renaming <strong>Gyeonggibuk-do</strong> to <strong>Pyeonghwanuri Special Self-Governing Province</strong>, and actually managed to ram it through—a purely hypothetical scenario, of course. <del>It’s scary how close something like this might have come to happening.</del> You would then need to replace <code class="language-plaintext highlighter-rouge">"Gyeonggibuk-do"</code> with a new value like <code class="language-plaintext highlighter-rouge">"Pyeonghwanuri State"</code> or <code class="language-plaintext highlighter-rouge">"Pyeonghwanuri Special Self-Governing Province"</code> in the dataset. One way to do this in pandas is with <a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.replace.html"><code class="language-plaintext highlighter-rouge">replace()</code></a>:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">rok_2030_census</span><span class="p">.</span><span class="n">province</span><span class="p">.</span><span class="nf">replace</span><span class="p">(</span><span class="sh">"</span><span class="s">Gyeonggibuk-do</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">Pyeonghwanuri Special Self-Governing Province</span><span class="sh">"</span><span class="p">)</span>
</pre></div></div><p>With this snippet, you can effectively bulk-replace every <code class="language-plaintext highlighter-rouge">"Gyeonggibuk-do"</code> string in the <code class="language-plaintext highlighter-rouge">province</code> column of the <code class="language-plaintext highlighter-rouge">rok_2030_census</code> dataset with ‘that long one’. <del>It’s a relief no one actually had to run code like this in real life.</del></p><p>String replacement is also useful during cleaning, since missingness is often encoded as strings like <code class="language-plaintext highlighter-rouge">"Unknown"</code>, <code class="language-plaintext highlighter-rouge">"Undisclosed"</code>, or <code class="language-plaintext highlighter-rouge">"Invalid"</code> rather than <code class="language-plaintext highlighter-rouge">NaN</code>. In real-world workflows such as OCR-ing old official documents into datasets, this may be the norm rather than the exception.</p><h2 id="lesson-6-renaming-and-combining">Lesson 6. Renaming and Combining</h2><p>Sometimes you need to rename specific columns or index labels in a dataset. You’ll also frequently have to combine multiple DataFrames or Series.</p><h3 id="renaming">Renaming</h3><p>Use <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.rename.html"><code class="language-plaintext highlighter-rouge">rename()</code></a> to rename columns or index labels. It supports various input formats, but a Python dictionary is usually the most convenient. The following examples rename the <code class="language-plaintext highlighter-rouge">points</code> column to <code class="language-plaintext highlighter-rouge">score</code> and relabel index entries <code class="language-plaintext highlighter-rouge">0</code> and <code class="language-plaintext highlighter-rouge">1</code> to <code class="language-plaintext highlighter-rouge">firstEntry</code> and <code class="language-plaintext highlighter-rouge">secondEntry</code>:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">rename</span><span class="p">(</span><span class="n">columns</span><span class="o">=</span><span class="p">{</span><span class="sh">'</span><span class="s">points</span><span class="sh">'</span><span class="p">:</span> <span class="sh">'</span><span class="s">score</span><span class="sh">'</span><span class="p">})</span>
</pre></div></div><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">rename</span><span class="p">(</span><span class="n">index</span><span class="o">=</span><span class="p">{</span><span class="mi">0</span><span class="p">:</span> <span class="sh">'</span><span class="s">firstEntry</span><span class="sh">'</span><span class="p">,</span> <span class="mi">1</span><span class="p">:</span> <span class="sh">'</span><span class="s">secondEntry</span><span class="sh">'</span><span class="p">})</span>
</pre></div></div><p>In practice, renaming columns is common, while renaming index values is rare; for that purpose, it’s usually more convenient to use <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.set_index.html"><code class="language-plaintext highlighter-rouge">set_index()</code></a> <a href="/sw/posts/summary-of-kaggle-pandas-course-1/#manipulating-the-index">as we saw earlier</a>.</p><p>Both the row and column axes have a <code class="language-plaintext highlighter-rouge">name</code> attribute. You can rename these axis names with <code class="language-plaintext highlighter-rouge">rename_axis()</code>. For example, label the row axis as <code class="language-plaintext highlighter-rouge">wines</code> and the column axis as <code class="language-plaintext highlighter-rouge">fields</code>:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">rename_axis</span><span class="p">(</span><span class="sh">"</span><span class="s">wines</span><span class="sh">"</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="sh">'</span><span class="s">index</span><span class="sh">'</span><span class="p">).</span><span class="nf">rename_axis</span><span class="p">(</span><span class="sh">"</span><span class="s">fields</span><span class="sh">"</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="sh">'</span><span class="s">columns</span><span class="sh">'</span><span class="p">)</span>
</pre></div></div><h3 id="combining-datasets">Combining datasets</h3><p>You’ll often need to combine DataFrames or Series. Pandas provides three core tools for this, from simplest to most flexible: <a href="https://pandas.pydata.org/docs/reference/api/pandas.concat.html"><code class="language-plaintext highlighter-rouge">concat()</code></a>, <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.join.html"><code class="language-plaintext highlighter-rouge">join()</code></a>, and <a href="https://pandas.pydata.org/docs/reference/api/pandas.merge.html"><code class="language-plaintext highlighter-rouge">merge()</code></a>. The Kaggle course focuses on the first two, noting that most <code class="language-plaintext highlighter-rouge">merge()</code> tasks can be done more simply with <code class="language-plaintext highlighter-rouge">join()</code>.</p><p><code class="language-plaintext highlighter-rouge">concat()</code> is the simplest: it stitches multiple DataFrames or Series along a given axis. It’s handy when the objects share the same fields (columns). By default, it concatenates along the index axis; specify <code class="language-plaintext highlighter-rouge">axis=1</code> or <code class="language-plaintext highlighter-rouge">axis='columns'</code> to concatenate along columns.</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
</pre><td class="rouge-code"><pre><span class="o">&gt;&gt;&gt;</span> <span class="n">s1</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nc">Series</span><span class="p">([</span><span class="sh">'</span><span class="s">a</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">b</span><span class="sh">'</span><span class="p">])</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">s2</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nc">Series</span><span class="p">([</span><span class="sh">'</span><span class="s">c</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">d</span><span class="sh">'</span><span class="p">])</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">pd</span><span class="p">.</span><span class="nf">concat</span><span class="p">([</span><span class="n">s1</span><span class="p">,</span> <span class="n">s2</span><span class="p">])</span>
<span class="mi">0</span>    <span class="n">a</span>
<span class="mi">1</span>    <span class="n">b</span>
<span class="mi">0</span>    <span class="n">c</span>
<span class="mi">1</span>    <span class="n">d</span>
<span class="n">dtype</span><span class="p">:</span> <span class="nb">object</span>
</pre></div></div><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">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
</pre><td class="rouge-code"><pre><span class="o">&gt;&gt;&gt;</span> <span class="n">df1</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nc">DataFrame</span><span class="p">([[</span><span class="sh">'</span><span class="s">a</span><span class="sh">'</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="sh">'</span><span class="s">b</span><span class="sh">'</span><span class="p">,</span> <span class="mi">2</span><span class="p">]],</span>
<span class="p">...</span>                    <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="sh">'</span><span class="s">letter</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">number</span><span class="sh">'</span><span class="p">])</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">df1</span>
  <span class="n">letter</span>  <span class="n">number</span>
<span class="mi">0</span>      <span class="n">a</span>       <span class="mi">1</span>
<span class="mi">1</span>      <span class="n">b</span>       <span class="mi">2</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">df2</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nc">DataFrame</span><span class="p">([[</span><span class="sh">'</span><span class="s">c</span><span class="sh">'</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="p">[</span><span class="sh">'</span><span class="s">d</span><span class="sh">'</span><span class="p">,</span> <span class="mi">4</span><span class="p">]],</span>
<span class="p">...</span>                    <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="sh">'</span><span class="s">letter</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">number</span><span class="sh">'</span><span class="p">])</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">df2</span>
  <span class="n">letter</span>  <span class="n">number</span>
<span class="mi">0</span>      <span class="n">c</span>       <span class="mi">3</span>
<span class="mi">1</span>      <span class="n">d</span>       <span class="mi">4</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">pd</span><span class="p">.</span><span class="nf">concat</span><span class="p">([</span><span class="n">df1</span><span class="p">,</span> <span class="n">df2</span><span class="p">])</span>
  <span class="n">letter</span>  <span class="n">number</span>
<span class="mi">0</span>      <span class="n">a</span>       <span class="mi">1</span>
<span class="mi">1</span>      <span class="n">b</span>       <span class="mi">2</span>
<span class="mi">0</span>      <span class="n">c</span>       <span class="mi">3</span>
<span class="mi">1</span>      <span class="n">d</span>       <span class="mi">4</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">df4</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nc">DataFrame</span><span class="p">([[</span><span class="sh">'</span><span class="s">bird</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">polly</span><span class="sh">'</span><span class="p">],</span> <span class="p">[</span><span class="sh">'</span><span class="s">monkey</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">george</span><span class="sh">'</span><span class="p">]],</span>
<span class="p">...</span>                    <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="sh">'</span><span class="s">animal</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">name</span><span class="sh">'</span><span class="p">])</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">df4</span>
   <span class="n">animal</span>    <span class="n">name</span>
<span class="mi">0</span>    <span class="n">bird</span>   <span class="n">polly</span>
<span class="mi">1</span>  <span class="n">monkey</span>  <span class="n">george</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">pd</span><span class="p">.</span><span class="nf">concat</span><span class="p">([</span><span class="n">df1</span><span class="p">,</span> <span class="n">df4</span><span class="p">],</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
  <span class="n">letter</span>  <span class="n">number</span>  <span class="n">animal</span>    <span class="n">name</span>
<span class="mi">0</span>      <span class="n">a</span>       <span class="mi">1</span>    <span class="n">bird</span>   <span class="n">polly</span>
<span class="mi">1</span>      <span class="n">b</span>       <span class="mi">2</span>  <span class="n">monkey</span>  <span class="n">george</span>
</pre></div></div><blockquote class="prompt-tip"><p>According to the <a href="(https://pandas.pydata.org/docs/reference/api/pandas.concat.html)">pandas docs</a>, when building a DataFrame from many rows, avoid appending rows one by one in a loop. Instead, collect the rows in a list and perform a single <code class="language-plaintext highlighter-rouge">concat()</code>.</p></blockquote><p><code class="language-plaintext highlighter-rouge">join()</code> is more complex: it attaches another DataFrame to a base DataFrame by aligning on the index. If the two DataFrames have overlapping column names, you must specify <code class="language-plaintext highlighter-rouge">lsuffix</code> and <code class="language-plaintext highlighter-rouge">rsuffix</code> to disambiguate them.</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">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
</pre><td class="rouge-code"><pre><span class="o">&gt;&gt;&gt;</span> <span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nc">DataFrame</span><span class="p">({</span><span class="sh">'</span><span class="s">key</span><span class="sh">'</span><span class="p">:</span> <span class="p">[</span><span class="sh">'</span><span class="s">K0</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">K1</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">K2</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">K3</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">K4</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">K5</span><span class="sh">'</span><span class="p">],</span>
<span class="p">...</span>                    <span class="sh">'</span><span class="s">A</span><span class="sh">'</span><span class="p">:</span> <span class="p">[</span><span class="sh">'</span><span class="s">A0</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">A1</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">A2</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">A3</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">A4</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">A5</span><span class="sh">'</span><span class="p">]})</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">df</span>
  <span class="n">key</span>   <span class="n">A</span>
<span class="mi">0</span>  <span class="n">K0</span>  <span class="n">A0</span>
<span class="mi">1</span>  <span class="n">K1</span>  <span class="n">A1</span>
<span class="mi">2</span>  <span class="n">K2</span>  <span class="n">A2</span>
<span class="mi">3</span>  <span class="n">K3</span>  <span class="n">A3</span>
<span class="mi">4</span>  <span class="n">K4</span>  <span class="n">A4</span>
<span class="mi">5</span>  <span class="n">K5</span>  <span class="n">A5</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">other</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nc">DataFrame</span><span class="p">({</span><span class="sh">'</span><span class="s">key</span><span class="sh">'</span><span class="p">:</span> <span class="p">[</span><span class="sh">'</span><span class="s">K0</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">K1</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">K2</span><span class="sh">'</span><span class="p">],</span>
<span class="p">...</span>                       <span class="sh">'</span><span class="s">B</span><span class="sh">'</span><span class="p">:</span> <span class="p">[</span><span class="sh">'</span><span class="s">B0</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">B1</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">B2</span><span class="sh">'</span><span class="p">]})</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">other</span>
  <span class="n">key</span>   <span class="n">B</span>
<span class="mi">0</span>  <span class="n">K0</span>  <span class="n">B0</span>
<span class="mi">1</span>  <span class="n">K1</span>  <span class="n">B1</span>
<span class="mi">2</span>  <span class="n">K2</span>  <span class="n">B2</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">df</span><span class="p">.</span><span class="nf">join</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">lsuffix</span><span class="o">=</span><span class="sh">'</span><span class="s">_caller</span><span class="sh">'</span><span class="p">,</span> <span class="n">rsuffix</span><span class="o">=</span><span class="sh">'</span><span class="s">_other</span><span class="sh">'</span><span class="p">)</span>
  <span class="n">key_caller</span>   <span class="n">A</span> <span class="n">key_other</span>    <span class="n">B</span>
<span class="mi">0</span>         <span class="n">K0</span>  <span class="n">A0</span>        <span class="n">K0</span>   <span class="n">B0</span>
<span class="mi">1</span>         <span class="n">K1</span>  <span class="n">A1</span>        <span class="n">K1</span>   <span class="n">B1</span>
<span class="mi">2</span>         <span class="n">K2</span>  <span class="n">A2</span>        <span class="n">K2</span>   <span class="n">B2</span>
<span class="mi">3</span>         <span class="n">K3</span>  <span class="n">A3</span>       <span class="n">NaN</span>  <span class="n">NaN</span>
<span class="mi">4</span>         <span class="n">K4</span>  <span class="n">A4</span>       <span class="n">NaN</span>  <span class="n">NaN</span>
<span class="mi">5</span>         <span class="n">K5</span>  <span class="n">A5</span>       <span class="n">NaN</span>  <span class="n">NaN</span>
</pre></div></div>]]> </content> </entry> <entry><title xml:lang="sw">Viashiria vya utendaji wa wavuti (Web Vitals)</title><link href="https://www.yunseo.kim/sw/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="am" /><published>2025-08-05T00:00:00+09:00</published> <updated>2025-08-05T00:00:00+09:00</updated> <id>https://www.yunseo.kim/sw/posts/about-web-vitals/</id> <author> <name>Yunseo Kim</name> </author> <category term="Dev" /> <category term="Web Dev" /> <summary xml:lang="sw">Muhtasari wa Web Vitals pamoja na vigezo vya upimaji na tathmini vya Lighthouse, na ufafanuzi wa maana ya kila kiashiria cha utendaji.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Muhtasari wa Web Vitals pamoja na vigezo vya upimaji na tathmini vya Lighthouse, na ufafanuzi wa maana ya kila kiashiria cha utendaji.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="vipengele-vinavyoamua-utendaji-wa-wavuti">Vipengele vinavyoamua utendaji wa wavuti</h2><p>Wakati wa kuboresha utendaji wa wavuti, vipengele vinavyoamua utendaji huo vinaweza kugawanywa kwa ujumla katika makundi mawili makubwa: utendaji wa upakiaji na utendaji wa uchoraji (rendering).</p><h3 id="utendaji-wa-upakiaji-wa-html">Utendaji wa upakiaji wa HTML</h3><ul><li>Muda unaopita tangu ukurasa wa wavuti uombwe kwa mara ya kwanza kutoka kwa seva kupitia mtandao, hadi hati ya HTML ipokelewe na kivinjari kianze kuchora ukurasa<li>Huamua ni kwa kasi gani ukurasa unaanza kuonekana<li>Huboreshwa kwa mbinu kama kupunguza uelekezaji upya (redirects), kuweka akiba ya majibu ya HTML, kubana rasilimali, na kutumia CDN ipasavyo</ul><h3 id="utendaji-wa-uchoraji-rendering">Utendaji wa uchoraji (rendering)</h3><ul><li>Muda unaochukuliwa na kivinjari kuchora kile mtumiaji anachoona kwenye skrini na kukifanya kiweze kuingiliana<li>Huamua ni kwa ulaini na kasi gani skrini huchorwa<li>Huboreshwa kwa mbinu kama kuondoa CSS na JS zisizo za lazima, kuzuia ucheleweshaji wa kupakia fonti na vijipicha, kutenganisha hesabu nzito kwenye Web Worker tofauti ili kupunguza umiliki wa main thread, na kuboresha animashen</ul><h2 id="viashiria-vya-utendaji-wa-wavuti-web-vitals">Viashiria vya utendaji wa wavuti (Web Vitals)</h2><p>Maelezo yafuatayo yanategemea <a href="https://web.dev/performance?hl=sw">web.dev ya Google</a> na <a href="https://developer.chrome.com/docs/lighthouse/performance/performance-scoring?hl=sw">nyaraka za wasanidi wa Chrome</a>. Isipokuwa kama kuna sababu maalum, ni bora kulenga uboreshaji wa jumla badala ya kuzingatia kiashiria kimoja tu cha utendaji, na ni muhimu kutambua ni sehemu gani ya ukurasa wa wavuti unaotaka kuboresha inayosababisha kikwazo cha utendaji. Pia, ikiwa kuna takwimu za data halisi za watumiaji, ni vyema zaidi kuzingatia thamani za sehemu ya chini kama Q1 kuliko thamani za juu au wastani, kisha kuthibitisha na kuboresha iwapo viwango lengwa vinatimizwa hata katika hali hizo.</p><h3 id="viashiria-muhimu-vya-utendaji-wa-wavuti-core-web-vitals">Viashiria muhimu vya utendaji wa wavuti (Core Web Vitals)</h3><p>Tutavijadili baada ya muda mfupi, lakini Web Vitals ina viashiria mbalimbali. Hata hivyo, kati ya hivyo, Google huvitazama viashiria vitatu vifuatavyo kuwa muhimu hasa kwa sababu vina uhusiano wa karibu na uzoefu wa mtumiaji na vinaweza kupimwa katika mazingira halisi, si ya majaribio pekee; hivi ndivyo vinavyoitwa <a href="https://web.dev/articles/vitals?hl=sw#core-web-vitals">Viashiria muhimu vya utendaji wa wavuti (Core Web Vitals)</a>. Kwa kuwa Google pia hujumuisha Core Web Vitals za tovuti katika mpangilio wa matokeo ya injini yake ya utafutaji, viashiria hivi pia vinapaswa kuangaliwa kwa makini na waendeshaji wa tovuti kwa mtazamo wa uboreshaji wa injini za utafutaji (SEO).</p><ul><li><a href="#lcp-largest-contentful-paint">Large Contentful Paint (LCP)</a>: <em>huakisi utendaji wa upakiaji</em>, inapaswa kuwa ndani ya sekunde 2.5<li><a href="https://web.dev/articles/inp?hl=sw">Interaction to Next Paint (INP)</a>: <em>huakisi mwitikio</em>, inapaswa kuwa 200ms au chini<li><a href="#cls-cumulative-layout-shift">Cumulative Layout Shift (CLS)</a>: <em>huakisi uthabiti wa mwonekano</em>, inapaswa kubaki 0.1 au chini</ul><p>Core Web Vitals kimsingi zimekusudiwa kupimwa katika mazingira halisi, lakini isipokuwa INP, viwili vilivyosalia vinaweza pia kupimwa katika mazingira ya majaribio kama Chrome DevTools au Lighthouse. Kwa INP, lazima kuwe na ingizo halisi la mtumiaji ndipo iweze kupimwa, hivyo haiwezi kupimwa katika mazingira ya majaribio; hata hivyo, katika hali kama hizo <a href="#tbt-total-blocking-time">TBT</a> ni kiashiria cha utendaji chenye uhusiano mkubwa na kinachofanana sana na INP, hivyo kinaweza kutumika kama mbadala, na <a href="https://web.dev/articles/vitals?hl=sw#lab_tools_to_measure_core_web_vitals">kwa kawaida ukiboresha TBT, INP pia huboreka pamoja nayo</a>.</p><h3 id="uzito-wa-alama-ya-utendaji-katika-lighthouse-10">Uzito wa alama ya utendaji katika Lighthouse 10</h3><p><a href="https://developer.chrome.com/docs/lighthouse/performance/performance-scoring?hl=sw">Alama ya utendaji ya Lighthouse huhesabiwa kama wastani wenye uzito wa alama za kila kipimo, na katika kufanya hivyo hutumia uzito uliopo kwenye jedwali lifuatalo</a>.</p><table><thead><tr><th>Kipimo<th>Uzito<tbody><tr><td><a href="#fcp-first-contentful-paint">First Contentful Paint</a><td>10%<tr><td><a href="#si-speed-index">Speed Index</a><td>10%<tr><td><a href="#lcp-largest-contentful-paint">Largest Contentful Paint</a><td>25%<tr><td><a href="#tbt-total-blocking-time">Total Blocking Time</a><td>30%<tr><td><a href="#cls-cumulative-layout-shift">Cumulative Layout Shift</a><td>25%</table><h3 id="fcp-first-contentful-paint">FCP (First Contentful Paint)</h3><ul><li>Hupima muda unaochukuliwa tangu ukurasa uombwe hadi maudhui ya kwanza ya DOM yachorwe<li>Picha ndani ya ukurasa, kipengele cha <code class="language-plaintext highlighter-rouge">&lt;canvas&gt;</code> kisicho cheupe, SVG, n.k. huhesabiwa kama maudhui ya DOM, lakini maudhui ndani ya <code class="language-plaintext highlighter-rouge">iframe</code> hayazingatiwi</ul><blockquote class="prompt-tip"><p>Moja ya vipengele vinavyoathiri FCP kwa umuhimu wa pekee ni muda wa kupakia fonti; kuhusu uboreshaji wake, <a href="https://developer.chrome.com/docs/lighthouse/performance/first-contentful-paint/?hl=sw">nyaraka za wasanidi wa Chrome</a> zinapendekeza kurejelea <a href="https://developer.chrome.com/docs/lighthouse/performance/font-display?hl=sw">chapisho husika</a>.</p></blockquote><h4 id="vigezo-vya-tathmini-vya-lighthouse">Vigezo vya tathmini vya Lighthouse</h4><p>Kulingana na <a href="https://developer.chrome.com/docs/lighthouse/performance/first-contentful-paint/?hl=sw">nyaraka za wasanidi wa Chrome</a>, vigezo vya tathmini vya Lighthouse ni kama ilivyo kwenye jedwali lifuatalo.</p><table><thead><tr><th>Daraja la rangi<th>FCP ya simu (sekunde)<th>FCP ya desktop (sekunde)<tbody><tr><td>Kijani (haraka)<td>0-1.8<td>0-0.9<tr><td>Machungwa (wastani)<td>1.8-3<td>0.9-1.6<tr><td>Nyekundu (polepole)<td>zaidi ya 3<td>zaidi ya 1.6</table><h3 id="lcp-largest-contentful-paint">LCP (Largest Contentful Paint)</h3><ul><li>Hupima muda unaochukuliwa kuchora kipengele kinachoonekana kwa ukubwa zaidi ndani ya eneo la mwonekano (viewport) linaloonekana kwanza unapofungua ukurasa wa wavuti, kama vile picha, blokki ya maandishi, au video<li>Kadiri eneo linalochukuliwa kwenye skrini linavyokuwa kubwa, ndivyo uwezekano unavyoongezeka kwamba mtumiaji atakihisi kama maudhui muhimu<li>Ikiwa LCP ni picha, muda huo unaweza kugawanywa katika sehemu ndogo 4, na ni muhimu kutambua ni sehemu gani hasa yenye kikwazo<ol><li>Time to first byte (TTFB): muda tangu kuanza kwa upakiaji wa ukurasa hadi kupokelewa kwa byte ya kwanza ya majibu ya hati ya HTML<li>Ucheleweshaji wa upakiaji (Load delay): tofauti kati ya TTFB na wakati kivinjari kilipoanza kupakia rasilimali ya LCP<li>Muda wa upakiaji (Load time): muda uliochukuliwa kupakia rasilimali yenyewe ya LCP<li>Ucheleweshaji wa uchoraji (Render delay): muda tangu upakiaji wa rasilimali ya LCP ukamilike hadi kipengele cha LCP kichorwe kikamilifu</ol></ul><h4 id="vigezo-vya-tathmini-vya-lighthouse-1">Vigezo vya tathmini vya Lighthouse</h4><p>Kulingana na <a href="https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/?hl=sw">nyaraka za wasanidi wa Chrome</a>, vigezo vya tathmini vya Lighthouse ni kama ilivyo kwenye jedwali lifuatalo.</p><table><thead><tr><th>Daraja la rangi<th>LCP ya simu (sekunde)<th>LCP ya desktop (sekunde)<tbody><tr><td>Kijani (haraka)<td>0-2.5<td>0-1.2<tr><td>Machungwa (wastani)<td>2.5-4<td>1.2-2.4<tr><td>Nyekundu (polepole)<td>zaidi ya 4<td>zaidi ya 2.4</table><h3 id="tbt-total-blocking-time">TBT (Total Blocking Time)</h3><ul><li>Hupima jumla ya muda ambao ukurasa wa wavuti hauwezi kujibu ingizo la mtumiaji kama kubofya kwa kipanya, mguso wa skrini, au uingizaji wa kibodi<li>Miongoni mwa kazi zinazofanyika kati ya FCP na <a href="https://developer.chrome.com/docs/lighthouse/performance/interactive?hl=sw">TTI (wakati wa kuanza kuingiliana, Time to Interactive)</a>*, kazi zinazochukua zaidi ya 50ms huzingatiwa kuwa <a href="https://web.dev/articles/long-tasks-devtools?hl=sw">kazi ndefu</a>; kwa kila kazi ndefu, sehemu ya muda inayozidi 50ms huitwa <em>sehemu ya kuzuia (blocking portion)</em>, na jumla ya sehemu zote za kuzuia hufafanuliwa kama TBT</ul><blockquote class="prompt-info"><p>* TTI yenyewe ni nyeti kupita kiasi kwa thamani za ajabu za majibu ya mtandao na kwa kazi ndefu, hivyo ina uthabiti mdogo na mabadiliko makubwa; kwa sababu hiyo, <a href="https://developer.chrome.com/blog/lighthouse-10-0#scoring-changes">kuanzia Lighthouse 10 imeondolewa kwenye vipengele vya tathmini ya utendaji</a>.</p></blockquote><blockquote class="prompt-tip"><p>Kwa ujumla, sababu ya kawaida zaidi ya kuzua kazi ndefu ni kupakia, kuchanganua, na kutekeleza JavaScript isiyo ya lazima au isiyofaa; <a href="https://developer.chrome.com/docs/lighthouse/performance/lighthouse-total-blocking-time/?hl=sw">nyaraka za wasanidi wa Chrome</a> na <a href="https://web.dev/articles/long-tasks-devtools#what_is_causing_my_long_tasks?hl=sw">web.dev ya Google</a> zinapendekeza kupunguza ukubwa wa payload ya JavaScript kupitia <a href="https://web.dev/articles/reduce-javascript-payloads-with-code-splitting?hl=sw">code splitting</a> ili kila sehemu iweze kutekelezwa ndani ya 50ms, na ikihitajika kuzingatia kuitenganisha kwenye service worker tofauti badala ya main thread ili itekelezwe kwa multithread.</p></blockquote><h4 id="vigezo-vya-tathmini-vya-lighthouse-2">Vigezo vya tathmini vya Lighthouse</h4><p>Kulingana na <a href="https://developer.chrome.com/docs/lighthouse/performance/lighthouse-total-blocking-time/?hl=sw">nyaraka za wasanidi wa Chrome</a>, vigezo vya tathmini vya Lighthouse ni kama ilivyo kwenye jedwali lifuatalo.</p><table><thead><tr><th>Daraja la rangi<th>TBT ya simu (milisekunde)<th>TBT ya desktop (milisekunde)<tbody><tr><td>Kijani (haraka)<td>0-200<td>0-150<tr><td>Machungwa (wastani)<td>200-600<td>150-350<tr><td>Nyekundu (polepole)<td>zaidi ya 600<td>zaidi ya 350</table><h3 id="cls-cumulative-layout-shift">CLS (Cumulative Layout Shift)</h3><p> <video class="embed-video file" controls="" autoplay="" loop=""> <source src="https://web.dev/static/articles/cls/video/web-dev-assets/layout-instability-api/layout-instability2.webm" type="video/webm" /> Your browser does not support the video tag. Here is a <a href="https://web.dev/static/articles/cls/video/web-dev-assets/layout-instability-api/layout-instability2.webm">link to the video file</a> instead. </video> <em>Mfano wa mabadiliko ya ghafla ya mpangilio</em></p><blockquote><p>Chanzo cha video: <a href="https://web.dev/articles/cls?hl=sw">Cumulative Layout Shift (CLS) | Articles | web.dev</a></p></blockquote><p><del>Hasira nzito inahisiwa kwenye mwendo wa kishale</del></p><ul><li>Mabadiliko ya mpangilio yasiyotarajiwa huharibu uzoefu wa mtumiaji kwa njia mbalimbali, kama kusababisha maandishi kuhama ghafla na kumfanya mtumiaji apoteze sehemu aliyokuwa akisoma, au kubofya kiungo au kitufe kisicho sahihi<li>Mbinu mahususi ya kukokotoa alama ya CLS imeelezwa katika <a href="https://web.dev/articles/cls">web.dev ya Google</a><li>Kama inavyoonekana kwenye picha hapa chini, lengo linapaswa kuwa 0.1 au chini</ul><p><img src="https://web.dev/static/articles/cls/image/good-cls-values.svg" alt="What is a good CLS score?" width="640" height="480" /></p><blockquote><p>Chanzo cha picha: <a href="https://web.dev/articles/cls#what-is-a-good-cls-score?hl=sw">Cumulative Layout Shift (CLS) | Articles | web.dev</a></p></blockquote><h3 id="si-speed-index">SI (Speed Index)</h3><ul><li>Hupima jinsi maudhui yanavyoanza kuonekana kwa haraka kwenye mwonekano wakati ukurasa unapakia<li>Lighthouse hurekodi video ya mchakato wa kupakia ukurasa kwenye kivinjari, huchanganua video hiyo kukokotoa maendeleo kati ya fremu, kisha hutumia <a href="https://github.com/paulirish/speedline">moduli ya Node.js ya Speedline</a> kukokotoa alama ya SI</ul><blockquote class="prompt-tip"><p>Pamoja na yale yaliyotajwa awali wakati wa kufupisha <a href="#fcp-first-contentful-paint">FCP</a>, <a href="#lcp-largest-contentful-paint">LCP</a>, na <a href="#tbt-total-blocking-time">TBT</a>, hatua yoyote inayoboresha kasi ya upakiaji wa ukurasa pia huathiri kwa njia chanya alama ya SI. Badala ya kuwakilisha hatua moja tu ya upakiaji wa ukurasa, inaweza kuonekana kama kiashiria cha utendaji kinachoakisi kwa kiwango fulani mchakato mzima wa upakiaji.</p></blockquote><h4 id="vigezo-vya-tathmini-vya-lighthouse-3">Vigezo vya tathmini vya Lighthouse</h4><p>Kulingana na <a href="https://developer.chrome.com/docs/lighthouse/performance/speed-index/?hl=sw">nyaraka za wasanidi wa Chrome</a>, vigezo vya tathmini vya Lighthouse ni kama ilivyo kwenye jedwali lifuatalo.</p><table><thead><tr><th>Daraja la rangi<th>SI ya simu (sekunde)<th>SI ya desktop (sekunde)<tbody><tr><td>Kijani (haraka)<td>0-3.4<td>0-1.3<tr><td>Machungwa (wastani)<td>3.4-5.8<td>1.3-2.3<tr><td>Nyekundu (polepole)<td>zaidi ya 5.8<td>zaidi ya 2.3</table>]]> </content> </entry> <entry><title xml:lang="sw">Uga wa graviti na potenshali ya graviti</title><link href="https://www.yunseo.kim/sw/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="am" /><published>2025-05-17T00:00:00+09:00</published> <updated>2025-05-17T00:00:00+09:00</updated> <id>https://www.yunseo.kim/sw/posts/gravitational-field-and-potential/</id> <author> <name>Yunseo Kim</name> </author> <category term="Physics" /> <category term="Classical Dynamics" /> <summary xml:lang="sw">Jifunze ufafanuzi wa vekta ya uga wa graviti na potenshali ya graviti chini ya sheria ya Newton ya mvutano wa ulimwengu wote, pamoja na mifano muhimu ya teorema ya ganda la sfera na mikunjo ya mzunguko wa galaksi.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Jifunze ufafanuzi wa vekta ya uga wa graviti na potenshali ya graviti chini ya sheria ya Newton ya mvutano wa ulimwengu wote, pamoja na mifano muhimu ya teorema ya ganda la sfera na mikunjo ya mzunguko wa galaksi.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><ul><li>Sheria ya Newton ya mvutano wa ulimwengu wote: $\mathbf{F} = -G\cfrac{mM}{r^2}\mathbf{e}_r$<li>Kwa mgawanyo endelevu wa wingi na kwa kitu chenye ukubwa: $\mathbf{F} = -Gm\int_V \cfrac{dM}{r^2}\mathbf{e}_r = -Gm\int_V \cfrac{\rho(\mathbf{r^\prime})\mathbf{e}_r}{r^2} dv^{\prime}$<ul><li>$\rho(\mathbf{r^{\prime}})$: msongamano wa wingi katika nukta iliyoko kwenye vekta ya mahali $\mathbf{r^{\prime}}$ kutoka kwenye asili yoyote ile<li>$dv^{\prime}$: elementi ya ujazo katika nukta iliyoko kwenye vekta ya mahali $\mathbf{r^{\prime}}$ kutoka kwenye asili yoyote ile</ul><li><strong>Vekta ya uga wa graviti</strong>:<ul><li>vekta inayoonyesha nguvu kwa kila kitengo cha wingi inayopokelewa na chembe fulani ndani ya uga uliotengenezwa na kitu chenye wingi $M$<li>$\mathbf{g} = \cfrac{\mathbf{F}}{m} = - G \cfrac{M}{r^2}\mathbf{e}_r = - G \int_V \cfrac{\rho(\mathbf{r^\prime})\mathbf{e}_r}{r^2}dv^\prime$<li>ina vipimo vya <em>nguvu kwa kila kitengo cha wingi</em> au <em>uongezaji kasi</em></ul><li><strong>Potenshali ya graviti</strong>:<ul><li>$\mathbf{g} \equiv -\nabla \Phi$<li>ina vipimo vya $($<em>nguvu kwa kila kitengo cha wingi</em> $) \times ($<em>umbali</em> $)$ au <em>nishati kwa kila kitengo cha wingi</em><li>$\Phi = -G\cfrac{M}{r}$<li>kwa potenshali ya graviti, tofauti zake za jamaa pekee ndizo zenye maana; thamani maalum yenyewe haina maana<li>kwa kawaida, hali ya $\Phi \to 0$ wakati $r \to \infty$ huwekwa kiholela ili kuondoa utata<li>$U = m\Phi, \quad \mathbf{F} = -\nabla U$</ul><li><strong>Potenshali ya graviti ndani na nje ya ganda la sfera (teorema ya ganda la sfera)</strong><ul><li>Wakati $R&gt;a$:<ul><li>$\Phi(R&gt;a) = -\cfrac{GM}{R}$<li>wakati wa kupata potenshali ya graviti katika nukta ya nje inayotokana na mgawanyo wa wingi wenye ulinganifu wa kisfera, kitu hicho kinaweza kuchukuliwa kama wingi wa nukta</ul><li>Wakati $R&lt;b$:<ul><li>$\Phi(R&lt;b) = -2\pi\rho G(a^2 - b^2)$<li>ndani ya ganda la wingi lenye ulinganifu wa kisfera, potenshali ya graviti ni thabiti bila kujali mahali, na nguvu ya graviti inayofanya kazi ni $0$</ul><li>Wakati $b&lt;R&lt;a$: $\Phi(b&lt;R&lt;a) = -4\pi\rho G \left( \cfrac{a^2}{2} - \cfrac{b^3}{3R} - \cfrac{R^2}{6} \right)$</ul></ul></blockquote><h2 id="uga-wa-graviti">Uga wa graviti</h2><h3 id="sheria-ya-newton-ya-mvutano-wa-ulimwengu-wote">Sheria ya Newton ya mvutano wa ulimwengu wote</h3><p>Newton alikuwa tayari ameshapanga kwa utaratibu na hata kuthibitisha kwa namba sheria ya mvutano wa ulimwengu wote kabla ya 11666 HE. Hata hivyo, ilimchukua miaka 20 zaidi hadi alipochapisha matokeo yake katika <em>Principia</em> mnamo 11687 HE, kwa sababu hakuweza kuhalalisha mbinu ya hesabu iliyodhani Dunia na Mwezi kuwa wingi za nukta zisizo na ukubwa. Kwa bahati nzuri, <a href="#wakati-ra">tukitumia kalkulasi ambayo Newton mwenyewe aliibuni baadaye, tunaweza kuthibitisha kwa urahisi zaidi tatizo hilo ambalo halikuwa rahisi kwa Newton katika miaka ya 11600</a>.</p><p>Kwa mujibu wa sheria ya Newton ya mvutano wa ulimwengu wote, <em>kila chembe yenye wingi huvuta chembe nyingine zote katika ulimwengu, na nguvu hiyo ni sawia na zao la wingi hizo mbili na ni kinyume sawia na mraba wa umbali kati yao.</em> Kwa namna ya kihisabati, hii huandikwa kama ifuatavyo.</p>\[\mathbf{F} = -G\frac{mM}{r^2}\mathbf{e}_r \label{eqn:law_of_gravitation}\tag{1}\]<p><img src="https://upload.wikimedia.org/wikipedia/commons/0/0e/NewtonsLawOfUniversalGravitation.svg" alt="Newton's law of universal gravitation" /></p><blockquote><p><em>Chanzo cha picha</em></p><ul><li>Mwandishi: mtumiaji wa Wikimedia <a href="https://commons.wikimedia.org/wiki/User:Dna-webmaster">Dennis Nilsson</a><li>Leseni: <a href="https://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a></ul></blockquote><p>Vekta ya kitengo $\mathbf{e}_r$ inaelekea kutoka $M$ kwenda kwa $m$, na ishara hasi inaonyesha kwamba nguvu hiyo ni ya mvutano. Yaani, $m$ huvutwa kuelekea $M$.</p><h3 id="jaribio-la-cavendish">Jaribio la Cavendish</h3><p>Uthibitisho wa kimaabara wa sheria hii na uamuzi wa thamani ya $G$ ulifanywa mwaka 11798 HE na mwanafizikia wa Uingereza Henry Cavendish. Jaribio la Cavendish hutumia mizani ya msokoto iliyo na mipira miwili midogo iliyofungwa kwenye ncha za fimbo nyepesi. Kila mmoja wa mipira hiyo miwili huvutwa kuelekea mipira mingine miwili mikubwa iliyo karibu nayo. Thamani rasmi ya $G$ iliyopatikana hadi sasa ni $6.673 \pm 0.010 \times 10^{-11} \mathrm{N\cdot m^2/kg^2}$.</p><blockquote class="prompt-tip"><p>Ingawa $G$ ni mojawapo ya konstanti za msingi zilizojulikana kwa muda mrefu zaidi, bado inajulikana kwa usahihi mdogo kuliko konstanti nyingine nyingi za msingi kama $e$, $c$, na $\hbar$. Hata leo, kuna tafiti nyingi zinazofanyika ili kupata thamani ya $G$ kwa usahihi wa juu zaidi.</p></blockquote><h3 id="kwa-vitu-vyenye-ukubwa">Kwa vitu vyenye ukubwa</h3><p>Sheria katika fomula ($\ref{eqn:law_of_gravitation}$) inaweza kutumika kwa ukali tu kwa <em>chembe ya nukta</em>. Ikiwa upande mmoja au yote mawili ni vitu vyenye ukubwa fulani, basi ili kuhesabu nguvu ni lazima kuongeza dhana kwamba uga wa nguvu ya graviti ni <em>uga wa mstari</em>. Yaani, hudhaniwa kwamba jumla ya graviti inayopokelewa na chembe moja yenye wingi $m$ kutoka kwa chembe nyingi nyingine inaweza kupatikana kwa kujumlisha vekta za nguvu za kila moja. Katika hali ya kitu ambamo dutu imesambazwa kwa mwendelezo, jumla hiyo hubadilishwa kuwa integresheni kama ifuatavyo.</p>\[\mathbf{F} = -Gm\int_V \frac{dM}{r^2}\mathbf{e}_r = -Gm\int_V \frac{\rho(\mathbf{r^\prime})\mathbf{e}_r}{r^2} dv^{\prime} \label{eqn:integral_form}\tag{2}\]<ul><li>$\rho(\mathbf{r^{\prime}})$: msongamano wa wingi katika nukta iliyoko kwenye vekta ya mahali $\mathbf{r^{\prime}}$ kutoka kwenye asili yoyote ile<li>$dv^{\prime}$: elementi ya ujazo katika nukta iliyoko kwenye vekta ya mahali $\mathbf{r^{\prime}}$ kutoka kwenye asili yoyote ile</ul><p>Ikiwa tunataka kupata jumla ya nguvu ya graviti wakati kitu chenye wingi $M$ na kitu chenye wingi $m$ vyote vina ukubwa, basi integresheni ya pili ya ujazo kwa ajili ya $m$ pia inahitajika.</p><h3 id="vekta-ya-uga-wa-graviti">Vekta ya uga wa graviti</h3><p><strong>Vekta ya uga wa graviti</strong> $\mathbf{g}$ hufafanuliwa kama vekta inayoonyesha nguvu kwa kila kitengo cha wingi inayopokelewa na chembe fulani ndani ya uga uliotengenezwa na kitu chenye wingi $M$, hivyo</p>\[\mathbf{g} = \frac{\mathbf{F}}{m} = - G \frac{M}{r^2}\mathbf{e}_r \label{eqn:g_vector}\tag{3}\]<p>au</p>\[\boxed{\mathbf{g} = - G \int_V \frac{\rho(\mathbf{r^\prime})\mathbf{e}_r}{r^2}dv^\prime} \tag{4}\]<p>huandikwa hivyo. Hapa mwelekeo wa $\mathbf{e}_r$ hubadilika kulingana na $\mathbf{r^\prime}$.</p><p>Kiasi hiki $\mathbf{g}$ kina vipimo vya <em>nguvu kwa kila kitengo cha wingi</em> au <em>uongezaji kasi</em>. Karibu na uso wa Dunia, ukubwa wa vekta ya uga wa graviti $\mathbf{g}$ ni sawa na kiasi tunachokiita <strong>konstanti ya uongezaji kasi wa graviti</strong>, na $|\mathbf{g}| \approx 9.80\mathrm{m/s^2}$.</p><h2 id="potenshali-ya-graviti">Potenshali ya graviti</h2><h3 id="ufafanuzi">Ufafanuzi</h3><p>Vekta ya uga wa graviti $\mathbf{g}$ hubadilika kama $1/r^2$, na hivyo hutimiza sharti la kuweza kuonyeshwa kama gradient ya skala fulani (potenshali), yaani $\nabla \times \mathbf{g} \equiv 0$. Kwa hiyo tunaweza kuandika kama ifuatavyo.</p>\[\mathbf{g} \equiv -\nabla \Phi \label{eqn:gradient_phi}\tag{5}\]<p>Hapa $\Phi$ huitwa <strong>potenshali ya graviti</strong>, na ina vipimo vya $($<em>nguvu kwa kila kitengo cha wingi</em> $) \times ($<em>umbali</em> $)$ au <em>nishati kwa kila kitengo cha wingi</em>.</p><p>Kwa kuwa $\mathbf{g}$ hutegemea radius pekee, basi $\Phi$ pia hubadilika kulingana na $r$. Kutoka fomula ($\ref{eqn:g_vector}$) na ($\ref{eqn:gradient_phi}$),</p>\[\nabla\Phi = \frac{d\Phi}{dr}\mathbf{e}_r = G\frac{M}{r^2}\mathbf{e}_r\]<p>na tukiiintegra tunapata</p>\[\boxed{\Phi = -G\frac{M}{r}} \label{eqn:g_potential}\tag{6}\]<p>Potenshali ya graviti ina maana tu kwa tofauti zake za jamaa, na ukubwa wa thamani yake halisi hauna maana, kwa hiyo konstanti ya integresheni inaweza kuachwa. Kwa kawaida, hali ya $\Phi \to 0$ wakati $r \to \infty$ huwekwa kiholela ili kuondoa utata, na fomula ($\ref{eqn:g_potential}$) pia hutimiza hali hii.</p><p>Wakati dutu imesambazwa kwa mwendelezo, potenshali ya graviti huwa kama ifuatavyo.</p>\[\Phi = -G\int_V \frac{\rho(\mathbf{r\prime})}{r}dv^\prime \label{eqn:g_potential_v}\tag{7}\]<p>Iwapo wingi umesambazwa juu ya uso wa ganda jembamba, basi</p>\[\Phi = -G\int_S \frac{\rho_s}{r}da^\prime. \label{eqn:g_potential_s}\tag{8}\]<p>Na kwa chanzo cha wingi wa mstari chenye msongamano wa mstari $\rho_l$, tunaweza kuandika kama ifuatavyo.</p>\[\Phi = -G\int_\Gamma \frac{\rho_l}{r}ds^\prime. \label{eqn:g_potential_l}\tag{9}\]<h3 id="maana-ya-kifizikia">Maana ya kifizikia</h3><p>Hebu tufikirie kazi kwa kila kitengo cha wingi $dW^\prime$ inayofanywa na kitu kinaposogea kwa $d\mathbf{r}$ ndani ya uga wa graviti.</p>\[\begin{align*} dW^\prime &amp;= -\mathbf{g}\cdot d\mathbf{r} = (\nabla \Phi)\cdot d\mathbf{r} \\ &amp;= \sum_i \frac{\partial \Phi}{\partial x_i}dx_i = d\Phi \label{eqn:work}\tag{10} \end{align*}\]<p>Katika fomula hii, $\Phi$ ni funksi ya koordinate za nafasi pekee, na huonyeshwa kama $\Phi=\Phi(x_1, x_2, x_3) = \Phi(x_i)$. Kwa hiyo, tunajua kwamba kiasi cha kazi kwa kila kitengo cha wingi kinachofanywa na kitu kinapohamishwa ndani ya uga wa graviti kutoka nukta moja hadi nyingine ni sawa na tofauti ya potenshali kati ya nukta hizo mbili.</p><p>Iwapo potenshali ya graviti katika umbali usio na kikomo hufafanuliwa kuwa $0$, basi $\Phi$ katika nukta yoyote inaweza kutafsiriwa kama kazi kwa kila kitengo cha wingi inayohitajika kuhamisha kitu hicho kutoka umbali usio na kikomo hadi nukta hiyo. Kwa kuwa nishati potenshali ya kitu ni sawa na zao la wingi wa kitu hicho na potenshali ya graviti $\Phi$, tukiiita $U$ kuwa nishati potenshali,</p>\[U = m\Phi. \label{eqn:potential_e}\tag{11}\]<p>Kwa hiyo, nguvu ya graviti inayopokelewa na kitu hupatikana kwa kuweka ishara hasi kwenye gradient ya nishati potenshali yake.</p>\[\mathbf{F} = -\nabla U \label{eqn:force_and_potential}\tag{12}\]<p>Kitu kinapowekwa ndani ya uga wa graviti uliotengenezwa na wingi fulani, daima huzalishwa nishati potenshali fulani. Kwa ukali, nishati hii potenshali ipo katika uga wenyewe, lakini kwa desturi mara nyingi huiitwa nishati potenshali ya kitu hicho.</p><h2 id="mfano-potenshali-ya-graviti-ndani-na-nje-ya-ganda-la-sfera-teorema-ya-ganda-la-sfera">Mfano: Potenshali ya graviti ndani na nje ya ganda la sfera (teorema ya ganda la sfera)</h2><h3 id="kuweka-koordinate--kuandika-potenshali-ya-graviti-kwa-fomula-ya-integresheni">Kuweka koordinate &amp; kuandika potenshali ya graviti kwa fomula ya integresheni</h3><p>Hebu tupate potenshali ya graviti ndani na nje ya ganda la sfera lenye msongamano sare, lenye radius ya ndani $b$ na radius ya nje $a$. Nguvu ya graviti ya ganda la sfera inaweza kupatikana kwa kuhesabu moja kwa moja vipengele vya nguvu vinavyofanya kazi kwa kitengo cha wingi ndani ya uga, lakini kutumia mbinu ya potenshali ni rahisi zaidi.</p><p><img src="/assets/img/gravitational-field-and-potential/spherical-shell.png" alt="Spherical shell" /></p><p>Katika mchoro hapo juu, hebu tuhesabu potenshali katika nukta $P$ iliyo umbali $R$ kutoka kituo. Tukidhani mgawanyo wa wingi wa ganda ni sare, tuna $\rho(r^\prime)=\rho$, na kwa kuwa kuna ulinganifu kwa pembe ya azimuthi $\phi$ kwa kuzingatia mstari unaounganisha kituo cha sfera na nukta $P$,</p>\[\begin{align*} \Phi &amp;= -G\int_V \frac{\rho(r^\prime)}{r}dv^\prime \\ &amp;= -\rho G \int_0^{2\pi} \int_0^\pi \int_b^a \frac{1}{r}(dr^\prime)(r^\prime d\theta)(r^\prime \sin\theta\, d\phi) \\ &amp;= -\rho G \int_0^{2\pi} d\phi \int_b^a {r^\prime}^2 dr^\prime \int_0^\pi \frac{\sin\theta}{r}d\theta \\ &amp;= -2\pi\rho G \int_b^a {r^\prime}^2 dr^\prime \int_0^\pi \frac{\sin\theta}{r}d\theta. \label{eqn:spherical_shell_1}\tag{13} \end{align*}\]<p>Kwa mujibu wa sheria ya kosaini,</p>\[r^2 = {r^\prime}^2 + R^2 - 2r^\prime R \cos\theta \label{eqn:law_of_cosines}\tag{14}\]<p>na kwa kuwa $R$ ni konstanti, tukidiferenshia fomula hii kwa heshima ya $r^\prime$ tunapata</p>\[2rdr = 2r^\prime R \sin\theta d\theta\] \[\frac{\sin\theta}{r}d\theta = \frac{dr}{r^\prime R} \tag{15}\]<p>Tukiingiza haya kwenye fomula ($\ref{eqn:spherical_shell_1}$), tunapata</p>\[\Phi = -\frac{2\pi\rho G}{R} \int_b^a r^\prime dr^\prime \int_{r_\mathrm{min}}^{r_\mathrm{max}} dr. \label{eqn:spherical_shell_2}\tag{16}\]<p>Hapa $r_\mathrm{max}$ na $r_\mathrm{min}$ huamuliwa kulingana na mahali pa nukta $P$.</p><h3 id="wakati-ra">Wakati $R&gt;a$</h3>\[\begin{align*} \Phi(R&gt;a) &amp;= -\frac{2\pi\rho G}{R} \int_b^a r^\prime dr^\prime \int_{R-r^\prime}^{R+r^\prime} dr \\ &amp;= - \frac{4\pi\rho G}{R} \int_b^a {r^\prime}^2 dr^\prime \\ &amp;= - \frac{4}{3}\frac{\pi\rho G}{R}(a^3 - b^3). \label{eqn:spherical_shell_outside_1}\tag{17} \end{align*}\]<p>Kwa kuwa wingi wa ganda la sfera $M$ hutolewa na</p>\[M = \frac{4}{3}\pi\rho(a^3 - b^3) \label{eqn:mass_of_shell}\tag{18}\]<p>potenshali huwa kama ifuatavyo.</p>\[\boxed{\Phi(R&gt;a) = -\frac{GM}{R}} \label{eqn:spherical_shell_outside_2}\tag{19}\]<blockquote class="prompt-info"><p>Tukilinganisha fomula ya potenshali ya graviti inayotokana na wingi wa nukta wenye wingi $M$, yaani ($\ref{eqn:g_potential}$), na matokeo tuliyopata sasa hivi, ($\ref{eqn:spherical_shell_outside_2}$), tunaona kuwa ni sawa kabisa. Hii ina maana kwamba wakati wa kupata potenshali ya graviti katika nukta ya nje inayotokana na mgawanyo wa wingi wenye ulinganifu wa kisfera, ni sawa kufikiri kwamba wingi wote umejikusanya katikati. Miili mingi ya anga ya kisfera yenye ukubwa fulani au zaidi, kama Dunia au Mwezi, huingia katika hali hii, na inaweza kuchukuliwa kuwa ni mkusanyiko wa maganda mengi sana ya kisfera yenye vituo vinavyofanana lakini vipenyo tofauti, kama <a href="https://en.wikipedia.org/wiki/Matryoshka_doll">matryoshka</a>. Hili pia ndilo <a href="#sheria-ya-newton-ya-mvutano-wa-ulimwengu-wote">msingi halali wa kudhani miili ya anga kama Dunia au Mwezi kuwa wingi za nukta zisizo na ukubwa wakati wa kufanya hesabu</a>, kama ilivyotajwa mwanzoni mwa makala hii.</p></blockquote><h3 id="wakati-rb">Wakati $R&lt;b$</h3>\[\begin{align*} \Phi(R&lt;b) &amp;= -\frac{2\pi\rho G}{R} \int_b^a r^\prime dr^\prime \int_{r^\prime - R}^{r^\prime + R}dr \\ &amp;= -4\pi\rho G \int_b^a r^\prime dr^\prime \\ &amp;= -2\pi\rho G(a^2 - b^2). \label{eqn:spherical_shell_inside}\tag{20} \end{align*}\]<blockquote class="prompt-info"><p>Ndani ya ganda la wingi lenye ulinganifu wa kisfera, potenshali ya graviti ni thabiti bila kujali mahali, na nguvu ya graviti inayofanya kazi ni $0$.</p></blockquote><blockquote class="prompt-tip"><p>Na hili pia ni mojawapo ya misingi mikuu inayoonyesha kwamba ‘nadharia ya Dunia tupu’ ni upuuzi, ambayo ni mfano maarufu wa sayansi ya uongo. Kama Dunia ingekuwa katika umbo la ganda la sfera lenye ndani tupu, kama inavyodaiwa na nadharia hiyo, basi graviti ya Dunia isingefanya kazi kwa vitu vyote vilivyomo ndani ya tundu hilo. Tukizingatia wingi na ujazo wa Dunia, tundu kama hilo la Dunia haliwezi kuwepo; na hata kama lingewepo, viumbe wa humo wasingeishi wakitumia upande wa ndani wa ganda hilo kama ardhi, bali wangeelea katika hali ya kutokuwa na uzito kama kwenye kituo cha anga.<br /> <a href="https://youtu.be/VD6xJq8NguY?si=szgtuLkuk6rPJag3">Huenda vijiumbe vinaweza kuishi kwenye kina cha tabaka za ardhi cha kilomita chache chini ya uso</a>, lakini angalau si kwa umbo linalodaiwa na nadharia ya Dunia tupu. Ninapenda sana riwaya ya Jules Verne <em>Voyage au centre de la Terre</em> na filamu <em>Journey to the Center of the Earth</em>, lakini kazi za ubunifu zinapaswa kufurahiwa kama kazi za ubunifu; tusiziamini kwa uzito kana kwamba ni ukweli.</p></blockquote><h3 id="wakati-bra">Wakati $b&lt;R&lt;a$</h3>\[\begin{align*} \Phi(b&lt;R&lt;a) &amp;= -\frac{4\pi\rho G}{3R}(R^3 - b^3) - 2\pi\rho G(a^2 - R^2) \\ &amp;= -4\pi\rho G \left( \frac{a^2}{2} - \frac{b^3}{3R} - \frac{R^2}{6} \right) \label{eqn:within_spherical_shell}\tag{21} \end{align*}\]<h3 id="matokeo">Matokeo</h3><p>Tukichora kwa grafu potenshali ya graviti $\Phi$ katika maeneo matatu tuliyopata hapo juu, pamoja na ukubwa wa vekta ya uga wa graviti $|\mathbf{g}|$ unaotokana nayo, kama funksi ya umbali $R$, tunapata yafuatayo.</p><p><img src="/physics-visualizations/figs/shell-theorem-gravitational-potential.png" alt="Gravitational Potential as a Function of R" /><br /> <img src="/physics-visualizations/figs/shell-theorem-field-vector.png" alt="Magnitude of the Field Vector as a Function of R" /></p><blockquote><ul><li>Msimbo wa kuona kwa Python: <a href="https://github.com/yunseo-kim/physics-visualizations/blob/main/src/shell_theorem.py">hazina ya yunseo-kim/physics-visualizations</a><li>Leseni: <a href="https://github.com/yunseo-kim/physics-visualizations?tab=readme-ov-file#license">Tazama hapa</a></ul></blockquote><p>Tunaona kwamba potenshali ya graviti na ukubwa wa vekta ya uga wa graviti ni endelevu. Ikiwa potenshali ya graviti ingekuwa na mkatiko katika nukta fulani, basi gradient ya potenshali katika nukta hiyo, yaani ukubwa wa graviti, ungekuwa usio na kikomo, jambo ambalo si halali kifizikia; kwa hiyo funksi ya potenshali lazima iwe endelevu katika kila nukta. Hata hivyo, <em>derivative</em> ya vekta ya uga wa graviti haiko endelevu kwenye uso wa ndani na wa nje wa ganda.</p><h2 id="mfano-mkunjo-wa-mzunguko-wa-galaksi">Mfano: Mkunjo wa mzunguko wa galaksi</h2><p>Kwa mujibu wa uchunguzi wa kiastronomia, katika galaksi nyingi za spiral zinazozunguka kuhusu kituo chao, kama Njia Nyeupe na galaksi ya Andromeda, wingi unaoweza kuonekana husambazwa hasa karibu na sehemu ya kati. Hata hivyo, kasi za obiti za wingi huo katika galaksi za spiral hazilingani kabisa na thamani zinazotabiriwa kinadharia kutokana na mgawanyo wa wingi unaoweza kuonekana, na hubaki karibu thabiti baada ya umbali fulani, kama inavyoonekana katika grafu ifuatayo.</p><p><img src="https://upload.wikimedia.org/wikipedia/commons/b/b9/GalacticRotation2.svg" alt="Galactic Rotation" width="972" /></p><blockquote><p><em>Chanzo cha picha</em></p><ul><li>Mwandishi: mtumiaji wa Wikipedia <a href="https://en.wikipedia.org/wiki/User:PhilHibbs">PhilHibbs</a><li>Leseni: Public Domain</ul></blockquote><p> <video class="embed-video file" controls="" autoplay="" loop=""> <source src="https://cdn.jsdelivr.net/gh/yunseo-kim/yunseo-kim.github.io/assets/video/gravitational-field-and-potential/Galaxy_rotation_under_the_influence_of_dark_matter.webm" type="video/webm" /> <source src="https://cdn.jsdelivr.net/gh/yunseo-kim/yunseo-kim.github.io/assets/video/gravitational-field-and-potential/Galaxy_rotation_under_the_influence_of_dark_matter.ogg" type="video/ogg" /> Your browser does not support the video tag. Here is a <a href="https://cdn.jsdelivr.net/gh/yunseo-kim/yunseo-kim.github.io/assets/video/gravitational-field-and-potential/Galaxy_rotation_under_the_influence_of_dark_matter.webm">link to the video file</a> instead. </video> <em>Kushoto: mzunguko wa galaksi uliotabiriwa kutoka kwa wingi unaoonekana | Kulia: mzunguko wa galaksi uliochunguzwa kwa kweli.</em></p><blockquote><p><em>Chanzo cha video</em></p><ul><li>Kiungo cha faili asili (video ya Ogg Theora): <a href="https://commons.wikimedia.org/wiki/File:Galaxy_rotation_under_the_influence_of_dark_matter.ogv">https://commons.wikimedia.org/wiki/File:Galaxy_rotation_under_the_influence_of_dark_matter.ogv</a><li>Mwandishi: <a href="https://beltoforion.de/en/index.php">Ingo Berg</a><li>Leseni: <a href="https://creativecommons.org/licenses/by-sa/3.0/deed.en">CC BY-SA 3.0</a><li>Mbinu ya uigaji na msimbo uliotumika: <a href="https://beltoforion.de/en/spiral_galaxy_renderer/">https://beltoforion.de/en/spiral_galaxy_renderer/</a></ul></blockquote><blockquote class="prompt-danger"><p>Faili ya picha <code class="language-plaintext highlighter-rouge">Rotation curve of spiral galaxy Messier 33 (Triangulum).png</code> ambayo hapo awali ilikuwa imeingizwa kwenye ukurasa huu imeondolewa pia kutoka ukurasa huu, kwa kuwa ilifutwa kutoka Wikimedia Commons baada ya kubainika kuwa ilikuwa kazi ya kisanii ya kiderivati iliyoplagiarizwa bila nukuu ifaayo na mtumiaji wa Wikimedia <a href="https://commons.wikimedia.org/wiki/User:Accrama">Mario De Leo</a>, kutoka kwa kazi isiyo huru ya Profesa Mark Whittle wa <a href="https://markwhittle.uvacreate.virginia.edu/">Chuo Kikuu cha Virginia</a>, <a href="https://commons.wikimedia.org/wiki/Commons:Deletion_requests/File:Rotation_curve_of_spiral_galaxy_Messier_33_(Triangulum).png">kama ilivyobainishwa hapa</a>.</p></blockquote><p>Iwapo wingi wa galaksi umejikusanya katikati, hebu tutabiri kasi ya obiti kulingana na umbali na kuonyesha kwamba utabiri huo haulingani na matokeo ya uchunguzi; kisha tuonyeshe kwamba ili kueleza matokeo ya uchunguzi, wingi $M(R)$ unaosambazwa ndani ya umbali $R$ kutoka kituo cha galaksi lazima uwe sawia na $R$.</p><p>Kwanza, ikiwa wingi wa galaksi $M$ umejikusanya katikati, kasi ya obiti katika umbali $R$ ni kama ifuatavyo.</p>\[\frac{GMm}{R^2} = \frac{mv^2}{R}\] \[v = \sqrt{\frac{GM}{R}} \propto \frac{1}{\sqrt{R}}.\]<p>Katika hali hii, kasi ya obiti inayopungua kama $1/\sqrt{R}$ hutabiriwa, kama mstari wa nukta ulivyoonyeshwa katika grafu hizo hapo juu; lakini kwa mujibu wa uchunguzi, kasi ya obiti $v$ hubaki karibu thabiti bila kujali umbali $R$, kwa hiyo utabiri na uchunguzi havilingani. Matokeo haya ya uchunguzi yanaweza kuelezeka tu ikiwa $M(R)\propto R$.</p><p>Tukiweka $M(R) = kR$ kwa kutumia konstanti ya uwiano $k$,</p>\[v = \sqrt{\frac{GM(R)}{R}} = \sqrt{Gk}\ \text{(konstanti)}.\]<p>Kutokana na hili, wanaastrofizikia hufikia hitimisho kwamba katika galaksi nyingi lazima kuwepo ‘dark matter’ ambayo haijagunduliwa, na kwamba dark matter hiyo lazima ichangie zaidi ya 90% ya wingi wa ulimwengu. Hata hivyo, asili halisi ya dark matter bado haijafafanuliwa wazi, na ingawa si nadharia kuu, pia yapo majaribio kama Modified Newtonian Dynamics (MOND) yanayojaribu kueleza uchunguzi bila kudhani uwepo wa dark matter. Leo hii, eneo hili la utafiti liko mstari wa mbele kabisa wa astrofizikia.</p>]]> </content> </entry> <entry><title xml:lang="sw">Mbinu ya Vigawo Visivyojulikana</title><link href="https://www.yunseo.kim/sw/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="am" /><published>2025-04-20T00:00:00+09:00</published> <updated>2025-04-20T00:00:00+09:00</updated> <id>https://www.yunseo.kim/sw/posts/method-of-undetermined-coefficients/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Differential Equation" /> <summary xml:lang="sw">Tujifunze mbinu ya vigawo visivyojulikana, njia rahisi ya kutatua matatizo ya thamani ya awali kwa baadhi ya mlinganyo wa kawaida wa tofauti wa mstari usio homojeni wenye vigawo thabiti, inayotumika sana katika uhandisi kwa mifumo ya mtetemo na miundo ya saketi za umeme za RLC.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Tujifunze mbinu ya vigawo visivyojulikana, njia rahisi ya kutatua matatizo ya thamani ya awali kwa baadhi ya mlinganyo wa kawaida wa tofauti wa mstari usio homojeni wenye vigawo thabiti, inayotumika sana katika uhandisi kwa mifumo ya mtetemo na miundo ya saketi za umeme za RLC.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><ul><li><strong>Mbinu ya vigawo visivyojulikana</strong> hutumika kwa:<ul><li>mlinganyo wenye <strong>vigawo thabiti $a$ na $b$</strong><li>ambapo ingizo $r(x)$ limeundwa na funsi ya eksponenti, nguvu za $x$, $\cos$ au $\sin$, au jumla na bidhaa za funsi kama hizo<li>yaani mlinganyo wa kawaida wa tofauti wa mstari $y^{\prime\prime} + ay^{\prime} + by = r(x)$</ul><li><strong>Kanuni za kuchagua kwa mbinu ya vigawo visivyojulikana</strong><ul><li><strong>(a) kanuni ya msingi (basic rule)</strong>: Katika mlinganyo ($\ref{eqn:linear_ode_with_constant_coefficients}$), ikiwa $r(x)$ ni mojawapo ya funsi zilizo kwenye safu ya kwanza ya jedwali, chagua $y_p$ ya safu hiyo hiyo, kisha amua vigawo visivyojulikana kwa kuingiza $y_p$ na viambajengo vyake katika mlinganyo ($\ref{eqn:linear_ode_with_constant_coefficients}$).<li><strong>(b) kanuni ya marekebisho (modification rule)</strong>: Ikiwa neno lililochaguliwa kama $y_p$ ni suluhisho la mlinganyo wa kawaida wa tofauti wa homojeni $y^{\prime\prime} + ay^{\prime} + by = 0$ unaolingana na mlinganyo ($\ref{eqn:linear_ode_with_constant_coefficients}$), basi lizidishe kwa $x$ (au kwa $x^2$ ikiwa suluhisho hilo linalingana na mzizi wa maradufu wa mlinganyo bainishi wa mlinganyo wa homojeni).<li><strong>(c) kanuni ya kujumlisha (sum rule)</strong>: Ikiwa $r(x)$ ni jumla ya funsi zilizo kwenye safu ya kwanza ya jedwali, chagua kama $y_p$ jumla ya funsi zilizo kwenye safu ya pili katika mistari inayolingana.</ul></ul><table><thead><tr><th style="text-align: left">Neno la $r(x)$<th style="text-align: left">Uteuzi wa $y_p(x)$<tbody><tr><td style="text-align: left">$ke^{\gamma x}$<td style="text-align: left">$Ce^{\gamma x}$<tr><td style="text-align: left">$kx^n\ (n=0,1,\cdots)$<td style="text-align: left">$K_nx^n + K_{n-1}x^{n-1} + \cdots + K_1x + K_0$<tr><td style="text-align: left">$k\cos{\omega x}$<br />$k\sin{\omega x}$<td style="text-align: left">$K\cos{\omega x} + M\sin{\omega x}$<tr><td style="text-align: left">$ke^{\alpha x}\cos{\omega x}$<br />$ke^{\alpha x}\sin{\omega x}$<td style="text-align: left">$e^{\alpha x}(K\cos{\omega x} + M\sin{\omega x})$</table></blockquote><h2 id="maarifa-ya-awali">Maarifa ya awali</h2><ul><li><a href="/sw/posts/homogeneous-linear-odes-of-second-order/">Mlinganyo wa kawaida wa tofauti wa mstari wa homojeni wa mpangilio wa pili</a><li><a href="/sw/posts/homogeneous-linear-odes-with-constant-coefficients/">Mlinganyo wa kawaida wa tofauti wa mstari wa homojeni wa mpangilio wa pili wenye vigawo thabiti</a><li><a href="/sw/posts/euler-cauchy-equation/">Mlinganyo wa Euler-Cauchy</a><li><a href="/sw/posts/wronskian-existence-and-uniqueness-of-solutions/">Wronskian, uwepo na upekee wa suluhisho</a><li><a href="/sw/posts/nonhomogeneous-linear-odes-of-second-order/">Mlinganyo wa kawaida wa tofauti wa mstari usio homojeni wa mpangilio wa pili</a><li>nafasi za vekta, linear span (aljebra ya mstari)</ul><h2 id="mbinu-ya-vigawo-visivyojulikana">Mbinu ya vigawo visivyojulikana</h2><p>Fikiria mlinganyo wa kawaida wa tofauti wa mstari usio homojeni wa mpangilio wa pili ambapo $r(x) \not\equiv 0$</p>\[y^{\prime\prime} + p(x)y^{\prime} + q(x)y = r(x) \label{eqn:nonhomogeneous_linear_ode}\tag{1}\]<p>na mlinganyo wa kawaida wa tofauti wa homojeni unaolingana nao</p>\[y^{\prime\prime} + p(x)y^{\prime} + q(x)y = 0 \label{eqn:homogeneous_linear_ode}\tag{2}\]<p>Kama tulivyoona hapo awali katika <a href="/sw/posts/nonhomogeneous-linear-odes-of-second-order/">Mlinganyo wa kawaida wa tofauti wa mstari usio homojeni wa mpangilio wa pili</a>, ili kutatua tatizo la thamani ya awali kwa mlinganyo wa tofauti usio homojeni wa mstari ($\ref{eqn:nonhomogeneous_linear_ode}$), tunapaswa kwanza kutatua mlinganyo wa homojeni ($\ref{eqn:homogeneous_linear_ode}$) na kupata $y_h$, kisha tutafute suluhisho moja $y_p$ la mlinganyo ($\ref{eqn:nonhomogeneous_linear_ode}$) ili tupate suluhisho la jumla</p>\[y(x) = y_h(x) + y_p(x) \label{eqn:general_sol}\tag{3}\]<p>Basi tunawezaje kupata $y_p$? Njia ya jumla ya kupata $y_p$ ni <strong>mbinu ya kubadilisha parameta (method of variation of parameters)</strong>, lakini katika hali fulani tunaweza kutumia <strong>mbinu ya vigawo visivyojulikana (method of undetermined coefficients)</strong>, ambayo ni rahisi zaidi. Hasa, ni njia inayotumiwa mara nyingi katika uhandisi kwa sababu inaweza kutumika kwa mifumo ya mtetemo na miundo ya saketi za umeme za RLC.</p><p>Mbinu ya vigawo visivyojulikana inafaa kwa mlinganyo wa kawaida wa tofauti wa mstari</p>\[y^{\prime\prime} + ay^{\prime} + by = r(x) \label{eqn:linear_ode_with_constant_coefficients}\tag{4}\]<p>wenye <strong>vigawo thabiti $a$ na $b$</strong>, ambapo ingizo $r(x)$ limeundwa na funsi ya eksponenti, nguvu za $x$, $\cos$ au $\sin$, au jumla na bidhaa za funsi kama hizo. Kiini cha mbinu hii ni kwamba $r(x)$ wa umbo hili huwa na viambajengo vinavyobaki na umbo linalofanana na lake. Ili kutumia mbinu ya vigawo visivyojulikana, huchagua $y_p$ yenye umbo linalofanana na $r(x)$, lakini ikiwa na vigawo visivyojulikana ambavyo huamuliwa kwa kuingiza $y_p$ na viambajengo vyake kwenye mlinganyo wa tofauti uliotolewa. Kwa maumbo ya $r(x)$ yaliyo muhimu kivitendo katika uhandisi, kanuni za kuchagua $y_p$ ipasavyo ni kama zifuatazo.</p><blockquote class="prompt-info"><p><strong>Kanuni za kuchagua kwa mbinu ya vigawo visivyojulikana</strong><br /> <strong>(a) kanuni ya msingi (basic rule)</strong>: Katika mlinganyo ($\ref{eqn:linear_ode_with_constant_coefficients}$), ikiwa $r(x)$ ni mojawapo ya funsi zilizo kwenye safu ya kwanza ya jedwali, chagua $y_p$ ya safu hiyo hiyo, kisha amua vigawo visivyojulikana kwa kuingiza $y_p$ na viambajengo vyake katika mlinganyo ($\ref{eqn:linear_ode_with_constant_coefficients}$).<br /> <strong>(b) kanuni ya marekebisho (modification rule)</strong>: Ikiwa neno lililochaguliwa kama $y_p$ ni suluhisho la mlinganyo wa kawaida wa tofauti wa homojeni $y^{\prime\prime} + ay^{\prime} + by = 0$ unaolingana na mlinganyo ($\ref{eqn:linear_ode_with_constant_coefficients}$), basi lizidishe kwa $x$ (au kwa $x^2$ ikiwa suluhisho hilo linalingana na mzizi wa maradufu wa mlinganyo bainishi wa mlinganyo wa homojeni).<br /> <strong>(c) kanuni ya kujumlisha (sum rule)</strong>: Ikiwa $r(x)$ ni jumla ya funsi zilizo kwenye safu ya kwanza ya jedwali, chagua kama $y_p$ jumla ya funsi zilizo kwenye safu ya pili katika mistari inayolingana.</p><table><thead><tr><th style="text-align: left">Neno la $r(x)$<th style="text-align: left">Uteuzi wa $y_p(x)$<tbody><tr><td style="text-align: left">$ke^{\gamma x}$<td style="text-align: left">$Ce^{\gamma x}$<tr><td style="text-align: left">$kx^n\ (n=0,1,\cdots)$<td style="text-align: left">$K_nx^n + K_{n-1}x^{n-1} + \cdots + K_1x + K_0$<tr><td style="text-align: left">$k\cos{\omega x}$<br />$k\sin{\omega x}$<td style="text-align: left">$K\cos{\omega x} + M\sin{\omega x}$<tr><td style="text-align: left">$ke^{\alpha x}\cos{\omega x}$<br />$ke^{\alpha x}\sin{\omega x}$<td style="text-align: left">$e^{\alpha x}(K\cos{\omega x} + M\sin{\omega x})$</table></blockquote><p>Njia hii si rahisi tu, bali pia ina sifa ya kujisahihisha yenyewe. Ukichagua $y_p$ vibaya au ukichagua idadi ndogo mno ya maneno, utapata mkanganyiko; ukichagua maneno mengi kupita kiasi, vigawo vya maneno yasiyohitajika vitakuwa $0$ na utapata jibu sahihi. Hivyo, hata kama kitu kitaenda vibaya wakati wa kutumia mbinu ya vigawo visivyojulikana, utaweza kugundua hilo kwa kawaida katika hatua za utatuzi; kwa hiyo ukiwa umechagua $y_p$ ya kiwango kinachofaa kulingana na kanuni zilizo juu, unaweza kuijaribu bila wasiwasi mkubwa.</p><h3 id="uthibitisho-wa-kanuni-ya-kujumlisha">Uthibitisho wa kanuni ya kujumlisha</h3><p>Fikiria mlinganyo wa kawaida wa tofauti wa mstari usio homojeni wa umbo $r(x) = r_1(x) + r_2(x)$</p>\[y^{\prime\prime} + ay^{\prime} + by = r_1(x) + r_2(x)\]<p>Sasa tuchukue kwamba milinganyo miwili ifuatayo, yenye upande wa kushoto unaofanana na ingizo $r_1$, $r_2$ mtawalia,</p>\[\begin{gather*} y^{\prime\prime} + ay^{\prime} + by = r_1(x) \\ y^{\prime\prime} + ay^{\prime} + by = r_2(x) \end{gather*}\]<p>ina suluhisho ${y_p}_1$ na ${y_p}_2$ mtawalia. Tukiandika upande wa kushoto wa mlinganyo uliotolewa kama $L[y]$, basi kwa ulinari wa $L[y]$, kwa $y_p = {y_p}_1 + {y_p}_2$ tuna</p>\[L[y_p] = L[{y_p}_1 + {y_p}_2] = L[{y_p}_1] + L[{y_p}_2] = r_1 + r_2 = r. \ \blacksquare\]<h2 id="mfano-yprimeprime--ayprime--by--kegamma-x">Mfano: $y^{\prime\prime} + ay^{\prime} + by = ke^{\gamma x}$</h2><p>Kwa kufuata kanuni ya msingi (a), weka $y_p = Ce^{\gamma x}$ na uiingize katika mlinganyo uliotolewa $y^{\prime\prime} + ay^{\prime} + by = ke^{\gamma x}$, basi</p>\[\gamma^2 Ce^{\gamma x} + \gamma aCe^{\gamma x} + bCe^{\gamma x} = ke^{\gamma x}\] \[C(\gamma^2 + a\gamma + b)e^{\gamma x} = ke^{\gamma x}\] \[C(\gamma^2 + a\gamma + b) = k.\]<h3 id="wakati-gamma2--agamma--b-neq-0">Wakati $\gamma^2 + a\gamma + b \neq 0$</h3><p>Tunaweza kuamua kigawo kisichojulikana $C$ kama ifuatavyo na kupata $y_p$.</p>\[C = \frac{k}{\gamma^2 + a\gamma + b}\] \[y_p = Ce^{\gamma x} = \frac{k}{\gamma^2 + a\gamma + b} e^{\gamma x}.\]<h3 id="wakati-gamma2--agamma--b--0">Wakati $\gamma^2 + a\gamma + b = 0$</h3><p>Katika hali hii tunapaswa kutumia kanuni ya marekebisho (b). Kwanza, tumia ukweli kwamba $b = -\gamma^2 - a\gamma = -\gamma(a + \gamma)$ ili kupata mizizi ya mlinganyo bainishi wa mlinganyo wa tofauti wa homojeni $y^{\prime\prime} + ay^{\prime} + by = 0$.</p>\[y^{\prime\prime} + ay^{\prime} - \gamma(a + \gamma)y = 0\] \[\lambda^2 + a\lambda - \gamma(a + \gamma) = 0\] \[(\lambda + (a + \gamma))(\lambda - \gamma) = 0\] \[\lambda = \gamma, -a -\gamma.\]<p>Kutokana na hili tunapata msingi wa mlinganyo wa tofauti wa homojeni</p>\[y_1 = e^{\gamma x}, \quad y_2 = e^{(-a - \gamma)x}\]<h4 id="wakati-gamma-neq--a-gamma">Wakati $\gamma \neq -a-\gamma$</h4><p>Kwa kuwa $Ce^{\gamma x}$, ambayo ilikuwa imechaguliwa kama $y_p$, ni suluhisho la mlinganyo wa homojeni unaolingana na mlinganyo uliotolewa lakini si la mzizi wa maradufu, basi kulingana na kanuni ya marekebisho (b) tunazidisha neno hili kwa $x$ na kuweka $y_p = Cxe^{\gamma x}$.</p><p>Sasa tukiingiza $y_p$ iliyorekebishwa katika mlinganyo uliotolewa $y^{\prime\prime} + ay^{\prime} - \gamma(a + \gamma)y = ke^{\gamma x}$, tunapata</p>\[C(2\gamma + \gamma^2 x)e^{\gamma x} + aC(1 + \gamma x)e^{\gamma x} - \gamma(a + \gamma)Cxe^{\gamma x} = ke^{\gamma x}\] \[C \left[\left\{\gamma^2 + a\gamma -\gamma(a + \gamma)\right\}x + 2\gamma + a \right]e^{\gamma x} = ke^{\gamma x}\] \[C(2\gamma + a)e^{\gamma x} = ke^{\gamma x}\] \[C(2\gamma + a) = k\] \[\therefore C = \frac{k}{2\gamma + a}, \quad y_p = Cxe^{\gamma x} = \frac{k}{2\gamma + a}xe^{\gamma x}.\]<h4 id="wakati-gamma---a-gamma">Wakati $\gamma = -a-\gamma$</h4><p>Katika hali hii $Ce^{\gamma x}$, ambayo ilikuwa imechaguliwa kama $y_p$, ni suluhisho la mzizi wa maradufu wa mlinganyo wa homojeni unaolingana na mlinganyo uliotolewa, kwa hiyo kulingana na kanuni ya marekebisho (b) tunazidisha neno hili kwa $x^2$ na kuweka $y_p = Cx^2 e^{\gamma x}$.</p><p>Sasa tukiingiza $y_p$ iliyorekebishwa katika mlinganyo uliotolewa $y^{\prime\prime} - 2\gamma y^{\prime} + \gamma^2 y = ke^{\gamma x}$, tunapata</p>\[C(2 + 4\gamma x + \gamma^2 x^2)e^{\gamma x} + C(-4\gamma x - 2\gamma^2 x^2)e^{\gamma x} + C(\gamma^2 x^2)e^{\gamma x} = ke^{\gamma x}\] \[2Ce^{\gamma x} = ke^{\gamma x}\] \[2C = k\] \[\therefore C = \frac{k}{2}, \quad y_p = Cx^2 e^{\gamma x} = \frac{k}{2}x^2 e^{\gamma x}.\]<h2 id="upanuzi-wa-mbinu-ya-vigawo-visivyojulikana-rx-katika-umbo-la-bidhaa-ya-funsi">Upanuzi wa mbinu ya vigawo visivyojulikana: $r(x)$ katika umbo la bidhaa ya funsi</h2><p>Fikiria mlinganyo wa kawaida wa tofauti wa mstari usio homojeni wa umbo $r(x) = k x^n e^{\alpha x}\cos(\omega x)$</p>\[y^{\prime\prime} + ay^{\prime} + by = C x^n e^{\alpha x}\cos(\omega x)\]<p>Tukisema kuwa $r(x)$ imeundwa na funsi ya eksponenti $e^{\alpha x}$, nguvu ya $x$ ya umbo $x^m$, $\cos{\omega x}$ au $\sin{\omega x}$ (hapa tunadhania ni $\cos$, na kufanya hivyo hakupotezi ujumla), au jumla na bidhaa za funsi kama hizo (yaani, inaweza kuandikwa kama jumla na bidhaa za funsi zilizo kwenye safu ya kwanza ya jedwali lililotangulia), tutaonyesha kuwa kuna suluhisho $y_p$ la mlinganyo hilo ambalo pia ni jumla na bidhaa za funsi zilizo kwenye safu ya pili ya jedwali hilo.</p><blockquote class="prompt-tip"><p>Kuna sehemu zilizoelezwa kwa kutumia aljebra ya mstari kwa ajili ya uthibitisho mkali, na sehemu hizo zimewekwa alama kwa *. Hata ukiruka sehemu hizo na kusoma zilizobaki tu, haitaleta shida katika kupata uelewa wa jumla.</p></blockquote><h3 id="ufafanuzi-wa-nafasi-ya-vekta-v">Ufafanuzi wa nafasi ya vekta $V$*</h3><p>\(\begin{align*} r(x) &amp;= C_1x^{n_1}e^{\alpha_1 x} \times C_2x^{n_2}e^{\alpha_2 x}\cos(\omega x) \times \cdots \\ &amp;= C x^n e^{\alpha x}\cos(\omega x) \end{align*}\)</p><p>Kwa $r(x)$ ya aina hii, tunaweza kuchagua nafasi ya vekta $V$ ambayo $r(x) \in V$ kama ifuatavyo.</p>\[V = \mathrm{span}\left\{x^k e^{\alpha x}\cos(\omega x), \; x^k e^{\alpha x}\sin(\omega x) \bigm| k=0,1,\dots,n \right\}\]<h3 id="umbo-la-viambajengo-vya-funsi-za-eksponenti-polinomu-na-trigonometria">Umbo la viambajengo vya funsi za eksponenti, polinomu, na trigonometria</h3><p>Umbo la viambajengo vya funsi za msingi zilizoorodheshwa katika safu ya kwanza ya jedwali lililotangulia ni kama lifuatalo.</p><ul><li>Funsi ya eksponenti: $\cfrac{d}{dx}e^{\alpha x} = \alpha e^{\alpha x}$<li>Funsi ya polinomu: $\cfrac{d}{dx}x^m = mx^{m-1}$<li>Funsi za trigonometria: $\cfrac{d}{dx}\cos\omega x = -\omega\sin\omega x, \quad \cfrac{d}{dx}\sin\omega x = \omega\cos\omega x$</ul><p>Viambajengo vinavyopatikana kwa kutofautisha funsi hizi pia vinaweza kuandikwa kama <u>jumla ya funsi za aina hiyo hiyo</u>.</p><p>Kwa hiyo, ikiwa funsi $f$ na $g$ ni miongoni mwa funsi zilizo hapo juu au jumla zake, basi kwa $r(x) = f(x)g(x)$ tukitumia kanuni ya kutofautisha bidhaa tunapata</p>\[\begin{align*} (fg)^{\prime} &amp;= f^{\prime}g + fg^{\prime}, \\ (fg)^{\prime\prime} &amp;= f^{\prime\prime}g + 2f^{\prime}g^{\prime} + fg^{\prime\prime} \end{align*}\]<p>na hapa $f$, $f^{\prime}$, $f^{\prime\prime}$ pamoja na $g$, $g^{\prime}$, $g^{\prime\prime}$ zote zinaweza kuandikwa kama jumla ya funsi za eksponenti, polinomu, na trigonometria, au kama vizidisho vya thabiti. Hivyo $r^{\prime}(x) = (fg)^{\prime}$ na $r^{\prime\prime}(x) = (fg)^{\prime\prime}$ pia, kama ilivyo kwa $r(x)$, vinaweza kuandikwa kama jumla na bidhaa za funsi hizi.</p><h3 id="kutobadilika-kwa-v-chini-ya-operesheni-ya-utofautishaji-d-na-ubadilishaji-wa-mstari-l">Kutobadilika kwa $V$ chini ya operesheni ya utofautishaji $D$ na ubadilishaji wa mstari $L$*</h3><p>Yaani, si $r(x)$ yenyewe tu bali pia $r^{\prime}(x)$ na $r^{\prime\prime}(x)$ ni mchanganyiko wa mstari wa maneno ya umbo $x^k e^{\alpha x}\cos(\omega x)$ na $x^k e^{\alpha x}\sin(\omega x)$, kwa hiyo</p>\[r(x) \in V \implies r^{\prime}(x) \in V,\ r^{\prime\prime}(x) \in V.\]<p>Tusipoizuia kwa $r(x)$ pekee na tukianzisha opereta ya utofautishaji $D$ kwa vipengele vyote vya nafasi ya vekta $V$ iliyofafanuliwa hapo juu, tunaweza kusema kwa ujumla zaidi kwamba, <em>nafasi ya vekta $V$ imefungwa kwa operesheni ya utofautishaji $D$</em>. Kwa hiyo, tukiandika upande wa kushoto wa mlinganyo uliotolewa $y^{\prime\prime} + ay^{\prime} + by$ kama $L[y]$, basi <em>$V$ haibadiliki (invariant) kwa $L$</em>.</p>\[D^2(V)\subseteq V,\quad aD(V)\subseteq V,\quad b\,V\subseteq V \implies L(V)\subseteq V.\]<p>Kwa kuwa $r(x) \in V$ na $V$ haibadiliki kwa $L$, kuna kipengele kingine $y_p$ cha $V$ kinachotosheleza $L[y_p] = r$.</p>\[\exists y_p \in V: L[y_p] = r\]<h3 id="ansatz">Ansatz</h3><p>Kwa hiyo, tukichagua $y_p$ ifuatayo kwa kutumia vigawo visivyojulikana $A_0, A_1, \dots, A_n$ pamoja na $K$, $M$ ili iwe jumla ya maneno yote ya bidhaa yanayowezekana, basi kulingana na kanuni ya msingi (a) na kanuni ya marekebisho (b), tunaweza kuamua vigawo visivyojulikana kwa kuingiza $y_p$ (au $xy_p$, $x^2y_p$) na viambajengo vyake katika mlinganyo uliotolewa. Hapa $n$ huamuliwa kulingana na daraja la $x$ ndani ya $r(x)$.</p>\[y_p = e^{\alpha x}(A_nx^n + A_{n-1}x^{n-1} + \cdots + A_1x + A_0)(K\cos{\omega x} + M \sin{\omega x}).\]<p>$\blacksquare$</p><blockquote class="prompt-warning"><p>Ikiwa ingizo $r(x)$ lililotolewa lina thamani nyingi tofauti za $\alpha_i$ na $\omega_j$, basi unapaswa kuchagua $y_p$ kwa namna ambayo itajumuisha bila kukosa maneno yote yanayowezekana ya umbo $x^{k}e^{\alpha_i x}\cos(\omega_j x)$ na $x^{k}e^{\alpha_i x}\sin(\omega_j x)$ kwa kila thamani ya $\alpha_i$ na $\omega_j$.<br /> Kwa kuwa faida ya mbinu ya vigawo visivyojulikana ni urahisi wake, ikiwa ansatz inakuwa tata kiasi cha kufifisha faida hiyo, basi inaweza kuwa bora zaidi kutumia mbinu ya kubadilisha parameta, ambayo tutaiangalia baadaye.</p></blockquote><h2 id="upanuzi-wa-mbinu-ya-vigawo-visivyojulikana-mlinganyo-wa-euler-cauchy">Upanuzi wa mbinu ya vigawo visivyojulikana: mlinganyo wa Euler-Cauchy</h2><p>Siyo tu kwa <a href="/sw/posts/homogeneous-linear-odes-with-constant-coefficients/">Mlinganyo wa kawaida wa tofauti wa mstari wa homojeni wa mpangilio wa pili wenye vigawo thabiti</a>, bali pia kwa <a href="/sw/posts/euler-cauchy-equation/">Mlinganyo wa Euler-Cauchy</a></p>\[x^2y^{\prime\prime} + axy^{\prime} + by = r(x) \label{eqn:euler_cauchy}\tag{5}\]<p>tunaweza kutumia mbinu ya vigawo visivyojulikana.</p><h3 id="ubadilishaji-wa-kigeu">Ubadilishaji wa kigeu</h3><p>Tuki<a href="/sw/posts/euler-cauchy-equation/#ubadilishaji-kuwa-mlinganyo-wa-kawaida-wa-tofauti-wa-mstari-wa-homojeni-wa-mpangilio-wa-pili-wenye-vigawo-thabiti">fanya badiliko $x = e^t$ ili kuubadilisha kuwa mlinganyo wa kawaida wa tofauti wa mstari wa homojeni wa mpangilio wa pili wenye vigawo thabiti</a>, tunapata</p>\[\frac{d}{dx} = \frac{1}{x}\frac{d}{dt}, \quad \frac{d^2}{dx^2} = \frac{1}{x^2}\left(\frac{d^2}{dt^2} - \frac{d}{dt} \right)\]<p>na hivyo, kama tulivyoona hapo awali, tunaweza kuubadilisha mlinganyo wa Euler-Cauchy kuwa mlinganyo wa kawaida wa tofauti wa mstari wenye vigawo thabiti kwa $t$ kama ifuatavyo.</p>\[y^{\prime\prime} + (a-1)y^{\prime} + by = r(e^t). \label{eqn:substituted}\tag{6}\]<p>Sasa tumia kwa namna ileile <a href="#mbinu-ya-vigawo-visivyojulikana">mbinu ya vigawo visivyojulikana tuliyoiona hapo juu</a> kwa mlinganyo ($\ref{eqn:substituted}$) kwa heshima ya $t$, kisha mwishoni tumia ukweli kwamba $t = \ln x$ ili kupata suluhisho kwa heshima ya $x$.</p><h3 id="wakati-rx-ni-nguvu-ya-x-logariti-ya-asili-au-jumla-na-bidhaa-za-funsi-kama-hizo">Wakati $r(x)$ ni nguvu ya $x$, logariti ya asili, au jumla na bidhaa za funsi kama hizo</h3><p>Hasa, ikiwa ingizo $r(x)$ limeundwa na nguvu za $x$, logariti ya asili, au jumla na bidhaa za funsi kama hizo, basi tunaweza kuchagua moja kwa moja $y_p$ inayofaa kwa kufuata kanuni za kuchagua zifuatazo kwa mlinganyo wa Euler-Cauchy.</p><blockquote class="prompt-info"><p><strong>Kanuni za kuchagua kwa mbinu ya vigawo visivyojulikana: kwa mlinganyo wa Euler-Cauchy</strong><br /> <strong>(a) kanuni ya msingi (basic rule)</strong>: Katika mlinganyo ($\ref{eqn:euler_cauchy}$), ikiwa $r(x)$ ni mojawapo ya funsi zilizo kwenye safu ya kwanza ya jedwali, chagua $y_p$ ya safu hiyo hiyo, kisha amua vigawo visivyojulikana kwa kuingiza $y_p$ na viambajengo vyake katika mlinganyo ($\ref{eqn:euler_cauchy}$).<br /> <strong>(b) kanuni ya marekebisho (modification rule)</strong>: Ikiwa neno lililochaguliwa kama $y_p$ ni suluhisho la mlinganyo wa kawaida wa tofauti wa homojeni $x^2y^{\prime\prime} + axy^{\prime} + by = 0$ unaolingana na mlinganyo ($\ref{eqn:euler_cauchy}$), basi lizidishe kwa $\ln{x}$ (au kwa $(\ln{x})^2$ ikiwa suluhisho hilo linalingana na mzizi wa maradufu wa mlinganyo bainishi wa mlinganyo wa homojeni).<br /> <strong>(c) kanuni ya kujumlisha (sum rule)</strong>: Ikiwa $r(x)$ ni jumla ya funsi zilizo kwenye safu ya kwanza ya jedwali, chagua kama $y_p$ jumla ya funsi zilizo kwenye safu ya pili katika mistari inayolingana.</p><table><thead><tr><th style="text-align: left">Neno la $r(x)$<th style="text-align: left">Uteuzi wa $y_p(x)$<tbody><tr><td style="text-align: left">$kx^m\ (m=0,1,\cdots)$<td style="text-align: left">$Ax^m$<tr><td style="text-align: left">$kx^m \ln{x}\ (m=0,1,\cdots)$<td style="text-align: left">$x^m(B\ln x + C)$<tr><td style="text-align: left">$k(\ln{x})^s\ (s=0,1,\cdots)$<td style="text-align: left">$D_0 + D_1\ln{x} + \cdots + D_{s-1}(\ln{x})^{s-1} + D_s(\ln{x})^s$<tr><td style="text-align: left">$kx^m (\ln{x})^s$<br />$(m=0,1,\cdots ;\; s=0,1,\cdots)$<td style="text-align: left">$x^m \left( D_0 + D_1\ln{x} + \cdots + D_{s-1}(\ln{x})^{s-1} + D_s(\ln{x})^s \right)$</table></blockquote><p>Kwa kufanya hivi, kwa maumbo ya ingizo $r(x)$ yaliyo muhimu kivitendo, tunaweza kupata $y_p$ sawa na ile inayopatikana kwa <a href="#ubadilishaji-wa-kigeu">ubadilishaji wa kigeu</a> kwa njia ya haraka na rahisi zaidi. Tunaweza kupata kanuni hizi za kuchagua kwa mlinganyo wa Euler-Cauchy kwa kuchukua <a href="#mbinu-ya-vigawo-visivyojulikana">kanuni za awali za kuchagua</a> tulizoona hapo juu na kubadilisha $x$ kwa $\ln{x}$.</p>]]> </content> </entry> <entry><title xml:lang="sw">ODE za Mstari za Daraja la Pili Zisizo Homojeni</title><link href="https://www.yunseo.kim/sw/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="am" /><published>2025-04-16T00:00:00+09:00</published> <updated>2025-04-16T00:00:00+09:00</updated> <id>https://www.yunseo.kim/sw/posts/nonhomogeneous-linear-odes-of-second-order/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Differential Equation" /> <summary xml:lang="sw">Makala hii inachunguza umbo la suluhisho la jumla la ODE za mstari za daraja la pili zisizo homojeni kwa kuzingatia uhusiano wake na suluhisho la mlinganyo homojeni unaolingana, na kuonyesha kuwepo kwa suluhisho la jumla pamoja na kutokuwepo kwa suluhisho singula.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Makala hii inachunguza umbo la suluhisho la jumla la ODE za mstari za daraja la pili zisizo homojeni kwa kuzingatia uhusiano wake na suluhisho la mlinganyo homojeni unaolingana, na kuonyesha kuwepo kwa suluhisho la jumla pamoja na kutokuwepo kwa suluhisho singula.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="kwa-muhtasari">Kwa Muhtasari</h2><blockquote class="prompt-info"><ul><li><strong>Suluhisho la jumla</strong> la ODE ya mstari ya daraja la pili isiyo homojeni $y^{\prime\prime} + p(x)y^{\prime} + q(x)y = r(x)$:<ul><li>$y(x) = y_h(x) + y_p(x)$<li>$y_h$: suluhisho la jumla la ODE homojeni $y^{\prime\prime} + p(x)y^{\prime} + q(x)y = 0$, yaani $y_h = c_1y_1 + c_2y_2$<li>$y_p$: suluhisho maalum la ODE hiyo isiyo homojeni</ul><li>Neno la mwitikio $y_p$ huamuliwa tu na ingizo $r(x)$, na kwa ODE ileile isiyo homojeni, hata kama masharti ya awali yatabadilika, $y_p$ haibadiliki. Tofauti ya suluhisho mbili maalum za ODE isiyo homojeni huwa suluhisho la ODE homojeni unaolingana.<li><strong>Kuwepo kwa suluhisho la jumla</strong>: kama vipatanishi $p(x)$, $q(x)$ na chaguo za ingizo $r(x)$ vya ODE isiyo homojeni ni endelevu, basi suluhisho la jumla huwa lipo daima<li><strong>Kutokuwepo kwa suluhisho singula</strong>: suluhisho la jumla linajumuisha suluhisho zote za mlinganyo (yaani, hakuna suluhisho singula)</ul></blockquote><h2 id="maarifa-ya-awali">Maarifa ya Awali</h2><ul><li><a href="/sw/posts/homogeneous-linear-odes-of-second-order/">ODE za Mstari Homojeni za Daraja la Pili</a><li><a href="/sw/posts/wronskian-existence-and-uniqueness-of-solutions/">Wronskian, kuwepo na upekee wa suluhisho</a></ul><h2 id="suluhisho-la-jumla-na-suluhisho-maalum-la-ode-za-mstari-zisizo-homojeni-za-daraja-la-pili">Suluhisho la jumla na suluhisho maalum la ODE za mstari zisizo homojeni za daraja la pili</h2><p>Fikiria ODE ya mstari ya daraja la pili isiyo homojeni</p>\[y^{\prime\prime} + p(x)y^{\prime} + q(x)y = r(x) \label{eqn:nonhomogeneous_linear_ode}\tag{1}\]<p>ambapo $r(x) \not\equiv 0$. Kwenye kipindi wazi $I$, <strong>suluhisho la jumla</strong> la mlinganyo ($\ref{eqn:nonhomogeneous_linear_ode}$) lina umbo la jumla ya suluhisho la jumla $y_h = c_1y_1 + c_2y_2$ la ODE homojeni linalolingana na ODE hii isiyo homojeni,</p>\[y^{\prime\prime} + p(x)y^{\prime} + q(x)y = 0 \label{eqn:homogeneous_linear_ode}\tag{2}\]<p>na suluhisho maalum $y_p$ la mlinganyo ($\ref{eqn:nonhomogeneous_linear_ode}$),</p>\[y(x) = y_h(x) + y_p(x) \label{eqn:general_sol}\tag{3}\]<p>Aidha, <strong>suluhisho maalum</strong> la mlinganyo ($\ref{eqn:nonhomogeneous_linear_ode}$) kwenye kipindi $I$ ni suluhisho linalopatikana kutoka kwenye fomula ($\ref{eqn:general_sol}$) kwa kuwapa thamani mahususi vipengele vya kiholela $c_1$ na $c_2$ vya $y_h$.</p><p>Yaani, tukiongeza kwenye ODE homojeni ($\ref{eqn:homogeneous_linear_ode}$) ingizo $r(x)$ linalotegemea tu kigeu huru $x$, basi neno linalolingana $y_p$ huongezwa kwenye mwitikio. Neno hili la ziada la mwitikio $y_p$ huamuliwa na ingizo $r(x)$ pekee, bila kutegemea masharti ya awali. Kama tutakavyoona baadaye, tukichukua tofauti ya suluhisho zozote mbili $y_1$ na $y_2$ za mlinganyo ($\ref{eqn:nonhomogeneous_linear_ode}$) (yaani, tofauti ya suluhisho mbili maalum zinazolingana na masharti mawili tofauti ya awali), sehemu ya $y_p$ ambayo haitegemei masharti ya awali hufutika na kubaki tu tofauti ya ${y_h}_1$ na ${y_h}_2$, ambayo kwa <a href="/sw/posts/homogeneous-linear-odes-of-second-order/#kanuni-ya-superposition">kanuni ya superposition</a> huwa suluhisho la mlinganyo ($\ref{eqn:homogeneous_linear_ode}$).</p><h2 id="uhusiano-kati-ya-suluhisho-za-ode-isiyo-homojeni-na-suluhisho-za-ode-homojeni-inayolingana">Uhusiano kati ya suluhisho za ODE isiyo homojeni na suluhisho za ODE homojeni inayolingana</h2><blockquote class="prompt-info"><p><strong>Nadharia 1: Uhusiano kati ya suluhisho za ODE isiyo homojeni ($\ref{eqn:nonhomogeneous_linear_ode}$) na ODE homojeni ($\ref{eqn:homogeneous_linear_ode}$)</strong><br /> <strong>(a)</strong> Kwenye kipindi wazi $I$, jumla ya suluhisho $y$ la ODE isiyo homojeni ($\ref{eqn:nonhomogeneous_linear_ode}$) na suluhisho $\tilde{y}$ la ODE homojeni ($\ref{eqn:homogeneous_linear_ode}$) ni suluhisho la mlinganyo ($\ref{eqn:nonhomogeneous_linear_ode}$) kwenye kipindi $I$. Hasa, fomula ($\ref{eqn:general_sol}$) ni suluhisho la mlinganyo ($\ref{eqn:nonhomogeneous_linear_ode}$) kwenye kipindi $I$.<br /> <strong>(b)</strong> Tofauti ya suluhisho zozote mbili za ODE isiyo homojeni ($\ref{eqn:nonhomogeneous_linear_ode}$) kwenye kipindi $I$ ni suluhisho la ODE homojeni ($\ref{eqn:homogeneous_linear_ode}$) kwenye kipindi $I$.</p></blockquote><h3 id="uthibitisho">Uthibitisho</h3><h4 id="a">(a)</h4><p>Tuweke upande wa kushoto wa milinganyo ($\ref{eqn:nonhomogeneous_linear_ode}$) na ($\ref{eqn:homogeneous_linear_ode}$) kama $L[y]$. Basi kwa suluhisho yoyote $y$ ya ($\ref{eqn:nonhomogeneous_linear_ode}$) na suluhisho yoyote $\tilde{y}$ ya ($\ref{eqn:homogeneous_linear_ode}$) kwenye kipindi $I$, yafuatayo hutimia:</p>\[L[y + \tilde{y}] = L[y] + L[\tilde{y}] = r + 0 = r.\]<h4 id="b">(b)</h4><p>Kwa suluhisho zozote mbili $y$ na $y^*$ za ($\ref{eqn:nonhomogeneous_linear_ode}$) kwenye kipindi $I$, yafuatayo hutimia:</p>\[L[y - y^*] = L[y] - L[y^*] = r - r = 0.\ \blacksquare\]<h2 id="suluhisho-la-jumla-la-ode-isiyo-homojeni-linajumuisha-suluhisho-zote">Suluhisho la jumla la ODE isiyo homojeni linajumuisha suluhisho zote</h2><p>Kwa ODE homojeni ($\ref{eqn:homogeneous_linear_ode}$), <a href="/sw/posts/wronskian-existence-and-uniqueness-of-solutions/#suluhisho-la-jumla-linajumuisha-suluhisho-zote">tunajua kuwa suluhisho la jumla linajumuisha suluhisho zote</a>. Tuonyeshe kuwa jambo hilo hilo linatumika pia kwa ODE isiyo homojeni ($\ref{eqn:nonhomogeneous_linear_ode}$).</p><blockquote class="prompt-info"><p><strong>Nadharia 2: Suluhisho la jumla la ODE isiyo homojeni linajumuisha suluhisho zote</strong><br /> Ikiwa vipatanishi $p(x)$, $q(x)$ na chaguo la ingizo $r(x)$ vya mlinganyo ($\ref{eqn:nonhomogeneous_linear_ode}$) ni endelevu kwenye kipindi wazi $I$, basi kila suluhisho la ($\ref{eqn:nonhomogeneous_linear_ode}$) kwenye kipindi $I$ linaweza kupatikana kwa kuchagua thamani zinazofaa za vipengele vya kiholela $c_1$ na $c_2$ katika $y_h$ ya suluhisho la jumla ($\ref{eqn:general_sol}$) la ($\ref{eqn:nonhomogeneous_linear_ode}$) kwenye kipindi $I$.</p></blockquote><h3 id="uthibitisho-1">Uthibitisho</h3><p>Chukua $y^*$ kuwa suluhisho fulani la mlinganyo ($\ref{eqn:nonhomogeneous_linear_ode}$) kwenye $I$, na $x_0$ iwe nukta fulani katika kipindi $I$. Kwa <a href="/sw/posts/wronskian-existence-and-uniqueness-of-solutions/#kuwepo-kwa-suluhisho-la-jumla">nadharia ya kuwepo kwa suluhisho la jumla ya ODE homojeni yenye vipatanishi vinavyobadilika na endelevu</a>, $y_h = c_1y_1 + c_2y_2$ ipo; na kwa <strong>mbinu ya mabadiliko ya vigezo (method of variation of parameters)</strong> ambayo tutaijifunza baadaye, $y_p$ pia ipo. Hivyo suluhisho la jumla ($\ref{eqn:general_sol}$) la mlinganyo ($\ref{eqn:nonhomogeneous_linear_ode}$) lipo kwenye kipindi $I$. Sasa, kwa Nadharia <a href="#uhusiano-kati-ya-suluhisho-za-ode-isiyo-homojeni-na-suluhisho-za-ode-homojeni-inayolingana">1(b)</a> tuliyoithibitisha hapo juu, $Y = y^* - y_p$ ni suluhisho la ODE homojeni ($\ref{eqn:homogeneous_linear_ode}$) kwenye kipindi $I$, na katika $x_0$</p>\[\begin{gather*} Y(x_0) = y^*(x_0) - y_p(x_0) \\ Y^{\prime}(x_0) = {y^*}^{\prime}(x_0) - y_p^{\prime}(x_0) \end{gather*}\]<p>Kwa <a href="/sw/posts/wronskian-existence-and-uniqueness-of-solutions/#nadharia-ya-kuwepo-na-upekee-wa-suluhisho-la-tatizo-la-thamani-ya-awali">nadharia ya kuwepo na upekee wa suluhisho la tatizo la thamani ya awali</a>, kuna kwa upekee suluhisho maalum $Y$ la ODE homojeni ($\ref{eqn:homogeneous_linear_ode}$) kwenye kipindi $I$ linaloweza kupatikana kwa kuchagua thamani zinazofaa za $c_1$, $c_2$ katika $y_h$ kwa masharti ya awali yaliyo juu. Kwa kuwa $y^* = Y + y_p$, tumeonyesha kwamba suluhisho yoyote maalum $y^*$ ya ODE isiyo homojeni ($\ref{eqn:nonhomogeneous_linear_ode}$) inaweza kupatikana kutoka kwenye suluhisho la jumla ($\ref{eqn:general_sol}$). $\blacksquare$</p>]]> </content> </entry> <entry><title xml:lang="sw">The Wronskian, Existence and Uniqueness of Solutions</title><link href="https://www.yunseo.kim/sw/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="am" /><published>2025-04-06T00:00:00+09:00</published> <updated>2025-07-11T21:22:11+09:00</updated> <id>https://www.yunseo.kim/sw/posts/wronskian-existence-and-uniqueness-of-solutions/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Differential Equation" /> <summary xml:lang="sw">Explore the existence and uniqueness of solutions for second-order homogeneous linear ODEs with continuous variable coefficients. Learn to use the Wronskian to test for linear independence and see why these equations always have a general solution that encompasses all possible solutions.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Explore the existence and uniqueness of solutions for second-order homogeneous linear ODEs with continuous variable coefficients. Learn to use the Wronskian to test for linear independence and see why these equations always have a general solution that encompasses all possible solutions.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><p>For a second-order homogeneous linear ordinary differential equation with continuous variable coefficients $p$ and $q$ on an interval $I$</p>\[y^{\prime\prime} + p(x)y^{\prime} + q(x)y = 0\]<p>and initial conditions</p>\[y(x_0)=K_0, \qquad y^{\prime}(x_0)=K_1\]<p>the following four theorems hold.</p><ol><li><strong>Existence and Uniqueness Theorem for Initial Value Problems</strong>: The initial value problem consisting of the given equation and initial conditions has a unique solution $y(x)$ on the interval $I$.<li><strong>Test for Linear Dependence/Independence using the Wronskian</strong>: For two solutions $y_1$ and $y_2$ of the equation, if there exists an $x_0$ in the interval $I$ where the <strong>Wronskian</strong> $W(y_1, y_2) = y_1y_2^{\prime} - y_2y_1^{\prime}$ is $0$, then the two solutions are linearly dependent. Furthermore, if there exists an $x_1$ in the interval $I$ where $W\neq 0$, then the two solutions are linearly independent.<li><strong>Existence of a General Solution</strong>: The given equation has a general solution on the interval $I$.<li><strong>Nonexistence of Singular Solutions</strong>: This general solution includes all solutions of the equation (i.e., no singular solutions exist).</ol></blockquote><h2 id="prerequisites">Prerequisites</h2><ul><li><a href="/sw/posts/Solution-of-First-Order-Linear-ODE/">Solution of First-Order Linear ODEs</a><li><a href="/sw/posts/homogeneous-linear-odes-of-second-order/">Homogeneous Linear ODEs of Second Order</a><li><a href="/sw/posts/homogeneous-linear-odes-with-constant-coefficients/">Homogeneous Linear ODEs with Constant Coefficients</a><li><a href="/sw/posts/euler-cauchy-equation/">Euler-Cauchy Equation</a><li>Inverse Matrix, Singular Matrix, and Determinant</ul><h2 id="homogeneous-linear-odes-with-continuous-variable-coefficients">Homogeneous Linear ODEs with Continuous Variable Coefficients</h2><p>Previously, we examined the general solutions of <a href="/sw/posts/homogeneous-linear-odes-with-constant-coefficients/">Homogeneous Linear ODEs with Constant Coefficients</a> and the <a href="/sw/posts/euler-cauchy-equation/">Euler-Cauchy Equation</a>. In this article, we extend the discussion to a more general case: a second-order homogeneous linear ordinary differential equation with arbitrary continuous <strong>variable coefficients</strong> $p$ and $q$.</p>\[y^{\prime\prime} + p(x)y^{\prime} + q(x)y = 0 \label{eqn:homogeneous_linear_ode_with_var_coefficients}\tag{1}\]<p>We will investigate the existence and form of the general solution for this equation. Additionally, we will explore the uniqueness of the solution to the <a href="/sw/posts/homogeneous-linear-odes-of-second-order/#initial-value-problem-and-initial-conditions">Initial Value Problem</a> composed of the ODE ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) and the following two initial conditions:</p>\[y(x_0)=K_0, \qquad y^{\prime}(x_0)=K_1 \label{eqn:initial_conditions}\tag{2}\]<p>To state the conclusion upfront, the core of this discussion is that a <u>linear</u> ordinary differential equation with continuous coefficients does not have a <em>singular solution</em> (a solution that cannot be obtained from the general solution).</p><h2 id="existence-and-uniqueness-theorem-for-initial-value-problems">Existence and Uniqueness Theorem for Initial Value Problems</h2><blockquote class="prompt-info"><p><strong>Existence and Uniqueness Theorem for Initial Value Problems</strong><br /> If $p(x)$ and $q(x)$ are continuous functions on some open interval $I$, and $x_0$ is in $I$, then the initial value problem consisting of Eqs. ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) and ($\ref{eqn:initial_conditions}$) has a unique solution $y(x)$ on the interval $I$.</p></blockquote><p>The proof of existence will not be covered here; we will only look at the proof of uniqueness. Proving uniqueness is typically simpler than proving existence.<br /> If you are not interested in the proof, you may skip this section and proceed to <a href="#linear-dependence-and-independence-of-solutions">Linear Dependence and Independence of Solutions</a>.</p><h3 id="proof-of-uniqueness">Proof of Uniqueness</h3><p>Let’s assume that the initial value problem consisting of the ODE ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) and initial conditions ($\ref{eqn:initial_conditions}$) has two solutions, $y_1(x)$ and $y_2(x)$, on the interval $I$. If we can show that their difference</p>\[y(x) = y_1(x) - y_2(x)\]<p>is identically zero on the interval $I$, this implies that $y_1 \equiv y_2$ on $I$, which means the solution is unique.</p><p>Since Eq. ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) is a homogeneous linear ODE, the linear combination $y$ of $y_1$ and $y_2$ is also a solution to the equation on $I$. Since $y_1$ and $y_2$ satisfy the same initial conditions ($\ref{eqn:initial_conditions}$), $y$ satisfies the conditions</p>\[\begin{align*} &amp; y(x_0) = y_1(x_0) - y_2(x_0) = 0, \\ &amp; y^{\prime}(x_0) = y_1^{\prime}(x_0) - y_2^{\prime}(x_0) = 0 \end{align*} \label{eqn:initial_conditions_*}\tag{3}\]<p>Now, consider the function</p>\[z(x) = y(x)^2 + y^{\prime}(x)^2\]<p>and its derivative</p>\[z^{\prime} = 2yy^{\prime} + 2y^{\prime}y^{\prime\prime}\]<p>From the ODE, we have</p>\[y^{\prime\prime} = -py^{\prime} - qy\]<p>Substituting this into the expression for $z^{\prime}$ gives</p>\[z^{\prime} = 2yy^{\prime} - 2p{y^{\prime}}^2 - 2qyy^{\prime} \label{eqn:z_prime}\tag{4}\]<p>Now, since $y$ and $y^{\prime}$ are real,</p>\[(y\pm y^{\prime})^2 = y^2 \pm 2yy^{\prime} + {y^{\prime}}^2 \geq 0\]<p>From this and the definition of $z$, we can derive two inequalities:</p>\[(a)\ 2yy^{\prime} \leq y^2 + {y^{\prime}}^2 = z, \qquad (b)\ 2yy^{\prime} \geq -(y^2 + {y^{\prime}}^2) = -z \label{eqn:inequalities}\tag{5}\]<table><tbody><tr><td>From these two inequalities, we know that $<td>2yy^{\prime}<td>\leq z$. Thus, for the last term in Eq. ($\ref{eqn:z_prime}$), the following inequality holds:</table>\[\pm2qyy^{\prime} \leq |\pm 2qyy^{\prime}| = |q||2yy^{\prime}| \leq |q|z.\]<table><tbody><tr><td>Using this result, along with $-p \leq<td>p<td>$, and applying inequality ($\ref{eqn:inequalities}$a) to the term $2yy^{\prime}$ in Eq. ($\ref{eqn:z_prime}$), we get</table>\[z^{\prime} \leq z + 2|p|{y^{\prime}}^2 + |q|z\]<p>Since ${y^{\prime}}^2 \leq y^2 + {y^{\prime}}^2 = z$, this leads to</p>\[z^{\prime} \leq (1 + 2|p| + |q|)z\]<table><tbody><tr><td>Letting the function in the parenthesis be $h = 1 + 2<td>p<td>+<td>q<td>$, we have</table>\[z^{\prime} \leq hz \quad \forall x \in I \label{eqn:inequality_6a}\tag{6a}\]<p>In the same way, from Eqs. ($\ref{eqn:z_prime}$) and ($\ref{eqn:inequalities}$), we get</p>\[\begin{align*} -z^{\prime} &amp;= -2yy^{\prime} + 2p{y^{\prime}}^2 + 2qyy^{\prime} \\ &amp;\leq z + 2|p|z + |q|z = hz \end{align*} \label{eqn:inequality_6b}\tag{6b}\]<p>These two inequalities, ($\ref{eqn:inequality_6a}$) and ($\ref{eqn:inequality_6b}$), are equivalent to the following inequalities:</p>\[z^{\prime} - hz \leq 0, \qquad z^{\prime} + hz \geq 0 \label{eqn:inequalities_7}\tag{7}\]<p>The <a href="/sw/posts/Solution-of-First-Order-Linear-ODE/#nonhomogeneous-linear-ordinary-differential-equations">integrating factors</a> for the left-hand sides of these two expressions are</p>\[F_1 = e^{-\int h(x)\ dx} \qquad \text{and} \qquad F_2 = e^{\int h(x)\ dx}\]<p>Since $h$ is continuous, the indefinite integral $\int h(x)\ dx$ exists. As $F_1$ and $F_2$ are positive, from ($\ref{eqn:inequalities_7}$) we obtain</p>\[F_1(z^{\prime} - hz) = (F_1 z)^{\prime} \leq 0, \qquad F_2(z^{\prime} + hz) = (F_2 z)^{\prime} \geq 0\]<p>This means that on the interval $I$, $F_1 z$ is non-increasing and $F_2 z$ is non-decreasing. By Eq. ($\ref{eqn:initial_conditions_*}$), we have $z(x_0) = 0$, so</p>\[\begin{cases} \left(F_1 z \geq (F_1 z)_{x_0} = 0\right)\ \&amp; \ \left(F_2 z \leq (F_2 z)_{x_0} = 0\right) &amp; (x \leq x_0) \\ \left(F_1 z \leq (F_1 z)_{x_0} = 0\right)\ \&amp; \ \left(F_2 z \geq (F_2 z)_{x_0} = 0\right) &amp; (x \geq x_0) \end{cases}\]<p>Finally, dividing both sides of the inequalities by the positive functions $F_1$ and $F_2$, we can show the uniqueness of the solution as follows:</p>\[(z \leq 0) \ \&amp; \ (z \geq 0) \quad \forall x \in I\] \[z = y^2 + {y^{\prime}}^2 = 0 \quad \forall x \in I\] \[\therefore y \equiv y_1 - y_2 \equiv 0 \quad \forall x \in I. \ \blacksquare\]<h2 id="linear-dependence-and-independence-of-solutions">Linear Dependence and Independence of Solutions</h2><p>Let’s briefly recall what we covered in <a href="/sw/posts/homogeneous-linear-odes-of-second-order/#basis-and-general-solution">Second-Order Homogeneous Linear ODEs</a>. The general solution on an open interval $I$ is constructed from a <strong>basis</strong> $y_1$, $y_2$ on $I$, which is a pair of linearly independent solutions. Here, $y_1$ and $y_2$ being <strong>linearly independent</strong> on an interval $I$ means that for all $x$ in the interval, the following holds:</p>\[k_1y_1(x) + k_2y_2(x) = 0 \Leftrightarrow k_1=0\text{ and }k_2=0 \label{eqn:linearly_independent}\tag{8}\]<p>If the above is not satisfied, and $k_1y_1(x) + k_2y_2(x) = 0$ holds for at least one non-zero $k_1$ or $k_2$, then $y_1$ and $y_2$ are <strong>linearly dependent</strong> on the interval $I$. In this case, for all $x$ in the interval $I$,</p>\[\text{(a) } y_1 = ky_2 \quad \text{or} \quad \text{(b) } y_2 = ly_1 \label{eqn:linearly_dependent}\tag{9}\]<p>which means $y_1$ and $y_2$ are proportional.</p><p>Now let’s look at the following test for linear independence/dependence of solutions.</p><blockquote class="prompt-info"><p><strong>Test for Linear Dependence/Independence using the Wronskian</strong><br /> <strong>i.</strong> If the ODE ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) has continuous coefficients $p(x)$ and $q(x)$ on an open interval $I$, then a necessary and sufficient condition for two solutions $y_1$ and $y_2$ of Eq. ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) to be linearly dependent on $I$ is that their <em>Wronski determinant</em>, or simply <strong>Wronskian</strong>, which is the following determinant,</p>\[W(y_1, y_2) = \begin{vmatrix} y_1 &amp; y_2 \\ y_1^{\prime} &amp; y_2^{\prime} \\ \end{vmatrix} = y_1y_2^{\prime} - y_2y_1^{\prime} \label{eqn:wronskian}\tag{10}\]<p>is zero at some $x_0$ in the interval $I$.</p>\[\exists x_0 \in I: W(x_0)=0 \iff y_1 \text{ and } y_2 \text{ are linearly dependent}\]<p><strong>ii.</strong> If $W=0$ at a point $x=x_0$ in the interval $I$, then $W=0$ for all $x$ in the interval $I$.</p>\[\exists x_0 \in I: W(x_0)=0 \implies \forall x \in I: W(x)=0\]<p>In other words, if there exists an $x_1$ in the interval $I$ such that $W\neq 0$, then $y_1$ and $y_2$ are linearly independent on that interval $I$.</p>\[\begin{align*} \exists x_1 \in I: W(x_1)\neq 0 &amp;\implies \forall x \in I: W(x)\neq 0 \\ &amp;\implies y_1 \text{ and } y_2 \text{ are linearly independent} \end{align*}\]</blockquote><blockquote class="prompt-tip"><p>The Wronskian was first introduced by the Polish mathematician Józef Maria Hoene-Wroński and was named after him posthumously in 11882 HE by the Scottish mathematician Sir Thomas Muir.</p></blockquote><h3 id="proof">Proof</h3><h4 id="i-a">i. (a)</h4><p>Let $y_1$ and $y_2$ be linearly dependent on the interval $I$. Then, either Eq. ($\ref{eqn:linearly_dependent}$a) or ($\ref{eqn:linearly_dependent}$b) holds on $I$. If Eq. ($\ref{eqn:linearly_dependent}$a) holds, then</p>\[W(y_1, y_2) = y_1y_2^{\prime} - y_2y_1^{\prime} = ky_2y_2^{\prime} - y_2(ky_2^{\prime}) = 0\]<p>Similarly, if Eq. ($\ref{eqn:linearly_dependent}$b) holds, then</p>\[W(y_1, y_2) = y_1y_2^{\prime} - y_2y_1^{\prime} = y_1(ly_1^{\prime}) - ly_1y_1^{\prime} = 0\]<p>Thus, we can confirm that the Wronskian $W(y_1, y_2)=0$ <u>for all $x$ in the interval $I$</u>.</p><h4 id="i-b">i. (b)</h4><p>Conversely, suppose that $W(y_1, y_2)=0$ for some $x = x_0$. We will show that $y_1$ and $y_2$ are linearly dependent on the interval $I$. Consider the system of linear equations for the unknowns $k_1$, $k_2$:</p>\[\begin{gather*} k_1y_1(x_0) + k_2y_2(x_0) = 0 \\ k_1y_1^{\prime}(x_0) + k_2y_2^{\prime}(x_0) = 0 \end{gather*} \label{eqn:linear_system}\tag{11}\]<p>This can be expressed in the form of a vector equation:</p>\[\left[\begin{matrix} y_1(x_0) &amp; y_2(x_0) \\ y_1^{\prime}(x_0) &amp; y_2^{\prime}(x_0) \end{matrix}\right] \left[\begin{matrix} k_1 \\ k_2 \end{matrix}\right] = 0 \label{eqn:vector_equation}\tag{12}\]<p>The coefficient matrix of this vector equation is</p>\[A = \left[\begin{matrix} y_1(x_0) &amp; y_2(x_0) \\ y_1^{\prime}(x_0) &amp; y_2^{\prime}(x_0) \end{matrix}\right]\]<p>and the determinant of this matrix is $W(y_1(x_0), y_2(x_0))$. Since $\det(A) = W=0$, $A$ is a <strong>singular matrix</strong> that does not have an <strong>inverse matrix</strong>. Therefore, the system of equations ($\ref{eqn:linear_system}$) has a non-trivial solution $(c_1, c_2)$ other than the zero vector $(0,0)$, where at least one of $k_1$ and $k_2$ is not zero. Now, let’s introduce the function</p>\[y(x) = c_1y_1(x) + c_2y_2(x)\]<p>Since Eq. ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) is homogeneous and linear, by the <a href="/sw/posts/homogeneous-linear-odes-of-second-order/#superposition-principle">Superposition Principle</a>, this function is a solution of ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) on the interval $I$. From Eq. ($\ref{eqn:linear_system}$), we can see that this solution satisfies the initial conditions $y(x_0)=0$, $y^{\prime}(x_0)=0$.</p><p>Meanwhile, there exists a trivial solution $y^* \equiv 0$ that satisfies the same initial conditions $y^*(x_0)=0$, ${y^*}^{\prime}(x_0)=0$. Since the coefficients $p$ and $q$ of Eq. ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) are continuous, the uniqueness of the solution is guaranteed by the <a href="#existence-and-uniqueness-theorem-for-initial-value-problems">Existence and Uniqueness Theorem for Initial Value Problems</a>. Therefore, $y \equiv y^*$. That is, on the interval $I$,</p>\[c_1y_1 + c_2y_2 \equiv 0\]<p>Since at least one of $c_1$ and $c_2$ is not zero, this does not satisfy ($\ref{eqn:linearly_independent}$), which means that $y_1$ and $y_2$ are linearly dependent on the interval $I$.</p><h4 id="ii">ii.</h4><p>If $W(x_0)=0$ at some point $x_0$ in the interval $I$, then by <a href="#i-b">i.(b)</a>, $y_1$ and $y_2$ are linearly dependent on the interval $I$. Then, by <a href="#i-a">i.(a)</a>, $W\equiv 0$. Therefore, if there is even one point $x_1$ in the interval $I$ where $W(x_1)\neq 0$, then $y_1$ and $y_2$ are linearly independent. $\blacksquare$</p><h2 id="the-general-solution-includes-all-solutions">The General Solution Includes All Solutions</h2><h3 id="existence-of-a-general-solution">Existence of a General Solution</h3><blockquote class="prompt-info"><p>If $p(x)$ and $q(x)$ are continuous on an open interval $I$, then the equation ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) has a general solution on the interval $I$.</p></blockquote><h4 id="proof-1">Proof</h4><p>By the <a href="#existence-and-uniqueness-theorem-for-initial-value-problems">Existence and Uniqueness Theorem for Initial Value Problems</a>, the ODE ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) has a solution $y_1(x)$ on the interval $I$ that satisfies the initial conditions</p>\[y_1(x_0) = 1, \qquad y_1^{\prime}(x_0) = 0\]<p>and a solution $y_2(x)$ on the interval $I$ that satisfies the initial conditions</p>\[y_2(x_0) = 0, \qquad y_2^{\prime}(x_0) = 1\]<p>The Wronskian of these two solutions at $x=x_0$ has a non-zero value:</p>\[W(y_1(x_0), y_2(x_0)) = y_1(x_0)y_2^{\prime}(x_0) - y_2(x_0)y_1^{\prime}(x_0) = 1\cdot 1 - 0\cdot 0 = 1\]<p>Therefore, by the <a href="#linear-dependence-and-independence-of-solutions">Test for Linear Dependence/Independence using the Wronskian</a>, $y_1$ and $y_2$ are linearly independent on the interval $I$. Thus, these two solutions form a basis of solutions for Eq. ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) on the interval $I$, and a general solution $y = c_1y_1 + c_2y_2$ with arbitrary constants $c_1$, $c_2$ must exist on the interval $I$. $\blacksquare$</p><h3 id="nonexistence-of-singular-solutions">Nonexistence of Singular Solutions</h3><blockquote class="prompt-info"><p>If the ODE ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) has continuous coefficients $p(x)$ and $q(x)$ on some open interval $I$, then every solution $y=Y(x)$ of Eq. ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) on the interval $I$ is of the form</p>\[Y(x) = C_1y_1(x) + C_2y_2(x) \label{eqn:particular_solution}\tag{13}\]<p>where $y_1$, $y_2$ form a basis of solutions for Eq. ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) on the interval $I$, and $C_1$, $C_2$ are suitable constants.<br /> That is, Eq. ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) does not have a <strong>singular solution</strong>, which is a solution that cannot be obtained from the general solution.</p></blockquote><h4 id="proof-2">Proof</h4><p>Let $y=Y(x)$ be any solution of Eq. ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) on the interval $I$. Now, by the <a href="#existence-of-a-general-solution">Existence of a General Solution theorem</a>, the ODE ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) has a general solution on the interval $I$:</p>\[y(x) = c_1y_1(x) + c_2y_2(x) \label{eqn:general_solution}\tag{14}\]<p>Now we must show that for any $Y(x)$, there exist constants $c_1$, $c_2$ such that $y(x)=Y(x)$ on the interval $I$. Let’s first show that we can find values for $c_1$, $c_2$ such that for an arbitrary $x_0$ in $I$, we have $y(x_0)=Y(x_0)$ and $y^{\prime}(x_0)=Y^{\prime}(x_0)$. From Eq. ($\ref{eqn:general_solution}$), we get</p>\[\begin{gather*} \left[\begin{matrix} y_1(x_0) &amp; y_2(x_0) \\ y_1^{\prime}(x_0) &amp; y_2^{\prime}(x_0) \end{matrix}\right] \left[\begin{matrix} c_1 \\ c_2 \end{matrix}\right] = \left[\begin{matrix} Y(x_0) \\ Y^{\prime}(x_0) \end{matrix}\right] \end{gather*} \label{eqn:vector_equation_2}\tag{15}\]<p>Since $y_1$ and $y_2$ form a basis, the determinant of the coefficient matrix, which is the Wronskian $W(y_1(x_0), y_2(x_0))$, is non-zero. Therefore, Eq. ($\ref{eqn:vector_equation_2}$) can be solved for $c_1$ and $c_2$. Let the solution be $(c_1, c_2) = (C_1, C_2)$. Substituting this into Eq. ($\ref{eqn:general_solution}$) gives the following particular solution:</p>\[y^*(x) = C_1y_1(x) + C_2y_2(x).\]<p>Since $C_1$, $C_2$ are the solution to Eq. ($\ref{eqn:vector_equation_2}$),</p>\[y^*(x_0) = Y(x_0), \qquad {y^*}^{\prime}(x_0) = Y^{\prime}(x_0)\]<p>By the uniqueness part of the <a href="#existence-and-uniqueness-theorem-for-initial-value-problems">Existence and Uniqueness Theorem for Initial Value Problems</a>, we have $y^* \equiv Y$ for all $x$ in the interval $I$. $\blacksquare$</p>]]> </content> </entry> <entry><title xml:lang="sw">Mlinganyo wa Euler-Cauchy</title><link href="https://www.yunseo.kim/sw/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="am" /><published>2025-03-28T00:00:00+09:00</published> <updated>2025-03-28T00:00:00+09:00</updated> <id>https://www.yunseo.kim/sw/posts/euler-cauchy-equation/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Differential Equation" /> <summary xml:lang="sw">Kwa kutegemea ishara ya diskriminanti ya mlinganyo saidizi, tunaangalia maumbo ya suluhisho la jumla la mlinganyo wa Euler-Cauchy katika kila hali.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Kwa kutegemea ishara ya diskriminanti ya mlinganyo saidizi, tunaangalia maumbo ya suluhisho la jumla la mlinganyo wa Euler-Cauchy katika kila hali.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="kwa-ufupi">Kwa Ufupi</h2><blockquote class="prompt-info"><ul><li>Mlinganyo wa Euler-Cauchy: $x^2y^{\prime\prime} + axy^{\prime} + by = 0$<li><strong>Mlinganyo saidizi(auxiliary equation)</strong>: $m^2 + (a-1)m + b = 0$<li>Kulingana na ishara ya diskriminanti $(1-a)^2 - 4b$ ya mlinganyo saidizi, umbo la suluhisho la jumla linaweza kugawanywa katika hali tatu kama inavyoonyeshwa kwenye jedwali</ul><table><thead><tr><th style="text-align: center">Hali<th style="text-align: center">Mizizi ya mlinganyo saidizi<th style="text-align: center">Msingi wa suluhisho za mlinganyo wa Euler-Cauchy<th style="text-align: center">Suluhisho la jumla la mlinganyo wa Euler-Cauchy<tbody><tr><td style="text-align: center">I<td style="text-align: center">Mizizi halisi tofauti<br />$m_1$, $m_2$<td style="text-align: center">$x^{m_1}$, $x^{m_2}$<td style="text-align: center">$y = c_1 x^{m_1} + c_2 x^{m_2}$<tr><td style="text-align: center">II<td style="text-align: center">Mzizi halisi maradufu<br /> $m = \cfrac{1-a}{2}$<td style="text-align: center">$x^{(1-a)/2}$, $x^{(1-a)/2}\ln{x}$<td style="text-align: center">$y = (c_1 + c_2 \ln x)x^m$<tr><td style="text-align: center">III<td style="text-align: center">Mizizi changamani shirikishi<br /> $m_1 = \cfrac{1}{2}(1-a) + i\omega$, <br /> $m_2 = \cfrac{1}{2}(1-a) - i\omega$<td style="text-align: center">$x^{(1-a)/2}\cos{(\omega \ln{x})}$, <br /> $x^{(1-a)/2}\sin{(\omega \ln{x})}$<td style="text-align: center">$y = x^{(1-a)/2}[A\cos{(\omega \ln{x})} + B\sin{(\omega \ln{x})}]$</table></blockquote><h2 id="maarifa-ya-awali">Maarifa ya Awali</h2><ul><li><a href="/sw/posts/homogeneous-linear-odes-of-second-order/">ODE za Mstari za Homojenia za Daraja la Pili (Homogeneous Linear ODEs of Second Order)</a><li><a href="/sw/posts/homogeneous-linear-odes-with-constant-coefficients/">ODE za Mstari za Homojenia za Daraja la Pili zenye Vigawo Vya Kudumu</a><li>Fomula ya Euler</ul><h2 id="mlinganyo-saidizi-auxiliary-equation">Mlinganyo saidizi (auxiliary equation)</h2><p><strong>Mlinganyo wa Euler-Cauchy(Euler-Cauchy equation)</strong> ni mlinganyo tofauti wa kawaida wa umbo</p>\[x^2y^{\prime\prime} + axy^{\prime} + by = 0 \label{eqn:euler_cauchy_eqn}\tag{1}\]<p>ambapo $a$ na $b$ ni konstanti zilizotolewa, na $y(x)$ ni kazi isiyojulikana.</p><p>Tukibadilisha katika mlinganyo ($\ref{eqn:euler_cauchy_eqn}$)</p>\[y=x^m, \qquad y^{\prime}=mx^{m-1}, \qquad y^{\prime\prime}=m(m-1)x^{m-2}\]<p>tunapata</p>\[x^2m(m-1)x^{m-2} + axmx^{m-1} + bx^m = 0,\]<p>yaani,</p>\[[m(m-1) + am + b]x^m = 0\]<p>Kutokana na hili tunapata mlinganyo saidizi</p>\[m^2 + (a-1)m + b = 0 \label{eqn:auxiliary_eqn}\tag{2}\]<p>na sharti la lazima na la kutosha ili $y=x^m$ iwe suluhisho la mlinganyo wa Euler-Cauchy ($\ref{eqn:euler_cauchy_eqn}$) ni kwamba $m$ iwe suluhisho la mlinganyo saidizi ($\ref{eqn:auxiliary_eqn}$).</p><p>Tukitatua mlinganyo wa pili ($\ref{eqn:auxiliary_eqn}$), tunapata</p>\[\begin{align*} m_1 &amp;= \frac{1}{2}\left[(1-a) + \sqrt{(1-a)^2 - 4b} \right], \\ m_2 &amp;= \frac{1}{2}\left[(1-a) - \sqrt{(1-a)^2 - 4b} \right] \end{align*}\label{eqn:m1_and_m2}\tag{3}\]<p>na kutokana na hili kazi mbili</p>\[y_1 = x^{m_1}, \quad y_2 = x^{m_2}\]<p>zinakuwa suluhisho za mlinganyo ($\ref{eqn:euler_cauchy_eqn}$).</p><p>Kama ilivyo katika <a href="/sw/posts/homogeneous-linear-odes-with-constant-coefficients/">ODE za Mstari za Homojenia za Daraja la Pili zenye Vigawo Vya Kudumu</a>, kulingana na ishara ya diskriminanti $(1-a)^2 - 4b$ ya mlinganyo saidizi ($\ref{eqn:auxiliary_eqn}$), tunaweza kugawa hali katika tatu.</p><ul><li>$(1-a)^2 - 4b &gt; 0$: mizizi miwili halisi tofauti<li>$(1-a)^2 - 4b = 0$: mzizi halisi maradufu<li>$(1-a)^2 - 4b &lt; 0$: mizizi changamani shirikishi</ul><h2 id="umbo-la-suluhisho-la-jumla-kulingana-na-ishara-ya-diskriminanti-ya-mlinganyo-saidizi">Umbo la suluhisho la jumla kulingana na ishara ya diskriminanti ya mlinganyo saidizi</h2><h3 id="i-mizizi-miwili-halisi-tofauti-m_1-na-m_2">I. Mizizi miwili halisi tofauti $m_1$ na $m_2$</h3><p>Katika hali hii, katika kipindi chochote msingi wa suluhisho za mlinganyo ($\ref{eqn:euler_cauchy_eqn}$) ni</p>\[y_1 = x^{m_1}, \quad y_2 = x^{m_2}\]<p>na suluhisho la jumla linalolingana nayo ni</p>\[y = c_1 x^{m_1} + c_2 x^{m_2} \label{eqn:general_sol_1}\tag{4}\]<h3 id="ii-mzizi-halisi-maradufu-m--cfrac1-a2">II. Mzizi halisi maradufu $m = \cfrac{1-a}{2}$</h3><p>Iwapo $(1-a)^2 - 4b = 0$, yaani $b=\cfrac{(1-a)^2}{4}$, basi mlinganyo wa pili ($\ref{eqn:auxiliary_eqn}$) unakuwa na suluhisho moja tu, $m = m_1 = m_2 = \cfrac{1-a}{2}$, na hivyo suluhisho moja la umbo $y = x^m$ linaloweza kupatikana kutokana na hilo ni</p>\[y_1 = x^{(1-a)/2}\]<p>na mlinganyo wa Euler-Cauchy ($\ref{eqn:euler_cauchy_eqn}$) unakuwa katika umbo</p>\[y^{\prime\prime} + \frac{a}{x}y^{\prime} + \frac{(1-a)^2}{4x^2}y = 0 \label{eqn:standard_form}\tag{5}\]<p>Sasa tupate suluhisho jingine $y_2$ lililo huru kwa mstari kwa kutumia <a href="/sw/posts/homogeneous-linear-odes-of-second-order/#upunguzaji-wa-daraja-reduction-of-order">upunguzaji wa daraja(reduction of order)</a>.</p><p>Tukiweka suluhisho la pili tunalotafuta kuwa $y_2=uy_1$, tunapata</p>\[u = \int U, \qquad U = \frac{1}{y_1^2}\exp\left(-\int \frac{a}{x}\ dx \right)\]<p>Kwa kuwa $\exp \left(-\int \cfrac{a}{x}\ dx \right) = \exp (-a\ln x) = \exp(\ln{x^{-a}}) = x^{-a}$,</p>\[U = \frac{x^{-a}}{y_1^2} = \frac{x^{-a}}{x^{(1-a)}} = \frac{1}{x}\]<p>na tukifanya integra, tunapata $u = \ln x$.</p><p>Kwa hiyo $y_2 = uy_1 = y_1 \ln x$, na kwa kuwa uwiano wao si konstanti, $y_1$ na $y_2$ ni huru kwa mstari. Suluhisho la jumla linalolingana na msingi $y_1$ na $y_2$ ni</p>\[y = (c_1 + c_2 \ln x)x^m \label{eqn:general_sol_2}\tag{6}\]<h3 id="iii-mizizi-changamani-shirikishi">III. Mizizi changamani shirikishi</h3><p>Katika hali hii, suluhisho za mlinganyo saidizi ($\ref{eqn:auxiliary_eqn}$) ni $m = \cfrac{1}{2}(1-a) \pm i\sqrt{b - \frac{1}{4}(1-a)^2}$, na suluhisho mbili changamani za mlinganyo ($\ref{eqn:euler_cauchy_eqn}$) zinazolingana nazo zinaweza kuandikwa kama ifuatavyo kwa kutumia kwamba $x=e^{\ln x}$.</p>\[\begin{align*} x^{m_1} &amp;= x^{(1-a)/2 + i\sqrt{b - \frac{1}{4}(1-a)^2}} \\ &amp;= x^{(1-a)/2}(e^{\ln x})^{i\sqrt{b - \frac{1}{4}(1-a)^2}} \\ &amp;= x^{(1-a)/2}e^{i(\sqrt{b - \frac{1}{4}(1-a)^2}\ln x)}, \\ x^{m_2} &amp;= x^{(1-a)/2 - i\sqrt{b - \frac{1}{4}(1-a)^2}} \\ &amp;= x^{(1-a)/2}(e^{\ln x})^{-i\sqrt{b - \frac{1}{4}(1-a)^2}} \\ &amp;= x^{(1-a)/2}e^{i(-\sqrt{b - \frac{1}{4}(1-a)^2}\ln x)}. \end{align*} \tag{7}\]<p>Tukiweka $t=\sqrt{b - \frac{1}{4}(1-a)^2}\ln x$ na kutumia fomula ya Euler $e^{it} = \cos{t} + i\sin{t}$, tunapata</p>\[\begin{align*} x^{m_1} &amp;= x^{(1-a)/2}\left[\cos\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right) + i\sin\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right) \right], \\ x^{m_2} &amp;= x^{(1-a)/2}\left[\cos\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right) - i\sin\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right) \right] \end{align*} \tag{8}\]<p>na kutokana na hili tunapata suluhisho mbili halisi zifuatazo</p>\[\begin{align*} \frac{x^{m_1} + x^{m_2}}{2} &amp;= x^{(1-a)/2}\cos\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right), \\ \frac{x^{m_1} - x^{m_2}}{2i} &amp;= x^{(1-a)/2}\sin\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right) \end{align*} \tag{9}\]<p>Kwa kuwa uwiano wao $\cos\left(\sqrt{b - \frac{1}{4}(1-a)^2}\ln x \right)$ si konstanti, suluhisho hizi mbili ni huru kwa mstari, na kwa hiyo kwa <a href="/sw/posts/homogeneous-linear-odes-of-second-order/#kanuni-ya-superposition">kanuni ya superposition</a> zinaunda msingi wa mlinganyo wa Euler-Cauchy ($\ref{eqn:euler_cauchy_eqn}$). Kutokana na hili tunapata suluhisho la jumla halisi lifuatalo.</p>\[y = x^{(1-a)/2} \left[ A\cos\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right) + B\sin\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right) \right]. \label{eqn:general_sol_3}\tag{10}\]<p>Hata hivyo, katika mlinganyo wa Euler-Cauchy, hali ambapo mlinganyo saidizi una mizizi changamani shirikishi haina umuhimu mkubwa sana kivitendo.</p><h2 id="ubadilishaji-kuwa-ode-ya-mstari-ya-homojenia-ya-daraja-la-pili-yenye-vigawo-vya-kudumu">Ubadilishaji kuwa ODE ya mstari ya homojenia ya daraja la pili yenye vigawo vya kudumu</h2><p>Mlinganyo wa Euler-Cauchy unaweza kubadilishwa kuwa <a href="/sw/posts/homogeneous-linear-odes-with-constant-coefficients/">ODE ya mstari ya homojenia ya daraja la pili yenye vigawo vya kudumu</a> kwa kutumia ubadilishaji wa kigeu.</p><p>Tukifanya ubadilishaji $x = e^t$, tunapata</p>\[\frac{d}{dx} = \frac{1}{x}\frac{d}{dt}, \quad \frac{d^2}{dx^2} = \frac{1}{x^2}\left(\frac{d^2}{dt^2} - \frac{d}{dt} \right)\]<p>na hivyo mlinganyo wa Euler-Cauchy ($\ref{eqn:euler_cauchy_eqn}$) hubadilika kuwa ODE ya mstari ya homojenia yenye vigawo vya kudumu kwa $t$ kama ifuatavyo.</p>\[y^{\prime\prime}(t) + (a-1)y^{\prime}(t) + by(t) = 0. \label{eqn:substituted}\tag{11}\]<p>Tukitatua mlinganyo ($\ref{eqn:substituted}$) kwa $t$ kwa kutumia mbinu za <a href="/sw/posts/homogeneous-linear-odes-with-constant-coefficients/">ODE za Mstari za Homojenia za Daraja la Pili zenye Vigawo Vya Kudumu</a>, kisha tukibadilisha suluhisho tulilopata tena kuwa suluhisho kwa $x$ kwa kutumia kwamba $t = \ln{x}$, tunapata <a href="#umbo-la-suluhisho-la-jumla-kulingana-na-ishara-ya-diskriminanti-ya-mlinganyo-saidizi">matokeo yale yale tuliyoona hapo juu</a>.</p>]]> </content> </entry> <entry><title xml:lang="sw">Vigezo vya Kukagua Ukonverjensia/Utofautikaji wa Msururu</title><link href="https://www.yunseo.kim/sw/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="am" /><published>2025-03-18T00:00:00+09:00</published> <updated>2025-03-18T00:00:00+09:00</updated> <id>https://www.yunseo.kim/sw/posts/testing-for-convergence-or-divergence-of-a-series/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Calculus" /> <summary xml:lang="sw">Muhtasari wa mbinu mbalimbali za kukagua kama msururu unakonverjia au unatofautika.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Muhtasari wa mbinu mbalimbali za kukagua kama msururu unakonverjia au unatofautika.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><ul><li><strong>Kigezo cha neno la jumla ($n$th-term test for divergence)</strong>: $\lim_{n\to\infty} a_n \neq 0 \Rightarrow \text{msururu }\sum a_n \text{ unatofautika}$<li><strong>Ukonverjensia/utofautikaji wa mfululizo wa kijiometri</strong>: mfululizo wa kijiometri $\sum ar^{n-1}$:<ul><li>ukiwa na $|r| &lt; 1$ unakonverjia<li>ukiwa na $|r| \geq 1$ unatofautika</ul><li><strong>Ukonverjensia/utofautikaji wa $p$-msururu</strong>: $p$-msururu $\sum \cfrac{1}{n^p}$:<ul><li>ikiwa $p&gt;1$ unakonverjia<li>ikiwa $p\leq 1$ unatofautika</ul><li><strong>Kigezo cha ulinganishi (Comparison Test)</strong>: wakati $0 \leq a_n \leq b_n$,<ul><li>$\sum b_n &lt; \infty \ \Rightarrow \ \sum a_n &lt; \infty$<li>$\sum a_n = \infty \ \Rightarrow \ \sum b_n = \infty$</ul><li><strong>Kigezo cha ulinganishi wa kikomo (Limit Comparison Test)</strong>: ikiwa $\lim_{n\to\infty} \frac{a_n}{b_n} = c \text{ (}c\text{ ni namba chanya yenye kikomo)}$, basi misururu miwili $\sum a_n$ na $\sum b_n$ aidha yote miwili inakonverjia au yote miwili inatofautika<li>Kwa msururu wa viungo chanya $\sum a_n$ na namba chanya $\epsilon &lt; 1$,<ul><li>ikiwa kwa kila $n$, $\sqrt[n]{a_n}&lt; 1-\epsilon$, basi msururu $\sum a_n$ unakonverjia<li>ikiwa kwa kila $n$, $\sqrt[n]{a_n}&gt; 1+\epsilon$, basi msururu $\sum a_n$ unatofautika</ul><li><strong>Kigezo cha mzizi (Root Test)</strong>: kwa msururu wa viungo chanya $\sum a_n$, ikiwa kikomo $\lim_{n\to\infty} \sqrt[n]{a_n} =: r$ kipo,<ul><li>ikiwa $r&lt;1$, msururu $\sum a_n$ unakonverjia<li>ikiwa $r&gt;1$, msururu $\sum a_n$ unatofautika</ul><li><strong>Kigezo cha uwiano (Ratio Test)</strong>: kwa mfuatano chanya $(a_n)$ na $0 &lt; r &lt; 1$<ul><li>ikiwa kwa kila $n$, $a_{n+1}/a_n \leq r$, basi msururu $\sum a_n$ unakonverjia<li>ikiwa kwa kila $n$, $a_{n+1}/a_n \geq 1$, basi msururu $\sum a_n$ unatofautika</ul><li>Katika mfuatano chanya $(a_n)$, tukidhania kuwa kikomo $\rho := \lim_{n\to\infty} \cfrac{a_{n+1}}{a_n}$ kipo,<ul><li>ikiwa $\rho &lt; 1$, basi msururu $\sum a_n$ unakonverjia<li>ikiwa $\rho &gt; 1$, basi msururu $\sum a_n$ unatofautika</ul><li><strong>Kigezo cha jumuisho (Integral Test)</strong>: ikiwa funksi endelevu $f: \left[1,\infty \right) \rightarrow \mathbb{R}$ inapungua na daima $f(x)&gt;0$, basi sharti la lazima na la kutosha kwa msururu $\sum f(n)$ kukonverjia ni kwamba jumuisho $\int_1^\infty f(x)\ dx := \lim_{b\to\infty} \int_1^b f(x)\ dx$ likonverjie<li><strong>Kigezo cha msururu mbadala (Alternating Series Test)</strong>: msururu mbadala $\sum a_n$ unakonverjia iwapo masharti yafuatayo yanatimizwa<ol><li>Kwa kila $n$, $a_n$ na $a_{n+1}$ zina alama tofauti<li>Kwa kila $n$, $|a_n| \geq |a_{n+1}|$<li>$\lim_{n\to\infty} a_n = 0$</ol><li>Msururu unaokonverjia kiabsolute unakonverjia. Kinyume chake si kweli.</ul></blockquote><h2 id="yanayohitajika-kabla">Yanayohitajika kabla</h2><ul><li><a href="/sw/posts/sequences-and-series/">Mfuatano na Misururu</a></ul><h2 id="utangulizi">Utangulizi</h2><p>Hapo awali katika <a href="/sw/posts/sequences-and-series/#ukonverjensia-na-utofautikaji-wa-misururu">Mfuatano na Misururu</a>, tuliangalia ufafanuzi wa ukonverjensia na utofautikaji wa misururu. Katika makala hii, tunapanga mbinu mbalimbali zinazoweza kutumika kukagua ukonverjensia/utofautikaji wa msururu. Kwa jumla, kukagua ukonverjensia/utofautikaji wa msururu ni rahisi zaidi kuliko kupata kwa usahihi jumla ya msururu huo.</p><h2 id="kigezo-cha-neno-la-jumla">Kigezo cha neno la jumla</h2><p>Kwa msururu $\sum a_n$, tunaita $a_n$ <strong>neno la jumla</strong> la msururu huo.</p><p>Kwa nadharia ifuatayo, tunaweza kujua kwa urahisi kuwa baadhi ya misururu hutofautika kwa dhahiri; kwa hiyo, unapokagua ukonverjensia/utofautikaji wa msururu wowote, ni jambo la busara kuangalia hili kwanza ili kuepuka kupoteza muda.</p><blockquote class="prompt-info"><p><strong>Kigezo cha neno la jumla ($n$th-term test for divergence)</strong><br /> Ikiwa msururu $\sum a_n$ unakonverjia, basi</p>\[\lim_{n\to\infty} a_n=0\]<p>yaani,</p>\[\lim_{n\to\infty} a_n \neq 0 \Rightarrow \text{msururu }\sum a_n \text{ unatofautika}\]<p>ni kweli.</p></blockquote><h3 id="uthibitisho">Uthibitisho</h3><p>Tuchukulie jumla ya msururu unaokonverjia $\sum a_n$ kuwa $l$, na jumla ya viungo vya kwanza hadi la $n$ iwe</p>\[s_n := a_1 + a_2 + \cdots + a_n\]<p>basi</p>\[\forall \epsilon &gt; 0,\, \exists N \in \mathbb{N}\ (n &gt; N \Rightarrow |s_n - l| &lt; \epsilon).\]<p>Kwa hiyo, kwa $n$ kubwa vya kutosha ($&gt;N$),</p>\[|a_n| = |s_n - s_{n-1}| = |(s_n - l) - (s_{n-1} - l)| \leq |s_n - l| + |s_{n-1} - l| \leq \epsilon + \epsilon = 2\epsilon\]<p>na hivyo, kutokana na ufafanuzi wa ukonverjensia wa mfuatano,</p>\[\lim_{n\to\infty} |a_n| = 0. \quad \blacksquare\]<h3 id="tahadhari">Tahadhari</h3><p>Kinyume cha nadharia hii kwa ujumla si kweli. Mfano mashuhuri unaoonyesha hili ni <strong>msururu wa harmoniki (harmonic series)</strong>.</p><p>Msururu wa harmoniki ni msururu unaotokana na mfuatano ambao viungo vyake ni vipatanishi vya <strong>mfuatano wa hesabu</strong>; yaani, <strong>mfuatano wa harmoniki</strong>. Mfano maarufu wa msururu wa harmoniki ni</p>\[H_n := 1 + \frac{1}{2} + \cdots + \frac{1}{n} \quad (n=1,2,3,\dots)\]<p>Msururu huu unaweza kuonyeshwa kutofautika kama ifuatavyo:</p>\[\begin{align*} \lim_{n\to\infty} H_n &amp;= 1 + \frac{1}{2} + \frac{1}{3} + \frac{1}{4} + \frac{1}{5} + \frac{1}{6} + \frac{1}{7} + \frac{1}{8} + \frac{1}{9} + \cdots + \frac{1}{16} + \cdots \\ &amp;&gt; 1 + \frac{1}{2} + \frac{1}{4} + \frac{1}{4} + \frac{1}{8} + \frac{1}{8} + \frac{1}{8} + \frac{1}{8} + \frac{1}{16} + \cdots + \frac{1}{16} + \cdots \\ &amp;= 1 + \frac{1}{2} \qquad\, + \frac{1}{2} \qquad\qquad\qquad\ \ + \frac{1}{2} \qquad\qquad\quad + \frac{1}{2} + \cdots \\ &amp;= \infty. \end{align*}\]<p>Hivyo, ingawa msururu $H_n$ unatofautika, tunaona kwamba neno lake la jumla $1/n$ linakonverjia kwenda $0$.</p><blockquote class="prompt-danger"><p>Ikiwa $\lim_{n\to\infty} a_n \neq 0$, basi msururu $\sum a_n$ lazima utatofautika. Lakini ni hatari kudhani kwamba $\lim_{n\to\infty} a_n = 0$ inamaanisha moja kwa moja kuwa msururu $\sum a_n$ unakonverjia; katika hali hiyo lazima tutumie mbinu nyingine kukagua ukonverjensia/utofautikaji.</p></blockquote><h2 id="mfululizo-wa-kijiometri">Mfululizo wa kijiometri</h2><p><strong>Mfululizo wa kijiometri (geometric series)</strong> unaotokana na mfuatano wa kijiometri wenye kiungo cha kwanza 1 na <strong>uwiano wa pamoja</strong> $r$,</p>\[1 + r + r^2 + r^3 + \cdots \label{eqn:geometric_series}\tag{5}\]<p>ni <u>miongoni mwa misururu muhimu zaidi na ya msingi kabisa</u>. Kutoka kwenye usawa</p>\[(1-r)(1+r+\cdots + r^{n-1}) = 1 - r^n\]<p>tunapata</p>\[1 + r + \cdots + r^{n-1} = \frac{1-r^n}{1-r} = \frac{1}{1-r} - \frac{r^n}{1-r} \qquad (r \neq 1) \label{eqn:sum_of_geometric_series}\tag{6}\]<p>Wakati huohuo,</p>\[\lim_{n\to\infty} r^n = 0 \quad \Leftrightarrow \quad |r| &lt; 1\]<p>kwa hiyo tunajua kuwa sharti la lazima na la kutosha kwa mfululizo wa kijiometri ($\ref{eqn:geometric_series}$) kukonverjia ni $|r| &lt; 1$.</p><blockquote class="prompt-info"><p><strong>Ukonverjensia/utofautikaji wa mfululizo wa kijiometri</strong><br /> Mfululizo wa kijiometri $\sum ar^{n-1}$:</p><ul><li>ukiwa na $|r| &lt; 1$ unakonverjia<li>ukiwa na $|r| \geq 1$ unatofautika</ul></blockquote><p>Kutokana na hili tunapata</p>\[1 + r + r^2 + r^3 + \cdots = \frac{1}{1-r} \qquad (|r| &lt; 1) \label{eqn:sum_of_inf_geometric_series}\tag{7}\]<h3 id="mfululizo-wa-kijiometri-na-thamani-za-kukadiria">Mfululizo wa kijiometri na thamani za kukadiria</h3><p>Utambulisho ($\ref{eqn:sum_of_geometric_series}$) ni muhimu katika kupata thamani ya kukadiria ya $\cfrac{1}{1-r}$ wakati $|r| &lt; 1$.</p><p>Tukiweka $r=-\epsilon$, $n=2$ katika fomula hii, tunapata</p>\[\frac{1}{1+\epsilon} - (1 - \epsilon) = \frac{\epsilon^2}{1 + \epsilon}\]<p>Kwa hiyo, ikiwa $0 &lt; \epsilon &lt; 1$,</p>\[0 &lt; \frac{1}{1 + \epsilon} - (1 - \epsilon) &lt; \epsilon^2\]<p>na hivyo tunapata</p>\[\frac{1}{1 + \epsilon} \approx (1 - \epsilon) \pm \epsilon^2 \qquad (0 &lt; \epsilon &lt; 1)\]<p>Kutokana na hili, tunaona kuwa kwa $\epsilon$ ndogo ya kutosha iliyo chanya, $\cfrac{1}{1 + \epsilon}$ inaweza kukadiriwa kwa $1 - \epsilon$.</p><h2 id="kigezo-cha-p-msururu-p-series-test">Kigezo cha $p$-msururu ($p$-Series Test)</h2><p>Kwa namba halisi chanya $p$, msururu wa umbo lifuatalo huitwa <strong>$p$-msururu</strong>.</p>\[\sum_{n=1}^{\infty} \frac{1}{n^p}\]<blockquote class="prompt-info"><p><strong>Ukonverjensia/utofautikaji wa $p$-msururu</strong><br /> $p$-msururu $\sum \cfrac{1}{n^p}$:</p><ul><li>ikiwa $p&gt;1$ unakonverjia<li>ikiwa $p\leq 1$ unatofautika</ul></blockquote><p>Katika $p$-msururu, hali ya $p=1$ ndiyo msururu wa harmoniki, na tayari tumeona kuwa unatofautika.<br /> Kwa $p=2$, tatizo la kupata thamani ya $p$-msururu $\sum \cfrac{1}{n^2}$ liliitwa “tatizo la Basel” kwa jina la eneo la familia ya Bernoulli, ambayo pia ni familia iliyotoa wanahisabati kadhaa mashuhuri kwa vizazi vingi na ambayo ilionyesha kwanza kuwa msururu huu unakonverjia. Inajulikana kuwa jibu la tatizo hili ni $\cfrac{\pi^2}{6}$.</p><p>Kwa upana zaidi, hali ya $p&gt;1$ katika $p$-msururu huitwa <strong>funksi ya zeta (zeta function)</strong>. Hii ni mojawapo ya funksi maalumu iliyoletwa na Leonhard Euler katika mwaka 11740 wa <a href="https://en.wikipedia.org/wiki/Holocene_calendar">Kalenda ya Holocene</a>, na baadaye ikapewa jina na Riemann, nayo hufafanuliwa kwa</p>\[\zeta(s) := \sum_{n=1}^{\infty} \frac{1}{n^s} \qquad (s&gt;1)\]<p>Kwa kuwa hili linatoka kidogo nje ya mada ya makala hii na, kusema kweli, mimi ni mwanafunzi wa uhandisi wala si mtaalamu wa hisabati, sitaingia zaidi hapa. Hata hivyo, Leonhard Euler alionyesha kuwa funksi ya zeta inaweza pia kuandikwa kama bidhaa isiyo na mwisho ya namba za kwanza, iitwayo <strong>Euler Product</strong>, na tangu hapo funksi ya zeta imekuwa na nafasi ya msingi katika maeneo mbalimbali ndani ya nadharia ya namba ya kianalisi. Miongoni mwa hayo ni <strong>funksi ya zeta ya Riemann (Riemann zeta function)</strong>, ambayo hupanua eneo la ufafanuzi la funksi ya zeta hadi namba changamano, pamoja na tatizo muhimu lisilotatuliwa linaloitwa <strong>dhana ya Riemann (Riemann hypothesis)</strong>.</p><p>Tukirudi kwenye mada ya awali, ili kuthibitisha kigezo cha $p$-msururu tunahitaji <a href="#kigezo-cha-ulinganishi">kigezo cha ulinganishi</a> na <a href="#kigezo-cha-jumuisho">kigezo cha jumuisho</a> ambavyo vitaelezwa baadaye. Hata hivyo, kwa kuwa ukonverjensia/utofautikaji wa $p$-msururu unaweza kutumika kwa manufaa katika <a href="#kigezo-cha-ulinganishi">kigezo cha ulinganishi</a> kitakachofuata mara moja baada ya mfululizo wa kijiometri, nimekiweka kimakusudi mapema.</p><h3 id="uthibitisho-1">Uthibitisho</h3><h4 id="i-wakati-p1">i) Wakati $p&gt;1$</h4><p>Kwa kuwa jumuisho</p>\[\int_1^\infty \frac{1}{x^p}\ dx = \left[\frac{1}{-p+1}\frac{1}{x^{p-1}} \right]^\infty_1 = \frac{1}{p-1}\]<p>linakonverjia, basi kwa <a href="#kigezo-cha-jumuisho">kigezo cha jumuisho</a> tunajua kuwa msururu $\sum \cfrac{1}{n^p}$ pia unakonverjia.</p><h4 id="ii-wakati-pleq-1">ii) Wakati $p\leq 1$</h4><p>Katika hali hii,</p>\[0 \leq \frac{1}{n} \leq \frac{1}{n^p}\]<p>Hapa tunajua kuwa msururu wa harmoniki $\sum \cfrac{1}{n}$ unatofautika, kwa hiyo kwa <a href="#kigezo-cha-ulinganishi">kigezo cha ulinganishi</a> tunajua kuwa $\sum \cfrac{1}{n^p}$ pia unatofautika.</p><h4 id="hitimisho">Hitimisho</h4><p>Kutokana na i), ii), $p$-msururu $\sum \cfrac{1}{n^p}$ unakonverjia ikiwa $p&gt;1$, na unatofautika ikiwa $p \leq 1$. $\blacksquare$</p><h2 id="kigezo-cha-ulinganishi">Kigezo cha ulinganishi</h2><p>Wakati wa kukagua ukonverjensia/utofautikaji wa <strong>msururu wa viungo chanya (series of positive terms)</strong>, yaani msururu wenye maneno ya jumla yaliyo namba halisi zisizo chini ya $0$, ni muhimu kutumia <strong>kigezo cha ulinganishi (Comparison Test)</strong> cha Jakob Bernoulli.</p><p>Kwa kuwa msururu wa viungo chanya ni mfuatano unaoongezeka, basi isipokuwa tu katika hali ya kutofautika kuelekea $\infty$ ($\sum a_n = \infty$), lazima ukonverjie. Kwa hiyo, katika msururu wa viungo chanya, andiko kama</p>\[\sum a_n &lt; \infty\]<p>linamaanisha <u>unakonverjia</u>.</p><blockquote class="prompt-info"><p><strong>Kigezo cha ulinganishi (Comparison Test)</strong><br /> Wakati $0 \leq a_n \leq b_n$,</p><ul><li>$\sum b_n &lt; \infty \ \Rightarrow \ \sum a_n &lt; \infty$<li>$\sum a_n = \infty \ \Rightarrow \ \sum b_n = \infty$</ul></blockquote><p>Hususan, miongoni mwa misururu ya viungo chanya kama vile $\sum \cfrac{1}{n^2 + n}$, $\sum \cfrac{\log n}{n^3}$, $\sum \cfrac{1}{2^n + 3^n}$, $\sum \cfrac{1}{\sqrt{n}}$, $\sum \sin{\cfrac{1}{n}}$, n.k., pale tunapotaka kukagua ukonverjensia/utofautikaji wa misururu yenye umbo linalofanana na mfululizo wa kijiometri $\sum ar^{n-1}$ au $p$-msururu $\sum \cfrac{1}{n^p}$ tuliyoona mapema, ni vizuri kujaribu kwa bidii kigezo cha ulinganishi.</p><p>Vigezo vingine vingi vya ukonverjensia/utofautikaji vitakavyoelezwa baadaye vinaweza vyote kutolewa kutoka kwenye <strong>kigezo hiki cha ulinganishi</strong>, na kwa maana hiyo tunaweza kusema ndicho kilicho muhimu zaidi.</p><h3 id="kigezo-cha-ulinganishi-wa-kikomo">Kigezo cha ulinganishi wa kikomo</h3><p>Kwa misururu ya viungo chanya $\sum a_n$ na $\sum b_n$, tuseme katika uwiano wa maneno ya jumla $a_n/b_n$, viungo tawala vya juu katika hesabu na mahisabu vinafutana na kupata $\lim_{n\to\infty} \cfrac{a_n}{b_n}=c \text{ (}c\text{ ni namba chanya yenye kikomo)}$. Katika hali hii, ikiwa tunajua tayari ukonverjensia/utofautikaji wa msururu $\sum b_n$, tunaweza kutumia <strong>kigezo cha ulinganishi wa kikomo (Limit Comparison Test)</strong> kifuatacho.</p><blockquote class="prompt-info"><p><strong>Kigezo cha ulinganishi wa kikomo (Limit Comparison Test)</strong><br /> Ikiwa</p>\[\lim_{n\to\infty} \frac{a_n}{b_n} = c \text{ (}c\text{ ni namba chanya yenye kikomo)}\]<p>basi misururu $\sum a_n$ na $\sum b_n$ aidha yote miwili inakonverjia au yote miwili inatofautika. Yaani, $ \sum a_n &lt; \infty \ \Leftrightarrow \ \sum b_n &lt; \infty$.</p></blockquote><h2 id="kigezo-cha-mzizi">Kigezo cha mzizi</h2><blockquote class="prompt-info"><p><strong>Nadharia</strong><br /> Kwa msururu wa viungo chanya $\sum a_n$ na namba chanya $\epsilon &lt; 1$,</p><ul><li>ikiwa kwa kila $n$, $\sqrt[n]{a_n}&lt; 1-\epsilon$, basi msururu $\sum a_n$ unakonverjia<li>ikiwa kwa kila $n$, $\sqrt[n]{a_n}&gt; 1+\epsilon$, basi msururu $\sum a_n$ unatofautika</ul></blockquote><blockquote class="prompt-info"><p><strong>Nadharia tokezi: Kigezo cha mzizi (Root Test)</strong><br /> Katika msururu wa viungo chanya $\sum a_n$, tuseme kikomo</p>\[\lim_{n\to\infty} \sqrt[n]{a_n} =: r\]<p>kipo. Hapo</p><ul><li>ikiwa $r&lt;1$, msururu $\sum a_n$ unakonverjia<li>ikiwa $r&gt;1$, msururu $\sum a_n$ unatofautika</ul></blockquote><blockquote class="prompt-warning"><p>Katika nadharia tokezi hapo juu, ikiwa $r=1$, hatuwezi kukagua ukonverjensia/utofautikaji, hivyo ni lazima kutumia mbinu nyingine.</p></blockquote><h2 id="kigezo-cha-uwiano">Kigezo cha uwiano</h2><blockquote class="prompt-info"><p><strong>Kigezo cha uwiano (Ratio Test)</strong><br /> Kwa mfuatano chanya $(a_n)$ na $0 &lt; r &lt; 1$</p><ul><li>ikiwa kwa kila $n$, $a_{n+1}/a_n \leq r$, basi msururu $\sum a_n$ unakonverjia<li>ikiwa kwa kila $n$, $a_{n+1}/a_n \geq 1$, basi msururu $\sum a_n$ unatofautika</ul></blockquote><blockquote class="prompt-info"><p><strong>Nadharia tokezi</strong><br /> Katika mfuatano chanya $(a_n)$, tuseme kikomo $\rho := \lim_{n\to\infty} \cfrac{a_{n+1}}{a_n}$ kipo. Hapo</p><ul><li>ikiwa $\rho &lt; 1$, basi msururu $\sum a_n$ unakonverjia<li>ikiwa $\rho &gt; 1$, basi msururu $\sum a_n$ unatofautika</ul></blockquote><h2 id="kigezo-cha-jumuisho">Kigezo cha jumuisho</h2><p>Kwa kutumia mbinu ya jumuisho, tunaweza kukagua ukonverjensia/utofautikaji wa msururu ulioundwa na mfuatano chanya unaopungua.</p><blockquote class="prompt-info"><p><strong>Kigezo cha jumuisho (Integral Test)</strong><br /> Ikiwa funksi endelevu $f: \left[1,\infty \right) \rightarrow \mathbb{R}$ inapungua na daima $f(x)&gt;0$, basi sharti la lazima na la kutosha kwa msururu $\sum f(n)$ kukonverjia ni kwamba jumuisho</p>\[\int_1^\infty f(x)\ dx := \lim_{b\to\infty} \int_1^b f(x)\ dx\]<p>likonverjie.</p></blockquote><h3 id="uthibitisho-2">Uthibitisho</h3><p>Kwa kuwa funksi $f(x)$ ni endelevu, inapungua, na daima ni chanya, basi ukosefu wa usawa</p>\[f(n+1) \leq \int_n^{n+1} f(x)\ dx \leq f(n)\]<p>unatimia. Tukijumlisha ukosefu huu wa usawa kutoka $n=1$ hadi neno la jumla, tunapata</p>\[f(2) + \cdots + f(n+1) \leq \int_1^{n+1} f(x)\ dx \leq f(1) + \cdots + f(n)\]<p>Sasa tukitumia <a href="#kigezo-cha-ulinganishi">kigezo cha ulinganishi</a>, tunapata matokeo tuliyokusudia. $\blacksquare$</p><h2 id="misururu-mbadala">Misururu mbadala</h2><p>Msururu $\sum a_n$ ambao neno lake la jumla si $0$ na ambapo alama ya kila neno $a_n$ ni tofauti na alama ya neno linalofuata $a_{n+1}$, yaani viungo chanya na hasi vinajitokeza kwa kupokezana, huitwa <strong>msururu mbadala (alternating series)</strong>.</p><p>Kwa misururu mbadala, nadharia ifuatayo iliyogunduliwa na mwanahisabati Mjerumani Gottfried Wilhelm Leibniz inaweza kutumika kwa manufaa kukagua ukonverjensia/utofautikaji.</p><blockquote class="prompt-info"><p><strong>Kigezo cha msururu mbadala (Alternating Series Test)</strong></p><ol><li>Kwa kila $n$, $a_n$ na $a_{n+1}$ zina alama tofauti,<li>Kwa kila $n$, $|a_n| \geq |a_{n+1}|$, na<li>$\lim_{n\to\infty} a_n = 0$,</ol><p>basi msururu mbadala $\sum a_n$ unakonverjia.</p></blockquote><h2 id="misururu-inayokonverjia-kiabsolute">Misururu inayokonverjia kiabsolute</h2><p>Kwa msururu $\sum a_n$, ikiwa msururu $\sum |a_n|$ unakonverjia, basi tunasema kwamba “msururu $\sum a_n$ <strong>unakonverjia kiabsolute</strong> (<strong>converge absolutely</strong>)”.</p><p>Katika hali hii, nadharia ifuatayo inatimia.</p><blockquote class="prompt-info"><p><strong>Nadharia</strong><br /> Msururu unaokonverjia kiabsolute unakonverjia.</p></blockquote><blockquote class="prompt-warning"><p>Kinyume cha nadharia hapo juu si kweli.<br /> Ikiwa msururu unakonverjia lakini haukonverjii kiabsolute, tunasema kuwa “<strong>unakonverjia kimasharti</strong> (<strong>converge conditionally</strong>)”.</p></blockquote><h3 id="uthibitisho-3">Uthibitisho</h3><p>Kwa namba halisi $a$, tukifafanua</p>\[\begin{align*} a^+ &amp;:= \max\{a,0\} = \frac{1}{2}(|a| + a), \\ a^- &amp;:= -\min\{a,0\} = \frac{1}{2}(|a| - a) \end{align*}\]<p>basi tunapata</p>\[a = a^+ - a^-, \qquad |a| = a^+ + a^-\]<p>Kwa hiyo $0 \leq a^\pm \leq |a|$, na hivyo kwa <a href="#kigezo-cha-ulinganishi">kigezo cha ulinganishi</a>, ikiwa msururu $\sum |a_n|$ unakonverjia, basi misururu $\sum a_n^+$ na $\sum a_n^-$ pia yote miwili inakonverjia; kwa hiyo, kwa <a href="/sw/posts/sequences-and-series/#sifa-za-msingi-za-misururu-inayokonverjia">sifa za msingi za misururu inayokonverjia</a>,</p>\[\sum a_n = \sum (a_n^+ - a_n^-) = \sum a_n^+ - \sum a_n^-\]<p>pia unakonverjia. $\blacksquare$</p>]]> </content> </entry> <entry><title xml:lang="sw">Sequences and Series</title><link href="https://www.yunseo.kim/sw/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="am" /><published>2025-03-16T00:00:00+09:00</published> <updated>2025-05-13T16:24:07+09:00</updated> <id>https://www.yunseo.kim/sw/posts/sequences-and-series/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Calculus" /> <summary xml:lang="sw">We examine fundamental concepts of calculus such as the definition of sequences and series, convergence and divergence of sequences, convergence and divergence of series, and the definition of e, the base of natural logarithm.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>We examine fundamental concepts of calculus such as the definition of sequences and series, convergence and divergence of sequences, convergence and divergence of series, and the definition of e, the base of natural logarithm.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="sequences">Sequences</h2><p>In calculus, a <strong>sequence</strong> primarily refers to an infinite sequence. That is, a sequence is a function defined on the set of all <strong>natural numbers</strong></p>\[\mathbb{N} := \{1,2,3,\dots\}\]<ul><li>If the values of this function are real numbers, we call it a ‘real sequence’; if complex numbers, a ‘complex sequence’; if points, a ‘point sequence’; if matrices, a ‘matrix sequence’; if functions, a ‘function sequence’; if sets, a ‘set sequence’. However, all of these can be simply referred to as ‘sequences’.</ul><p>Usually, for the <strong>field of real numbers</strong> $\mathbb{R}$, in a sequence $\mathbf{a}: \mathbb{N} \to \mathbb{R}$, we denote</p>\[a_1 := \mathbf{a}(1), \quad a_2 := \mathbf{a}(2), \quad a_3 := \mathbf{a}(3)\]<p>and represent this sequence as</p>\[a_1,\, a_2,\, a_3,\, \dots\]<p>or</p>\[\begin{gather*} (a_1,a_2,a_3,\dots), \\ (a_n: n=1,2,3,\dots), \\ (a_n)_{n=1}^{\infty}, \qquad (a_n) \end{gather*}\]<blockquote class="prompt-info"><p>*In the process of defining a sequence, instead of using the set of all natural numbers $\mathbb{N}$ as the domain, we can also use the set of non-negative integers</p>\[\mathbb{N}_0 := \{0\} \cup \mathbb{N} = \{0,1,2,\dots\}\]<p>or</p>\[\{2,3,4,\dots \}\]<p>For example, when dealing with power series theory, it’s more natural to have $\mathbb{N}_0$ as the domain.</p></blockquote><h2 id="convergence-and-divergence">Convergence and Divergence</h2><p>If a sequence $(a_n)$ converges to a real number $l$, we write</p>\[\lim_{n\to \infty} a_n = l\]<p>and call $l$ the <strong>limit</strong> of the sequence $(a_n)$.</p><blockquote class="prompt-info"><p>The rigorous definition using the <strong>epsilon-delta argument</strong> is as follows:</p>\[\lim_{n\to \infty} a_n = l \overset{def}\Longleftrightarrow \forall \epsilon &gt; 0,\, \exists N \in \mathbb{N}\ (n &gt; N \Rightarrow |a_n - l| &lt; \epsilon)\]<p>In other words, if for any positive $\epsilon$, there always exists a natural number $N$ such that $|a_n - l | &lt; \epsilon$ when $n&gt;N$, it means that the difference between $a_n$ and $l$ becomes infinitely small for sufficiently large $n$. Therefore, we define that a sequence $(a_n)$ satisfying this condition converges to the real number $l$.</p></blockquote><p>A sequence that does not converge is said to <strong>diverge</strong>. <em>The convergence or divergence of a sequence does not change even if a finite number of its terms are altered.</em></p><p>If each term of the sequence $(a_n)$ grows infinitely large, we write</p>\[\lim_{n\to \infty} a_n = \infty\]<p>and say that it <em>diverges to positive infinity</em>. Similarly, if each term of the sequence $(a_n)$ becomes infinitely small, we write</p>\[\lim_{n\to \infty} a_n = -\infty\]<p>and say that it <em>diverges to negative infinity</em>.</p><h2 id="basic-properties-of-convergent-sequences">Basic Properties of Convergent Sequences</h2><p>If sequences $(a_n)$ and $(b_n)$ both converge (i.e., have limits), then the sequences $(a_n + b_n)$ and $(a_n \cdot b_n)$ also converge, and</p>\[\lim_{n\to \infty} (a_n + b_n) = \lim_{n\to \infty} a_n + \lim_{n\to \infty} b_n \label{eqn:props_of_conv_series_1}\tag{1}\] \[\lim_{n\to \infty} (a_n \cdot b_n) = \left(\lim_{n\to \infty} a_n \right) \cdot \left(\lim_{n\to \infty} b_n \right) \label{eqn:props_of_conv_series_2}\tag{2}\]<p>Also, for any real number $t$,</p>\[\lim_{n\to \infty} (t a_n) = t\left(\lim_{n\to \infty} a_n \right) \label{eqn:props_of_conv_series_3}\tag{3}\]<p>These properties are called the <strong>basic properties of convergent sequences</strong> or <strong>basic properties of limits</strong>.</p><h2 id="e-the-base-of-natural-logarithm">$e$, the Base of Natural Logarithm</h2><p><strong>The base of natural logarithm</strong> is defined as</p>\[e := \lim_{n\to \infty} \left(1+\frac{1}{n} \right)^n \approx 2.718\]<p>This is considered one of the most important constants in mathematics.</p><blockquote class="prompt-tip"><p>The term ‘natural constant’ is widely used only in Korea, but this is not a standard term. The official term registered in the mathematics terminology dictionary by the Korean Mathematical Society is <a href="https://www.kms.or.kr/mathdict/list.html?key=kname&amp;keyword=%EC%9E%90%EC%97%B0%EB%A1%9C%EA%B7%B8%EC%9D%98+%EB%B0%91">‘base of natural logarithm’</a>, and the expression ‘natural constant’ cannot be found in this dictionary. Even in the Standard Korean Language Dictionary of the National Institute of Korean Language, the word ‘natural constant’ cannot be found, and in the <a href="https://stdict.korean.go.kr/search/searchView.do?pageSize=10&amp;searchKeyword=%EC%9E%90%EC%97%B0%EB%A1%9C%EA%B7%B8">dictionary definition of ‘natural logarithm’</a>, it only mentions “a specific number usually denoted as e”.<br /> In English-speaking countries and Japan, there is no corresponding term, and in English, it’s mainly referred to as ‘the base of the natural logarithm’ or shortened to ‘natural base’, or ‘Euler’s number’ or ‘the number $e$’.<br /> Since the origin is unclear and it has never been recognized as an official term by the Korean Mathematical Society, and it’s not used anywhere else in the world except Korea, there’s no reason to insist on using such a term. Therefore, from now on, I will refer to it as ‘the base of natural logarithm’ or simply denote it as $e$.</p></blockquote><h2 id="series">Series</h2><p>For a sequence</p>\[\mathbf{a} = (a_1, a_2, a_3, \dots)\]<p>the sequence of partial sums</p>\[a_1, \quad a_1 + a_2, \quad a_1 + a_2 + a_3, \quad \dots\]<p>is called the <strong>series</strong> of the sequence $\mathbf{a}$. The series of the sequence $(a_n)$ is denoted as</p>\[\begin{gather*} a_1 + a_2 + a_3 + \cdots, \qquad \sum_{n=1}^{\infty}a_n, \\ \sum_{n\geq 1} a_n, \qquad \sum_n a_n, \qquad \sum a_n \end{gather*}\]<h2 id="convergence-and-divergence-of-series">Convergence and Divergence of Series</h2><p>If the series obtained from the sequence $(a_n)$</p>\[a_1, \quad a_1 + a_2, \quad a_1 + a_2 + a_3, \quad \dots\]<p>converges to some real number $l$, we write</p>\[\sum_{n=1}^{\infty} a_n = l\]<p>The limit value $l$ is called the <strong>sum</strong> of the series $\sum a_n$. The symbol</p>\[\sum a_n\]<p>can represent either the <u>series</u> or the <u>sum of the series</u>, depending on the context.</p><p>A series that does not converge is said to <strong>diverge</strong>.</p><h2 id="basic-properties-of-convergent-series">Basic Properties of Convergent Series</h2><p>From the <a href="#basic-properties-of-convergent-sequences">basic properties of convergent sequences</a>, we obtain the following basic properties of convergent series. For a real number $t$ and two convergent series $\sum a_n$, $\sum b_n$,</p>\[\sum(a_n + b_n) = \sum a_n + \sum b_n, \qquad \sum ta_n = t\sum a_n \tag{4}\]<p>The convergence of a series is not affected by changes in a finite number of terms. That is, if $a_n=b_n$ for all but finitely many $n$ in two sequences $(a_n)$, $(b_n)$, the series $\sum a_n$ converges if and only if the series $\sum b_n$ converges.</p>]]> </content> </entry> <entry><title xml:lang="sw">Sheria za mwendo za Newton</title><link href="https://www.yunseo.kim/sw/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="am" /><published>2025-03-10T00:00:00+09:00</published> <updated>2025-03-10T00:00:00+09:00</updated> <id>https://www.yunseo.kim/sw/posts/newtons-laws-of-motion/</id> <author> <name>Yunseo Kim</name> </author> <category term="Physics" /> <category term="Classical Dynamics" /> <summary xml:lang="sw">Tunaangalia sheria za mwendo za Newton, maana ya sheria hizo tatu, ufafanuzi wa misa ya inerti na misa ya graviti, na kanuni ya ulinganifu yenye umuhimu mkubwa katika mekanika ya kale na nadharia ya uhusiano wa jumla.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Tunaangalia sheria za mwendo za Newton, maana ya sheria hizo tatu, ufafanuzi wa misa ya inerti na misa ya graviti, na kanuni ya ulinganifu yenye umuhimu mkubwa katika mekanika ya kale na nadharia ya uhusiano wa jumla.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><p><strong>Sheria za mwendo za Newton (Newton’s laws of motion)</strong></p><ol><li>Isipokuwa nguvu ya nje itende juu yake, kitu kitaendelea kuwa katika hali ya kupumzika au mwendo wa mstari ulionyooka wa kasi isiyobadilika.<li>Kiwango cha mabadiliko ya momentamu ya kitu kwa wakati ni sawa na nguvu iliyotenda juu ya kitu hicho.<ul><li>$\vec{F} = \cfrac{d\vec{p}}{dt} = \cfrac{d}{dt}(m\vec{v}) = m\vec{a}$</ul><li>Wakati vitu viwili vinatendeana kwa nguvu, nguvu hizi mbili huwa na ukubwa sawa na mwelekeo unaopingana.<ul><li>$\vec{F_1} = -\vec{F_2}$</ul></ol></blockquote><blockquote class="prompt-info"><p><strong>Kanuni ya ulinganifu (principle of equivalence)</strong></p><ul><li>Misa ya inerti: misa inayobainisha kuongeza kasi kwa kitu wakati nguvu fulani imetenda juu yake<li>Misa ya graviti: misa inayobainisha nguvu ya uvutano kati ya kitu fulani na kitu kingine<li>Kwa sasa inajulikana wazi kwamba misa ya inerti na misa ya graviti zinalingana ndani ya kiwango cha hitilafu cha takribani $10^{-12}$<li>Dai kwamba misa ya inerti na misa ya graviti ni sawa kabisa huitwa <strong>kanuni ya ulinganifu</strong></ul></blockquote><h2 id="sheria-za-mwendo-za-newton">Sheria za mwendo za Newton</h2><p>Sheria za mwendo za Newton ni sheria tatu zilizotangazwa na Isaac Newton (Issac Newton) katika mwaka 11687 wa <a href="https://en.wikipedia.org/wiki/Holocene_calendar">Kalenda ya Holocene</a> kupitia kitabu chake Philosophiæ Naturalis Principia Mathematica (Kanuni za Kihisabati za Falsafa ya Asili, kwa kifupi ‘Principia’), na ndizo zinazounda msingi wa mekanika ya Newton.</p><ol><li>Isipokuwa nguvu ya nje itende juu yake, kitu kitaendelea kuwa katika hali ya kupumzika au mwendo wa mstari ulionyooka wa kasi isiyobadilika.<li>Kiwango cha mabadiliko ya momentamu ya kitu kwa wakati ni sawa na nguvu iliyotenda juu ya kitu hicho.<li>Wakati vitu viwili vinatendeana kwa nguvu, nguvu hizi mbili huwa na ukubwa sawa na mwelekeo unaopingana.</ol><h3 id="sheria-ya-kwanza-ya-newton">Sheria ya kwanza ya Newton</h3><blockquote><p>I. Isipokuwa nguvu ya nje itende juu yake, kitu kitaendelea kuwa katika hali ya kupumzika au mwendo wa mstari ulionyooka wa kasi isiyobadilika.</p></blockquote><p>Kitu kilicho katika hali hii ya kutotendewa na nguvu ya nje huitwa <strong>mwili huru (free body)</strong> au <strong>chembe huru (free particle)</strong>. Hata hivyo, sheria ya kwanza peke yake hutupatia tu dhana ya kimaelezo kuhusu nguvu.</p><h3 id="sheria-ya-pili-ya-newton">Sheria ya pili ya Newton</h3><blockquote><p>II. Kiwango cha mabadiliko ya momentamu ya kitu kwa wakati ni sawa na nguvu iliyotenda juu ya kitu hicho.</p></blockquote><p>Newton alifafanua <strong>momentamu (momentum)</strong> kama zao la misa na kasi</p>\[\vec{p} \equiv m\vec{v} \label{eqn:momentum}\tag{1}\]<p>Kutokana na hili, sheria ya pili ya Newton inaweza kuandikwa kama ifuatavyo.</p>\[\vec{F} = \frac{d\vec{p}}{dt} = \frac{d}{dt}(m\vec{v}) = m\vec{a}. \label{eqn:2nd_law}\tag{2}\]<p>Sheria ya kwanza na ya pili ya Newton, kinyume na majina yake, kwa kweli ziko karibu zaidi na ‘ufafanuzi’ wa nguvu kuliko kuwa ‘sheria’. Pia tunaweza kuona kwamba ufafanuzi wa nguvu hutegemea ufafanuzi wa ‘misa’.</p><h3 id="sheria-ya-tatu-ya-newton">Sheria ya tatu ya Newton</h3><blockquote><p>III. Wakati vitu viwili vinatendeana kwa nguvu, nguvu hizi mbili huwa na ukubwa sawa na mwelekeo unaopingana.</p></blockquote><p>Hii ni sheria ya fizikia inayojulikana pia kama ‘sheria ya tendo na mwitiko’, na hutumika pale ambapo nguvu ambayo kitu kimoja hutenda juu ya kingine inaelekea katika mwelekeo wa mstari unaounganisha pointi mbili za utendaji. Nguvu ya aina hii huitwa <strong>nguvu ya kati (central force)</strong>, na sheria ya tatu hutimia bila kujali kama nguvu ya kati hiyo ni ya kuvutana au ya kusukumiana. Nguvu ya uvutano au nguvu ya kielektri tuli kati ya vitu viwili vilivyotulia, pamoja na nguvu ya unyumbufu, ni mifano ya nguvu za kati. Kwa upande mwingine, nguvu kati ya chaji zinazosonga, uvutano kati ya vitu vinavyosonga, na nguvu nyingine zinazotegemea kasi ya vitu viwili vinavyotendeana ni nguvu zisizo za kati, na katika hali hizi sheria ya tatu haiwezi kutumika.</p><p>Tukizingatia ufafanuzi wa misa tulioangalia awali, sheria ya tatu inaweza kuandikwa upya kama ifuatavyo.</p><blockquote><p>III$^\prime$. Iwapo vitu viwili vitaunda mfumo bora uliotengwa, basi ongezeko lao la kasi litakuwa katika mielekeo inayopingana, na uwiano wa ukubwa wake utakuwa sawa na uwiano wa kinyume wa misa za vitu hivyo viwili.</p></blockquote><p>Kwa mujibu wa sheria ya tatu ya Newton,</p>\[\vec{F_1} = -\vec{F_2} \label{eqn:3rd_law}\tag{3}\]<p>na tukibadilisha humo sheria ya pili tuliyoona awali ($\ref{eqn:2nd_law}$),</p>\[\frac{d\vec{p_1}}{dt} = -\frac{d\vec{p_2}}{dt} \label{eqn:3rd-1_law}\tag{4}\]<p>Kutokana na hili, tunaweza kuona kwamba momentamu huhifadhiwa katika mwingiliano uliotengwa wa chembe mbili.</p>\[\frac{d}{dt}(\vec{p_1}+\vec{p_2}) = 0 \label{eqn:conservation_of_momentum}\tag{5}\]<p>Pia, katika mlinganyo ($\ref{eqn:3rd-1_law}$), kwa kuwa $\vec{p}=m\vec{v}$ na misa $m$ ni thabiti,</p>\[m_1\left(\frac{d\vec{v_1}}{dt} \right) = m_2\left(-\frac{d\vec{v_2}}{dt} \right) \tag{6a}\] \[m_1(\vec{a_1}) = m_2(-\vec{a_2}) \tag{6b}\]<p>na hivyo tunapata yafuatayo.</p>\[\frac{m_2}{m_1} = -\frac{a_1}{a_2}. \tag{7}\]<p>Hata hivyo, ingawa sheria ya tatu ya Newton inaeleza hali ambapo vitu viwili vinaunda mfumo uliotengwa, kwa vitendo haiwezekani kutimiza hali hizo bora kabisa, hivyo dai la Newton katika sheria ya tatu linaweza kuonekana kuwa la ujasiri mkubwa. Pamoja na kwamba lilitokana na uchunguzi wenye mipaka, kwa sababu ya umaizi wa kina wa Newton katika fizikia, mekanika ya Newton ilidumisha hadhi thabiti kwa karibu miaka 300 bila makosa kugunduliwa katika uthibitishaji wa majaribio mbalimbali. Ni hadi miaka ya 11900 ndipo vipimo sahihi vya kutosha kuonyesha tofauti kati ya utabiri wa nadharia ya Newton na uhalisia vilipowezekana, na kutokana na hilo nadharia ya uhusiano na mekanika ya kwanta zikazaliwa.</p><h2 id="misa-ya-inerti-na-misa-ya-graviti">Misa ya inerti na misa ya graviti</h2><p>Moja ya njia za kubainisha misa ya kitu ni kutumia chombo kama mizani kulinganisha uzani wa kitu hicho na uzani wa kiwango. Njia hii hutumia ukweli kwamba uzani wa kitu katika uga wa graviti ni sawa na ukubwa wa nguvu ya uvutano inayotenda juu yake; katika hali hii sheria ya pili $\vec{F}=m\vec{a}$ inakuwa katika umbo la $\vec{W}=m\vec{g}$. Njia hii inategemea dhana ya msingi kwamba misa $m$ inayofafanuliwa katika III$^\prime$ ni sawa na misa $m$ inayojitokeza katika mlinganyo wa graviti. Misa hizi mbili huitwa kwa mtiririko huo <strong>misa ya inerti (inertial mass)</strong> na <strong>misa ya graviti (gravitational mass)</strong>, na hufafanuliwa kama ifuatavyo.</p><ul><li>Misa ya inerti: misa inayobainisha kuongeza kasi kwa kitu wakati nguvu fulani imetenda juu yake<li>Misa ya graviti: misa inayobainisha nguvu ya uvutano kati ya kitu fulani na kitu kingine</ul><p>Ingawa ni simulizi lililotungwa baadaye na lisilohusiana na Galileo Galilei, jaribio la kuangusha vitu kutoka Mnara wa Pisa ni jaribio la kufikiri lililoonyesha kwa mara ya kwanza kwamba misa ya inerti na misa ya graviti huenda ni sawa. Newton pia alijaribu kuonyesha kwamba hakuna tofauti kati ya misa hizo mbili kwa kupima vipindi vya pendulum zenye urefu sawa lakini zenye uzito wa kope tofauti, lakini mbinu na usahihi wa jaribio lake vilikuwa vya kiwango cha chini, hivyo alishindwa kuthibitisha jambo hilo kwa usahihi.</p><p>Baadaye, mwishoni mwa miaka ya 11800, mwanafizikia wa Hungaria Eötvös Loránd Ágoston alifanya jaribio la Eötvös ili kupima kwa usahihi tofauti kati ya misa ya inerti na misa ya graviti, na akathibitisha kwa usahihi mkubwa kwamba misa ya inerti na misa ya graviti ni sawa (hitilafu ndani ya sehemu 1 kati ya milioni 20).</p><p>Baadaye, majaribio ya karibuni zaidi yaliyofanywa na Robert Henry Dicke na wengine yaliongeza usahihi hata zaidi, na kwa sasa inajulikana wazi kwamba misa ya inerti na misa ya graviti zinalingana ndani ya kiwango cha hitilafu cha takribani $10^{-12}$. Matokeo haya yana umuhimu mkubwa sana katika nadharia ya uhusiano wa jumla, na dai kwamba misa ya inerti na misa ya graviti ni sawa kabisa huitwa <strong>kanuni ya ulinganifu (principle of equivalence)</strong>.</p>]]> </content> </entry> <entry><title xml:lang="sw">ODE za Mstari za Homojenia za Daraja la Pili zenye Vigawo vya Kudumu</title><link href="https://www.yunseo.kim/sw/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="am" /><published>2025-02-22T00:00:00+09:00</published> <updated>2025-02-22T00:00:00+09:00</updated> <id>https://www.yunseo.kim/sw/posts/homogeneous-linear-odes-with-constant-coefficients/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Differential Equation" /> <summary xml:lang="sw">Kwa kutegemea ishara ya discriminant ya mlinganyo karakteristiki, tunaangalia maumbo ya suluhisho la jumla la ODE ya mstari ya homojenia ya daraja la pili yenye vigawo vya kudumu katika kila hali.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Kwa kutegemea ishara ya discriminant ya mlinganyo karakteristiki, tunaangalia maumbo ya suluhisho la jumla la ODE ya mstari ya homojenia ya daraja la pili yenye vigawo vya kudumu katika kila hali.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="kwa-ufupi">Kwa Ufupi</h2><blockquote class="prompt-info"><ul><li>ODE ya mstari ya homojenia ya daraja la pili yenye vigawo vya kudumu: $y^{\prime\prime} + ay^{\prime} + by = 0$<li><strong>Mlinganyo karakteristiki</strong>: $\lambda^2 + a\lambda + b = 0$<li>Kulingana na ishara ya discriminant $a^2 - 4b$ ya mlinganyo karakteristiki, umbo la suluhisho la jumla linaweza kugawanywa katika hali tatu kama inavyoonyeshwa kwenye jedwali</ul><table><thead><tr><th style="text-align: center">Hali<th style="text-align: center">Suluhisho za mlinganyo karakteristiki<th style="text-align: center">Msingi wa suluhisho za ODE<th style="text-align: center">Suluhisho la jumla la ODE<tbody><tr><td style="text-align: center">I<td style="text-align: center">Mizizi halisi miwili tofauti<br />$\lambda_1$, $\lambda_2$<td style="text-align: center">$e^{\lambda_1 x}$, $e^{\lambda_2 x}$<td style="text-align: center">$y = c_1e^{\lambda_1 x} + c_2e^{\lambda_2 x}$<tr><td style="text-align: center">II<td style="text-align: center">Mzizi halisi wa marudio<br /> $\lambda = -\cfrac{1}{2}a$<td style="text-align: center">$e^{-ax/2}$, $xe^{-ax/2}$<td style="text-align: center">$y = (c_1 + c_2 x)e^{-ax/2}$<tr><td style="text-align: center">III<td style="text-align: center">Mizizi changamano ya kiambatano<br /> $\lambda_1 = -\cfrac{1}{2}a + i\omega$, <br /> $\lambda_2 = -\cfrac{1}{2}a - i\omega$<td style="text-align: center">$e^{-ax/2}\cos{\omega x}$, <br /> $e^{-ax/2}\sin{\omega x}$<td style="text-align: center">$y = e^{-ax/2}(A\cos{\omega x} + B\sin{\omega x})$</table></blockquote><h2 id="maarifa-ya-awali">Maarifa ya Awali</h2><ul><li><a href="/sw/posts/Bernoulli-Equation/">Mlinganyo wa Bernoulli</a><li><a href="/sw/posts/homogeneous-linear-odes-of-second-order/">ODE za Mstari za Homojenia za Daraja la Pili</a><li>Fomula ya Euler</ul><h2 id="mlinganyo-karakteristiki">Mlinganyo karakteristiki</h2><p>Hebu tuangalie ODE ya mstari ya homojenia ya daraja la pili yenye vigawo $a$ na $b$ vya kudumu</p>\[y^{\prime\prime} + ay^{\prime} + by = 0 \label{eqn:ode_with_constant_coefficients}\tag{1}\]<p>Milinganyo ya umbo hili hutumika kwa umuhimu mkubwa katika mitetemo ya kimakanika na ya kielektriki.</p><p>Tulipata tayari suluhisho la jumla la mlinganyo wa logistic katika <a href="/sw/posts/Bernoulli-Equation/">Mlinganyo wa Bernoulli</a>, na kulingana na hilo, suluhisho la ODE ya mstari ya daraja la kwanza yenye kigawo cha kudumu $k$</p>\[y^\prime + ky = 0\]<p>ni kazi ya eksponenti $y = ce^{-kx}$. (Katika mlinganyo (4) wa makala hiyo, hii ni hali ya $A=-k$, $B=0$.)</p><p>Kwa hiyo, kwa mlinganyo wa umbo linalofanana, yaani ($\ref{eqn:ode_with_constant_coefficients}$), tunaweza kwanza kujaribu suluhisho la umbo</p>\[y=e^{\lambda x}\label{eqn:general_sol}\tag{2}\]<blockquote class="prompt-info"><p>Bila shaka, hili ni dhana tu, na hakuna uhakika wowote kwamba suluhisho la jumla litakuwa kweli katika umbo hili. Hata hivyo, vyovyote vile, tukifanikiwa kupata suluhisho mbili huru kwa mstari, basi kama tulivyoona katika <a href="/sw/posts/homogeneous-linear-odes-of-second-order/#msingi-na-suluhisho-la-jumla">ODE za Mstari za Homojenia za Daraja la Pili</a>, tunaweza kupata suluhisho la jumla kwa kutumia <a href="/sw/posts/homogeneous-linear-odes-of-second-order/#kanuni-ya-superposition">kanuni ya superposition</a>.<br /> Kama tutakavyoona baada ya muda mfupi, pia kuna <a href="#ii-mzizi-halisi-wa-marudio-lambda---cfraca2">hali ambapo tunapaswa kutafuta suluhisho la umbo tofauti</a>.</p></blockquote><p>Tukiingiza mlinganyo ($\ref{eqn:general_sol}$) pamoja na vitokavyo vyake</p>\[y^\prime = \lambda e^{\lambda x}, \quad y^{\prime\prime} = \lambda^2 e^{\lambda x}\]<p>katika mlinganyo ($\ref{eqn:ode_with_constant_coefficients}$), tunapata</p>\[(\lambda^2 + a\lambda + b)e^{\lambda x} = 0\]<p>Kwa hiyo, ikiwa $\lambda$ ni suluhisho la <strong>mlinganyo karakteristiki</strong></p>\[\lambda^2 + a\lambda + b = 0 \label{eqn:characteristic_eqn}\tag{3}\]<p>basi kazi ya eksponenti ($\ref{eqn:general_sol}$) ni suluhisho la ODE ($\ref{eqn:ode_with_constant_coefficients}$). Tukipata suluhisho za mlinganyo wa daraja la pili ($\ref{eqn:characteristic_eqn}$), tunapata</p>\[\begin{align*} \lambda_1 &amp;= \frac{1}{2}\left(-a + \sqrt{a^2 - 4b}\right), \\ \lambda_2 &amp;= \frac{1}{2}\left(-a - \sqrt{a^2 - 4b}\right) \end{align*}\label{eqn:lambdas}\tag{4}\]<p>na kutoka hapa kazi mbili</p>\[y_1 = e^{\lambda_1 x}, \quad y_2 = e^{\lambda_2 x} \tag{5}\]<p>zinakuwa suluhisho za mlinganyo ($\ref{eqn:ode_with_constant_coefficients}$).</p><blockquote class="prompt-tip"><p>Maneno <strong>mlinganyo karakteristiki</strong> na <strong>mlinganyo saidizi</strong> mara nyingi hutumiwa kwa kubadilishana, lakini yana maana ileile kabisa. Unaweza kutumia lolote kati ya hayo mawili.</p></blockquote><p>Sasa, kulingana na ishara ya discriminant $a^2 - 4b$ ya mlinganyo karakteristiki ($\ref{eqn:characteristic_eqn}$), tunaweza kugawa hali katika tatu.</p><ul><li>$a^2 - 4b &gt; 0$: mizizi halisi miwili tofauti<li>$a^2 - 4b = 0$: mzizi halisi wa marudio<li>$a^2 - 4b &lt; 0$: mizizi changamano ya kiambatano</ul><h2 id="umbo-la-suluhisho-la-jumla-kulingana-na-ishara-ya-discriminant-ya-mlinganyo-karakteristiki">Umbo la suluhisho la jumla kulingana na ishara ya discriminant ya mlinganyo karakteristiki</h2><h3 id="i-mizizi-halisi-miwili-tofauti-lambda_1-na-lambda_2">I. Mizizi halisi miwili tofauti $\lambda_1$ na $\lambda_2$</h3><p>Katika hali hii, msingi wa suluhisho za mlinganyo ($\ref{eqn:ode_with_constant_coefficients}$) katika kipindi chochote ni</p>\[y_1 = e^{\lambda_1 x}, \quad y_2 = e^{\lambda_2 x}\]<p>na suluhisho la jumla linalolingana ni</p>\[y = c_1 e^{\lambda_1 x} + c_2 e^{\lambda_2 x} \label{eqn:general_sol_1}\tag{6}\]<h3 id="ii-mzizi-halisi-wa-marudio-lambda---cfraca2">II. Mzizi halisi wa marudio $\lambda = -\cfrac{a}{2}$</h3><p>Iwapo $a^2 - 4b = 0$, mlinganyo wa daraja la pili ($\ref{eqn:characteristic_eqn}$) utakuwa na suluhisho moja tu, yaani $\lambda = \lambda_1 = \lambda_2 = -\cfrac{a}{2}$, na kwa hiyo suluhisho la umbo $y = e^{\lambda x}$ tunaloweza kupata kutoka hapo ni moja tu:</p>\[y_1 = e^{-(a/2)x}\]<p>Ili kupata msingi, tunahitaji kupata suluhisho la pili $y_2$ lenye umbo tofauti na lililo huru kwa mstari na $y_1$.</p><p>Njia inayoweza kutumika katika hali hii ni ile tuliyoona awali ya <a href="/sw/posts/homogeneous-linear-odes-of-second-order/#upunguzaji-wa-daraja-reduction-of-order">upunguzaji wa daraja</a>. Tukiweka suluhisho la pili tunalotafuta kuwa $y_2=uy_1$, basi</p>\[\begin{align*} y_2 &amp;= uy_1, \\ y_2^{\prime} &amp;= u^{\prime}y_1 + uy_1^{\prime}, \\ y_2^{\prime\prime} &amp;= u^{\prime\prime}y_1 + 2u^{\prime}y_1^{\prime} + uy_1^{\prime\prime} \end{align*}\]<p>na tukiviingiza katika mlinganyo ($\ref{eqn:ode_with_constant_coefficients}$), tunapata</p>\[(u^{\prime\prime}y_1 + 2u^\prime y_1^\prime + uy_1^{\prime\prime}) + a(u^\prime y_1 + uy_1^\prime) + buy_1 = 0\]<p>Tukikusanya na kupanga kulingana na neno la $u^{\prime\prime}$, $u^\prime$, na $u$, tunapata</p>\[y_1u^{\prime\prime} + (2y_1^\prime + ay_1)u^\prime + (y_1^{\prime\prime} + ay_1^\prime + by_1)u = 0\]<p>Hapa, kwa kuwa $y_1$ ni suluhisho la mlinganyo ($\ref{eqn:ode_with_constant_coefficients}$), basi kauli iliyo ndani ya mabano ya mwisho ni $0$, na kwa kuwa</p>\[2y_1^\prime = -ae^{-ax/2} = -ay_1\]<p>kauli iliyo ndani ya mabano ya kwanza pia ni $0$. Kwa hiyo, kinachobaki ni $u^{\prime\prime}y_1 = 0$, na kutoka hapa tunapata $u^{\prime\prime}=0$. Tukifanya integresheni mara mbili, tunapata $u = c_1x + c_2$. Kwa kuwa konstantI za integresheni $c_1$ na $c_2$ zinaweza kuwa thamani zozote, tunaweza kuchagua tu $c_1=1$, $c_2=0$ na kuweka $u=x$. Hapo basi $y_2 = uy_1 = xy_1$, na kwa kuwa $y_1$ na $y_2$ ni huru kwa mstari, vinaunda msingi. Kwa hiyo, mlinganyo karakteristiki ($\ref{eqn:characteristic_eqn}$) unapokuwa na mzizi wa marudio, msingi wa suluhisho za mlinganyo ($\ref{eqn:ode_with_constant_coefficients}$) katika kipindi chochote ni</p>\[e^{-ax/2}, \quad xe^{-ax/2}\]<p>na suluhisho la jumla linalolingana ni</p>\[y = (c_1 + c_2x)e^{-ax/2} \label{eqn:general_sol_2}\tag{7}\]<h3 id="iii-mizizi-changamano-ya-kiambatano--cfrac12a--iomega-na--cfrac12a---iomega">III. Mizizi changamano ya kiambatano $-\cfrac{1}{2}a + i\omega$ na $-\cfrac{1}{2}a - i\omega$</h3><p>Katika hali hii, $a^2 - 4b &lt; 0$ na $\sqrt{-1} = i$, hivyo kutoka mlinganyo ($\ref{eqn:lambdas}$) tunapata</p>\[\cfrac{1}{2}\sqrt{a^2 - 4b} = \cfrac{1}{2}\sqrt{-(4b - a^2)} = \sqrt{-(b-\frac{1}{4}a^2)} = i\sqrt{b - \frac{1}{4}a^2}\]<p>na hapa tueleze idadi halisi $\sqrt{b-\cfrac{1}{4}a^2} = \omega$.</p><p>Tukieleza $\omega$ kama hapo juu, suluhisho za mlinganyo karakteristiki ($\ref{eqn:characteristic_eqn}$) huwa mizizi changamano ya kiambatano $\lambda = -\cfrac{1}{2}a \pm i\omega$, na suluhisho mbili changamano za mlinganyo ($\ref{eqn:ode_with_constant_coefficients}$) zinazolingana ni</p>\[\begin{align*} e^{\lambda_1 x} &amp;= e^{-(a/2)x + i\omega x}, \\ e^{\lambda_2 x} &amp;= e^{-(a/2)x - i\omega x} \end{align*}\]<p>Hata hivyo, hata katika hali hii tunaweza kupata msingi wa suluhisho halisi zisizo za kufikirika kama ifuatavyo.</p><p>Kutoka kwenye fomula ya Euler</p>\[e^{it} = \cos t + i\sin t \label{eqn:euler_formula}\tag{8}\]<p>na mlinganyo tunaoupata kwa kubadilisha $t$ na $-t$ katika mlinganyo huo,</p>\[e^{-it} = \cos t - i\sin t\]<p>tukijumlisha na kutoa pande kwa pande, tunapata yafuatayo.</p>\[\begin{align*} \cos t &amp;= \frac{1}{2}(e^{it} + e^{-it}), \\ \sin t &amp;= \frac{1}{2i}(e^{it} - e^{-it}). \end{align*} \label{eqn:cos_and_sin}\tag{9}\]<p>Kazi ya eksponenti changamano $e^z$ ya kigeu changamano $z = r + it$ chenye sehemu halisi $r$ na sehemu ya kufikirika $it$ inaweza kufafanuliwa kwa kutumia kazi halisi $e^r$, $\cos t$, na $\sin t$ kama ifuatavyo.</p>\[e^z = e^{r + it} = e^r e^{it} = e^r(\cos t + i\sin t) \label{eqn:complex_exp}\tag{10}\]<p>Hapa tukiweka $r=-\cfrac{1}{2}ax$ na $t=\omega x$, tunaweza kuandika</p>\[\begin{align*} e^{\lambda_1 x} &amp;= e^{-(a/2)x + i\omega x} = e^{-(a/2)x}(\cos{\omega x} + i\sin{\omega x}) \\ e^{\lambda_2 x} &amp;= e^{-(a/2)x - i\omega x} = e^{-(a/2)x}(\cos{\omega x} - i\sin{\omega x}) \end{align*}\]<p>Kwa <a href="/sw/posts/homogeneous-linear-odes-of-second-order/#kanuni-ya-superposition">kanuni ya superposition</a>, jumla na bidhaa kwa konstanti za suluhisho hizi changamano pia ni suluhisho. Kwa hiyo, tukijumlisha milinganyo hii miwili pande kwa pande na kuzidisha pande zote mbili kwa $\cfrac{1}{2}$, tunaweza kupata suluhisho la kwanza halisi $y_1$ kama ifuatavyo.</p>\[y_1 = e^{-(a/2)x} \cos{\omega x}. \label{eqn:basis_1}\tag{11}\]<p>Kwa njia hiyohiyo, tukitoa mlinganyo wa pili kutoka wa kwanza pande kwa pande na kuzidisha pande zote mbili kwa $\cfrac{1}{2i}$, tunaweza kupata suluhisho la pili halisi $y_2$.</p>\[y_2 = e^{-(a/2)x} \sin{\omega x}. \label{eqn:basis_2}\tag{12}\]<p>Kwa kuwa $\cfrac{y_1}{y_2} = \cot{\omega x}$ na hii si konstanti, basi $y_1$ na $y_2$ ni huru kwa mstari katika kila kipindi, na hivyo huunda msingi wa suluhisho halisi za mlinganyo ($\ref{eqn:ode_with_constant_coefficients}$). Kutoka hapa tunapata suluhisho la jumla</p>\[y = e^{-ax/2}(A\cos{\omega x} + B\sin{\omega x}) \quad \text{(}A,\, B\text{ ni konstanti zozote)} \label{eqn:general_sol_3}\tag{13}\] ]]> </content> </entry> <entry><title xml:lang="sw">Jinsi ya kuwezesha usaidizi wa lugha nyingi kwenye blogu ya Jekyll kwa Polyglot (3) - Utatuzi wa hitilafu za build za mandhari ya Chirpy na makosa ya kipengele cha utafutaji</title><link href="https://www.yunseo.kim/sw/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="am" /><published>2025-02-05T00:00:00+09:00</published> <updated>2025-02-05T00:00:00+09:00</updated> <id>https://www.yunseo.kim/sw/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/</id> <author> <name>Yunseo Kim</name> </author> <category term="Dev" /> <category term="Web Dev" /> <summary xml:lang="sw">Makala hii inaeleza mchakato wa kuongeza usaidizi wa lugha nyingi kwenye blogu ya Jekyll inayotumia &apos;jekyll-theme-chirpy&apos; kwa kutumia programu-jalizi ya Polyglot. Kama sehemu ya tatu ya mfululizo huu, inaangazia kutambua chanzo cha makosa yanayotokea wakati wa kuitumia Polyglot kwenye mandhari ya Chirpy na jinsi ya kuyatatua.</summary> <content type="html" xml:lang="sw"> <![CDATA[<p>Makala hii inaeleza mchakato wa kuongeza usaidizi wa lugha nyingi kwenye blogu ya Jekyll inayotumia 'jekyll-theme-chirpy' kwa kutumia programu-jalizi ya Polyglot. Kama sehemu ya tatu ya mfululizo huu, inaangazia kutambua chanzo cha makosa yanayotokea wakati wa kuitumia Polyglot kwenye mandhari ya Chirpy na jinsi ya kuyatatua.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="muhtasari">Muhtasari</h2><p>Mwanzoni mwa Julai 12024, niliongeza usaidizi wa lugha nyingi kwenye blogu hii inayotegemea Jekyll na inayohostiwa kupitia GitHub Pages kwa kutumia programu-jalizi ya <a href="https://github.com/untra/polyglot">Polyglot</a>. Mfululizo huu unashiriki hitilafu zilizotokea wakati wa kutumia programu-jalizi ya Polyglot kwenye mandhari ya Chirpy, hatua za kuzitatua, na jinsi ya kuandika html header pamoja na sitemap.xml kwa kuzingatia SEO. Mfululizo huu una makala 3, na hii unayosoma sasa ni makala ya tatu katika mfululizo huo.</p><ul><li>Sehemu ya 1: <a href="/sw/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-1">Kutumia programu-jalizi ya Polyglot &amp; kurekebisha html header na sitemap</a><li>Sehemu ya 2: <a href="/sw/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-2">Utekelezaji wa kitufe cha kuchagua lugha &amp; ujanibishaji wa lugha wa layout</a><li>Sehemu ya 3: Utatuzi wa build iliyoshindwa ya mandhari ya Chirpy na makosa ya kipengele cha utafutaji (makala hii)</ul><blockquote class="prompt-info"><p>Awali mfululizo huu ulikuwa na sehemu 2 tu, lakini baadaye maudhui yalipanuliwa mara kadhaa na urefu ukaongezeka sana, hivyo uliundwa upya kuwa sehemu 3.</p></blockquote><h2 id="mahitaji">Mahitaji</h2><ul class="task-list"><li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Matokeo ya build (ukurasa wa wavuti) lazima yaweze kutolewa kwa kuyatenganisha kwa njia ya kila lugha (mf. <code class="language-plaintext filepath highlighter-rouge">/posts/ko/</code>, <code class="language-plaintext filepath highlighter-rouge">/posts/ja/</code>).<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Ili kupunguza kwa kiwango cha chini iwezekanavyo muda na juhudi za ziada zinazohitajika kwa usaidizi wa lugha nyingi, isiwe lazima kuweka tagi za <code class="language-plaintext highlighter-rouge">lang</code> na <code class="language-plaintext highlighter-rouge">permalink</code> moja kwa moja kwenye YAML front matter ya faili ya asili ya markdown; badala yake, wakati wa build faili itambue lugha kiotomatiki kulingana na njia ya ndani ilipo (mf. <code class="language-plaintext filepath highlighter-rouge">/_posts/ko/</code>, <code class="language-plaintext filepath highlighter-rouge">/_posts/ja/</code>).<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Sehemu ya header ya kila ukurasa katika tovuti lazima ijumuishwe kwa usahihi meta tag ya Content-Language, hreflang alternate tag, na canonical link ili kukidhi mwongozo wa Google SEO kwa utafutaji wa lugha nyingi.<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Lazima iwezekane kutoa viungo vya kila toleo la lugha la kila ukurasa ndani ya tovuti kupitia <code class="language-plaintext filepath highlighter-rouge">sitemap.xml</code> bila kuacha chochote, na <code class="language-plaintext filepath highlighter-rouge">sitemap.xml</code> yenyewe lazima iwe moja tu kwenye root path bila marudio.<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Vipengele vyote vinavyotolewa na <a href="https://github.com/cotes2020/jekyll-theme-chirpy">mandhari ya Chirpy</a> lazima vifanye kazi ipasavyo kwenye kurasa za kila lugha, na kama sivyo, virekebishwe vifanye kazi ipasavyo.<ul class="task-list"><li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Vipengele vya ‘Recently Updated’ na ‘Trending Tags’ vifanye kazi ipasavyo<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Mchakato wa build kwa kutumia GitHub Actions usitoe kosa<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Kipengele cha kutafuta machapisho kilicho juu kulia mwa blogu kifanye kazi ipasavyo</ul></ul><h2 id="kabla-ya-kuanza">Kabla ya kuanza</h2><p>Kwa kuwa makala hii inaendelea kutoka <a href="/sw/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-1">Sehemu ya 1</a> na <a href="/sw/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-2">Sehemu ya 2</a>, kama bado hujazisoma, ninapendekeza uanze na makala zilizotangulia.</p><h2 id="utatuzi-wa-tatizo-relative_url_regex-target-of-repeat-operator-is-not-specified">Utatuzi wa tatizo (‘relative_url_regex’: target of repeat operator is not specified)</h2><p>(+ Sasisho la 12025.10.08.) <a href="https://polyglot.untra.io/2025/09/20/polyglot.1.11.0/">Hitilafu hii ilitatuliwa katika toleo la Polyglot 1.11</a>.</p><p>Baada ya kukamilisha hatua za awali na kuendesha amri ya <code class="language-plaintext highlighter-rouge">bundle exec jekyll serve</code> ili kujaribu build, build ilishindwa kwa kosa la <code class="language-plaintext highlighter-rouge">'relative_url_regex': target of repeat operator is not specified</code>.</p><div class="language-shell highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre><td class="rouge-code"><pre>...<span class="o">(</span>imefupishwa<span class="o">)</span>
                    <span class="nt">------------------------------------------------</span>
      Jekyll 4.3.4   Please append <span class="sb">`</span><span class="nt">--trace</span><span class="sb">`</span> to the <span class="sb">`</span>serve<span class="sb">`</span> <span class="nb">command 
                     </span><span class="k">for </span>any additional information or backtrace. 
                    <span class="nt">------------------------------------------------</span>
/Users/yunseo/.gem/ruby/3.2.2/gems/jekyll-polyglot-1.8.1/lib/jekyll/polyglot/
patches/jekyll/site.rb:234:in <span class="sb">`</span>relative_url_regex<span class="s1">': target of repeat operator 
is not specified: /href="?\/((?:(?!*.gem)(?!*.gemspec)(?!tools)(?!README.md)(
?!LICENSE)(?!*.config.js)(?!rollup.config.js)(?!package*.json)(?!.sass-cache)
(?!.jekyll-cache)(?!gemfiles)(?!Gemfile)(?!Gemfile.lock)(?!node_modules)(?!ve
ndor\/bundle\/)(?!vendor\/cache\/)(?!vendor\/gems\/)(?!vendor\/ruby\/)(?!en\/
)(?!ko\/)(?!es\/)(?!pt-BR\/)(?!ja\/)(?!fr\/)(?!de\/)[^,'</span><span class="s2">"</span><span class="se">\s\/</span><span class="s2">?.]+</span><span class="se">\.</span><span class="s2">?)*(?:</span><span class="se">\/</span><span class="s2">[^
</span><span class="se">\]\[</span><span class="s2">)("</span><span class="s1">'\s]*)?)"/ (RegexpError)

...(sehemu iliyobaki imefupishwa)
</span></pre></div></div><p>Nilipotafuta kama tatizo kama hili lilikuwa limeshawahi kuripotiwa, niligundua kuwa kwenye hazina ya Polyglot tayari kulikuwa na <a href="https://github.com/untra/polyglot/issues/204">issue iliyo sawa kabisa</a>, na pia suluhisho lilikuwepo.</p><p>Ndani ya faili ya <a href="https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/_config.yml"><code class="language-plaintext filepath highlighter-rouge">_config.yml</code> ya mandhari ya Chirpy</a> inayotumika kwenye blogu hii, kuna kipande kifuatacho.</p><div file="\_config.yml" class="language-yml highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre><td class="rouge-code"><pre><span class="na">exclude</span><span class="pi">:</span>
  <span class="pi">-</span> <span class="s2">"</span><span class="s">*.gem"</span>
  <span class="pi">-</span> <span class="s2">"</span><span class="s">*.gemspec"</span>
  <span class="pi">-</span> <span class="s">docs</span>
  <span class="pi">-</span> <span class="s">tools</span>
  <span class="pi">-</span> <span class="s">README.md</span>
  <span class="pi">-</span> <span class="s">LICENSE</span>
  <span class="pi">-</span> <span class="s2">"</span><span class="s">*.config.js"</span>
  <span class="pi">-</span> <span class="s">package*.json</span>
</pre></div></div><p>Chanzo cha tatizo ni kwamba sintaksia ya regular expression katika kazi mbili zifuatazo zilizomo kwenye faili ya <a href="https://github.com/untra/polyglot/blob/master/lib/jekyll/polyglot/patches/jekyll/site.rb"><code class="language-plaintext filepath highlighter-rouge">site.rb</code> ya Polyglot</a> haiwezi kushughulikia ipasavyo mifumo ya globbing yenye wildcard kama <code class="language-plaintext highlighter-rouge">"*.gem"</code>, <code class="language-plaintext highlighter-rouge">"*.gemspec"</code>, na <code class="language-plaintext highlighter-rouge">"*.config.js"</code> iliyotajwa hapo juu.</p><div file="(polyglot root path)/lib/jekyll/polyglot/patches/jekyll/site.rb" class="language-ruby highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">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
</pre><td class="rouge-code"><pre>    <span class="c1"># a regex that matches relative urls in a html document</span>
    <span class="c1"># matches href="baseurl/foo/bar-baz" href="/sw/foo/bar-baz" and others like it</span>
    <span class="c1"># avoids matching excluded files.  prepare makes sure</span>
    <span class="c1"># that all @exclude dirs have a trailing slash.</span>
    <span class="k">def</span> <span class="nf">relative_url_regex</span><span class="p">(</span><span class="n">disabled</span> <span class="o">=</span> <span class="kp">false</span><span class="p">)</span>
      <span class="n">regex</span> <span class="o">=</span> <span class="s1">''</span>
      <span class="k">unless</span> <span class="n">disabled</span>
        <span class="vi">@exclude</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">x</span><span class="si">}</span><span class="s2">)"</span>
        <span class="k">end</span>
        <span class="vi">@languages</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">x</span><span class="si">}</span><span class="se">\/</span><span class="s2">)"</span>
        <span class="k">end</span>
      <span class="k">end</span>
      <span class="n">start</span> <span class="o">=</span> <span class="n">disabled</span> <span class="p">?</span> <span class="s1">'ferh'</span> <span class="p">:</span> <span class="s1">'href'</span>
      <span class="sr">%r{</span><span class="si">#{</span><span class="n">start</span><span class="si">}</span><span class="sr">="?</span><span class="si">#{</span><span class="vi">@baseurl</span><span class="si">}</span><span class="sr">/((?:</span><span class="si">#{</span><span class="n">regex</span><span class="si">}</span><span class="sr">[^,'"</span><span class="se">\s</span><span class="sr">/?.]+</span><span class="se">\.</span><span class="sr">?)*(?:/[^</span><span class="se">\]\[</span><span class="sr">)("'</span><span class="se">\s</span><span class="sr">]*)?)"}</span>
    <span class="k">end</span>

    <span class="c1"># a regex that matches absolute urls in a html document</span>
    <span class="c1"># matches href="http://baseurl/foo/bar-baz" and others like it</span>
    <span class="c1"># avoids matching excluded files.  prepare makes sure</span>
    <span class="c1"># that all @exclude dirs have a trailing slash.</span>
    <span class="k">def</span> <span class="nf">absolute_url_regex</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">disabled</span> <span class="o">=</span> <span class="kp">false</span><span class="p">)</span>
      <span class="n">regex</span> <span class="o">=</span> <span class="s1">''</span>
      <span class="k">unless</span> <span class="n">disabled</span>
        <span class="vi">@exclude</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">x</span><span class="si">}</span><span class="s2">)"</span>
        <span class="k">end</span>
        <span class="vi">@languages</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">x</span><span class="si">}</span><span class="se">\/</span><span class="s2">)"</span>
        <span class="k">end</span>
      <span class="k">end</span>
      <span class="n">start</span> <span class="o">=</span> <span class="n">disabled</span> <span class="p">?</span> <span class="s1">'ferh'</span> <span class="p">:</span> <span class="s1">'href'</span>
      <span class="sr">%r{(?&lt;!hreflang="</span><span class="si">#{</span><span class="vi">@default_lang</span><span class="si">}</span><span class="sr">" )</span><span class="si">#{</span><span class="n">start</span><span class="si">}</span><span class="sr">="?</span><span class="si">#{</span><span class="n">url</span><span class="si">}#{</span><span class="vi">@baseurl</span><span class="si">}</span><span class="sr">/((?:</span><span class="si">#{</span><span class="n">regex</span><span class="si">}</span><span class="sr">[^,'"</span><span class="se">\s</span><span class="sr">/?.]+</span><span class="se">\.</span><span class="sr">?)*(?:/[^</span><span class="se">\]\[</span><span class="sr">)("'</span><span class="se">\s</span><span class="sr">]*)?)"}</span>
    <span class="k">end</span>
</pre></div></div><p>Kuna njia mbili za kutatua tatizo hili.</p><h3 id="1-fanya-fork-ya-polyglot-kisha-urekebishe-sehemu-yenye-tatizo-na-uitumie">1. Fanya fork ya Polyglot kisha urekebishe sehemu yenye tatizo na uitumie</h3><p>Kufikia wakati wa kuandika makala hii (12024.11.), <a href="https://jekyllrb.com/docs/configuration/options/#global-configuration">nyaraka rasmi za Jekyll</a> zinaeleza wazi kuwa mpangilio wa <code class="language-plaintext highlighter-rouge">exclude</code> unaunga mkono matumizi ya mifumo ya globbing ya <code class="language-plaintext highlighter-rouge">File.fnmatch</code> ya Ruby.</p><blockquote><p>“This configuration option supports Ruby’s File.fnmatch filename globbing patterns to match multiple entries to exclude.”</p></blockquote><p>Kwa maneno mengine, chanzo cha tatizo si mandhari ya Chirpy bali ni kazi mbili za Polyglot, <code class="language-plaintext highlighter-rouge">relative_url_regex()</code> na <code class="language-plaintext highlighter-rouge">absolute_url_regex()</code>, hivyo suluhisho la msingi ni kuzirekebisha ili zisiibue tatizo hili.</p><p><del>Kwa kuwa hitilafu hii ilikuwa bado haijatatuliwa ndani ya Polyglot,</del> kama ilivyoelezwa hapo juu, <a href="https://polyglot.untra.io/2025/09/20/polyglot.1.11.0/">kuanzia Polyglot toleo la 1.11 tatizo hili limetatuliwa</a>. Wakati tatizo hili lilipotokea, niliweza kulitatua kwa kurejelea <del><a href="https://hionpu.com/posts/github_blog_4#4-polyglot-%EC%9D%98%EC%A1%B4%EC%84%B1-%EB%AC%B8%EC%A0%9C">chapisho hili la blogu</a>(tovuti imeondolewa) na</del> <a href="https://github.com/untra/polyglot/issues/204#issuecomment-2143270322">jibu lililoachwa kwenye GitHub issue iliyotajwa awali</a>, kisha kufanya fork ya hazina ya Polyglot na kurekebisha sehemu yenye tatizo kama ifuatavyo ili kuitumia badala ya Polyglot asili.</p><div file="(polyglot root path)/lib/jekyll/polyglot/patches/jekyll/site.rb" class="language-ruby highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">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
</pre><td class="rouge-code"><pre>    <span class="k">def</span> <span class="nf">relative_url_regex</span><span class="p">(</span><span class="n">disabled</span> <span class="o">=</span> <span class="kp">false</span><span class="p">)</span>
      <span class="n">regex</span> <span class="o">=</span> <span class="s1">''</span>
      <span class="k">unless</span> <span class="n">disabled</span>
        <span class="vi">@exclude</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">escaped_x</span> <span class="o">=</span> <span class="no">Regexp</span><span class="p">.</span><span class="nf">escape</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">escaped_x</span><span class="si">}</span><span class="s2">)"</span>
        <span class="k">end</span>
        <span class="vi">@languages</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">escaped_x</span> <span class="o">=</span> <span class="no">Regexp</span><span class="p">.</span><span class="nf">escape</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">escaped_x</span><span class="si">}</span><span class="se">\/</span><span class="s2">)"</span>
        <span class="k">end</span>
      <span class="k">end</span>
      <span class="n">start</span> <span class="o">=</span> <span class="n">disabled</span> <span class="p">?</span> <span class="s1">'ferh'</span> <span class="p">:</span> <span class="s1">'href'</span>
      <span class="sr">%r{</span><span class="si">#{</span><span class="n">start</span><span class="si">}</span><span class="sr">="?</span><span class="si">#{</span><span class="vi">@baseurl</span><span class="si">}</span><span class="sr">/((?:</span><span class="si">#{</span><span class="n">regex</span><span class="si">}</span><span class="sr">[^,'"</span><span class="se">\s</span><span class="sr">/?.]+</span><span class="se">\.</span><span class="sr">?)*(?:/[^</span><span class="se">\]\[</span><span class="sr">)("'</span><span class="se">\s</span><span class="sr">]*)?)"}</span>
    <span class="k">end</span>

    <span class="k">def</span> <span class="nf">absolute_url_regex</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">disabled</span> <span class="o">=</span> <span class="kp">false</span><span class="p">)</span>
      <span class="n">regex</span> <span class="o">=</span> <span class="s1">''</span>
      <span class="k">unless</span> <span class="n">disabled</span>
        <span class="vi">@exclude</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">escaped_x</span> <span class="o">=</span> <span class="no">Regexp</span><span class="p">.</span><span class="nf">escape</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">escaped_x</span><span class="si">}</span><span class="s2">)"</span>
        <span class="k">end</span>
        <span class="vi">@languages</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">escaped_x</span> <span class="o">=</span> <span class="no">Regexp</span><span class="p">.</span><span class="nf">escape</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">escaped_x</span><span class="si">}</span><span class="se">\/</span><span class="s2">)"</span>
        <span class="k">end</span>
      <span class="k">end</span>
      <span class="n">start</span> <span class="o">=</span> <span class="n">disabled</span> <span class="p">?</span> <span class="s1">'ferh'</span> <span class="p">:</span> <span class="s1">'href'</span>
      <span class="sr">%r{(?&lt;!hreflang="</span><span class="si">#{</span><span class="vi">@default_lang</span><span class="si">}</span><span class="sr">" )</span><span class="si">#{</span><span class="n">start</span><span class="si">}</span><span class="sr">="?</span><span class="si">#{</span><span class="n">url</span><span class="si">}#{</span><span class="vi">@baseurl</span><span class="si">}</span><span class="sr">/((?:</span><span class="si">#{</span><span class="n">regex</span><span class="si">}</span><span class="sr">[^,'"</span><span class="se">\s</span><span class="sr">/?.]+</span><span class="se">\.</span><span class="sr">?)*(?:/[^</span><span class="se">\]\[</span><span class="sr">)("'</span><span class="se">\s</span><span class="sr">]*)?)"}</span>
    <span class="k">end</span>
</pre></div></div><h3 id="2-badilisha-mifumo-ya-globbing-kwenye-faili-ya-mpangilio-_configyml-ya-mandhari-ya-chirpy-kuwa-majina-halisi-ya-faili">2. Badilisha mifumo ya globbing kwenye faili ya mpangilio <code class="language-plaintext highlighter-rouge">\_config.yml</code> ya mandhari ya Chirpy kuwa majina halisi ya faili</h3><p>Kwa kweli, njia sahihi na bora ni patch hiyo kuingizwa kwenye mkondo mkuu wa Polyglot. Hata hivyo, hadi hilo litokee, ingetakiwa kutumia toleo la fork, na katika hali hiyo ni usumbufu kufuatilia kila toleo jipya la upstream ya Polyglot bila kukosa masasisho, kwa hiyo nilichagua njia nyingine.</p><p>Ukikagua faili zilizopo kwenye root path ya mradi katika <a href="https://github.com/cotes2020/jekyll-theme-chirpy">hazina ya mandhari ya Chirpy</a>, utaona kuwa faili zinazolingana na mifumo <code class="language-plaintext highlighter-rouge">"*.gem"</code>, <code class="language-plaintext highlighter-rouge">"*.gemspec"</code>, na <code class="language-plaintext highlighter-rouge">"*.config.js"</code> ni hizi tatu tu.</p><ul><li><code class="language-plaintext filepath highlighter-rouge">jekyll-theme-chirpy.gemspec</code><li><code class="language-plaintext filepath highlighter-rouge">purgecss.config.js</code><li><code class="language-plaintext filepath highlighter-rouge">rollup.config.js</code></ul><p>Kwa hiyo, ukiondoa mifumo ya globbing kutoka kipengele cha <code class="language-plaintext highlighter-rouge">exclude</code> ndani ya faili ya <code class="language-plaintext filepath highlighter-rouge">_config.yml</code> na kuandika upya kama ifuatavyo, Polyglot itaweza kuishughulikia bila tatizo.</p><div file="\_config.yml" class="language-yml highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre><td class="rouge-code"><pre><span class="na">exclude</span><span class="pi">:</span> <span class="c1"># Imebadilishwa kwa kurejelea issue ya https://github.com/untra/polyglot/issues/204</span>
  <span class="c1"># - "*.gem"</span>
  <span class="pi">-</span> <span class="s">jekyll-theme-chirpy.gemspec</span> <span class="c1"># - "*.gemspec"</span>
  <span class="pi">-</span> <span class="s">tools</span>
  <span class="pi">-</span> <span class="s">README.md</span>
  <span class="pi">-</span> <span class="s">LICENSE</span>
  <span class="pi">-</span> <span class="s">purgecss.config.js</span> <span class="c1"># - "*.config.js"</span>
  <span class="pi">-</span> <span class="s">rollup.config.js</span>
  <span class="pi">-</span> <span class="s">package*.json</span>
</pre></div></div><h2 id="kurekebisha-kipengele-cha-utafutaji">Kurekebisha kipengele cha utafutaji</h2><p>Baada ya kufika hatua zilizotangulia, karibu vipengele vyote vya tovuti vilikuwa vinafanya kazi vizuri kama ilivyokusudiwa. Hata hivyo, baadaye niligundua kuwa search bar iliyopo juu kulia kwenye kurasa zinazotumia mandhari ya Chirpy haiwezi kuorodhesha kurasa zilizo katika lugha nyingine isipokuwa <code class="language-plaintext highlighter-rouge">site.default_lang</code> (kwa blogu hii, Kiingereza), na hata ukitafuta ukiwa kwenye ukurasa wa lugha isiyo Kiingereza, matokeo ya utafutaji yanarudisha viungo vya kurasa za Kiingereza.</p><p>Ili kubaini sababu, hebu tuangalie ni faili zipi zinahusika katika kipengele cha utafutaji na ni sehemu gani hasa tatizo linatokea.</p><h3 id="_layoutsdefaulthtml"><code class="language-plaintext highlighter-rouge">\_layouts/default.html</code></h3><p>Ukiangalia faili ya <a href="https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/_layouts/default.html"><code class="language-plaintext filepath highlighter-rouge">_layouts/default.html</code></a>, ambayo huunda muundo wa msingi wa kurasa zote ndani ya blogu, unaweza kuona kwamba ndani ya elementi ya <code class="language-plaintext highlighter-rouge">&lt;body&gt;</code>, maudhui ya <code class="language-plaintext filepath highlighter-rouge">search-results.html</code> na <code class="language-plaintext filepath highlighter-rouge">search-loader.html</code> yanapakiwa.</p><div file="\_layouts/default.html" class="language-liquid highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre><td class="rouge-code"><pre>  &lt;body&gt;
    <span class="cp">{%</span><span class="w"> </span><span class="nt">include</span><span class="w"> </span>sidebar.html<span class="w"> </span><span class="na">lang</span><span class="o">=</span><span class="nv">lang</span><span class="w"> </span><span class="cp">%}</span>

    &lt;div id="main-wrapper" class="d-flex justify-content-center"&gt;
      &lt;div class="container d-flex flex-column px-xxl-5"&gt;
        
        (...sehemu ya kati imeondolewa...)

        <span class="cp">{%</span><span class="w"> </span><span class="nt">include_cached</span><span class="w"> </span><span class="nv">search-results</span><span class="p">.</span><span class="nv">html</span><span class="w"> </span><span class="na">lang</span><span class="o">=</span><span class="nv">lang</span><span class="w"> </span><span class="cp">%}</span>
      &lt;/div&gt;

      &lt;aside aria-label="Scroll to Top"&gt;
        &lt;button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow"&gt;
          &lt;i class="fas fa-angle-up"&gt;&lt;/i&gt;
        &lt;/button&gt;
      &lt;/aside&gt;
    &lt;/div&gt;

    (...sehemu ya kati imeondolewa...)

    <span class="cp">{%</span><span class="w"> </span><span class="nt">include_cached</span><span class="w"> </span><span class="nv">search-loader</span><span class="p">.</span><span class="nv">html</span><span class="w"> </span><span class="na">lang</span><span class="o">=</span><span class="nv">lang</span><span class="w"> </span><span class="cp">%}</span>
  &lt;/body&gt;
</pre></div></div><h3 id="_includessearch-resulthtml"><code class="language-plaintext highlighter-rouge">\_includes/search-result.html</code></h3><p><a href="https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/_includes/search-results.html"><code class="language-plaintext filepath highlighter-rouge">_includes/search-result.html</code></a> hutengeneza kontena la <code class="language-plaintext highlighter-rouge">search-results</code> kwa ajili ya kuhifadhi matokeo ya utafutaji ya nenomsingi linaloingizwa kwenye kisanduku cha utafutaji.</p><div file="\_includes/search-result.html" class="language-html highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
</pre><td class="rouge-code"><pre><span class="c">&lt;!-- The Search results --&gt;</span>

<span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"search-result-wrapper"</span> <span class="na">class=</span><span class="s">"d-flex justify-content-center d-none"</span><span class="nt">&gt;</span>
  <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"col-11 content"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"search-hints"</span><span class="nt">&gt;</span>
      {% include_cached trending-tags.html %}
    <span class="nt">&lt;/div&gt;</span>
    <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"search-results"</span> <span class="na">class=</span><span class="s">"d-flex flex-wrap justify-content-center text-muted mt-3"</span><span class="nt">&gt;&lt;/div&gt;</span>
  <span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
</pre></div></div><h3 id="_includessearch-loaderhtml"><code class="language-plaintext highlighter-rouge">\_includes/search-loader.html</code></h3><p><a href="https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/_includes/search-loader.html"><code class="language-plaintext filepath highlighter-rouge">_includes/search-loader.html</code></a> ndiyo sehemu kuu inayotekeleza utafutaji kwa kutumia maktaba ya <a href="https://github.com/christian-fei/Simple-Jekyll-Search">Simple-Jekyll-Search</a>. Hapa tunaweza kuona kuwa utafutaji hufanya kazi upande wa mteja (client-side) kwa kuendesha JavaScript kwenye kivinjari cha mtumiaji, ambayo hutafuta sehemu zinazoendana na nenomsingi lililoingizwa ndani ya faili ya faharasa ya <a href="#assetsjsdatasearchjson"><code class="language-plaintext filepath highlighter-rouge">search.json</code></a>, kisha kurudisha kiungo cha chapisho husika kama elementi ya <code class="language-plaintext highlighter-rouge">&lt;article&gt;</code>.</p><div file="\_includes/search-loader.html" class="language-js highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">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
36
37
38
39
40
41
42
43
44
</pre><td class="rouge-code"><pre><span class="p">{</span><span class="o">%</span> <span class="nx">capture</span> <span class="nx">result_elem</span> <span class="o">%</span><span class="p">}</span>
  <span class="o">&lt;</span><span class="nx">article</span> <span class="kd">class</span><span class="o">=</span><span class="dl">"</span><span class="s2">px-1 px-sm-2 px-lg-4 px-xl-0</span><span class="dl">"</span><span class="o">&gt;</span>
    <span class="o">&lt;</span><span class="nx">header</span><span class="o">&gt;</span>
      <span class="o">&lt;</span><span class="nx">h2</span><span class="o">&gt;&lt;</span><span class="nx">a</span> <span class="nx">href</span><span class="o">=</span><span class="dl">"</span><span class="s2">{url}</span><span class="dl">"</span><span class="o">&gt;</span><span class="p">{</span><span class="nx">title</span><span class="p">}</span><span class="o">&lt;</span><span class="sr">/a&gt;&lt;/</span><span class="nx">h2</span><span class="o">&gt;</span>
      <span class="o">&lt;</span><span class="nx">div</span> <span class="kd">class</span><span class="o">=</span><span class="dl">"</span><span class="s2">post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1</span><span class="dl">"</span><span class="o">&gt;</span>
        <span class="p">{</span><span class="nx">categories</span><span class="p">}</span>
        <span class="p">{</span><span class="nx">tags</span><span class="p">}</span>
      <span class="o">&lt;</span><span class="sr">/div</span><span class="err">&gt;
</span>    <span class="o">&lt;</span><span class="sr">/header</span><span class="err">&gt;
</span>    <span class="o">&lt;</span><span class="nx">p</span><span class="o">&gt;</span><span class="p">{</span><span class="nx">snippet</span><span class="p">}</span><span class="o">&lt;</span><span class="sr">/p</span><span class="err">&gt;
</span>  <span class="o">&lt;</span><span class="sr">/article</span><span class="err">&gt;
</span><span class="p">{</span><span class="o">%</span> <span class="nx">endcapture</span> <span class="o">%</span><span class="p">}</span>

<span class="p">{</span><span class="o">%</span> <span class="nx">capture</span> <span class="nx">not_found</span> <span class="o">%</span><span class="p">}</span><span class="o">&lt;</span><span class="nx">p</span> <span class="kd">class</span><span class="o">=</span><span class="dl">"</span><span class="s2">mt-5</span><span class="dl">"</span><span class="o">&gt;</span><span class="p">{{</span> <span class="nx">site</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">locales</span><span class="p">[</span><span class="nx">include</span><span class="p">.</span><span class="nx">lang</span><span class="p">].</span><span class="nx">search</span><span class="p">.</span><span class="nx">no_results</span> <span class="p">}}</span><span class="o">&lt;</span><span class="sr">/p&gt;{% endcapture %</span><span class="err">}
</span>
<span class="o">&lt;</span><span class="nx">script</span><span class="o">&gt;</span>
  <span class="p">{</span><span class="o">%</span> <span class="nx">comment</span> <span class="o">%</span><span class="p">}</span> <span class="nl">Note</span><span class="p">:</span> <span class="nx">dependent</span> <span class="nx">library</span> <span class="nx">will</span> <span class="nx">be</span> <span class="nx">loaded</span> <span class="k">in</span> <span class="s2">`js-selector.html`</span> <span class="p">{</span><span class="o">%</span> <span class="nx">endcomment</span> <span class="o">%</span><span class="p">}</span>
  <span class="nb">document</span><span class="p">.</span><span class="nf">addEventListener</span><span class="p">(</span><span class="dl">'</span><span class="s1">DOMContentLoaded</span><span class="dl">'</span><span class="p">,</span> <span class="p">()</span> <span class="o">=&gt;</span> <span class="p">{</span>
    <span class="nc">SimpleJekyllSearch</span><span class="p">({</span>
      <span class="na">searchInput</span><span class="p">:</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">search-input</span><span class="dl">'</span><span class="p">),</span>
      <span class="na">resultsContainer</span><span class="p">:</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">search-results</span><span class="dl">'</span><span class="p">),</span>
      <span class="na">json</span><span class="p">:</span> <span class="dl">'</span><span class="s1">{{ </span><span class="dl">'</span><span class="o">/</span><span class="nx">assets</span><span class="o">/</span><span class="nx">js</span><span class="o">/</span><span class="nx">data</span><span class="o">/</span><span class="nx">search</span><span class="p">.</span><span class="nx">json</span><span class="dl">'</span><span class="s1"> | relative_url }}</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">searchResultTemplate</span><span class="p">:</span> <span class="dl">'</span><span class="s1">{{ result_elem | strip_newlines }}</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">noResultsText</span><span class="p">:</span> <span class="dl">'</span><span class="s1">{{ not_found }}</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">templateMiddleware</span><span class="p">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">prop</span><span class="p">,</span> <span class="nx">value</span><span class="p">,</span> <span class="nx">template</span><span class="p">)</span> <span class="p">{</span>
        <span class="k">if </span><span class="p">(</span><span class="nx">prop</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">categories</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
          <span class="k">if </span><span class="p">(</span><span class="nx">value</span> <span class="o">===</span> <span class="dl">''</span><span class="p">)</span> <span class="p">{</span>
            <span class="k">return</span> <span class="s2">`</span><span class="p">${</span><span class="nx">value</span><span class="p">}</span><span class="s2">`</span><span class="p">;</span>
          <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
            <span class="k">return</span> <span class="s2">`&lt;div class="me-sm-4"&gt;&lt;i class="far fa-folder fa-fw"&gt;&lt;/i&gt;</span><span class="p">${</span><span class="nx">value</span><span class="p">}</span><span class="s2">&lt;/div&gt;`</span><span class="p">;</span>
          <span class="p">}</span>
        <span class="p">}</span>

        <span class="k">if </span><span class="p">(</span><span class="nx">prop</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">tags</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
          <span class="k">if </span><span class="p">(</span><span class="nx">value</span> <span class="o">===</span> <span class="dl">''</span><span class="p">)</span> <span class="p">{</span>
            <span class="k">return</span> <span class="s2">`</span><span class="p">${</span><span class="nx">value</span><span class="p">}</span><span class="s2">`</span><span class="p">;</span>
          <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
            <span class="k">return</span> <span class="s2">`&lt;div&gt;&lt;i class="fa fa-tag fa-fw"&gt;&lt;/i&gt;</span><span class="p">${</span><span class="nx">value</span><span class="p">}</span><span class="s2">&lt;/div&gt;`</span><span class="p">;</span>
          <span class="p">}</span>
        <span class="p">}</span>
      <span class="p">}</span>
    <span class="p">});</span>
  <span class="p">});</span>
<span class="o">&lt;</span><span class="sr">/script</span><span class="err">&gt;
</span></pre></div></div><h3 id="assetsjsdatasearchjson"><code class="language-plaintext highlighter-rouge">/assets/js/data/search.json</code></h3><div file="/assets/js/data/search.json" class="language-liquid highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre><td class="rouge-code"><pre>---
layout: compress
swcache: true
---

[
  <span class="cp">{%</span><span class="w"> </span><span class="nt">for</span><span class="w"> </span><span class="nv">post</span><span class="w"> </span><span class="nt">in</span><span class="w"> </span><span class="nv">site</span><span class="p">.</span><span class="nv">posts</span><span class="w"> </span><span class="cp">%}</span>
  {
    "title": <span class="cp">{{</span><span class="w"> </span><span class="nv">post</span><span class="p">.</span><span class="nv">title</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">jsonify</span><span class="w"> </span><span class="cp">}}</span>,
    "url": <span class="cp">{{</span><span class="w"> </span><span class="nv">post</span><span class="p">.</span><span class="nv">url</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">relative_url</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">jsonify</span><span class="w"> </span><span class="cp">}}</span>,
    "categories": <span class="cp">{{</span><span class="w"> </span><span class="nv">post</span><span class="p">.</span><span class="nv">categories</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">join</span><span class="p">:</span><span class="w"> </span><span class="s1">', '</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">jsonify</span><span class="w"> </span><span class="cp">}}</span>,
    "tags": <span class="cp">{{</span><span class="w"> </span><span class="nv">post</span><span class="p">.</span><span class="nv">tags</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">join</span><span class="p">:</span><span class="w"> </span><span class="s1">', '</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">jsonify</span><span class="w"> </span><span class="cp">}}</span>,
    "date": "<span class="cp">{{</span><span class="w"> </span><span class="nv">post</span><span class="p">.</span><span class="nv">date</span><span class="w"> </span><span class="cp">}}</span>",
    <span class="cp">{%</span><span class="w"> </span><span class="nt">include</span><span class="w"> </span>no-linenos.html<span class="w"> </span><span class="na">content</span><span class="o">=</span><span class="nv">post</span><span class="p">.</span><span class="nv">content</span><span class="w"> </span><span class="cp">%}</span>
    <span class="cp">{%</span><span class="w"> </span><span class="nt">assign</span><span class="w"> </span><span class="nv">_content</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">content</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">strip_html</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">strip_newlines</span><span class="w"> </span><span class="cp">%}</span>
    "snippet": <span class="cp">{{</span><span class="w"> </span><span class="nv">_content</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">truncate</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">jsonify</span><span class="w"> </span><span class="cp">}}</span>,
    "content": <span class="cp">{{</span><span class="w"> </span><span class="nv">_content</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">jsonify</span><span class="w"> </span><span class="cp">}}</span>
  }<span class="cp">{%</span><span class="w"> </span><span class="nt">unless</span><span class="w"> </span><span class="nb">forloop.last</span><span class="w"> </span><span class="cp">%}</span>,<span class="cp">{%</span><span class="w"> </span><span class="nt">endunless</span><span class="w"> </span><span class="cp">%}</span>
  <span class="cp">{%</span><span class="w"> </span><span class="nt">endfor</span><span class="w"> </span><span class="cp">%}</span>
]
</pre></div></div><p>Hii inafafanua faili ya JSON inayobeba kichwa cha kila chapisho, URL, taarifa za categories na tags, tarehe ya kuandika, snippet ya herufi 200 za mwanzo kutoka kwenye mwili wa maandishi, pamoja na maudhui kamili ya mwili, kwa kutumia sintaksia ya Liquid ya Jekyll.</p><h3 id="muundo-wa-utendaji-wa-kipengele-cha-utafutaji-na-kubaini-sehemu-yenye-tatizo">Muundo wa utendaji wa kipengele cha utafutaji na kubaini sehemu yenye tatizo</h3><p>Kwa muhtasari, unapo-host mandhari ya Chirpy kwenye GitHub Pages, kipengele cha utafutaji hufanya kazi kwa mchakato ufuatao.</p><pre><code class="language-mermaid">stateDiagram
  state "Mabadiliko" as CH
  state "Build inaanza" as BLD
  state "Unda search.json" as IDX
  state "Tovuti tuli" as DEP
  state "Katika majaribio" as TST
  state "Search Loader" as SCH
  state "Matokeo" as R
    
  [*] --&gt; CH: Fanya Mabadiliko
  CH --&gt; BLD: Commit &amp; Push origin
  BLD --&gt; IDX: jekyll build
  IDX --&gt; TST: Build Complete
  TST --&gt; CH: Error Detected
  TST --&gt; DEP: Deploy
  DEP --&gt; SCH: Search Input
  SCH --&gt; R: Return Results
  R --&gt; [*]
</code></pre><p>Hapa nilithibitisha kwamba <code class="language-plaintext filepath highlighter-rouge">search.json</code> hutengenezwa kwa kila lugha na Polyglot kama ifuatavyo.</p><ul><li><code class="language-plaintext filepath highlighter-rouge">/assets/js/data/search.json</code><li><code class="language-plaintext filepath highlighter-rouge">/ko/assets/js/data/search.json</code><li><code class="language-plaintext filepath highlighter-rouge">/ja/assets/js/data/search.json</code><li><code class="language-plaintext filepath highlighter-rouge">/zh-TW/assets/js/data/search.json</code><li><code class="language-plaintext filepath highlighter-rouge">/es/assets/js/data/search.json</code><li><code class="language-plaintext filepath highlighter-rouge">/pt-BR/assets/js/data/search.json</code><li><code class="language-plaintext filepath highlighter-rouge">/fr/assets/js/data/search.json</code><li><code class="language-plaintext filepath highlighter-rouge">/de/assets/js/data/search.json</code></ul><p>Kwa hiyo sehemu inayosababisha tatizo ni “Search Loader”. Tatizo la kurasa za lugha nyingine isipokuwa Kiingereza kutopatikana kwenye utafutaji linatokea kwa sababu <code class="language-plaintext filepath highlighter-rouge">_includes/search-loader.html</code> hupakia kwa njia tuli faili ya faharasa ya Kiingereza pekee (<code class="language-plaintext filepath highlighter-rouge">/assets/js/data/search.json</code>) bila kujali lugha ya ukurasa anaotembelea mtumiaji.</p><blockquote class="prompt-warning"><ul><li>Hata hivyo, tofauti na faili za markdown au html, kwa faili za JSON inaonekana kuwa Polyglot wrapper kwa vigeu vinavyotolewa na Jekyll kama <code class="language-plaintext highlighter-rouge">post.title</code>, <code class="language-plaintext highlighter-rouge">post.content</code> n.k. hufanya kazi, lakini kipengele cha <a href="https://github.com/untra/polyglot?tab=readme-ov-file#relativized-local-urls">Relativized Local Urls</a> hakifanyi kazi.<li>Vivyo hivyo, nilithibitisha wakati wa majaribio kuwa ndani ya template ya faili ya JSON, huwezi kufikia liquid tag zinazotolewa ziada na Polyglot, yaani <a href="https://github.com/untra/polyglot?tab=readme-ov-file#features"><code class="language-plaintext highlighter-rouge">{{ site.default_lang }}</code>, <code class="language-plaintext highlighter-rouge">{{ site.active_lang }}</code></a>, mbali na vigeu vya msingi vya Jekyll.</ul><p>Kwa hiyo, ingawa thamani za <code class="language-plaintext highlighter-rouge">title</code>, <code class="language-plaintext highlighter-rouge">snippet</code>, <code class="language-plaintext highlighter-rouge">content</code> n.k. huzalishwa tofauti kwa kila lugha ndani ya faili ya faharasa, thamani ya <code class="language-plaintext highlighter-rouge">url</code> hurudisha njia ya msingi isiyozingatia lugha, na ushughulikiaji ufaao wa hili lazima uongezwe katika sehemu ya “Search Loader”.</p></blockquote><h3 id="kutatua-tatizo">Kutatua tatizo</h3><p>Ili kulitatua, unahitaji kurekebisha maudhui ya <code class="language-plaintext filepath highlighter-rouge">_includes/search-loader.html</code> kama ifuatavyo.</p><div file="\_includes/search-loader.html" class="language-plaintext highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">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
</pre><td class="rouge-code"><pre>{% capture result_elem %}
  &lt;article class="px-1 px-sm-2 px-lg-4 px-xl-0"&gt;
    &lt;header&gt;
      {% if site.active_lang != site.default_lang %}
      &lt;h2&gt;&lt;a {% static_href %}href="/{{ site.active_lang }}{url}"{% endstatic_href %}&gt;{title}&lt;/a&gt;&lt;/h2&gt;
      {% else %}
      &lt;h2&gt;&lt;a href="{url}"&gt;{title}&lt;/a&gt;&lt;/h2&gt;
      {% endif %}

(...sehemu ya kati imeondolewa...)

&lt;script&gt;
  {% comment %} Note: dependent library will be loaded in `js-selector.html` {% endcomment %}
  document.addEventListener('DOMContentLoaded', () =&gt; {
    {% assign search_path = '/assets/js/data/search.json' %}
    {% if site.active_lang != site.default_lang %}
      {% assign search_path = '/' | append: site.active_lang | append: search_path %}
    {% endif %}
    
    SimpleJekyllSearch({
      searchInput: document.getElementById('search-input'),
      resultsContainer: document.getElementById('search-results'),
      json: '{{ search_path | relative_url }}',
      searchResultTemplate: '{{ result_elem | strip_newlines }}',

(...sehemu iliyobaki imefupishwa)
</pre></div></div><ul><li>Nilibadilisha sintaksia ya liquid katika sehemu ya <code class="language-plaintext highlighter-rouge">{% capture result_elem %}</code> ili, ikiwa <code class="language-plaintext highlighter-rouge">site.active_lang</code> (lugha ya ukurasa wa sasa) si sawa na <code class="language-plaintext highlighter-rouge">site.default_lang</code> (lugha msingi ya tovuti), kiambishi <code class="language-plaintext highlighter-rouge">"/{{ site.active_lang }}"</code> kiongezwe mbele ya URL ya chapisho iliyopakiwa kutoka faili ya JSON.<li>Kwa njia hiyo hiyo, nilirekebisha sehemu ya <code class="language-plaintext highlighter-rouge">&lt;script&gt;</code> ili wakati wa build ilinganishe lugha ya ukurasa wa sasa na lugha msingi ya tovuti; ikiwa zinafanana, itumie njia ya msingi (<code class="language-plaintext filepath highlighter-rouge">/assets/js/data/search.json</code>), na ikiwa hazifanani, itumie njia ya lugha husika (mf. <code class="language-plaintext filepath highlighter-rouge">/ko/assets/js/data/search.json</code>) kama <code class="language-plaintext highlighter-rouge">search_path</code>.</ul><p>Baada ya kufanya mabadiliko hayo na ku-build tena tovuti, nilithibitisha kuwa matokeo ya utafutaji sasa yanaonyeshwa ipasavyo kwa kila lugha.</p><blockquote class="prompt-tip"><p><code class="language-plaintext highlighter-rouge">{url}</code> ni mahali ambapo wakati utafutaji utakapotekelezwa JS itaweka thamani ya URL iliyosomwa kutoka faili ya JSON; kwa wakati wa build bado si URL halali, kwa hivyo Polyglot haitambui kama lengo la localization na ni lazima ishughulikiwe moja kwa moja kulingana na lugha. Tatizo ni kwamba template iliyorekebishwa kama <code class="language-plaintext highlighter-rouge">"/{{ site.active_lang }}{url}"</code> hutambuliwa kama relative URL wakati wa build, na ingawa localization tayari imekamilika, Polyglot haijui hilo hivyo hujaribu kufanya localization mara ya pili (mf. <code class="language-plaintext filepath highlighter-rouge">"/ko/ko/posts/example-post"</code>). Ili kuzuia hili, nilieleza wazi tag ya <a href="https://github.com/untra/polyglot?tab=readme-ov-file#disabling-url-relativizing"><code class="language-plaintext highlighter-rouge">{% static_href %}</code></a>.</p></blockquote>]]> </content> </entry> </feed>
