tikz 上特征值图的 S 网格

tikz 上特征值图的 S 网格

我目前正在进行特征值分析,为此我不使用普通网格,而是使用 s 网格(恒定阻尼因子和固有频率的网格)。我使用该函数matlab2tikz导出我的图形,但我对该函数生成这种网格的方式有问题。所以,我正在尝试使用 TikZ 制作自己的 s 网格。

matlab s网格

经过一番研究,我没有找到任何已经制作的东西TikZ(有一些关于 Z 网格的帖子……)。到目前为止,我取得了一些进展……尽管我也遇到了一些问题(下面提供了代码)。

我的 s 网格

第一的:为了绘制圆周,我将函数一分为二,将其视为一个函数。不过,我不明白为什么我的函数在 y = 0 之前不求值。最让我困扰的是半径的值不一致。

第二:如您所见,我的 for 节点$\xi$在打印之前未进行评估。我尝试了许多语法,但都没有成功。显然,在 axis 环境内对其进行评估存在问题。还与此节点有关,因为值可以大于绘图限制,所以中间点可能位于绘图之外,不显示文本。考虑到绘图限制,是否可以有一个中间点?

第三个(也是最后一个):因为这个网格将应用于不同的图形,有没有方法将其表示为$xi$和的函数(基本上是和域$\omega$的值的函数)?pgfplotsinvokeforeach

抱歉,帖子太长了,谢谢大家!

\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
    \begin{tikzpicture}

    \begin{axis}[%
        xmin=-10,
        xmax=0,
        ymin=-10,
        ymax=10,
        samples=500]


        \coordinate (origin) at (axis cs: 0,0);
        \coordinate (lim1) at (axis cs:{-(tan(asin(0.05)))*10},10);
        \coordinate (lim2) at (axis cs:{-(tan(asin(0.05)))*10},-10);
        \coordinate (ymax) at (axis cs:0,10);
        \coordinate (ymin) at (axis cs:0,-10);


        \draw[dashed,red] (origin) -- (lim1) node[font=\tiny,anchor=north,midway,sloped,inner sep=0pt] {$\xi=5\%$};
        \draw[dashed,red] (origin) -- (lim2) node[font=\tiny,anchor=south,midway,sloped,inner sep=0pt] {$\xi=5\%$};
        \draw[draw=red,fill=red,opacity=0.2] (origin) -- (lim1) -- (ymax) -- cycle;
        \draw[draw=red,fill=red,opacity=0.2] (origin) -- (lim2) -- (ymin) -- cycle;

        \pgfplotsinvokeforeach{4,10,25}{
            \coordinate (p1) at (axis cs:{-#1},10);
            \coordinate (p2) at (axis cs:{-#1},-10);
            \draw[dashed] (origin) -- (p1) node[font=\tiny,anchor=north,midway,sloped,inner sep=0pt] {$\xi=${100*cos(atan(-X/Y))}\%};
            \draw[dashed] (origin) -- (p2) node[font=\tiny,anchor=south,midway,sloped,inner sep=0pt] {$\xi=${100*cos(atan(-X/Y))}\%};
        }       

        \pgfplotsinvokeforeach {2,4,6,8,10}{
            \addplot[domain=0:10, dashed] (-x,{sqrt(#1^2-x^2)}) node [at end,anchor=south,font=\tiny, inner sep=0pt,fill=white,]{#1};
            \addplot[domain=0:10, dashed] (-x,-{sqrt(#1^2-x^2)});
        }


    \addplot [color=red, draw=none, mark size=2pt, mark=diamond*, mark options={solid,fill=red}]
    table[row sep=crcr]{%
        -0.062  5.971\\
        -0.062  -5.971\\
        -0.100  0.000\\
        -0.100  0.000\\
        -0.142  0.000\\
        -0.185  0.000\\
        -2.539  0.000\\
        -3.139  0.000\\
        -4.763  0.000\\
        -8  0.000\\
    };


    \end{axis}
    \end{tikzpicture}
\end{document}

相关内容