2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Оператор присваивания
Сообщение13.11.2016, 21:32 


03/06/12
2874
Здравствуйте! Подскажите, пожалуйста, как выглядит этот оператор в tikz? Недавно выяснилось, что я этого не знаю. Попытка такого кода:
Используется синтаксис LaTeX
\documentclass{article}
\pagestyle{empty}
\usepackage{tikz} \usepackage{calc} \usetikzlibrary{calc}

\begin{document}
\begin{tikz}
real a; a=-1.0;
\draw (-a,-1) -- (1,1);
\end{tikz}
\end{document}

как и следовало ожидать, вызывает ошибку. Я пока не буду приводить лог, поскольку, стопудово, код неверен. В Интернете не нашел, да чего там, в мануале ничего подобного не увидел. Когда делал, одни и те же числа сто раз вводил. Хотелось бы на будущее знать.

 Профиль  
                  
 
 Re: Оператор присваивания
Сообщение13.11.2016, 22:21 
Заслуженный участник


27/04/09
28128
Предварительно пока оставлю здесь (google) tikz assign variable.

 Профиль  
                  
 
 Re: Оператор присваивания
Сообщение13.11.2016, 22:35 
Заслуженный участник
Аватара пользователя


31/01/14
11448
Hogtown
Для начала \begin{tikzpicture} \end{tikzpicture} или \tikz{ }, а не то безобразие...

И что Вы хотите изобразить?

 Профиль  
                  
 
 Re: Оператор присваивания
Сообщение14.11.2016, 13:22 


03/06/12
2874
Red_Herring в сообщении #1168748 писал(а):
Для начала \begin{tikzpicture} \end{tikzpicture} или \tikz{ }, а не то безобразие...

Я сначала попробовал такой код:
Используется синтаксис LaTeX
\documentclass{article}
\pagestyle{empty}
\usepackage{tikz} \usepackage{calc} \usetikzlibrary{calc}

\begin{document}
\begin{tikz}
\draw (1,1)--(0,3);
\end{tikz}
\end{document}
 

Он почему- то оказался пригодным к использованию. Это меня и сбило.
Red_Herring в сообщении #1168748 писал(а):
И что Вы хотите изобразить?

Пока ничего не хочу. Просто, когда было нужно, не знал, как делать и Интернет был недоступен.
arseniiv в сообщении #1168739 писал(а):
Предварительно пока оставлю здесь (google) tikz assign variable
.

А это меня натолкнуло на мысль. Я вспомнил, что в кодах с сайта TiKz часто используется команда \def. Только там новые команды, объявляемые этой командой, имеют имена не из одной буквы. Но это не мешает имя делать и из одной буквы. Ну конечно же! Тогда получается, что в качестве оператора присваивания можно использовать такую конструкцию:
Используется синтаксис LaTeX
\def \a {2};

Тогда такие коды:
Используется синтаксис LaTeX
\documentclass{article}
\pagestyle{empty}
\usepackage{tikz} \usepackage{calc} \usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
\def \a {2};
\draw (-\a,-1) -- (1,1);
\end{tikzpicture}
\end{document}

начинают работать. А вот как делать наподобие такого:
Используется синтаксис LaTeX
\draw ((\a+1)^0.5,(\a-1.7)^0.5) -- (3,2);
?
я попробовал так:
Используется синтаксис LaTeX
\draw \fill(${(\a+1)^0.5}*(1,0)+{(\a-1.7)^0.5}*(0,1)$) -- (3,2);

так:
Используется синтаксис LaTeX
\fill($\draw ({(\a+1)^0.5}*(1,0)+{(\a-1.7)^0.5}*(0,1))--(3,2)$);  

и даже так:
Используется синтаксис LaTeX
\fill($\draw ((\a+1)^0.5,(\a-1.7)^0.5)--(3,2)$);

но тщетно. Или все-таки сначала нужно объявлять вычисляемый объект отдельной командой, а потом использовать этот объект в других командах и по-другому никак?

 Профиль  
                  
 
 Re: Оператор присваивания
Сообщение14.11.2016, 21:41 


03/06/12
2874
Обнаружил, что такой код:
Используется синтаксис LaTeX
\draw (-1*2,1-2) --(2/2,4+3);

воспринимается как родной, в то время как код
Используется синтаксис LaTeX
\draw (-1*(2+1),1-2) --(2/2,4+3);

