- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我问这个question不久前确实有助于达成解决方案。我已经找到了一种可以接受的方法,但仍然没有完全达到我想要的效果。假设有两个函数 f1[x]
和 g1[y]
我想确定 x
和 y< 的值
用于公切线。我至少可以确定 x
和 y
作为切线之一,例如:
f1[x_]:=(5513.12-39931.8x+23307.5x^2+(-32426.6+75662.x-43235.4x^2)Log[(1.-1.33333x)/(1.-1.x)]+x(-10808.9+10808.9x)Log[x/(1.-1.x)])/(-1.+x)
g1[y_]:=(3632.71+3806.87y-51143.6y^2+y(-10808.9+10808.9y)Log[y/(1.-1.y)]+(-10808.9+32426.6y-21617.7y^2)Log[1.-(1.y)/(1.-1.y)])/(-1.+y)
Show[
Plot[f1[x],{x,0,.75},PlotRange->All],
Plot[g1[y],{y,0,.75},PlotRange->All]
]
Chop[FindRoot[
{
(f1[x]-g1[y])/(x-y)==D[f1[x],x]==D[g1[y],y]
},
{x,0.0000001},{y,.00000001}
]
[[All,2]]
]
但是,您会从图中注意到,在 x
和 y
稍大的值处存在另一个公切线(比如 x
~ 4 和 y
~ 5)。现在,有趣的是,如果我将 f1[x]
和 g1[y]
的上述表达式稍微更改为如下所示:
f2[x_]:=(7968.08-59377.8x+40298.7x^2+(-39909.6+93122.4x-53212.8x^2)Log[(1.-1.33333x)/(1.-1.x)]+x(-13303.2+13303.2x)Log[x/(1.-1.x)])/(-1.+x)
g2[y_]:=(5805.16-27866.2y-21643.y^2+y(-13303.2+13303.2y)Log[y/(1.-1.y)]+(-13303.2+39909.6y-26606.4y^2)Log[1.-(1.y)/(1.-1.y)])/(-1.+y)
Show[
Plot[f2[x],{x,0,.75},PlotRange->All],
Plot[g2[y],{y,0,.75},PlotRange->All]
]
Chop[FindRoot[
{
(f2[x]-g2[y])/(x-y)==D[f2[x],x]==D[g2[y],y]
},
{x,0.0000001},{y,.00000001}
]
[[All,2]]
]
并且使用相同的方法来确定公切线,Mathematica 选择为正斜率正切找到 x
和 y
中较大的值。
最后,我的问题是:是否有可能让 Mathematica 找到公切线的高 x
和 y
值,并以类似的方式存储这些值这让我可以制作一个列表图?上面的函数 f
和 g
都是另一个变量 z
的复杂函数,我目前正在使用类似下面的东西来绘制切线点(应该是两个 x
和两个 y
)作为 z
的函数。
ex[z_]:=Chop[FindRoot[
{
(f[x,z]-g[y,z])/(x-y)==D[f[x],x]==D[g[y],y]
},
{x,0.0000001},{y,.00000001}
]
[[All,2]]
]
ListLinePlot[
Table[{ex[z][[i]],z},{i,1,2},{z,1300,1800,10}]
]
最佳答案
要找到可以求解方程的 {x, y}
的估计值,您可以在 ContourPlot
中绘制它们并寻找交点。例如
f1[x_]:=(5513.12-39931.8 x+23307.5 x^2+(-32426.6+75662. x-
43235.4 x^2)Log[(1.-1.33333 x)/(1.-1.x)]+
x(-10808.9+10808.9 x) Log[x/(1.-1.x)])/(-1.+x)
g1[y_]:=(3632.71+3806.87 y-51143.6 y^2+y (-10808.9+10808.9y) Log[y/(1.-1.y)]+
(-10808.9+32426.6 y-21617.7 y^2) Log[1.-(1.y)/(1.-1.y)])/(-1.+y)
plot = ContourPlot[{f1'[x] == g1'[y], f1[x] + f1'[x] (y - x) == g1[y]},
{x, 0, 1}, {y, 0, 1}, PlotPoints -> 40]
如您所见,区间 (0,1)
中有 2 个交点。然后您可以从图中读取点并将它们用作 FindRoot
的起始值:
seeds = {{.6,.4}, {.05, .1}};
sol = FindRoot[{f1'[x] == g1'[y], f1[x] + f1'[x] (y - x) == g1[y]},
{x, #1}, {y, #2}] & @@@ seeds
要从 sol 中获取点对,您可以使用 ReplaceAll
:
points = {{x, f1[x]}, {y, g1[y]}} /. sol
(*
==> {{{0.572412, 19969.9}, {0.432651, 4206.74}},
{{0.00840489, -5747.15}, {0.105801, -7386.68}}}
*)
为了证明这些点是正确的:
Show[Plot[{f1[x], g1[x]}, {x, 0, 1}],
{ParametricPlot[#1 t + (1 - t) #2, {t, -5, 5}, PlotStyle -> {Gray, Dashed}],
Graphics[{PointSize[Medium], Point[{##}]}]} & @@@ points]
关于wolfram-mathematica - 数学 : FindRoot for common tangent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8993850/
我有一条二次贝塞尔曲线,我想计算给定点切线的斜率。例如,让它成为二次贝塞尔曲线的中点,因此 t=0.5(请参阅下面的链接以获取此图片)。我已经计算了二次贝塞尔曲线公式的一阶导数;但是我得到 400 作
我试图在 Python 中将一般正切函数绘制到 matplotlib 上,但结果不正确。 我要绘制的函数是:$$ f(x) = A tan(\frac{2\pi}{\lambda} x -\phi )
我问这个question不久前确实有助于达成解决方案。我已经找到了一种可以接受的方法,但仍然没有完全达到我想要的效果。假设有两个函数 f1[x] 和 g1[y] 我想确定 x 和 yAll], Plo
我昨天问了这个问题,但不确定我是否明确说明了我在寻找什么。假设我有两条曲线定义为 f[x_]:=...和 g[x_]:=...如下所示。我想使用 Mathematica 来确定两条曲线的切线的横坐标交
我正在尝试计算我的 Eigen 复矩阵的面积双曲正切 (atanh)。我没有在“特征库”中找到计算 atanh 的函数,我可以将这个表达式用于我的矩阵吗: atanh(x)= 1/2 (ln (1+x
我有什么是舞台上的两个圆圈,circ1 和 circ2。 circ1 的半径为 60,circ2 的半径为 30。 circ2 可以在播放时在舞台周围拖动。 我想要什么是通过公共(public)外切线
我是一名优秀的程序员,十分优秀!