我正在使用张力计的数据来生成应力-应变曲线,但我想找到屈服点以及测试开始与该点之间的梯度以计算杨氏模量。PGFplots 可以找到这些点并计算出来吗?阅读手册表明这可以通过和fpu
数学解析库来实现,但我目前陷入困境。
这是我的 MWE:
\documentclass[tikz,border=1pt]{standalone}
\usepackage{etoolbox}
\usepackage{csquotes}
\usepackage{xpatch}
\usepackage{amsmath}
\usepackage{unicode-math}
%% Main Font list
\setmainfont{TeX Gyre Pagella}
\setsansfont{TeX Gyre Adventor}[Scale=MatchUppercase]
\setmathfont{TeX Gyre Pagella Math}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{positioning}
\usetikzlibrary{external}
\usepgflibrary{arrows.meta}
\usepgflibrary{fpu}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{
compat=newest,
every tick label/.append style={font=\footnotesize},
every axis/.append style={font=\footnotesize},
}
\usepackage{siunitx}
\usepackage{xcolor}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}
\pgfplotstableread[col sep=comma, trim cells=true]{G21-28-tensile-data.csv}\tensiledata
\def\initialDiameter{5.61}
\def\initialLength{25}
\pgfmathparse{(pi * (\initialDiameter) ^ 2)/4}
\let\initialArea=\pgfmathresult
\pgfplotstablecreatecol[
create col/expr={\thisrow{Load} / \initialArea * 1000}
]
{StressCalc}\tensiledata
\pgfplotstablecreatecol[
create col/expr={\thisrow{Extension} / \initialLength}
]
{StrainCalc}\tensiledata
\begin{axis}[
xlabel={Strain (ε) (\si{\mm\per\mm})},
ylabel={Stress (σ) (\si{\mega\pascal})},
xmin=0,
ymin=0,
width=20cm,
height=10cm,
xtick pos=left,
ytick pos=left,
]
\addplot[no marks, red] table [x=StrainCalc, y=StressCalc]{\tensiledata} ;
\end{axis}
\end{tikzpicture}
\end{document}
屈服点是图形左侧峰值处的局部最大值(大约在(0.002,330)处),如果我能弄清楚如何将该点存储为坐标,我就可以使用该atan
函数找到该点和(0,0)之间的梯度。
用于呈现图表的数据在这里:https://gist.github.com/zoqaeski/8e3f31866f41d3dcfe61c226f6c4a991