• 数学建模python matlab 编程(椭圆声学原理画图证明,解析几何)


    证明,在椭圆形的音乐厅内,从一个椭圆的一个焦点发出声音,则另一个焦点听到的声音是最大的。

    分析:证明,从椭圆的一个焦点任意发射的直线经过反射后,并经过另一个焦点。

               画图,过一个焦点随机画一条直线l1,再做它与椭圆的交点,过该点作椭圆的一条切线l2,在作一条与该切线垂直的线l3,再作一条l1关于l3对称的直线l4,然后计算另一个焦点到l4的距离小于一个很小的数即可

    我的matlab代码

    % 画出一个椭圆
    t=linspace(0,2*pi,1000);
    A=5;
    B=4;
    C=3;
    X=5*cos(t);
    Y=4*sin(t);
    plot(X,Y),grid on,hold on;
    aa=[-3,3]
    bb=[0,0]
    plot(aa,bb,'o'),hold on;
    axis equal
    
    % 随机画出一条直线
    k=unifrnd(-10,10);
    x0=-3;y0=0;
    b=y0-k*x0;
    x=-6:6;
    y=k*x+b;
    plot(x,y),hold on;
    
    % 求椭圆和直线的交点
    % (m,n)为切点
    syms u v
    s=solve(u^2/5^2+v^2/4^2==1,v==k*u+b,u,v)
    u=double(s.u)
    v=double(s.v)
    
    if u(1)>u(2)
        mx=1
    else
        mx=2
    end
    
    % 过(m,n)点求切线
    % mx/a? + ny/b? =1
    kq=-B*B*(u(mx))/(A*A*v(mx))
    bq=B*B/v(mx)
    x2=-6:6;
    y2=kq*x2+bq;
    plot(x2,y2),hold on;
    
    % 做一条垂直于切线的线
    kq2=-1/kq;
    bq2=v(mx)-kq2*u(mx);
    y3=kq2*x2+bq2;
    plot(x2,y3,'--'),hold on;
    
    % 求出一条直线 关于y3这条直线垂直的直线 
    % 先找到原直线上任意一点
    x0=0
    y0=k*x0+b;
    
    % 找到该点关于直线的对称点
    A3=kq2;B3=-1;C3=bq2;
    x11 = ((B3*B3-A3*A3)*x0-2*A3*B3*y0-2*A3*C3)/(A3*A3+B3*B3)
    y11 = ((A3*A3-B3*B3)*y0-2*A3*B3*x0-2*B3*C3)/(A3*A3+B3*B3)
    k4=(y11-v(mx))/(x11-u(mx))
    b4=v(mx)-k4*u(mx)
    x4=-6:6;
    y4=k4*x4+b4;
    plot(x11,y11,'o'),hold on;
    plot(x0,y0,'o'),hold on;
    plot(x4,y4),hold on;
    
    % 点到直线y4的距离小于一个很小数
    x5=-C;y5=0;
    A4=k4;B4=-1;C4=b4;
    d = abs(A4*x5+B4*y5+C4)/(sqrt(A4*A4-B4*B4))
    d<=0.0000001
    
  • 相关阅读:
    python_day2(列表,元组,字典,字符串)
    爬取校花网美眉图
    python FTP常见用例
    mysql-调优
    mysql-事务与存储引擎
    mysql-基本命令与索引
    python基础(三)闭包、装饰器、迭代器、生成器
    Git的http与ssh配置
    python基础(二)抽象
    ssh-keygen 签名ca证书
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/13270714.html
Copyright © 2020-2023  润新知