首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlab微分方程

matlab微分方程
EN

Stack Overflow用户
提问于 2015-05-27 04:52:40
回答 1查看 177关注 0票数 1

我有下面的微分方程,我解不出来。

关于这个方程,我们知道以下几点:

D(r)是一个三阶多项式

D'(1)=D'(2)=0

D(2)=2D(1)

u(1)=450

u'(2)=-K * (u(2)-Te)

其中K和Te是常数。

我想用一个矩阵来近似这个问题,然后我设法解决了类似的方程:

u(1)和u'(2)具有相同的极限条件。对于这个方程,我用中心差分近似u‘和u’,并使用r=1到r=2之间的有限差分法,然后把结果放在matlab中的矩阵A中,把极限条件放在matlab中的向量Y中,然后运行u=A\Y,得到u值是如何变化的。这是我的matlab代码,我设法解决了这个方程:

代码语言:javascript
复制
    clear
    a=1;
    b=2;
    N=100;
    h = (b-a)/N;
    K=3.20;
    Ti=450;
    Te=20;

    A = zeros(N+2);
    A(1,1)=1;
    A(end,end)=1/(2*h*K);
    A(end,end-1)=1;
    A(end,end-2)=-1/(2*h*K);


    r=a+h:h:b;

    %y(i)
    for i=1:1:length(r)
       yi(i)=-r(i)*(2/(h^2));
    end
    A(2:end-1,2:end-1)=A(2:end-1,2:end-1)+diag(yi);

    %y(i-1)
    for i=1:1:length(r)-1
        ymin(i)=r(i+1)*(1/(h^2))-1/(2*h);
    end
    A(3:end-1,2:end-2) = A(3:end-1,2:end-2)+diag(ymin);

    %y(i+1)
    for i=1:1:length(r)
       ymax(i)=r(i)*(1/(h^2))+1/(2*h);
    end
    A(2:end-1,3:end)=A(2:end-1,3:end)+diag(ymax);


    Y=zeros(N+2,1);
    Y(1) =Ti;
    Y(2)=-(Ti*(r(1)/(h^2)-(1/(2*h))));
    Y(end) = Te;
    r=[1,r];
    u=A\Y;
    plot(r,u(1:end-1));

我的问题是,我如何解决第一个微分方程?

EN

回答 1

Stack Overflow用户

发布于 2015-05-29 06:23:59

正如TroyHaskin在评论中指出的那样,一个人可以将D确定为一个常数因子,而这个常数因子无论如何都会在D'/D中抵消。换句话说:我们可以假设D(1)=1 (一个方便的数字),因为D可以乘以任何常量。现在很容易找到系数(done with Wolfram Alpha),多项式结果是

D(r) = -2r^3+9r^2-12r+6

导数D'(r) = -6r^2+18r-12。(还有一种更智能的方法来查找多项式,从D‘开始,D’与已知的根是二次的。)

我可能会立即使用这些信息,计算一阶导数的系数k:

代码语言:javascript
复制
r = a+h:h:b;
k = 1+r.*(-6*r.^2+18*r-12)./(-2*r.^3+9*r.^2-12*r+6);

似乎k在区间1,2上总是正的,所以如果你想最小化对现有代码的更改,只需将r(i)替换为r(i)/k(i)即可。

顺便说一下,而不是像这样的循环

代码语言:javascript
复制
for i=1:1:length(r)
   yi(i)=-r(i)*(2/(h^2));
end

一个人通常只做简单的

代码语言:javascript
复制
yi=-r*(2/(h^2));

这种矢量化使代码更紧凑,也可以提高性能(在您的示例中不是很好,因为求解线性系统是瓶颈)。另一个好处是yi被正确初始化,而对于您的循环结构,如果yi碰巧已经存在,并且长度大于length(r),则结果数组将具有无关的条目。(这是难以跟踪的错误的潜在来源。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30468679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档