Mathematica:两条曲线的切线

3
我昨天问了这个问题,但不确定我是否清楚地表达了我想要的。假设我有两条曲线定义为f[x_]:=...g[x_]:=...,如下所示。我想使用Mathematica来确定切线与两条曲线的横坐标交点,并将每条曲线的值分别存储。也许这真的是一个微不足道的任务,但我很感激您的帮助。我是一个中级的Mathematica用户,但这是我无法在其他地方找到解决方案的问题。

你昨天提出的问题链接是什么? - p.campbell
我删除了它,因为它显然定义不清楚,而且有很多贬低性的评论。 - CaptanFunkyFresh
这些曲线会折回自身;我猜它们是参数化的?为什么不在你的问题中包含实际的定义呢? - Mr.Wizard
1
@Mr.Wizard 我想它们是手绘的 :) - user616736
@yoda 我自己也猜到了,但是如果允许这样的曲线,它会大大改变答案,不是吗? - Mr.Wizard
@Mr.Wizard 肯定会取决于曲线,但不一定是因为它们折回来了...例如,两个圆。 - user616736
2个回答

13
f[x_] := x^2
g[x_] := (x - 2)^2 + 3

sol = Solve[(f[x1] - g[x2])/(x1 - x2) == f'[x1] == g'[x2], {x1, x2}, Reals]

(* ==> {{x1 -> 3/4, x2 -> 11/4}} *)

eqns = FlattenAt[{f[x], g[x], f'[x1] x + g[x2] - f'[x1] x2 /. sol}, 3]; 
Plot[eqns, {x, -2, 4}, Frame -> True, Axes -> None]

enter image description here

请注意,有很多函数fg无法通过这种方式找到解决方案。在这种情况下,您将不得不采用数值问题解决方法。


2

您只需要解决一个同时方程组:

公切线为y=ax+b

公共斜率为a=f'(x1)=g'(x2)

公共点为ax0+b=f(x0)ax1+b=g(x1)

根据函数fg的性质,这可能没有,有一个,或者有许多解。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接