уже порождает ошибку
Используется синтаксис LaTeX
Package pgf Error: No shape named -1*(2+1 is known.

See the pgf package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                 
l.8 ...raw (-1*2,1-2) --(2/2,4+3); \draw (-1*(2+1)
                                                  ,1-2) --(2/2,4+3);
 

Поиск по ошибке целиком вообще ничего не дал. Поиск же по первой строке привел меня к наиболее похожей (в поиске) теме. Что, вкупе с незнанием английского языка полностью обесценивает эту находку. Переводить, ИМХО, вообще бессмысленно: там про последовательность.

 Профиль  
                  
 
 Re: Оператор присваивания
Сообщение14.11.2016, 22:04 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Sinoid в сообщении #1169088 писал(а):
Обнаружил, что такой код:
Используется синтаксис LaTeX
\draw (-1*2,1-2) --(2/2,4+3);

воспринимается как родной, в то время как код
Используется синтаксис LaTeX
\draw (-1*(2+1),1-2) --(2/2,4+3);

уже порождает ошибку.
Он думает, что первая скобка закрывает объект целиком. Надо
Используется синтаксис LaTeX
\draw (-1*{(2+1)},1-2) --(2/2,4+3);

 Профиль  
                  
 
 Re: Оператор присваивания
Сообщение14.11.2016, 22:18 


03/06/12
2874
Xaositect в сообщении #1169091 писал(а):
Он думает, что первая скобка закрывает объект целиком. Надо код
: [ скачать
] [ спрятать
]
код
: [ скачать
] [ показать
]
Используется синтаксис LaTeX
\draw (-1*{(2+1)},1-2) --(2/2,4+3);



Да нет, я прямо ваш код скопировал и вставил. Ошибка
Используется синтаксис LaTeX
Missing number, treated as zero.
<to be read again>
                   {
l.9 \draw (-1*{(2+1)},1-2)

а, может вас не затруднит выложить минимальный подобный код целиком?

 Профиль  
                  
 
 Re: Оператор присваивания
Сообщение14.11.2016, 22:28 
Заслуженный участник
Аватара пользователя


06/10/08
6422
А, да, извините. Не заметил warning.

 Профиль  
                  
 
 Re: Оператор присваивания
Сообщение15.11.2016, 04:10 
Заслуженный участник
Аватара пользователя


31/01/14
11448
Hogtown
Первая картинка использует gnuplot, (pdflatex --shell-escapе). Она использует не calc, а вычислительные способности gnuplot.

Разумеется, ни одна из картинок на форуме работать не будет.
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\documentclass[12pt]{article}
\usepackage{tikz,pgf}
\usetikzlibrary{calc}

\begin{document}
%Первая картинка использует gnuplot, (pdflatex --shell-escapе).  Она использует не calc, а вычислительные способности gnuplot.

\begin{tikzpicture}
\foreach \u in {0,.25,...,2}
\draw[blue, domain=0:2*pi,scale=1, smooth, samples=1000] plot[parametric] function {  cosh(\u)* cos(t),  sinh(\u)* sin(t)};

\foreach \u in {0,.1,...,2 }
\draw[red, domain=0:2 ,scale=1, smooth, samples=100] plot[parametric] function {  cos(pi*\u)* cosh(t),   sin(pi*\u)*  sinh(t)};
\end{tikzpicture}

%Вторая картинка использует calc, обратите внимание на роль (  ) скобок для группирования и { } , которые объясняют TeX, что внутрь он соваться не должен, внутри работает calc.

\begin{tikzpicture}
\foreach \x in {0,1,...,3}
\foreach \y in {0,1,...,3}
\fill [blue] ($({1.2^(2*\x )}, {1.2^(2*\y) } )$) rectangle  ($({1.2^(2*\x+1) }, {1.2^(2*\y+1) } )$)  ;

\foreach \x in {1,...,3}
\foreach \y in {1,...,3}
\fill [blue] ($({1.2^(2*\x-1 )}, {1.2^(2*\y-1) } )$) rectangle  ($({1.2^(2*\x) }, {1.2^(2*\y) } )$)  ;
\end{tikzpicture}

% В третьей картинке вместо стандартного circle(10pt) , внутрь которого я вставить sqrt(\u) не смог, как ни старался, я использую [radius=sqrt(\u) ].
\begin{tikzpicture}
\foreach \u in {1,...,3}
\draw [blue] (1,1) circle[radius=sqrt(\u) ];
\end{tikzpicture}

\end{document}

 Профиль  
                  
 
 Re: Оператор присваивания
Сообщение15.11.2016, 08:05 
Заслуженный участник
Аватара пользователя


31/01/14
11448
Hogtown
Используется синтаксис LaTeX
\documentclass[12pt]{article}
\usepackage{tikz,pgf}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
    \foreach \i  in {1,...,10} {
        \fill[red!\i0] (\i,\i) rectangle ({\i+1,\i+1});
            }
\end{tikzpicture}
\begin{tikzpicture}
\foreach \u in {10,...,0}
\fill [blue!\u0] (1,1) circle[radius=sqrt(\u) ];
\end{tikzpicture}
\end{document}

 Профиль  
                  
 
 Re: Оператор присваивания
Сообщение15.11.2016, 14:29 


03/06/12
2874
Все отлично. У меня все заработало. Приведу коды для черчения фигур, выделенные из сообщения Red_Herring. Я перед этим ввел еще переменную:
Используется синтаксис LaTeX
\def \b {1.7*(1+sqrt(\a))};

Коды
Используется синтаксис LaTeX
\draw[blue] ($({(cos(\a+\b)+3)^0.4+2*sin(\b)},{sqrt(4+cos(\b)-sin(\a))})$) -- ($({sqrt(\a+\b)},{4/(3*cos(\a)-sqrt(\b))})$); \draw[magenta] ($({(cos(sqrt(\a+1))-0.2)^2-2.35},{sqrt(\b-2)+1})$) circle [radius=sqrt((\a+\b)/2)-1];

компилируются без единой ошибки. Правда, попытка переделать код окружности так, чтобы радиус формулой стоял в круглых скобках, как обычно, не увенчалась успехом. Но это мелочи жизни. Спасибо всем за помощь.

 Профиль  
                  
 
 Re: Оператор присваивания
Сообщение15.11.2016, 14:51 
Заслуженный участник
Аватара пользователя


31/01/14
11448
Hogtown
Sinoid в сообщении #1169229 писал(а):
Правда, попытка переделать код окружности так, чтобы радиус формулой стоял в круглых скобках, как обычно, не увенчалась успехом
О чем я писал.

Аналогично
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\documentclass[12pt]{article}
\usepackage{tikz,pgf}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
\foreach \u in {10,...,0}
\foreach \v in {10,...,0}
\draw (0,0) ellipse [x radius=sqrt(\u),  y radius=sqrt(\v)];
\end{tikzpicture}

\begin{tikzpicture}
\foreach \u in {5,...,0}
\foreach \v in {5,...,0}
\fill[red!\u0!blue!\v0, opacity=.5] (0,0) ellipse [x radius=sqrt(\u),  y radius=sqrt(\v)];
\end{tikzpicture}
\end{document}

 Профиль  
                  
 
 Re: Оператор присваивания
Сообщение15.11.2016, 20:12 


03/06/12
2874
Red_Herring в сообщении #1169158 писал(а):
Первая картинка использует gnuplot, (pdflatex --shell-escapе)

А как вот такое делать? Я попробовал так:
Используется синтаксис LaTeX
pdflatex --shell-escapе plot

и так:
Используется синтаксис LaTeX
pdflatex --shell-escapе plot.tex

В обоих случаях получил ответ:
Используется синтаксис LaTeX
pdflatex: Invalid command-line option
pdflatex: Data: unknown option
 

пдф в обоих случаях вообще не появляется.
Потом я вспомнил про такие команды:
Используется синтаксис LaTeX
pdflatex --enable-write18 plot

и
Используется синтаксис LaTeX
pdflatex --enable-write18 plot.tex

ответ:
Цитата:
"gnuplot" не является внутренней или внешней командой...

но пдф создается, только пустая. Последние две команды, скорее всего, здесь не при чем, а вот первые две, они, вообще-то верные или нет?

-- 15.11.2016, 21:17 --

А когда первую опцию добавил в опции TeXworks, он мне заявил что-то вроде option unknown.

 Профиль  
                  
 
 Re: Оператор присваивания
Сообщение15.11.2016, 20:22 
Заслуженный участник
Аватара пользователя


31/01/14
11448
Hogtown
А у Вас то gnuplot установлен и вызывается с командной строки?

 Профиль  
                  
 
 Re: Оператор присваивания
Сообщение15.11.2016, 20:48 


03/06/12
2874
Red_Herring в сообщении #1169307 писал(а):
А у Вас то gnuplot установлен и вызывается с командной строки?

Да-да, уже нашел вот здесь. Папка gnuplot у меня находится в папке maxima, я его сам по себе не устанавливал. Слушайте, а вот этот gnuplot в том виде, в котором он у меня есть (часть другой программы), у него функциональность полная или нет? Из командной строки он не вызывается, его нужно добавлять в PATH. Но я это уже умею. Если нужно, добавлю. Вот ответите про функциональность (я надеюсь) и будет видно.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group