MATLAB绘图:丁同仁ODE线素场绘制方法

最近在复习常微分方程,看丁同仁教材27页时看到上面粗制滥造的手画线素场都什么年代还在画传统线素场,遂萌生了自己画一个的想法,正好也很久没用matlab了,花了点时间写出来。

方程是

分离变量解出来的通解是

用matlab画出线素场,并画上三条特解的曲线(一眼顶真)

对比丁同仁上的传统线素场

最后附上matlab代码(很久不用matlab了,有点土法炼钢的味道,若有更好的绘制方法,欢迎分享)

clear all;
close all;
clc;
y = -5:0.05:5;%%xy的一维数据
x = -5:0.05:5;
f = @(x,y)  -(x^2+1)*(y^2-1)*x^(-1)*y^(-1);
[x,y] = meshgrid(x,y);%%生成[x,y]格点
%下面处理格点位置的向量,要使左半平面的向量相反
for i=1:1:201
    for j=1:1:201
        if x(i,j)<0
            vx(i,j)=-cos(atan(f(x(i,j),y(i,j))));
            vy(i,j)=-sin(atan(f(x(i,j),y(i,j))));
        else
            vx(i,j)=cos(atan(f(x(i,j),y(i,j))));
            vy(i,j)=sin(atan(f(x(i,j),y(i,j))));
        end
    end
end
quiver(x,y,vx,vy);%%生成向量图
hold on
%下面绘制方程某些特解的曲线
g1=@(x,y) y.^2-1+exp(-x.^2)./x.^2
fimplicit(g1,'r',[-5,5]);
hold on
g2=@(x,y) y.^2-1+0.5*exp(-x.^2)./x.^2
fimplicit(g2,'r',[-5,5]);
hold on
g3=@(x,y) y.^2-1+2*exp(-x.^2)./x.^2
fimplicit(g3,'r',[-5,5]);
hold on
g4=@(x,y) y.^2-1-1*exp(-x.^2)./x.^2
fimplicit(g4,'r',[-5,5]);
hold on
g5=@(x,y) y.^2-1-0.5*exp(-x.^2)./x.^2
fimplicit(g5,'r',[-5,5]);
hold on
g6=@(x,y) y.^2-1-2*exp(-x.^2)./x.^2
fimplicit(g6,'r',[-5,5]);
hold on
axis equal;

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空