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
11347
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
11347
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
11347
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
11347
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
11347
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, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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