\newenvironment {prompt}{}{} \newcommand {\DeclareMathOperator }{\@OldDeclareMathOperator {##1}{##2}\immediate \write \myfile {\unexpanded {\DeclareMathOperator }{\unexpanded {##1}}{\unexpanded {##2}}}} \newcommand {\ungraded }{} \newcommand {\inputGif }{The gif ‘‘##1" would be inserted here when publishing online. } \newcommand {\npfourdigitsep }{\nprt@numsepfourtrue } \newcommand {\npfourdigitnosep }{\nprt@numsepfourfalse } \newcommand {\npaddmissingzero }{\nprt@addmissingzerotrue } \newcommand {\npnoaddmissingzero }{\nprt@addmissingzerofalse } \newcommand {\npaddplus }{\nprt@addplus@mantissatrue } \newcommand {\npnoaddplus }{\nprt@addplus@mantissafalse } \newcommand {\npaddplusexponent }{\nprt@addplus@exponenttrue } \newcommand {\npnoaddplusexponent }{\nprt@addplus@exponentfalse } \newcommand {\nprt@debug }{} \newcommand {\npdecimalsign }{\def \nprt@decimal {{##1}}} \newcommand {\npthousandsep }{\def \nprt@separator@before {{##1}}\def \nprt@separator@after {{##1}}} \newcommand {\npthousandthpartsep }{\def \nprt@separator@after {{##1}}} \newcommand {\npproductsign }{\def \nprt@prod {\ensuremath {{}##1{}}}} \newcommand {\npunitseparator }{\def \nprt@unitsep {{##1}}} \newcommand {\npdegreeseparator }{\def \nprt@degreesep {{##1}}} \newcommand {\npcelsiusseparator }{\def \nprt@celsiussep {{##1}}} \newcommand {\nppercentseparator }{\def \nprt@percentsep {{##1}}} \newcommand {\nprounddigits }{\def \nprt@rounddigits {##1}\def \nprt@roundnull {}\nprt@fillnull {\nprt@roundnull }{##1}} \newcommand {\npnoround }{\nprounddigits {-1}} \newcommand {\nproundexpdigits }{\def \nprt@roundexpdigits {##1}\def \nprt@roundexpnull {}\nprt@fillnull {\nprt@roundexpnull }{##1}} \newcommand {\npnoroundexp }{\nproundexpdigits {-1}} \newcommand {\npnolpadding }{\nplpadding [\@empty ]{-1}} \newcommand {\npreplacenull }{\def \nprt@replacenull {##1}} \newcommand {\npprintnull }{\let \nprt@replacenull =\@empty } \newcommand {\npunitcommand }{\ensuremath {\mathrm {##1}}} \newcommand {\npdigits }{\edef \nprt@mantissa@fixeddigits@before {##1}\edef \nprt@mantissa@fixeddigits@after {##2}\nprt@mantissa@fixeddigitstrue } \newcommand {\npnodigits }{\nprt@mantissa@fixeddigitsfalse } \newcommand {\npnoexponentdigits }{\nprt@exponent@fixeddigitsfalse } \newcommand {\nprt@error }{\ifnprt@errormessage \PackageError {numprint}{##1}{##2}\else \PackageWarning {numprint}{##1}\fi \nprt@argumenterrortrue } \newcommand {\nprt@IfCharInString }{\nprt@charfoundfalse \begingroup \def \nprt@searchfor {##1}\edef \nprt@argtwo {##2}\expandafter \nprt@@IfCharInString \nprt@argtwo \@empty \@empty \endgroup \ifnprt@charfound \expandafter \@firstoftwo \else \expandafter \@secondoftwo \fi } \newcommand {\nprt@plus@test }{+} \newcommand {\nprt@minus@test }{-} \newcommand {\nprt@plusminus@test }{\pm } \newcommand {\nprt@numberlist }{0123456789} \newcommand {\nprt@dotlist }{.,} \newcommand {\nprt@explist }{eEdD} \newcommand {\nprt@signlist }{+-\pm } \newcommand {\nprt@ignorelist }{} \newcommand {\nprt@testsign }{\edef \nprt@commandname {##1}\edef \nprt@tmp {##2}\expandafter \nprt@@testsign \expandafter {\expandafter \nprt@commandname \expandafter }\nprt@tmp \@empty \@empty \@empty \@empty } \newcommand {\nprt@calcblockwidth }{\edef \nprt@argone {##1}\edef \nprt@argtwo {##2}\edef \nprt@argthree {##3}\edef \nprt@mantissaname {mantissa}\edef \nprt@aftername {after}\ifx \nprt@argone \nprt@mantissaname \ifmmode \settowidth {\nprt@digitwidth }{##30}\settowidth {\nprt@sepwidth }{##3\csname nprt@separator@##2\endcsname }\settowidth {\nprt@decimalwidth }{##3\nprt@decimal }\else \settowidth {\nprt@digitwidth }{0}\settowidth {\nprt@sepwidth }{\csname nprt@separator@##2\endcsname }\settowidth {\nprt@decimalwidth }{\nprt@decimal }\fi \else \ifmmode \settowidth {\nprt@digitwidth }{##3{}^{0}}\settowidth {\nprt@sepwidth }{##3{}^{\csname nprt@separator@##2\endcsname }}\settowidth {\nprt@decimalwidth }{##3{}^{\nprt@decimal }}\else \settowidth {\nprt@digitwidth }{\textsuperscript {0}}\settowidth {\nprt@sepwidth }{\textsuperscript {\csname nprt@separator@##2\endcsname }}\settowidth {\nprt@decimalwidth }{\textsuperscript {\nprt@decimal }}\fi \fi \nprt@debug {Widths for ##1 ##2 decimal sign (\ifx \nprt@argthree \@empty text mode\else math mode ##3\fi ):\MessageBreak digits \the \nprt@digitwidth ,separators \the \nprt@sepwidth ,\MessageBreak decimal sign \the \nprt@decimalwidth }\ifnum \csname nprt@##1@fixeddigits@##2\endcsname <\csname thenprt@##1@digits##2\endcsname \PackageWarning {numprint}{##1 exceeds reserved space ##2\MessageBreak decimal sign}\fi \setlength {\nprt@blockwidth }{\csname nprt@##1@fixeddigits@##2\endcsname \nprt@digitwidth }\setcounter {nprt@blockcnt}{\csname nprt@##1@fixeddigits@##2\endcsname }\advance \c@nprt@blockcnt by -1\relax \divide \c@nprt@blockcnt 3\ifnprt@numsepfour \else \ifnum \csname nprt@##1@fixeddigits@before\endcsname <5 \ifnum \csname nprt@##1@fixeddigits@after\endcsname <5 \setcounter {nprt@blockcnt}{0}\fi \fi \fi \addtolength {\nprt@blockwidth }{\thenprt@blockcnt \nprt@sepwidth }\ifx \nprt@argtwo \nprt@aftername \expandafter \ifnum \csname nprt@##1@fixeddigits@after\endcsname >0 \addtolength {\nprt@blockwidth }{\the \nprt@decimalwidth }\fi \fi } \newcommand {\npunit }{\def \nprt@unit {##1}} \newcommand {\npafternum }{\def \nprt@afternum {##1}} \newcommand {\npmakebox }{\@ifnextchar [{\nprt@makebox }{\makebox }} \newcommand {\nprt@makebox }{} \newcommand {\nprt@round }{\begingroup \edef \nprt@numname {##1}\ifnum ##2<0 \else \nprt@debug {\string \nprt@round : Round after ##2 digits for ##1}\setcounter {nprt@##1@digitsafter}{##2}\expandafter \g@addto@macro \csname nprt@##1@after\endcsname {\nprt@roundnull }\nprt@rndpos =##2 \nprt@roundupfalse \edef \nprt@tmpnum {\csname nprt@##1@after\endcsname }\edef \nprt@newnum {}\expandafter \nprt@round@after \nprt@tmpnum \@empty \@empty \expandafter \xdef \csname nprt@##1@after\endcsname {\nprt@newnum }\ifnprt@roundup \edef \nprt@tmpnum {\csname nprt@##1@before\endcsname }\edef \nprt@newnum {}\expandafter \nprt@round@before \nprt@tmpnum \@empty \@empty \ifnprt@roundup \expandafter \xdef \expandafter \nprt@newnum {1\nprt@newnum }\advance \csname c@nprt@##1@digitsbefore\endcsname by 1\relax \fi \expandafter \xdef \csname nprt@##1@before\endcsname {\nprt@newnum }\fi \fi \endgroup \ifnum ##2<0 \else \ifnum ##2=0 \csname nprt@##1@decimalfoundfalse\endcsname \else \csname nprt@##1@decimalfoundtrue\endcsname \fi \fi } \newcommand {\nprt@lpad }{\ifnum ##2<0 \else \nprt@debug {\string \nprt@lpad : Padding ##1 with ##3 to a length of ##2}\ifnum \csname thenprt@##1@digitsbefore\endcsname <##2 \expandafter \xdef \csname nprt@##1@before\endcsname {##3\csname nprt@##1@before\endcsname }\advance \csname c@nprt@##1@digitsbefore\endcsname by 1\relax \nprt@lpad {##1}{##2}{##3}\fi \fi } \newcommand {\nprt@sign@+ }{{\ensuremath {+}}} \newcommand {\nprt@sign@-}{{\ensuremath {-}}} \newcommand {\nprt@sign@+-}{{\ensuremath {\pm }}} \newcommand {\nprt@printsign }{\nprt@debug {\string \nprt@printsign : ‘##2’}\edef \nprt@marg {##2}\csname ifnprt@addplus@##1\endcsname \ifx \nprt@marg \@empty \edef \nprt@marg {+}\fi \fi \ifx \nprt@marg \@empty \else \@ifundefined {nprt@sign@\nprt@marg }{\PackageWarning {numprint}{Unknown sign ‘\nprt@marg ’. Print as typed in}\nprt@marg }{\csname nprt@sign@\nprt@marg \endcsname }\fi } \newcommand {\nprt@printbefore }{\ifnprt@addmissingzero \ifnum \csname thenprt@##1@digitsbefore\endcsname =0 \expandafter \edef \csname nprt@##1@before\endcsname {0}\advance \csname c@nprt@##1@digitsbefore\endcsname by 1\relax \fi \fi \begingroup \edef \nprt@numbertoprint {\csname nprt@##1@before\endcsname }\ifnprt@numsepfour \else \ifnum \csname thenprt@##1@digitsbefore\endcsname <5 \ifnum \csname thenprt@##1@digitsafter\endcsname <5 \nprt@shortnumbertrue \fi \fi \fi \ifnprt@shortnumber \nprt@numbertoprint \else \setcounter {nprt@blockcnt}{\csname thenprt@##1@digitsbefore\endcsname }\advance \c@nprt@blockcnt by -1\relax \divide \c@nprt@blockcnt 3\setcounter {nprt@digitsfirstblock}{\csname thenprt@##1@digitsbefore\endcsname }\setcounter {nprt@cntprint}{\thenprt@blockcnt }\multiply \c@nprt@cntprint 3\advance \c@nprt@digitsfirstblock by -\thenprt@cntprint \relax \ifnum \thenprt@digitsfirstblock =1 \expandafter \nprt@printone \nprt@numbertoprint \@empty \else \ifnum \thenprt@digitsfirstblock =2 \expandafter \nprt@printtwo \nprt@numbertoprint \@empty \else \ifnum \thenprt@digitsfirstblock =3 \expandafter \nprt@printthree \nprt@numbertoprint \@empty \else \ifnum \thenprt@digitsfirstblock =0 \else \PackageError {numprint}{internal error}{}\fi \fi \fi \fi \fi \endgroup } \newcommand {\nprt@printafter }{\csname ifnprt@##1@decimalfound\endcsname \ifnprt@addmissingzero \ifnum \csname thenprt@##1@digitsafter\endcsname =0 \expandafter \edef \csname nprt@##1@after\endcsname {0}\advance \csname c@nprt@##1@digitsafter\endcsname by 1\relax \fi \fi \ifx \nprt@replacenull \@empty \else \ifnum \csname thenprt@##1@digitsafter\endcsname =0 \expandafter \edef \csname nprt@##1@after\endcsname {0}\advance \csname c@nprt@##1@digitsafter\endcsname by 1\relax \fi \fi \fi \begingroup \edef \nprt@numbertoprint {\csname nprt@##1@after\endcsname }\ifx \nprt@numbertoprint \@empty \else \ifnprt@numsepfour \else \ifnum \csname thenprt@##1@digitsbefore\endcsname <5 \ifnum \csname thenprt@##1@digitsafter\endcsname <5 \nprt@shortnumbertrue \fi \fi \fi \ifx \nprt@replacenull \@empty \else \ifnum \nprt@numbertoprint =0 \nprt@shortnumbertrue \edef \nprt@numbertoprint {\nprt@replacenull }\fi \fi \ifnprt@shortnumber \nprt@numbertoprint \else \expandafter \nprt@printthree@after \nprt@numbertoprint \@empty \@empty \@empty \fi \fi \endgroup } \newcommand {\npdefunit }{\if ##3* \else \expandafter \def \csname nprt@factor@##1\endcsname {##3}\fi \expandafter \def \csname nprt@unit@##1\endcsname {##2}} \newcommand {\nprt@ifundefined }{\begingroup \expandafter \expandafter \expandafter \endgroup \expandafter \ifx \csname ##1\endcsname \relax \expandafter \@firstoftwo \else \expandafter \@secondoftwo \fi } \newcommand {\nprt@addto }{\expandafter \nprt@ifundefined {##1}{}{\expandafter \addto \expandafter {\csname ##1\endcsname }{##2}}} \newcommand {\npaddtolanguage }{\nprt@addto {extras##1}{\csname npstyle##2\endcsname }\nprt@addto {noextras##1}{\npstyledefault }} \newcommand {\npstyledefault }{\npthousandsep {\,}\npdecimalsign {,}\npproductsign {\cdot }\npunitseparator {\,}\npdegreeseparator {}\npcelsiusseparator {\nprt@unitsep }\nppercentseparator {\nprt@unitsep }} \newcommand {\npstylegerman }{\npthousandsep {\,}\npdecimalsign {,}\npproductsign {\cdot }\npunitseparator {\,}\npdegreeseparator {}\npcelsiusseparator {\nprt@unitsep }\nppercentseparator {\nprt@unitsep }} \newcommand {\npstyleenglish }{\npthousandsep {,}\npdecimalsign {.}\npproductsign {\times }\npunitseparator {\,}\npdegreeseparator {}\npcelsiusseparator {\nprt@unitsep }\nppercentseparator {\nprt@unitsep }} \newcommand {\npstyleportuguese }{\npthousandsep {.}\npdecimalsign {,}\npproductsign {\cdot }\npunitseparator {\,}\npdegreeseparator {}\npcelsiusseparator {\nprt@unitsep }\nppercentseparator {\nprt@unitsep }} \newcommand {\npstyledutch }{\npthousandsep {\,}\npdecimalsign {,}\npproductsign {\cdot }\npunitseparator {\,}\npdegreeseparator {}\npcelsiusseparator {\nprt@unitsep }\nppercentseparator {}} \newcommand {\npstylefrench }{\npthousandsep {~}\npdecimalsign {,}\npproductsign {\cdot }\npunitseparator {\,}\npdegreeseparator {}\npcelsiusseparator {\nprt@unitsep }\nppercentseparator {\nprt@unitsep }} \newcommand {\nprt@renameerror }{\expandafter \def \csname ##1\endcsname {\PackageError {numprint}{This command has been renamed to\MessageBreak \string \np ##1}{In order to avoid problems with other packages and for consistency,this\MessageBreak command has been renamed in this version.}}} \newcommand {\tkz@getdecimal }{\expandafter \@getdecimal ##1.\@nil } \newcommand {\CountToken }{\c@pgfmath@countb 0 \expandafter \C@untToken ##1\@nil } \newcommand {\C@untToken }{\afterassignment \C@untT@ken \let \CurrT@ken = } \newcommand {\C@untT@ken }{\ifx \CurrT@ken \@nil \else \advance \c@pgfmath@countb by1 \expandafter \C@untToken \fi } \newcommand {\tdplotsinandcos }{\pgfmathsetmacro {##1}{sin(##3)}\pgfmathsetmacro {##2}{cos(##3)}} \newcommand {\tdplotmult }{\pgfmathsetmacro {##1}{##2*##3}} \newcommand {\tdplotdiv }{\pgfmathsetmacro {##1}{##2/##3}} \newcommand {\tdplotcheckdiff }{\par \par \pgfmathparse { abs(##2 -##1)<##3 } \par \ifthenelse {\equal {\pgfmathresult }{1}}{##4}{##5} } \newcommand {\tdplotsetmaincoords }{\pgfmathsetmacro {\tdplotmaintheta }{##1} \pgfmathsetmacro {\tdplotmainphi }{##2} \tdplotcalctransformmainscreen \tikzset {tdplot_main_coords/.style={x={(\raarot cm,\rbarot cm)},y={(\rabrot cm,\rbbrot cm)},z={(\racrot cm,\rbcrot cm)}}}} \newcommand {\tdplotcalctransformmainscreen }{\tdplotsinandcos {\sintheta }{\costheta }{\tdplotmaintheta }\tdplotsinandcos {\sinphi }{\cosphi }{\tdplotmainphi }\tdplotmult {\stsp }{\sintheta }{\sinphi }\tdplotmult {\stcp }{\sintheta }{\cosphi }\tdplotmult {\ctsp }{\costheta }{\sinphi }\tdplotmult {\ctcp }{\costheta }{\cosphi }\pgfmathsetmacro {\raarot }{\cosphi }\pgfmathsetmacro {\rabrot }{\sinphi }\pgfmathsetmacro {\racrot }{0}\pgfmathsetmacro {\rbarot }{-\ctsp }\pgfmathsetmacro {\rbbrot }{\ctcp }\pgfmathsetmacro {\rbcrot }{\sintheta }\pgfmathsetmacro {\rcarot }{\stsp }\pgfmathsetmacro {\rcbrot }{-\stcp }\pgfmathsetmacro {\rccrot }{\costheta }} \newcommand {\tdplotcalctransformrotmain }{\tdplotsinandcos {\sinalpha }{\cosalpha }{\tdplotalpha } \tdplotsinandcos {\sinbeta }{\cosbeta }{\tdplotbeta } \tdplotsinandcos {\singamma }{\cosgamma }{\tdplotgamma } \tdplotmult {\sasb }{\sinalpha }{\sinbeta } \tdplotmult {\sbsg }{\sinbeta }{\singamma } \tdplotmult {\sasg }{\sinalpha }{\singamma } \tdplotmult {\sasbsg }{\sasb }{\singamma } \tdplotmult {\sacb }{\sinalpha }{\cosbeta } \tdplotmult {\sacg }{\sinalpha }{\cosgamma } \tdplotmult {\sbcg }{\sinbeta }{\cosgamma } \tdplotmult {\sacbsg }{\sacb }{\singamma } \tdplotmult {\sacbcg }{\sacb }{\cosgamma } \tdplotmult {\casb }{\cosalpha }{\sinbeta } \tdplotmult {\cacb }{\cosalpha }{\cosbeta } \tdplotmult {\cacg }{\cosalpha }{\cosgamma } \tdplotmult {\casg }{\cosalpha }{\singamma } \tdplotmult {\cacbsg }{\cacb }{\singamma } \tdplotmult {\cacbcg }{\cacb }{\cosgamma } \pgfmathsetmacro {\raaeul }{\cacbcg -\sasg } \pgfmathsetmacro {\rabeul }{-\cacbsg -\sacg } \pgfmathsetmacro {\raceul }{\casb } \pgfmathsetmacro {\rbaeul }{\sacbcg + \casg } \pgfmathsetmacro {\rbbeul }{-\sacbsg + \cacg } \pgfmathsetmacro {\rbceul }{\sasb } \pgfmathsetmacro {\rcaeul }{-\sbcg } \pgfmathsetmacro {\rcbeul }{\sbsg } \pgfmathsetmacro {\rcceul }{\cosbeta } } \newcommand {\tdplotcalctransformmainrot }{\tdplotsinandcos {\sinalpha }{\cosalpha }{\tdplotalpha } \tdplotsinandcos {\sinbeta }{\cosbeta }{\tdplotbeta } \tdplotsinandcos {\singamma }{\cosgamma }{\tdplotgamma } \tdplotmult {\sasb }{\sinalpha }{\sinbeta } \tdplotmult {\sbsg }{\sinbeta }{\singamma } \tdplotmult {\sasg }{\sinalpha }{\singamma } \tdplotmult {\sasbsg }{\sasb }{\singamma } \tdplotmult {\sacb }{\sinalpha }{\cosbeta } \tdplotmult {\sacg }{\sinalpha }{\cosgamma } \tdplotmult {\sbcg }{\sinbeta }{\cosgamma } \tdplotmult {\sacbsg }{\sacb }{\singamma } \tdplotmult {\sacbcg }{\sacb }{\cosgamma } \tdplotmult {\casb }{\cosalpha }{\sinbeta } \tdplotmult {\cacb }{\cosalpha }{\cosbeta } \tdplotmult {\cacg }{\cosalpha }{\cosgamma } \tdplotmult {\casg }{\cosalpha }{\singamma } \tdplotmult {\cacbsg }{\cacb }{\singamma } \tdplotmult {\cacbcg }{\cacb }{\cosgamma } \pgfmathsetmacro {\raaeul }{\cacbcg -\sasg } \pgfmathsetmacro {\rabeul }{\sacbcg + \casg } \pgfmathsetmacro {\raceul }{-\sbcg } \pgfmathsetmacro {\rbaeul }{-\cacbsg -\sacg } \pgfmathsetmacro {\rbbeul }{-\sacbsg + \cacg } \pgfmathsetmacro {\rbceul }{\sbsg } \pgfmathsetmacro {\rcaeul }{\casb } \pgfmathsetmacro {\rcbeul }{\sasb } \pgfmathsetmacro {\rcceul }{\cosbeta } } \newcommand {\tdplottransformmainrot }{\tdplotcalctransformmainrot \par \pgfmathsetmacro {\tdplotresx }{\raaeul * ##1 + \rabeul * ##2 + \raceul * ##3} \pgfmathsetmacro {\tdplotresy }{\rbaeul * ##1 + \rbbeul * ##2 + \rbceul * ##3} \pgfmathsetmacro {\tdplotresz }{\rcaeul * ##1 + \rcbeul * ##2 + \rcceul * ##3} } \newcommand {\tdplottransformrotmain }{\tdplotcalctransformrotmain \par \pgfmathsetmacro {\tdplotresx }{\raaeul * ##1 + \rabeul * ##2 + \raceul * ##3} \pgfmathsetmacro {\tdplotresy }{\rbaeul * ##1 + \rbbeul * ##2 + \rbceul * ##3} \pgfmathsetmacro {\tdplotresz }{\rcaeul * ##1 + \rcbeul * ##2 + \rcceul * ##3} } \newcommand {\tdplottransformmainscreen }{\tdplotcalctransformmainscreen \par \pgfmathsetmacro {\tdplotresx }{\raarot * ##1 + \rabrot * ##2 + \racrot * ##3} \pgfmathsetmacro {\tdplotresy }{\rbarot * ##1 + \rbbrot * ##2 + \rbcrot * ##3} } \newcommand {\tdplotsetrotatedcoords }{\pgfmathsetmacro {\tdplotalpha }{##1} \pgfmathsetmacro {\tdplotbeta }{##2} \pgfmathsetmacro {\tdplotgamma }{##3} \tdplotcalctransformrotmain \par \tdplotmult {\raaeaa }{\raarot }{\raaeul } \tdplotmult {\rabeba }{\rabrot }{\rbaeul } \tdplotmult {\raceca }{\racrot }{\rcaeul } \tdplotmult {\raaeab }{\raarot }{\rabeul } \tdplotmult {\rabebb }{\rabrot }{\rbbeul } \tdplotmult {\racecb }{\racrot }{\rcbeul } \tdplotmult {\raaeac }{\raarot }{\raceul } \tdplotmult {\rabebc }{\rabrot }{\rbceul } \tdplotmult {\racecc }{\racrot }{\rcceul } \tdplotmult {\rbaeaa }{\rbarot }{\raaeul } \tdplotmult {\rbbeba }{\rbbrot }{\rbaeul } \tdplotmult {\rbceca }{\rbcrot }{\rcaeul } \tdplotmult {\rbaeab }{\rbarot }{\rabeul } \tdplotmult {\rbbebb }{\rbbrot }{\rbbeul } \tdplotmult {\rbcecb }{\rbcrot }{\rcbeul } \tdplotmult {\rbaeac }{\rbarot }{\raceul } \tdplotmult {\rbbebc }{\rbbrot }{\rbceul } \tdplotmult {\rbcecc }{\rbcrot }{\rcceul } \pgfmathsetmacro {\raarc }{\raaeaa + \rabeba + \raceca } \pgfmathsetmacro {\rabrc }{\raaeab + \rabebb + \racecb } \pgfmathsetmacro {\racrc }{\raaeac + \rabebc + \racecc } \pgfmathsetmacro {\rbarc }{\rbaeaa + \rbbeba + \rbceca } \pgfmathsetmacro {\rbbrc }{\rbaeab + \rbbebb + \rbcecb } \pgfmathsetmacro {\rbcrc }{\rbaeac + \rbbebc + \rbcecc } \tikzset {tdplot_rotated_coords/.append style={x={(\raarc cm,\rbarc cm)},y={(\rabrc cm,\rbbrc cm)},z={(\racrc cm,\rbcrc cm)}}}} \newcommand {\tdplotsetrotatedcoordsorigin }{\tikzset {tdplot_rotated_coords/.append style={shift=##1}}} \newcommand {\tdplotresetrotatedcoordsorigin }{\tikzset {tdplot_rotated_coords/.append style={shift={(0,0,0)}}}} \newcommand {\tdplotsetthetaplanecoords }{\tdplotresetrotatedcoordsorigin \tdplotsetrotatedcoords {270 + ##1}{270}{0}} \newcommand {\tdplotsetrotatedthetaplanecoords }{\tdplotsetrotatedcoords {\tdplotalpha }{\tdplotbeta }{\tdplotgamma + ##1}\tikzset {tdplot_rotated_coords/.append style={y={(\raarc cm,\rbarc cm)},z={(\rabrc cm,\rbbrc cm)},x={(\racrc cm,\rbcrc cm)}}}} \newcommand {\tdplotsetcoord }{\tdplotsinandcos {\sinthetavec }{\costhetavec }{##3}\tdplotsinandcos {\sinphivec }{\cosphivec }{##4}\tdplotmult {\stcpv }{\sinthetavec }{\cosphivec }\tdplotmult {\stspv }{\sinthetavec }{\sinphivec }\coordinate (##1) at (##2*(\stcpv ,\stspv ,\costhetavec )); \coordinate (##1xy) at (##2*(\stcpv ,\stspv ,0)); \coordinate (##1xz) at (##2*(\stcpv ,0,\costhetavec )); \coordinate (##1yz) at (##2*(0,\stspv ,\costhetavec )); \coordinate (##1x) at (##2*(\stcpv ,0,0)); \coordinate (##1y) at (##2*(0,\stspv ,0)); \coordinate (##1z) at (##2*(0,0,\costhetavec )); } \newcommand {\tdplotsimplesetcoord }{\tdplotsinandcos {\sinthetavec }{\costhetavec }{##3}\tdplotsinandcos {\sinphivec }{\cosphivec }{##4}\tdplotmult {\stcpv }{\sinthetavec }{\cosphivec }\tdplotmult {\stspv }{\sinthetavec }{\sinphivec }\coordinate (##1) at (##2*(\stcpv ,\stspv ,\costhetavec )); } \newcommand {\tdplotsetpolarplotrange }{\pgfmathsetmacro {\tdplotlowerphi }{##3} \pgfmathsetmacro {\tdplotupperphi }{##4} \pgfmathsetmacro {\tdplotlowertheta }{##1} \pgfmathsetmacro {\tdplotuppertheta }{##2} } \newcommand {\tdplotresetpolarplotrange }{\pgfmathsetmacro {\tdplotlowerphi }{0} \pgfmathsetmacro {\tdplotupperphi }{360} \pgfmathsetmacro {\tdplotlowertheta }{0} \pgfmathsetmacro {\tdplotuppertheta }{180} } \newcommand {\tdplotdosurfaceplot }{\par \pgfmathsetmacro {\nextphi }{\curphi + \tdplotsuperfudge *\viewphistep } \par \begin {scope}[opacity=1] \par \par \tdplotcheckdiff {\nextphi }{360}{\origviewphistep }{##2}{} \tdplotcheckdiff {\nextphi }{0}{\origviewphistep }{##2}{} \par \tdplotcheckdiff {\nextphi }{90}{\origviewphistep }{##3}{} \tdplotcheckdiff {\nextphi }{450}{\origviewphistep }{##3}{} \end {scope} \par \foreach \curtheta in{\viewthetastart ,\viewthetainc ,...,\viewthetaend } { \par \pgfmathsetmacro {\curlongitude }{90 -\curphi } \pgfmathsetmacro {\curlatitude }{90 -\curtheta } \par \ifthenelse {\equal {\leftright }{-1.0}}{\pgfmathsetmacro {\curphi }{\curphi -\origviewphistep } }{} \par \pgfmathsetmacro {\tdplottheta }{mod(\curtheta ,360)} \pgfmathsetmacro {\tdplotphi }{mod(\curphi ,360)} \par \pgfmathparse {\tdplotphi <0} \ifthenelse {\equal {\pgfmathresult }{1}}{ \pgfmathsetmacro {\tdplotphi }{\tdplotphi + 360} }{}\par \pgfmathparse {\tdplottheta >\tdplotuppertheta } \pgfmathsetmacro {\logictest }{1 -\pgfmathresult } \par \pgfmathparse {\tdplottheta <\tdplotlowertheta } \pgfmathsetmacro {\logictest }{\logictest * (1 -\pgfmathresult )} \par \pgfmathsetmacro {\tdplottheta }{\tdplottheta + \viewthetastep } \pgfmathparse {\tdplottheta >\tdplotuppertheta } \pgfmathsetmacro {\logictest }{\logictest * (1 -\pgfmathresult )} \par \pgfmathparse {\tdplottheta <\tdplotlowertheta } \pgfmathsetmacro {\logictest }{\logictest * (1 -\pgfmathresult )} \par \pgfmathparse {\tdplotphi >\tdplotupperphi } \pgfmathsetmacro {\logictest }{\logictest * (1 -\pgfmathresult )} \par \pgfmathparse {\tdplotphi <\tdplotlowerphi } \pgfmathsetmacro {\logictest }{\logictest * (1 -\pgfmathresult )} \par \pgfmathsetmacro {\tdplotphi }{\tdplotphi + \viewphistep } \par \pgfmathparse {\tdplotphi <0} \ifthenelse {\equal {\pgfmathresult }{1}}{ \pgfmathsetmacro {\tdplotphi }{\tdplotphi + 360} }{}\par \pgfmathparse {\tdplotphi >\tdplotupperphi } \pgfmathsetmacro {\logictest }{\logictest * (1 -\pgfmathresult )} \par \pgfmathparse {\tdplotphi <\tdplotlowerphi } \pgfmathsetmacro {\logictest }{\logictest * (1 -\pgfmathresult )} \par \par \pgfmathsetmacro {\tdplottheta }{\curtheta } \pgfmathsetmacro {\tdplotphi }{\curphi } \par \ifthenelse {\equal {##6}{parametricfill}}{\ifthenelse {\equal {\logictest }{1.0}}{\pgfmathsetmacro {\radius }{##1} \pgfmathsetmacro {\tdplotr }{\radius *360} \par \pgfmathlessthan {\radius }{0} \pgfmathsetmacro {\phaseshift }{180 * \pgfmathresult } \par \pgfmathsetmacro {\colorarg }{##5} \pgfmathsetmacro {\colorarg }{\colorarg + \phaseshift } \pgfmathsetmacro {\colorarg }{mod(\colorarg ,360)} \par \pgfmathlessthan {\colorarg }{0} \pgfmathsetmacro {\colorarg }{\colorarg + 360*\pgfmathresult } \par \pgfmathdivide {\colorarg }{360} \definecolor {tdplotfillcolor}{hsb}{\pgfmathresult ,1,1} \color {tdplotfillcolor} }{}}{\pgfsetfillcolor {##5} } \pgfsetstrokecolor {##4} \par \ifthenelse {\equal {\leftright }{-1.0}}{\pgfmathsetmacro {\curphi }{\curphi + \origviewphistep } }{} \par \ifthenelse {\equal {\logictest }{1.0}}{\pgfmathsetmacro {\radius }{abs(##1)} \pgfpathmoveto {\pgfpointspherical {\curlongitude }{\curlatitude }{\radius }} \par \pgfmathsetmacro {\tdplotphi }{\curphi + \viewphistep } \pgfmathsetmacro {\radius }{abs(##1)} \pgfpathlineto {\pgfpointspherical {\curlongitude -\viewphistep }{\curlatitude }{\radius }} \par \pgfmathsetmacro {\tdplottheta }{\curtheta + \viewthetastep } \pgfmathsetmacro {\radius }{abs(##1)} \pgfpathlineto {\pgfpointspherical {\curlongitude -\viewphistep }{\curlatitude -\viewthetastep }{\radius }} \par \pgfmathsetmacro {\tdplotphi }{\curphi } \pgfmathsetmacro {\radius }{abs(##1)} \pgfpathlineto {\pgfpointspherical {\curlongitude }{\curlatitude -\viewthetastep }{\radius }} \pgfpathclose \par \pgfusepath {fill,stroke} }{} } } \newcommand {\tdplotshowargcolorguide }{ \par \pgfmathsetmacro {\tdplotx }{##1} \pgfmathsetmacro {\tdploty }{##2} \pgfmathsetmacro {\tdplothuestep }{5} \pgfmathsetmacro {\tdplotxsize }{##3} \pgfmathsetmacro {\tdplotysize }{##4} \par \pgfmathsetmacro {\tdplotyscale }{\tdplotysize /360} \par \foreach \tdplotphi in {0,\tdplothuestep ,...,360} { \pgfmathdivide {\tdplotphi }{360} \definecolor {tdplotfillcolor}{hsb}{\pgfmathresult ,1,1} \color {tdplotfillcolor} \par \pgfmathsetmacro {\tdplotstarty }{\tdploty + \tdplotphi * \tdplotyscale } \pgfmathsetmacro {\tdplotstopy }{\tdplotstarty + \tdplothuestep * \tdplotyscale } \pgfmathsetmacro {\tdplotstartx }{\tdplotx } \pgfmathsetmacro {\tdplotstopx }{\tdplotx + \tdplotxsize } \filldraw [tdplot_screen_coords] (\tdplotstartx ,\tdplotstarty ) rectangle (\tdplotstopx ,\tdplotstopy ); } \par \pgfmathsetmacro {\tdplotstopy }{\tdploty + (360+\tdplothuestep )*\tdplotyscale } \pgfmathsetmacro {\tdplotstopx }{\tdplotx + \tdplotxsize } \par \draw [tdplot_screen_coords] (\tdplotx ,\tdploty ) rectangle (\tdplotstopx ,\tdplotstopy ); \par \node [tdplot_screen_coords,anchor=west,xshift=5pt] at (\tdplotstopx ,\tdploty ) {0}; \node [tdplot_screen_coords,anchor=west,xshift=5pt] at (\tdplotstopx ,\tdplotstopy ) {2\pi }; \par \pgfmathsetmacro {\tdplotstopy }{\tdploty + (360+\tdplothuestep )/2*\tdplotyscale } \node [tdplot_screen_coords,anchor=west,xshift=5pt] at (\tdplotstopx ,\tdplotstopy ) {\pi }; } \newcommand {\tdplotgetpolarcoords }{\pgfmathsetmacro {\vxcalc }{##1} \pgfmathsetmacro {\vycalc }{##2} \pgfmathsetmacro {\vzcalc }{##3} \pgfmathsetmacro {\vcalc }{ sqrt((\vxcalc )^2 + (\vycalc )^2 + (\vzcalc )^2) } \par \pgfmathsetmacro {\vxycalc }{ sqrt((\vxcalc )^2 + (\vycalc )^2) } \par \pgfmathsetmacro {\tdplotrestheta }{asin(\vxycalc /\vcalc )} \pgfmathparse {\vzcalc <0} \ifthenelse {\equal {\pgfmathresult }{1}}{\pgfmathsetmacro {\tdplotrestheta }{180 -\tdplotrestheta } } {} \ifthenelse {\equal {\vxcalc }{0.0}}{\pgfmathparse {\vycalc <0} \ifthenelse {\equal {\pgfmathresult }{1}}{\pgfmathsetmacro {\tdplotresphi }{270} } {\pgfmathparse {\vycalc >0} \ifthenelse {\equal {\pgfmathresult }{1}}{\pgfmathsetmacro {\tdplotresphi }{90} } {\pgfmathsetmacro {\tdplotresphi }{0} } } } {\pgfmathsetmacro {\tdplotresphi }{atan(\vycalc /\vxcalc )} \pgfmathparse {\vxcalc <0} \ifthenelse {\equal {\pgfmathresult }{1}}{\pgfmathsetmacro {\tdplotresphi }{\tdplotresphi +180} } { } \par \pgfmathparse {\tdplotresphi <0} \ifthenelse {\equal {\pgfmathresult }{1}}{\pgfmathsetmacro {\tdplotresphi }{\tdplotresphi +360} } {} } } \newcommand {\vec }{\mathbf {##1}} \newcommand {\RR }{\mathbb {R}} \newcommand {\dfn }{\textit } \newcommand {\dotp }{\cdot } \newcommand {\id }{\text {id}} \newcommand {\norm }{\left \lVert ##1\right \rVert } \newcommand {\dst }} \newcommand {\MHPrecedingSpacesOff }{\MH_let:NwN \@xargdef \MH_nospace_xargdef:nwwn } \newcommand {\MHPrecedingSpacesOn }{\MH_let:NwN \@xargdef \MH_kernel_xargdef:nwwn } \newcommand {\mathtoolsset }{\setkeys {\MT_options_name: }{##1}} \newcommand {\newtagform }{\@ifundefined {MT_tagform_##1:n}{\@ifnextchar [{\MT_define_tagform:nwnn ##1}{\MT_define_tagform:nwnn ##1[]}}{\PackageError {mathtools}{The tag form ‘##1’is already defined\MessageBreak You probably want to look up \@backslashchar renewtagform instead}{I will just ignore your wish for now.}}} \newcommand {\renewtagform }{\@ifundefined {MT_tagform_##1:n}{\PackageError {mathtools}{The tag form ‘##1’is not defined\MessageBreak You probably want to look up \@backslashchar newtagform instead}{I will just ignore your wish for now.}}{\@ifnextchar [{\MT_define_tagform:nwnn ##1}{\MT_define_tagform:nwnn ##1[]}}} \newcommand {\usetagform }{\@ifundefined {MT_tagform_##1:n}{\PackageError {mathtools}{You have chosen the tag form ‘##1’\MessageBreak but it appears to be undefined}{I will use the default tag form instead.}\@namedef {tagform@}{\@nameuse {MT_tagform_default:n}}}{\@namedef {tagform@}{\@nameuse {MT_tagform_##1:n}}}\MH_if_boolean:nT {show_only_refs}{\MH_let:NwN \MT_prev_tagform:n \tagform@ \def \tagform@ ####1{\MT_extended_tagform:n {####1}}}} \newcommand {\refeq }{\textup {\ref {##1}}} \newcommand {\MT@newlabel }{\global \@namedef {MT_r_##1}{}} \newcommand {\MT_showonlyrefs_true: }{\MH_if_boolean:nF {show_only_refs}{\MH_set_boolean_T:n {show_only_refs}\MH_let:NwN \MT_incr_eqnum: \incr@eqnum \MH_let:NwN \incr@eqnum \@empty \MH_let:NwN \MT_array_parbox_restore: \@arrayparboxrestore \@xp \def \@xp \@arrayparboxrestore \@xp {\@arrayparboxrestore \MH_let:NwN \incr@eqnum \@empty }\MH_let:NwN \MT_prev_tagform:n \tagform@ \MH_let:NwN \MT_eqref:n \eqref \MH_let:NwN \MT_refeq:n \refeq \MH_let:NwN \MT_maketag:n \maketag@@@ \MH_let:NwN \maketag@@@ \MT_extended_maketag:n \def \tagform@ ####1{\MT_extended_tagform:n {####1}}\MH_let:NwN \eqref \MT_extended_eqref:n \MH_let:NwN \refeq \MT_extended_refeq:n }} \newcommand {\nonumber }{\if@eqnsw \MH_if_meaning:NN \incr@eqnum \@empty \MH_if_boolean:nF {show_only_refs}{\addtocounter {equation}\m@ne }\MH_fi: \MH_fi: \MH_let:NwN \print@eqnum \@empty \MH_let:NwN \incr@eqnum \@empty \global \@eqnswfalse } \newcommand {\noeqref }{\@bsphack \@for \@tempa :=##1\do {\@safe@activestrue \edef \@tempa {\expandafter \@firstofone \@tempa }\@ifundefined {r@\@tempa }{\protect \G@refundefinedtrue \@latex@warning {Reference ‘\@tempa ’on page \thepage \space undefined (\string \noeqref )}}{}\if@filesw \protected@write \@auxout {}{\string \MT@newlabel {\@tempa }}\fi \@safe@activesfalse }\@esphack } \newcommand {\reserved@a }{} \newcommand {\reserved@a }{} \newcommand {\underbracket }{\@ifnextchar [{\MT_underbracket_I:w }{\MT_underbracket_I:w [\l_MT_bracketheight_fdim ]}} \newcommand {\overbracket }{\@ifnextchar [{\MT_overbracket_I:w }{\MT_overbracket_I:w [\l_MT_bracketheight_fdim ]}} \newcommand {\lparen }{(} \newcommand {\rparen }{)} \newcommand {\ordinarycolon }{:} \newcommand {\MT_test_for_tcb_other:nnnnn }{\MH_if:w t##1\relax \expandafter \MH_use_choice_i:nnnn \MH_else: \MH_if:w c##1\relax \expandafter \expandafter \expandafter \MH_use_choice_ii:nnnn \MH_else: \MH_if:w b##1\relax \expandafter \expandafter \expandafter \expandafter \expandafter \expandafter \expandafter \MH_use_choice_iii:nnnn \MH_else: \expandafter \expandafter \expandafter \expandafter \expandafter \expandafter \expandafter \MH_use_choice_iv:nnnn \MH_fi: \MH_fi: \MH_fi: } \newcommand {\MT_start_mult:N }{\MT_test_for_tcb_other:nnnnn {##1}{\MH_let:NwN \MT_next: \vtop }{\MH_let:NwN \MT_next: \vcenter }{\MH_let:NwN \MT_next: \vbox }{\PackageError {mathtools}{Invalid position specifier. I’ll try to recover with ‘c’}\@ehc }\collect@body \MT_mult_internal:n } \newcommand {\MT_mult_internal:n }{\MH_if_boolean:nF {outer_mult}{\alignedspace@left }\MT_next: \bgroup \Let@ \def \l_MT_multline_lastline_fint {0}\chardef \dspbrk@context \@ne \restore@math@cr \MH_let:NwN \math@cr@@ \MT_mult_mathcr_atat:w \MH_let:NwN \shoveleft \MT_shoveleft:wn \MH_let:NwN \shoveright \MT_shoveright:wn \spread@equation \MH_set_boolean_F:n {mult_firstline}\MT_measure_mult:n {##1}\MH_if_dim:w \l_MT_multwidth_dim <\l_MT_multline_measure_fdim \MH_setlength:dn \l_MT_multwidth_dim {\l_MT_multline_measure_fdim }\fi \MH_set_boolean_T:n {mult_firstline}\MH_if_num:w \l_MT_multline_lastline_fint =\@ne \MH_let:NwN \math@cr@@ \MT_mult_firstandlast_mathcr:w \MH_fi: \ialign \bgroup \hfil \strut@ \m@th \displaystyle {}####\hfil \crcr \hfilneg ##1} \newcommand {\MT_measure_mult:n }{\begingroup \measuring@true \g_MT_multlinerow_int \@ne \MH_let:NwN \label \MT_gobblelabel:w \MH_let:NwN \tag \gobble@tag \setbox \z@ \vbox {\ialign {\strut@ \m@th \displaystyle {}####\crcr ##1\crcr }}\xdef \l_MT_multline_measure_fdim {\the \wdz@ }\advance \g_MT_multlinerow_int \m@ne \xdef \l_MT_multline_lastline_fint {\number \g_MT_multlinerow_int }\endgroup \g_MT_multlinerow_int \@ne } \newcommand {\MultlinedHook }{\renewenvironment {subarray}{\vcenter \bgroup \Let@ \restore@math@cr \default@tag \let \math@cr@@ \AMS@math@cr@@ \baselineskip \fontdimen 10\scriptfont \tw@ \advance \baselineskip \fontdimen 12\scriptfont \tw@ \lineskip \thr@@ \fontdimen 8\scriptfont \thr@@ \lineskiplimit \lineskip \ialign \bgroup \ifx c####1\hfil \fi \m@th ########\hfil \crcr }{\crcr \egroup \egroup }} \newcommand {\MT_delim_default_inner_wrappers:n }{\@namedef {MT_delim_\MH_cs_to_str:N ##1_star_wrapper:nnn}####1####2####3{\mathopen {}\mathclose \bgroup ####1####2\aftergroup \egroup ####3}\@namedef {MT_delim_\MH_cs_to_str:N ##1_nostarscaled_wrapper:nnn}####1####2####3{\mathopen {####1}####2\mathclose {####3}}\@namedef {MT_delim_\MH_cs_to_str:N ##1_nostarnonscaled_wrapper:nnn}####1####2####3{\mathopen ####1####2\mathclose ####3}} \newcommand {\reDeclarePairedDelimiterInnerWrapper }{\@ifundefined {MT_delim_\MH_cs_to_str:N ##1_##2_wrapper:nnn}{\PackageError {mathtools}{Wrapper not found for \string ##1 and option ’##2’.\MessageBreak Either \string ##1 is not defined,or you are using the \MessageBreak ’nostar’option,which is no longer supported. \MessageBreak Please use ’nostarnonscaled’or ’nostarscaled \MessageBreak instead. }{Seethemanual}}{\@namedef {MT_delim_\MH_cs_to_str:N ##1_##2_wrapper:nnn}####1####2####3{##3}}} \newcommand {\DeclarePairedDelimiter }{\@ifdefinable {##1}{\MT_delim_default_inner_wrappers:n {##1}\@namedef {MT_delim_\MH_cs_to_str:N ##1_star:}####1{\@nameuse {MT_delim_\MH_cs_to_str:N ##1_star_wrapper:nnn}{\left ##2}{####1}{\right ##3}}\@xp \@xp \@xp \newcommand \@xp \csname MT_delim_\MH_cs_to_str:N ##1_nostar:\endcsname [\\@gobble]{\def \@tempa {\\@gobble}\def \@tempb {####1}\ifx \@tempa \@tempb \@nameuse {MT_delim_\MH_cs_to_str:N ##1_nostarnonscaled_wrapper:nnn}{##2}{####2}{##3}\else \MT_etb_ifblank:nnn {####1}{\@nameuse {MT_delim_\MH_cs_to_str:N ##1_nostarnonscaled_wrapper:nnn}{##2}{####2}{##3}}{\@nameuse {MT_delim_\MH_cs_to_str:N ##1_nostarscaled_wrapper:nnn}{\@nameuse {\MH_cs_to_str:N ####1l}##2}{####2}{\@nameuse {\MH_cs_to_str:N ####1r}##3}}\fi }\DeclareRobustCommand {##1}{\@ifstar {\@nameuse {MT_delim_\MH_cs_to_str:N ##1_star:}}{\@nameuse {MT_delim_\MH_cs_to_str:N ##1_nostar:}}}}} \newcommand {\MT_delim_inner_generator:nnnnnnn }{\@xp \@xp \@xp \newcommand \@xp \csname MT_delim_\MH_cs_to_str:N ##1_nostar_inner:\endcsname [##2]{##3\def \@tempa {\@MHempty }\@xp \def \@xp \@tempb \@xp {\delimsize }\ifx \@tempa \@tempb \@nameuse {MT_delim_\MH_cs_to_str:N ##1_nostarnonscaled_wrapper:nnn}{##4}{##7}{##5}\else \MT_etb_ifdefempty_x:nnn {\delimsize }{\@nameuse {MT_delim_\MH_cs_to_str:N ##1_nostarnonscaled_wrapper:nnn}{##4}{##7}{##5}}{\@nameuse {MT_delim_\MH_cs_to_str:N ##1_nostarscaled_wrapper:nnn}{\@xp \@xp \@xp \csname \@xp \MH_cs_to_str:N \delimsize l\endcsname ##4}{##7}{\@xp \@xp \@xp \csname \@xp \MH_cs_to_str:N \delimsize r\endcsname ##5}}\fi ##6\endgroup }} \newcommand {\newcases }{\newenvironment {##1}{\MT_start_cases:nnnn {##2}{##3}{##4}{##5}}{\MH_end_cases: \right ##6}} \newcommand {\renewcases }{\renewenvironment {##1}{\MT_start_cases:nnnn {##2}{##3}{##4}{##5}}{\MH_end_cases: \right ##6}} \newcommand {\dcases }{\MT_start_cases:nnnn {\quad }{\m@th \displaystyle {####}\hfil }{\m@th \displaystyle {####}\hfil }{\lbrace }} \newcommand {\dcases* }{\MT_start_cases:nnnn {\quad }{\m@th \displaystyle {####}\hfil }{{####}\hfil }{\lbrace }} \newcommand {\rcases }{\MT_start_cases:nnnn {\quad }{\m@th {####}\hfil }{\m@th {####}\hfil }{.}} \newcommand {\rcases* }{\MT_start_cases:nnnn {\quad }{\m@th {####}\hfil }{{####}\hfil }{.}} \newcommand {\drcases }{\MT_start_cases:nnnn {\quad }{\m@th \displaystyle {####}\hfil }{\m@th \displaystyle {####}\hfil }{.}} \newcommand {\drcases* }{\MT_start_cases:nnnn {\quad }{\m@th \displaystyle {####}\hfil }{{####}\hfil }{.}} \newcommand {\cases* }{\MT_start_cases:nnnn {\quad }{\m@th {####}\hfil }{{####}\hfil }{\lbrace }} \newcommand {\psmallmatrix }{\@nameuse {psmallmatrixhook}\mathopen {}\mathclose \bgroup \left (\MT_smallmatrix_begin:N c} \newcommand {\bsmallmatrix }{\@nameuse {bsmallmatrixhook}\mathopen {}\mathclose \bgroup \left [\MT_smallmatrix_begin:N c} \newcommand {\Bsmallmatrix }{\@nameuse {Bsmallmatrixhook}\mathopen {}\mathclose \bgroup \left \lbrace \MT_smallmatrix_begin:N c} \newcommand {\vsmallmatrix }{\@nameuse {vsmallmatrixhook}\mathopen {}\mathclose \bgroup \left \lvert \MT_smallmatrix_begin:N c} \newcommand {\Vsmallmatrix }{\@nameuse {Vsmallmatrixhook}\mathopen {}\mathclose \bgroup \left \lVert \MT_smallmatrix_begin:N c} \newcommand {\adjustlimits }{\sbox \z@ {\m@th \displaystyle ##1}\sbox \tw@ {\m@th \displaystyle ##4}\@tempdima =\dp \z@ \advance \@tempdima -\dp \tw@ \MH_if_dim:w \@tempdima >\z@ \mathop {##1}\limits ##2{##3}\MH_else: \mathop {##1\MT_vphantom:Nn \displaystyle {##4}}\limits ##2{\def \finsm@sh {\ht \z@ \z@ \box \z@ }\mathsm@sh {\MT_cramped_internal:Nn {##3}}\MT_vphantom:Nn {\MT_cramped_internal:Nn {##6}}}\MH_fi: \MH_if_dim:w \@tempdima >\z@ \mathop {##4\MT_vphantom:Nn \displaystyle {##1}}\limits ##5{\MT_vphantom:Nn {\MT_cramped_internal:Nn {##3}}\def \finsm@sh {\ht \z@ \z@ \box \z@ }\mathsm@sh {\MT_cramped_internal:Nn {##6}}}\MH_else: \mathop {##4}\limits ##5{##6}\MH_fi: } \newcommand {\SwapAboveDisplaySkip }{\noalign {\vskip -\abovedisplayskip \vskip \abovedisplayshortskip }} \newcommand {\Aboxed }{\let \bgroup {\romannumeral -‘}\@Aboxed ##1&&\ENDDNE } \newcommand {\vdotswithin }{{\mathmakebox [\widthof {\ensuremath {{}##1{}}}][c]{{\vdots }}}} \newcommand {\MTFlushSpaceAbove }{\expandafter \MT_remove_tag_unless_inner:n \expandafter {\@currenvir }\\\noalign {\nobreak \vskip -\baselineskip \vskip -\lineskip \vskip -\l_MT_shortvdotswithinadjustabove_dim \vskip -\origjot \vskip \jot }\noalign {\expandafter \MT_remove_tag_unless_inner:n \expandafter {\@currenvir }}} \newcommand {\MTFlushSpaceBelow }{\\\noalign {\nobreak \vskip -\lineskip \vskip -\l_MT_shortvdotswithinadjustbelow_dim \vskip -\origjot \vskip \jot }} \newcommand {\shortintertext }{\@amsmath@err {\Invalid@@ \shortintertext }\@eha } \newcommand {\clap }{\hb@xt@ \z@ {\hss ##1\hss }} \newcommand {\mathmbox }{\mathpalette \MT_mathmbox:nn } \newcommand {\mathmakebox }{\@ifnextchar [\MT_mathmakebox_I:w \mathmbox } \newcommand {\MT_prescript_inner: }{\@mathmeasure \z@ ##4{\MT_prescript_sup: {##1}}\@mathmeasure \tw@ ##4{\MT_prescript_sub: {##2}}\MH_if_dim:w \wd \tw@ >\wd \z@ \setbox \z@ \hbox to\wd \tw@ {\hfil \unhbox \z@ }\MH_else: \setbox \tw@ \hbox to\wd \z@ {\hfil \unhbox \tw@ }\MH_fi: \mathop {}\mathopen {\vphantom {\MT_prescript_arg: {##3}}}^{\box \z@ }\sb {\box \tw@ }\MT_prescript_arg: {##3}} \newcommand {\prescript }{\mathchoice {\MT_prescript_inner: {##1}{##2}{##3}{}}{\MT_prescript_inner: {##1}{##2}{##3}{}}{\MT_prescript_inner: {##1}{##2}{##3}{\scriptscriptstyle }}{\MT_prescript_inner: {##1}{##2}{##3}{\scriptscriptstyle }}} \newcommand {\spreadlines }{\setlength {\jot }{##1}\ignorespaces } \newcommand {\newgathered }{\newenvironment {##1}{\def \MT_gathered_pre: {##2}\def \MT_gathered_post: {##3}\def \MT_gathered_env_end: {##4}\MT_gathered_env }{\endMT_gathered_env }} \newcommand {\renewgathered }{\renewenvironment {##1}{\def \MT_gathered_pre: {##2}\def \MT_gathered_post: {##3}\def \MT_gathered_env_end: {##4}\MT_gathered_env }{\endMT_gathered_env }} \newcommand {\lgathered }{\def \MT_gathered_pre: {}\def \MT_gathered_post: {\hfil }\def \MT_gathered_env_end: {}\MT_gathered_env } \newcommand {\rgathered }{\def \MT_gathered_pre: {\hfil }\def \MT_gathered_post: {}\def \MT_gathered_env_end: {}\MT_gathered_env } \newcommand {\gathered }{\def \MT_gathered_pre: {\hfil }\def \MT_gathered_post: {\hfil }\def \MT_gathered_env_end: {}\MT_gathered_env } \newcommand {\splitfrac }{\genfrac {}{}{0pt}{1}{\textstyle ##1\quad \hfill }{\textstyle \hfill \quad \mathstrut ##2}} \newcommand {\splitdfrac }{\genfrac {}{}{0pt}{0}{##1\quad \hfill }{\hfill \quad \mathstrut ##2}} \newcommand {\reserved@a }{} \newcommand {\HyperFirstAtBeginDocument }{\AtBeginDocument } \newcommand {\reserved@a }{} \newcommand {\reserved@a }{} \newcommand {\vnameref }{\unskip ~\nameref {##1}\@vpageref [\unskip ]{##1}} \newcommand {\ref }{\@ifstar \@refstar \T@ref } \newcommand {\pageref }{\@ifstar \@pagerefstar \T@pageref } \newcommand {\nameref }{\@ifstar \@namerefstar \T@nameref } \newcommand {\dblcolon }{\vcentcolon \mathrel {\mkern -.9mu}\vcentcolon } \newcommand {\coloneqq }{\vcentcolon \mathrel {\mkern -1.2mu}=} \newcommand {\Coloneqq }{\dblcolon \mathrel {\mkern -1.2mu}=} \newcommand {\coloneq }{\vcentcolon \mathrel {\mkern -1.2mu}\mathrel {-}} \newcommand {\Coloneq }{\dblcolon \mathrel {\mkern -1.2mu}\mathrel {-}} \newcommand {\eqqcolon }{=\mathrel {\mkern -1.2mu}\vcentcolon } \newcommand {\Eqqcolon }{=\mathrel {\mkern -1.2mu}\dblcolon } \newcommand {\eqcolon }{\mathrel {-}\mathrel {\mkern -1.2mu}\vcentcolon } \newcommand {\Eqcolon }{\mathrel {-}\mathrel {\mkern -1.2mu}\dblcolon } \newcommand {\colonapprox }{\vcentcolon \mathrel {\mkern -1.2mu}\approx } \newcommand {\Colonapprox }{\dblcolon \mathrel {\mkern -1.2mu}\approx } \newcommand {\colonsim }{\vcentcolon \mathrel {\mkern -1.2mu}\sim } \newcommand {\Colonsim }{\dblcolon \mathrel {\mkern -1.2mu}\sim } \newcommand {\nuparrow }{\MH_nuparrow: } \newcommand {\ndownarrow }{\MH_ndownarrow: } \newcommand {\bigtimes }{\MH_csym_bigtimes: } \newcommand {\reserved@a }{} \newcommand {\reserved@a }{\AtBeginDocument } \newcommand {\reserved@a }{} \newcommand {\reserved@a }{}

We consider the utilization of power series to determine solutions to differential equations near a singular point. We also study Euler equations.

### Regular Singular Points: Euler Equations

In the next three sections we’ll continue to study equations of the form

where $P_0$, $P_1$, and $P_2$ are polynomials, but the emphasis will be different from that of Trench 7.2 and 7.3, where we obtained solutions of (eq:7.4.1) near an ordinary point $x_0$ in the form of power series in $x-x_0$. If $x_0$ is a singular point of (eq:7.4.1) (that is, if $P(x_0)=0$), the solutions can’t in general be represented by power series in $x-x_0$. Nevertheless, it’s often necessary in physical applications to study the behavior of solutions of (eq:7.4.1) near a singular point. Although this can be difficult in the absence of some sort of assumption on the nature of the singular point, equations that satisfy the requirements of the next definition can be solved by series methods discussed in the next three sections. Fortunately, many equations arising in applications satisfy these requirements.

For convenience we restrict our attention to the case where $x_0=0$ is a regular singular point of (eq:7.4.2). This isn’t really a restriction, since if $x_0\neq 0$ is a regular singular point of (eq:7.4.2) then introducing the new independent variable $t=x-x_0$ and the new unknown $Y(t)=y(t+x_0)$ leads to a differential equation with polynomial coefficients that has a regular singular point at $t_0=0$.

#### Euler Equations

The simplest kind of equation with a regular singular point at $x_0=0$ is the Euler equation, defined as follows.

Theorem thmtype:5.1.1 implies that (eq:7.4.6) has solutions defined on $(0,\infty )$ and $(-\infty ,0)$, since (eq:7.4.6) can be rewritten as For convenience we’ll restrict our attention to the interval $(0,\infty )$. The key to finding solutions on $(0,\infty )$ is that if $x>0$ then $x^r$ is defined as a real-valued function on $(0,\infty )$ for all values of $r$, and substituting $y=x^r$ into (eq:7.4.6) produces

The polynomial is called the indicial polynomial of (eq:7.4.6), and $p(r)=0$ is its indicial equation. From (eq:7.4.7) we can see that $y=x^r$ is a solution of (eq:7.4.6) on $(0,\infty )$ if and only if $p(r)=0$. Therefore, if the indicial equation has distinct real roots $r_1$ and $r_2$ then $y_1=x^{r_1}$ and $y_2=x^{r_2}$ form a fundamental set of solutions of (eq:7.4.6) on $(0,\infty )$, since $y_2/y_1=x^{r_2-r_1}$ is nonconstant. In this case is the general solution of (eq:7.4.6) on $(0,\infty )$.

If the indicial equation has a repeated root $r_1$, then $y_1=x^{r_1}$ is a solution of

on $(0,\infty )$, but (eq:7.4.10) has no other solution of the form $y=x^r$. If the indicial equation has complex conjugate zeros then (eq:7.4.10) has no real–valued solutions of the form $y=x^r$. Fortunately we can use the results of Trench 5.2 for constant coefficient equations to solve (eq:7.4.10) in any case.

Proof
We first show that $y=y(x)$ satisfies (eq:7.4.12) on $(0,\infty )$ if and only if $Y(t)=y(e^t)$ satisfies the constant coefficient equation on $(-\infty ,\infty )$. To do this, it’s convenient to write $x=e^t$, or, equivalently, $t=\ln x$; thus, $Y(t)=y(x)$, where $x=e^t$. From the chain rule, and, since it follows that Differentiating this with respect to $t$ and using the chain rule again yields
From this and (eq:7.4.14), Substituting this and (eq:7.4.14) into (eq:7.4.12) yields (eq:7.4.13). Since (eq:7.4.11) is the characteristic equation of (eq:7.4.13), Theorem thmtype:5.2.1 implies that the general solution of (eq:7.4.13) on $(-\infty ,\infty )$ is
Since $Y(t)=y(e^t)$, substituting $t=\ln x$ in the last three equations shows that the general solution of (eq:7.4.12) on $(0,\infty )$ has the form stated in the theorem. $\blacksquare$

### Text Source

Trench, William F., ”Elementary Differential Equations” (2013). Faculty Authored and Edited Books & CDs. 8. (CC-BY-NC-SA)
{"ft_lang_label":"__label__en","ft_lang_prob":0.9066908,"math_prob":0.9566027,"size":3019,"snap":"2023-14-2023-23","text_gpt3_token_len":744,"char_repetition_ratio":0.1694859,"word_repetition_ratio":0.02811245,"special_character_ratio":0.24412057,"punctuation_ratio":0.16894977,"nsfw_num_words":0,"has_unicode_error":false,"math_prob_llama3":0.99416023,"pos_list":[0],"im_url_duplicate_count":[null],"WARC_HEADER":"{\"WARC-Type\":\"response\",\"WARC-Date\":\"2023-03-25T23:08:56Z\",\"WARC-Record-ID\":\"<urn:uuid:06bd052b-1778-4f23-a976-c42434829c70>\",\"Content-Length\":\"135771\",\"Content-Type\":\"application/http; msgtype=response\",\"WARC-Warcinfo-ID\":\"<urn:uuid:272ff474-c2c3-4958-a0d0-278bbde86c55>\",\"WARC-Concurrent-To\":\"<urn:uuid:96107009-7996-48f6-baa4-36d4c522b184>\",\"WARC-IP-Address\":\"128.146.144.44\",\"WARC-Target-URI\":\"https://ximera.osu.edu/ode/main/regularSingularPts/regularSingularPts\",\"WARC-Payload-Digest\":\"sha1:CGXWM2XBB6GI4QOMTQU42LMMXWZXVXKO\",\"WARC-Block-Digest\":\"sha1:NPJ6JQAWITETINUPOLANT5SGN24T26NM\",\"WARC-Identified-Payload-Type\":\"text/html\",\"warc_filename\":\"/cc_download/warc_2023/CC-MAIN-2023-14/CC-MAIN-2023-14_segments_1679296945376.29_warc_CC-MAIN-20230325222822-20230326012822-00148.warc.gz\"}"}