matlab求圆的共切线,Matlab或Python怎么作出两个圆的公切线

匿名用户

1级

2018-11-21 回答

用sympy + matplot:

from sympy import Point, Circle, Line, var

import matplotlib.pyplot as plt

var('t')

c1 = Circle(Point(0, 0), 2)

c2 = Circle(Point(4, 4), 3)

l1 = Line(c1.center, c2.center)

p1 = l1.arbitrary_point(t).subs({t: -c1.radius / (c2.radius - c1.radius)})

p2 = l1.arbitrary_point(t).subs({t: c1.radius / (c1.radius + c2.radius)})

t1 = c1.tangent_lines(p1)

t2 = c1.tangent_lines(p2)

ta = t1 + t2

fig = plt.gcf()

ax = fig.gca()

ax.set_xlim((-10, 10))

ax.set_ylim((-10, 10))

ax.set_aspect(1)

cp1 = plt.Circle((c1.center.x, c1.center.y), c1.radius, fill = False)

cp2 = plt.Circle((c2.center.x, c2.center.y), c2.radius, fill = False)

tp = [0 for i in range(4)]

for i in range(4):

start = ta[i].arbitrary_point(t).subs({t:-10})

end = ta[i].arbitrary_point(t).subs({t:10})

tp[i] = plt.Line2D([start.x, end.x], [start.y, end.y], lw = 2)

ax.add_artist(cp1)

ax.add_artist(cp2)

for i in range(4):

ax.add_artist(tp[i])

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB中,可以使用符号计算工具箱来求解点到切线斜率。首先,我们需要确定的方程和点的坐标。假设的方程为x^2 + y^2 = r^2,点的坐标为(x0, y0)。然后,我们可以使用符号变量来表示这些参数,并使用求导函数来计算切线的斜率。 具体的步骤如下: 1. 定义符号变量:使用syms函数来定义符号变量x,y,x0,y0,r。 2. 定义的方程:使用eq函数来定义的方程为x^2 + y^2 = r^2。 3. 定义点的坐标:给定点的坐标(x0, y0)。 4. 求解切线斜率:使用diff函数来计算的方程关于x的导数dy/dx,并将x和y替换为x0和y0,得到切线的斜率。 以下是MATLAB代码示例: ```matlab syms x y x0 y0 r; eqn = x^2 + y^2 == r^2; slope = diff(y, x); slope_val = subs(slope, {x, y}, {x0, y0}); ``` 其中,slope_val即为点(x0, y0)到切线斜率。 请注意,这个方法假设的方程是已知的,并且点的坐标也是已知的。如果的方程不是标准形式或者点的坐标有误,可能需要进行转换或者修正。此外,如果与点之间不存在切线,那么切线斜率将不存在。 希望对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [[matlab]过一点与椭切线](https://blog.csdn.net/snikerlii/article/details/71451071)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [如何用matlab求出图中各条直线的斜率](https://blog.csdn.net/weixin_39962889/article/details/111760658)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值