voident Skrevet 5. oktober 2011 Rapporter Del Skrevet 5. oktober 2011 Noen som vet hvordan en får fortegnsskjema i latex? Helst litt fine tenkte litt på tabell men det ble med tanken Du kan tegne det med TikZ i alle fall. Se http://ftp.fagskolen.gjovik.no/pub/tex-archive/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf . Lenke til kommentar
Torbjørn T. Skrevet 5. oktober 2011 Rapporter Del Skrevet 5. oktober 2011 Det spørsmålet har vorte stilt ein gong før, då laga eg eit døme på korleis det kan gjerast med TikZ: https://www.diskusjon.no/index.php?showtopic=586480&view=findpost&p=16123229 Kan forklare koden om du ynskjer. Lenke til kommentar
Nebuchadnezzar Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 (endret) Tusen takk for hjelpa torbjørn, dette kan bli virkelig nyttig når jeg en gang blir lærer =) Spør her og jeg. Litt usikker på hvor jeg skal stille spørsmålene mine. Som sagt koden din fungerer utmerket. Men noen ide, om hvordan en kan snu rekkefølgen, og ha muligheter til å legge inn x, der funksjonen er udefinert? For eksempel Endret 6. oktober 2011 av Nebuchadnezzar Lenke til kommentar
Torbjørn T. Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 Min kode? Eg skal ikkje ta noko som helst av æra for det svaret du fekk på TeX.SX. Men nei, eg har ingen god ide for korleis du kan leggje inn x der funksjonen er udefinert, men eg stilte spørsmålet til Jake på TeX.SX, større sjanse for at han finn eit svar. Lenke til kommentar
voident Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 (endret) Som sagt koden din fungerer utmerket. Men noen ide, om hvordan en kan snu rekkefølgen, og ha muligheter til å legge inn x, der funksjonen er udefinert? For eksempel Hva mener du med dette? Er for mange år siden jeg ha holdt på med slikt Edit. Tror jeg skjønte hva du vil nå. Kan du ikke bare skrive det inn egentlig? Du veit jo hvor den er udefinert, og det er jo bare å legge inn en node på det punktet. Endret 6. oktober 2011 av drgz Lenke til kommentar
Nebuchadnezzar Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 Også http://tex.stackexchange.com/questions/30588/defining-a-new-command-for-making-functional-lines-package =) Lenke til kommentar
Nebuchadnezzar Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 Det er ønskelig output fra koden / funksjonen, men det funker ikke så problemer med om linjene er byttet om. Hadde vært mye lettere å bare skrive hvor den skal være blå og rød og eventuelt legge inn hvor den skal være 0 og X =) Lenke til kommentar
voident Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 (endret) Ang. fargene er det jo bare å bytte om hvis du vil at rød skal være negativ og blå positiv (evnt. bruke andre farger hvis du heller vil det). Endret 6. oktober 2011 av drgz Lenke til kommentar
Torbjørn T. Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 Det er ønskelig output fra koden / funksjonen, men det funker ikke så problemer med om linjene er byttet om. Kan berre vere eg er trøtt, men eg forstår ikkje heilt kva du meiner med «bytta om». Kunne du forklart litt nærare? Lenke til kommentar
voident Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 (endret) Lagt til to linjer og endret "funksjonen" til å ta inn fem variable. Dvs en utvidelse til: \functionalline[<LaTeX math code>]{<expression>}{<vertical position>}{<list of zeros>}{<list of infs>}. \documentclass{article} \usepackage{pgfplots} \usepackage{tikz} \usetikzlibrary{arrows} \usetikzlibrary{calc} \usetikzlibrary{shapes} \usetikzlibrary{matrix} \usetikzlibrary{positioning} \usetikzlibrary{plotmarks} \usetikzlibrary{patterns} \usetikzlibrary{decorations.pathmorphing} \usepgflibrary{decorations.pathreplacing} \begin{document} \tikzstyle{snakeline} = [connector, decorate, decoration={pre length=0.2cm, post length=0.2cm, snake, amplitude=.8mm, segment length=2mm},semithick,->] \pgfplotsset{ shift down/.style={ y filter/.code={\pgfmathparse{\pgfmathresult*(#1)}} }, shift down/.default=1, every axis plot post/.style={restrict y to domain=0.5:inf}, positive/.style={ no markers, blue }, negative/.style={ no markers, red }, /tikz/function label/.style={ anchor=east }, step functionallinenumber/.code={ \stepcounter{functionallinenumber} } } \makeatletter \newcommand\functionalline[5][\@empty]{ \ifx#1\@empty \edef\equation{#2} \else \edef\equation{#1} \fi \edef\plots{ \noexpand\addplot [negative, shift down=#3] {#2<0}; \noexpand\addplot [positive, shift down=#3] {#2>0}; \noexpand\node at (axis cs:\noexpand\pgfkeysvalueof{/pgfplots/xmin},#3) [function label] {$\equation$}; } \plots \pgfplotsinvokeforeach {#4} { \node at (axis cs:##1,#3) [fill=white, inner sep=1pt] {0}; } \pgfplotsinvokeforeach {#5} { \node at (axis cs:##1,#3) [fill=white, inner sep=1pt] {x}; } } \newenvironment{functionallines}[1][-3:3]{ \begin{tikzpicture} \begin{axis}[ axis x line=top, hide y axis, ymin=0,enlarge x limits=upper, domain=#1, restrict y to domain=0.5:99, samples=100, y dir=reverse, y = -0.5cm, xlabel=$x$, clip=false ] }{ \end{axis} \end{tikzpicture} } \begin{functionallines} \functionalline{x+1}{1}{-1}{} \functionalline{x}{2}{0}{} \functionalline{2-x}{3}{2}{} \functionalline{1-x}{4}{1}{} \functionalline[f(x)]{2-x)*(1-x)/(x*(x-1))}{5}{-1,2}{0,1} \end{functionallines} \end{document} Endret 6. oktober 2011 av drgz Lenke til kommentar
Torbjørn T. Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 (endret) Ah, det var ein enkel og grei løysing. Trur eg tenkjer alt for komplisert av og til ... Likevel kan eg foreslå ein forbetring, ved hjelp av xparse-pakka: \documentclass{article} \usepackage{pgfplots} \usepackage{tikz} \usepackage{xparse} \pgfplotsset{ shift down/.style={ y filter/.code={\pgfmathparse{\pgfmathresult*(#1)}} }, shift down/.default=1, every axis plot post/.style={restrict y to domain=0.5:inf}, positive/.style={ no markers, blue }, negative/.style={ no markers, red }, /tikz/function label/.style={ anchor=east }, step functionallinenumber/.code={ \stepcounter{functionallinenumber} } } \makeatletter \NewDocumentCommand\functionalline{O{\@empty}mmmO{}}{ \ifx#1\@empty \edef\equation{#2} \else \edef\equation{#1} \fi \edef\plots{ \noexpand\addplot [negative, shift down=#3] {#2<0}; \noexpand\addplot [positive, shift down=#3] {#2>0}; \noexpand\node at (axis cs:\noexpand\pgfkeysvalueof{/pgfplots/xmin},#3) [function label] {$\equation$}; } \plots \pgfplotsinvokeforeach {#4} { \node at (axis cs:##1,#3) [fill=white, inner sep=1pt] {0}; } \pgfplotsinvokeforeach {#5} { \node at (axis cs:##1,#3) [fill=white, inner sep=1pt] {x}; } } \makeatother \newenvironment{functionallines}[1][-3:3]{ \begin{tikzpicture} \begin{axis}[ axis x line=top, hide y axis, ymin=0,enlarge x limits=upper, domain=#1, restrict y to domain=0.5:99, samples=100, y dir=reverse, y = -0.5cm, xlabel=$x$, clip=false ] }{ \end{axis} \end{tikzpicture} } \begin{document} \begin{functionallines} \functionalline{x+1}{1}{-1} \functionalline{x}{2}{0} \functionalline{2-x}{3}{2} \functionalline{1-x}{4}{1} \functionalline[f(x)]{2-x)*(1-x)/(x*(x-1))}{5}{-1,2}[0,1] \end{functionallines} \end{document} Forskjellen er at her er det to valfrie argument, der det siste er brotpunkt i funksjonen. Då slepp ein å skrive dei tomme krøllparentesane kvar gong, i staden er det berre å skrive dei same x-verdiane i klammer som eit femte argument om ein har brotpunkt. Endret 6. oktober 2011 av Torbjørn T. 1 Lenke til kommentar
voident Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 Enda bedre ja:) Lenke til kommentar
Nebuchadnezzar Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 Dere er så geniale bøyer meg i støvet. Skal lære meg dette en gang, men nå har jeg 5 fag og jobber kanskje 50t i uka. Så ikke tid akkuratt nå. Føler jeg er så pirkete når dere er så snille å hjelpe meg .. 0. Nederste linjen er feil. Om du sammenligner med min. Altså når den er blå og rød er feil. 1. Jeg har ikke noe problem med å la blå være negativ og rød positiv. Beklager om dette skapte forvirring. Dette tror jeg i det minste jeg klarer å forandre 2. Hvordan spesifiserer du i koden om den begynner som negativ, eller begynner som positiv? Klarer ikke helt å se det. 3. Skulle gjerne likt å ha x, og ikke 0 i de linjene som er udefinert. Brukte et lite programm som ikke gav meg muligheten til det for å lage bildet over. Men utifra koden ser det ut som jeg bare kan skrive \begin{functionallines} \functionalline{x+1}{1}{-1}{} \functionalline{x}{2}{}{0} \functionalline{2-x}{3}{2}{} \functionalline{1-x}{4}{}{1} \functionalline[f(x)]{2-x)*(1-x)/(x*(x-1))}{5}{-1,2}{0,1} \end{functionallines} Stemmer dette? (har ikke tex på denn maskina) 4. Den x`en som er label, irriterer meg.. Kan en plassere den et annet sted? Og her er den alternative versjonen av koden som jeg foretrekker. Fordi den avgrenser fortegnsskjemaet litt fra resten av dokumentet. Er det noen grunn for at man foretrekker koden ovenfor? (horisontale streker osv) \documentclass{article} \usepackage{pgfplots} \begin{document} \pgfplotsset{ shift down/.style={ y filter/.code={\pgfmathparse{\pgfmathresult*(#1)}} }, shift down/.default=1, every axis plot post/.style={restrict y to domain=0.5:inf}, positive/.style={ no markers, red }, negative/.style={ no markers, blue }, /tikz/function label/.style={ anchor=east }, step functionallinenumber/.code={ \stepcounter{functionallinenumber} } } \makeatletter \newcommand\functionalline[4][\@empty]{ \ifx#1\@empty \edef\equation{#2} \else \edef\equation{#1} \fi \edef\plots{ \noexpand\addplot [negative, shift down=#3, forget plot] {#2<0}; \noexpand\addplot [positive, shift down=#3, forget plot] {#2>0}; \noexpand\node at (axis cs:\noexpand\pgfkeysvalueof{/pgfplots/xmin},#3) [function label] {$\equation$}; } \plots \pgfplotsinvokeforeach {#4} { \node at (axis cs:##1,#3) [fill=white, inner sep=1pt] {0}; } } \newenvironment{functionallines}[2][-3:3]{ \begin{tikzpicture} \begin{axis}[ %axis x line=top, xtick={#2}, grid=major, xticklabel pos=right, hide y axis, x axis line style={draw=none}, xtick pos=right, major tick length=0pt, enlarge x limits=false, enlarge y limits={abs=0.75}, domain=#1, restrict y to domain=0.5:99, samples=100, y dir=reverse, y = -0.5cm, clip=false ] }{ \coordinate (bottom right) at (rel axis cs:1,0); \coordinate (top right) at (rel axis cs:1,1); \end{axis} \draw [-latex] (top right-|current bounding box.west) -- (top right) node {$x$}; \draw (bottom right) -- (bottom right-|current bounding box.west); \end{tikzpicture} } \begin{functionallines}{-2,1} \functionalline{x-1}{1}{1} \functionalline{x+2}{2}{-2} \functionalline[f(x) = x^2+x-2]{x^2+x-2}{3}{-2,1} \end{functionallines} \hspace{1cm} \begin{functionallines}[-20:380]{0,90,180,270,360} \functionalline[\cos(x)]{cos(x)}{1}{90,270} \functionalline[\sin(x)]{sin(x)}{2}{0,180,360} \functionalline[\cos(x) \cdot \sin(x)]{cos(x) * sin(x)}{3}{0,90,180,270,360} \end{functionallines} \end{document} Til slutt. Hva gjør en med funksjoner som for eksempel x^4 eller x^2(x^2-1)? Problemet med disse er at de har samme farge på begge sider av lihetstegnet. Føler jeg aldri blir fornøyd og bare kommer med masse krav og spørsmål, så jeg får bare beklage. Lenke til kommentar
voident Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 (endret) 0) Jeg la inn feil funksjon i koden, derfor feil fortegn. Sjekk her: 1) Hehe, greit. Men du bør begynne å uttrykke det klarere, for ofte skriver du som en hest. 2) Hva mener du her? 3) Med Torbjørn sin kode trenger du ikke å skrive {} som femte argument hvis funksjonen ikke har singulariteter. F.eks \functionallines{x}{1}{0}. Derimot har du f.eks \functionalline[f(x)]{1/x}{2}{}[0]. 4) Hvor vil du plassere den da? Med TikZ kan du gjøre hva du vil. 5) Vel. x^4 er jo positiv for alle reelle verdier av x, så da blir det jo positivt. Og at du har fem fag er ingen unnskyldning til å ikke lære seg. Det semesteret jeg lærte meg LaTeX ordentlig hadde jeg syv fag. Endret 6. oktober 2011 av drgz 1 Lenke til kommentar
voident Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 Hvis du tenker deg om så ser du at figurene du har sammenlignet er helt like. Forskjellen er at det er forskjellige farger for + og - i de. Du tror vel ikke at x+1 er positiv for x < -1? 1 Lenke til kommentar
Nebuchadnezzar Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 (endret) Selvfølgelig er de like. =) Litt lite søvn, litt mange dager på rad. Beklager. Men ja spørsmålene mine står fortsatt. Forstår ikke helt hva som gjør at ting blir rett ved å bare skrive det blindt inn. magi... ^^ Endret 6. oktober 2011 av Nebuchadnezzar Lenke til kommentar
Torbjørn T. Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 2. Kva meiner du? Alle linjene er plott av funksjonar. Du spesifiserer ein funksjon, pgfplots finn ut om den er negativ eller positiv, og plotter med ei raud eller blå linje alt ettersom. Ikkje noko meir magi enn å plotte ein funksjon i GeoGebra med ulike definisjonsmengder og fargar på linjene. Kva x-verdiar som skal plottast kan ein spesifisere med eit valfritt argument til functionallines omgivnaden, t.d. \begin{functionallines}[-5:3]{-4,0,2} spesifiserer at linjene går frå x = -5 til x = 3, og at det eksisterer nullpunkt for x-verdiane -4, 0 og 2. 3. Ja, med koden til drgz kan du det, men sjå nedanfor. 4. Den x-en som i siste versjon av koden til Jake står til høgre for x-aksen? Kor vil du ha den? Under er litt meir kode, som nyttar seg av Jake sitt siste forslag, noko endra, der eg har tatt med drgz sitt forslag og mi forbetring av det for å putte inn x-ar i brotpunkt (og litt lorem ipsum): \documentclass{article} \usepackage{pgfplots} \usepackage{xparse} \usepackage{lipsum} \pgfplotsset{ shift down/.style={ y filter/.code={\pgfmathparse{\pgfmathresult*(#1)}} }, shift down/.default=1, every axis plot post/.style={restrict y to domain=0.5:inf}, positive/.style={ no markers, red }, negative/.style={ no markers, blue }, /tikz/function label/.style={ anchor=east }, step functionallinenumber/.code={ \stepcounter{functionallinenumber} } } \makeatletter \NewDocumentCommand\functionalline{O{\@empty}mmmO{}}{ \ifx#1\@empty \edef\equation{#2} \else \edef\equation{#1} \fi \edef\plots{ \noexpand\addplot [negative, shift down=#3,forget plot] {#2<0}; \noexpand\addplot [positive, shift down=#3,forget plot] {#2>0}; \noexpand\node at (axis cs:\noexpand\pgfkeysvalueof{/pgfplots/xmin},#3) [function label] {$\equation$}; } \plots \pgfplotsinvokeforeach {#4} { \node at (axis cs:##1,#3) [fill=white, inner sep=1pt] {0}; } \pgfplotsinvokeforeach {#5} { \node at (axis cs:##1,#3) [fill=white, inner sep=1pt] {x}; } } \makeatother \newenvironment{functionallines}[2][-3:3]{ \begin{tikzpicture} \begin{axis}[ %axis x line=top, xtick={#2}, grid=major, xticklabel pos=right, hide y axis, x axis line style={draw=none}, xtick pos=right, major tick length=0pt, enlarge x limits=false, enlarge y limits={abs=0.75}, domain=#1, restrict y to domain=0.5:99, samples=100, y dir=reverse, y = -0.5cm, clip=false ] }{ \coordinate (top left) at (rel axis cs:0,1); \coordinate (top right) at (rel axis cs:1,1); \end{axis} \draw [-latex,shorten >=-.3cm] (top left) -- (top right) node [right=0.4cm] {$x$}; \end{tikzpicture} } \begin{document} \lipsum[1] \begin{center} \begin{functionallines}[-2:3]{-1,0,1,2} \functionalline{x+1}{1}{-1} \functionalline{x}{2}{0} \functionalline{2-x}{3}{2} \functionalline{1-x}{4}{1} \functionalline[f(x)]{2-x)*(1-x)/(x*(x+1))}{5}{-1,2}[0,1] \end{functionallines} \end{center} \lipsum[2] \end{document} So kva skjer/korleis bruker du dette? Om me ser på omgivnaden: \begin{functionallines}[-2:3]{-1,0,1,2} \functionalline{x+1}{1}{-1} \functionalline{x}{2}{0} \functionalline{2-x}{3}{2} \functionalline{1-x}{4}{1} \functionalline[f(x)]{2-x)*(1-x)/(x*(x+1))}{5}{-1,2}[0,1] \end{functionallines} Som nemnt har functionallines-omgivnaden eit valfritt argument for å spesifisere kva x-verdiar linjene skal gå mellom. Standard er frå -3 til 3, her har eg endra dette til [-2,3]. Det obligatoriske argumentet som kjem etterpå spesifiserer kva x-verdiar som har eit nullpunkt. I dette tilfellet finst det altso nullpunkt for x-verdiane -1, 0, 1 og 2. functionalline-kommandoen kan ta fem argument, der det fyrste og det femte er valfritt. (Valfrie argument skriv ein i klammer, obligatoriske argument i krøllparentesar.) Om me ser nærare på den siste av desse, \functionalline[f(x)]{2-x)*(1-x)/(x*(x+1))}{5}{-1,2}[0,1] ser me at alle fem argument er brukt. Det fyrste er eit valfritt argument, som du bruker om du vil at noko anna enn funksjonsuttrykket skal skrivast til venstre for linja. Her er argumentet f(x), og dette står der. Sjølve funksjonen, eller faktoren. Dette er det pgfplots plotter. Kva linjenummer det er. Slik kommandoen er definert vert kvar linje flytta ned med denne verdien. Hadde du brukt same tal to gonger ville du fått to linjer oppå kvarandre. Dei x-verdiane der det finst nullpunkt, skild med komma. Kommandoen iterer gjennom alle elementa i denne lista, og skriv eit nulltal for kvar x-verdi. Dei x-verdiane der det finst brotpunkt. Slik kommandoen er definert her, er dette òg eit valfritt argument, dermed klammer. Det fungerer på same måte som med nullpunkta, men her vert det skrive ein x i staden for 0. Opprinneleg var det ei ekstra linje nederst, og den øvste linja gjekk over funksjonsuttrykka, men det har eg endra på. Kan endre tilbake om du vil det. Og til sist, om x4, sidan pgfplots ikkje har noko problem med å plotte det, er det ikkje noko problem. Du får ei heilt positiv linje, med eit nullpunkt for x = 0. 2 Lenke til kommentar
Torbjørn T. Skrevet 6. oktober 2011 Rapporter Del Skrevet 6. oktober 2011 (endret) Og no har Jake oppdatert svaret sitt med ei automatisk løysing. Fullstendig urelatert til den pågåande diskusjonen: tkz-euclide er ganske so genial! Synd dokumentasjonen berre er på fransk, men ein kan finne ut ein del berre ved å sjå på døma. \documentclass{standalone} \usepackage{tkz-euclide} \usetkzobj{all} \begin{document} \begin{tikzpicture} \tkzInit[ymin=-1,ymax=5,xmin=-1,xmax=5] \tkzClip \tkzDefPoint(0,0){A} \tkzDefPoint(4,0){B} \tkzDefPoint(0,4){C} \tkzDefCircle[in](A,B,C) \tkzGetPoint{S} \tkzGetLength{rSN} \tkzDrawPoints(A,B,C,S) \tkzDrawCircle[R,blue](S,\rSN pt) \tkzDrawPolygon(A,B,C) \tkzInterLC[R](A,C)(S,\rSN pt) \tkzGetFirstPoint{D} \tkzInterLC[R](B,C)(S,\rSN pt) \tkzGetFirstPoint{E} \tkzInterLL(B,S)(D,E) \tkzGetPoint{F} \tkzDrawPoints(D,E,F) \tkzDrawSegments(D,E B,F) \tkzLabelPoints[left](D) \tkzLabelPoints[above left](C,F) \tkzLabelPoints[below right](B) \tkzLabelPoints[below left](A,S) \tkzLabelPoints[right](E) \tkzMarkAngle[size=0.4 cm](B,F,E) \tkzLabelAngle[pos=0.6](B,F,E){$x$} \tkzMarkRightAngle(B,A,C) \end{tikzpicture} \end{document} Endret 7. oktober 2011 av Torbjørn T. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå