matlab怎么画椭圆方程的公切线?
第一,利用MATLAB绘制下图椭圆方程的图像。
第二,启动MATLAB,新建脚本(Ctrl+N),在脚本编辑区输入如下代码:
close all; clear all; clc
a=5; b=4; c=sqrt(a^2-b^2);
syms x y
h=ezplot(x^2/a^2+y^2/b^2==1)
set(h,'color',[0,0,0],'LineWidth',2);
axis equal;hold on;
plot([-10:0.1:10],0,'--k')
plot(0,[-10:0.1:10],'--k')
legend('x^2/a^2+y^2/b^2=1')
第三,保存和运行上述脚本,得到椭圆方程x^2/5^2+y^2/4^2=1的图像。
第四,改进上述脚本,标记出长轴2*a,短轴2*b和焦点c。接着在脚本编辑区输入如下代码:
text([-a,a],[0+0.5,0+0.5],'a','FontSize',15)
plot([0,0],[-b,b],'k.','MarkerSize',15)
text([0,0],[-b+0.5,b+0.5],'b','FontSize',15)
plot([-c,c],[0,0],'g.','MarkerSize',15)
text([-c,c],[0+0.5,0+0.5],'c','FontSize',15)
第五,保存和运行上述改进后的脚本,得到椭圆方程x^2/5^2+y^2/4^2=1的图像,并且标记出长轴2*a,短轴2*b和焦点c。
用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)})