如何解决解析解非线性偏微分方程
是否可以计算此非线性 pde 的解析解?它似乎不适用于 Sympy。关键是要证明下面代码的收敛阶数确实是2(因为它使用的是牛顿法)。由于我一开始没有设法得到解析解,我试图测试一个函数来验证边界条件(u(1) = 1 和 u'(0) = 0),但它发散了。函数为 uex = -cos(pi*X)
close all
clear all
clc
clear;
N=51; L=1;
dx=L/(N-1); X=[0:dx:L];
K0=0.01; sigma=1; beta=300;
I=2:N-1;
% uex = -cos(pi*X)
% Q = beta*4*(-cos(pi*X)-1)-0.01*(pi^2)*cos(pi*X)
delta=0.2;
Q=(X<delta)*beta;
K=inline('t.^2');
Un=ones(1,N); dUn=zeros(1,N); Fn=zeros(1,N);
nitmax=1000; epsilon=1.0e-5;
for it=1:nitmax
Kn12=0.5*(K(Un(1:N-1))+K(Un(2:N)));
Fn(I)=K0/dx^2*(Kn12(I-1).*(Un(I-1)-Un(I))+Kn12(I).*(Un(I+1)-Un(I)))-sigma*(Un(I).^4-1.0)+Q(I);
Fn(1)=K0/dx^2*(Kn12(1)*(Un(2)-Un(1))+Kn12(1)*(Un(2)-Un(1)))-sigma*(Un(1).^4-1.0)+Q(1);
Fn(N)=0;
A=[K0/dx^2*(2*Kn12(1))+4*sigma*Un(1)^3,K0/dx^2*(Kn12(I-1)+Kn12(I))+4*sigma*Un(I).^3,1];
B=[-K0/dx^2*(2*Kn12(1)),-K0/dx^2*(Kn12(I)),0];
C=[0,-K0/dx^2*(Kn12(I-1)),0];
J = full(gallery('tridiag',B,[A 0],C));
J(end-1,1) = J(end-1,end);
J(1,end-1) = J(end,end-1);
J = J(1:end-1,1:end-1);
dUn=J\Fn.';
Err=norm(Fn)/sqrt(N);
Un=Un+dUn;
if (Err<epsilon) break; end;
end;
Un(:,1)
plot(Un(:,1))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。