• 一阶常微分方程的五种解法，和二阶常微分方程的快速求解方法，方便快速回忆，根据山师老师的讲义，非常简单易推导的解法
• 二阶常微分方程初值问题的Laguerre-Gauss配置法，严建平，郭本瑜，本文研究二阶常微分方程初值问题的数值解法。文中基于Laguerre-Gauss插值设计了一类新的配置法, 它易于计算，且特别适用于非线性问题�
• 相关的理论推导请参考: 神经网络求解二阶常微分方程. 以下是程序分享 import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf import matplotlib.pyplot as plt import numpy as np import ...
相关的理论推导请参考: 神经网络求解二阶常微分方程.
以下是程序分享
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
import math
x_train = np.linspace(0, 2, 400)#生成[0,2]区间100个点
y_trail = np.exp(-0.2*x_train)*np.sin(x_train)#已知解析解用于比较
x_t = np.zeros((len(x_train), 1))
for i in range(len(x_train)):
x_t[i] = x_train[i]
x1 = tf.placeholder("float", [None, 1])#一次传入100个点[100,1]
W = tf.Variable(tf.zeros([1, 10]))
b = tf.Variable(tf.zeros([10]))
y1 = tf.nn.sigmoid(tf.matmul(x1, W)+b)#sigmoid激活函数y1的形状[100,10]
W1 = tf.Variable(tf.zeros([10, 1]))
b1 = tf.Variable(tf.zeros([1]))
y = tf.matmul(y1, W1)+b1#网络的输出[100,1]
lq = tf.exp(-0.2*x1)*tf.cos(x1)

dif1 = tf.matmul(tf.multiply(y1*(1-y1),W),W1)#dy/dx,dif形状[100,1],即对应点的导数值
dif2 = tf.matmul(tf.multiply((y1*(1-y1)*(1-y1)-y1*y1*(1-y1))*W, W),W1)#dy/dx,dif形状[100,1],即对应点的导数值
t_loss = (dif2+0.2*dif1+y+0.2*lq)**2#常微分方程F的平方
# loss = tf.reduce_mean(t_loss)+(y[0]-0)**2+(y[199]-math.sin(1)*math.exp(-0.2))**2#每点F平方求和后取平均再加上边界条件
loss = tf.reduce_mean(t_loss)+(y[0]-0)**2+(dif1[0]-1)**2
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for i in range(50000):#训练50000次
sess.run(train_step,feed_dict={x1: x_t})
if i%50 == 0:
total_loss = sess.run(loss,feed_dict={x1: x_t})
print("loss={}".format(total_loss))
print(sess.run(y[0], feed_dict={x1: x_t}))
# saver = tf.train.Saver(max_to_keep=1)#保存模型，训练一次后可以将训练过程注释掉
# saver.save(sess,'ckpt/nn.ckpt',global_step=50000)
# saver = tf.train.Saver(max_to_keep=1)
# model_file="ckpt/nn.ckpt-50000"
# saver.restore(sess, model_file)
output = sess.run(y,feed_dict={x1:x_t})
output1 = sess.run(t_loss,feed_dict={x1:x_t})
y_output = x_train.copy()
y_output1 = x_train.copy()
for i in range(len(x_train)):
y_output[i] = output[i]
y_output1[i] = output1[i]
fig = plt.figure("预测曲线与实际曲线")
L1, = plt.plot(x_train,y_trail, c = 'b')
L2, = plt.plot(x_train,y_output, c = 'g')
plt.legend([L1,L2],["analytic solution","network solution"], loc='upper right')
plt.title('Comparison of results')
fig2 = plt.figure("y_-y")#画实际值与预测值得偏差
plt.title('y_-y')
plt.plot(x_train,y_trail-y_output)
fig3 = plt.figure("loss")#画出每一点对Loss的贡献
plt.title('loss')
plt.plot(x_train,y_output1+(y_output[0]-1)**2)
plt.show()

最后说明，本程序参考了以下博主提供的代码，在其基础上开发了二阶常微分求解的方法。在此对其表示感谢
Tensorflow一个很简单的神经网络求解常微分及偏微分方程.


展开全文
• 微分方程的数值解法主要包括两大类：有限差分法和有限单元法。这里主要介绍有限单元法。 However，对于一个只学过微积分和矩阵论的工科生来说，要了解有限元法的数学原理还是有些困难，所以这里重点是介绍有限元法...
我们常常用微分方程来描述现实世界中的一些物理现象。由于微分方程的复杂性，只有在很简单的情况下才能得到微分方程的解析解。由于计算机的发展，采用数值方法求解微分方程的数值近似解得到广泛应用。微分方程的数值解法主要包括两大类：有限差分法和有限单元法。这里主要介绍有限单元法。

However，对于一个只学过微积分和矩阵论的工科生来说，要了解有限元法的数学原理还是有些困难，所以这里重点是介绍有限元法的思想和具体计算方法，深层的数学原理并不涉及，主要是本人也不懂~~~

1.微分方程基本概念

微分方程主要分为常微分方程和偏微分方程。
常微分方程：未知函数是单一自变量的函数，按照方程中导数的阶数，分为一阶、二阶、n阶常微分方程。
偏微分方程：未知函数是多个自变量的函数，至少是两个自变量，同样可以分为一阶、二阶、n阶偏微分微分方程。

二阶偏微分方程研究较多，又可以分为椭圆型方程、双曲型方程、抛物型方程等。这里不展开，具体可以查看偏微分方程数值解法相关书籍。

2.二阶常微分方程的有限元法求解举例

由于下面涉及大量公式，所以采用截图的方式进行介绍

3.具体Matlab实现如下：

%% main program
%一次有限元求一维常微分方程，基函数为分片线性函数
n = 10;
err = zeros(8, 1);

% Linear interpolation
index = zeros(8, 1);
for i=1:8
index(i) = 2^(i-1) * n; %10,20,40,80,160,320,640,1280
end
for i = 1:8
N = index(i); %网格数量
h = 1 / N; %网格大小
x = 0:h:1; %节点向量
xx = 0:1/1000:1;
exact_solu = sin(pi.*xx); %精确解
K = zeros(N-1); %初始化系数矩阵（刚度矩阵）
K = K + diag(ones(N-1,1).*(2/h+2/3*h), 0) + diag((h/6-1/h).*ones(N-2,1), 1)...
+ diag((h/6-1/h).*ones(N-2,1), -1);
F = (1+pi^2)/(h*pi^2) * (2.*sin(pi.*x(2:N))-sin(pi.*x(1:N-1))-sin(pi.*x(3:N+1)))';
K = sparse(K);
coeff = K\F; %Ax=b,matlab求法x=A\b
solu = [0; coeff; 0]; %u(x)节点解

%     figure()
subplot(3,3,i)
plot(x', solu, 'o--',xx', exact_solu, 'g--');
legend('numerical solution', 'exact solution')
xlabel('x')
ylabel('U');
xlim([-0.05,1.05])
ylim([-0.05,1.05]);
title(['numerical solution and exact solution N=',num2str(index(i))]);

% calculate the error
du = solu(2:N+1) - solu(1:N);
y1 = sin(2.*pi.*x);
dy1 = y1(2:N+1) - y1(1:N);
y2 = sin(pi.*x);
dy2 = y2(2:N+1) - y2(1:N);
error = pi^2*h/2*ones(1,N) + du'.^2/h + pi/4*dy1 - 2/h*dy2.*du';
err(i) = sqrt(sum(error));
end
% figure()
subplot(3,3,9)
plot(log2(err),'o--');
title('误差阶')
xlabel('N')
ylabel('$log_{2}Error$', 'Interpreter','LaTex')
xlim([0.8,8.2])

axis on;
set(gca,'xtick',1:1:8);
set(gca,'xticklabel',{5,10,20,40,80,160,320,640});

[order,~] = polyfit(1:1:(length(err)), log2(err)', 1);
disp(order)



最后计算结果如下图所示：

参考文献：

代码 https://blog.csdn.net/waitingwinter/article/details/106164350

展开全文
• 第四十九篇 二阶常微分方程的打靶法 边界值问题 当我们试图用自变量的不同值所提供的信息来解二阶或更高阶的常微分方程时，我们必须使用与前面描述的不同的数值方法。 前面提到的初值问题经常涉及到“时间”作为自...
第四十九篇 二阶常微分方程的打靶法
边界值问题
当我们试图用自变量的不同值所提供的信息来解二阶或更高阶的常微分方程时，我们必须使用与前面描述的不同的数值方法。
前面提到的初值问题经常涉及到“时间”作为自变量，解决技术要求我们按步骤“前进”，直到达到所需的解。在这种情况下，解的定义域不是有限的，因为原则上我们可以无限地沿着正方向或负方向前进。
边值问题涉及一个有限解的区间，在这个区间内去求解。这类问题的自变量通常是空间中测量距离的坐标。一个典型的二阶边值问题可能下面的形式。

解的定义域(假设为B >a)是由x在A≤x≤B的范围内的值给出的，我们需要的是找到对应于x在这个范围内的y的值。
本篇将考虑的数值解法分为三类
(a)用有限差分等效代替原来的微分方程的技术。
(b)“打靶法”，试图用一个等价初值问题代替边值问题。
有限差分法
在这种方法中，微分方程中的导数项被有限差分近似代替。正如微分方程是线性的，将会显示的那样。这个过程会导致一个线性联立方程，可以使用前面描述的方法求解。
首先，需要定义一些有限差分近似来处理经常遇到的导数。考虑下图的解曲线，其中x轴被细分为规则的网格点，距离为h。

可以用下面任意一种方法来表示y对x的一阶导数

这些有限差分公式通过计算函数在xi附近的连接点的直线的斜率来逼近一阶导数。正向和反向公式有偏差，因为它们只包括xi的右侧或左侧的点。中心差分形式将xi左右的点考虑在内。
高阶导数也可以用这种方法近似。例如，在xi处的二阶导数可以通过取一阶导数的逆向差来估计，如下所示

如果我们把一阶导数的前向差分公式代入，得到

类似上面可以得到yi’‘的中心差分公式

类似地，三阶导数的中心差分公式可以由

对x的四阶导数

这些高阶导数的正向和逆向差分也很容易得到，并且通过在差分公式中包含更多的点，可以获得更高的精度。
逆向差分公式是正向差分公式的简单镜像，除了奇数导数(即，y’，y " '等)，其中符号必须相反。
一阶导数在x0处的四点正向差分公式为

逆向差分公式为

“两点边值问题的解决方案包括把x的范围分裂到n个相等的部分,每个宽度h。n = 4,如果给定的边界条件,x = A和x = B,令ξ= x0 + ih, i = 1, 2,……，其中x0 = A, xn = B。
在每个点i = 1,2，…n−1处，微分方程以有限差分形式表示。如果微分方程是线性的，这将导致n−1个联立线性方程，在未知值yi, i = 1,2，…，n−1，其中yi表示在xi处的解。细分得越多，解的细节和精度就越高，但必须解决的联立方程也就越多。
计算实例
给定y’’ = 3x + 4y，边界条件y(0) = 0, y(1) = 1，利用h = 0.2有限差分求解0≤x≤1范围内的方程。

首先将微分方程写成有限差分形式。选择二阶导数公式。通常使用最低阶中心差分形式，除非有特殊的情况去使用较不准确的正向或逆向差分形式，因此

微分方程可以写成

求解域被分割成5条相等的条带，每条宽度h = 0.2。
然后将有限差分方程写在每一个需要解的网格点上。需要时引入已知的边界条件，得到下表所示的四个方程。
这些(非对称)方程可以用线性方程求解中的任何合适的程序求解。第二个表将数值解与精确解进行了比较

显然，有限差分解的精度可以通过在0≤x≤1范围内进行更多的细分来进一步提高，但代价是求解更多的方程。
上个例子显示了一个问题，那就是如果使用了y "的高阶有限差分表示。例如，如果对y’‘使用五点中心差分公式，那么为了表示y1’‘和y4’’，就需要y在解域之外的值。为了解这个系统，还需要更多的信息，因为未知数要比方程多。
在解域之外引入点(至少是暂时引入点)的要求经常会碰到，并且可以通过采取合并适当的边界条件来解决，如下一个示例所示。
考虑一个边值问题

在这种情况下,y (B)是未知的,所以微分方程的有限差分需要写在x = B,即使使用最简单的中心差分公式y”，相应的“解决方案”在x5,将如下图所示。在这种情况下，我们有5个未知数，但只有4个方程。

第五个方程来自导数边界条件，它也可以写成有限差分形式，即使用中心差分

计算实例
给定x2y’’ + 2xy’−2y = x2，边界条件y(1) = 1, y’(1.5) =−1。用h = 0.1有限差分求解1≤x≤1.5范围内的方程。
微分方程以有限差分形式，对两个导数项使用中心差分写成如下

并应用于5个需要解的x值，如下图所示。
得到的方程如下表所示。从下图可以看出，第五个方程在解域外引入了第六个未知数y6 = y(1.6)。中心差分形式的导数边界条件

用于提供第六个方程。
这六个线性方程的解，连同精确解，给出在下表中

本节给出的有限差分解在网格点相对较少的情况下表现得相当好。但并不会总是这种情况，特别是当导数在解域中发生突然的变化时。在没有精确解可供比较的情况下，建议使用两个或三个不同层次的解域来解决问题。解对网格尺寸参数h的灵敏度往往表明解的精度。
从我们的角度来看，应该使h足够小，以达到所需的精度，但不能小于必要的值，因为这会导致过度大的方程组。
打靶法
打靶法试图像解决初值问题一样解决边值问题。考虑下面的二阶方程

在一个打靶法中，将解决一系列的初值问题的形式

通过有条不紊地改变初始梯度ai，我们最终可以在x = B处得到一个足够接近所需边值yB的解。有几种不同的策略来收敛所需的解，这些方法类似于寻找非线性代数方程的根。
这里描述的方法如下图所示是选择两个初始梯度y ’ 0 (A) = a0和y ’ 1 (A) = a1,通过一步法之后，得到y0(B) = y0和y1 (B) = y₁分别在所需的边界条件yB的两边,即,y0 < yB < y1(或y1< yB < y0)。

通过线性插值，给出了初始梯度的改进估计

从而得出y(B) = y∗。
根据下面的测试，其中一个初始梯度被∗取代，如果

然后用y代替y0和a代替a0
或者用y代替y1和a代替a1
在整个迭代过程中，我们的目标是保持一个高估目标边界条件的初始梯度，以及一个低估目标边界条件的初始梯度。随着迭代的进行，y∗趋于目标值，当根据准则满足收敛容差时，计算停止

迭代过程本质上就是之前描述的“假位置法”。详情可见试位法求解非线性方程
程序如下
程序计算的二阶常微分方程为

import numpy as np
a0=np.zeros((2))
k0=np.zeros((2))
k1=np.zeros((2))
k2=np.zeros((2))
k3=np.zeros((2))
y=np.zeros((2))
nsteps=5;xa=0.0;ya=0.0;xb=1.0;yb=1.0
a0[:]=(0.0,1.0)
tol=0.0001;limit=25
y0=np.zeros((nsteps+1,2))
ystar=np.zeros((nsteps+1))
print('--二阶常微分方程的打靶法--')
h=(xb-xa)/nsteps
def f74(x,y):
f74=np.zeros((2))
f74[0]=y[1]
f74[1]=3.0*x**2+4.0*y[0]
return f74
for j in range(1,3):
x=xa;y[0]=ya;y[1]=a0[j-1]
for i in range(0,nsteps+1):
y0[i,j-1]=y[0]
k0=h*f74(x,y);k1=h*f74(x+h/2.0,y+k0/2.0)
k2=h*f74(x+h/2.0,y+k1/2.0);k3=h*f74(x+h,y+k2)
y=y+(k0+2.0*k1+2.0*k2+k3)/6.0;x=x+h
if (y0[nsteps,0]-yb)*(y0[nsteps,1]-yb)>0:
print('尝试一个新梯度')
iters=0
while(True):
iters=iters+1
astar=a0[0]+(yb-y0[nsteps,0])*(a0[1]-a0[0])/(y0[nsteps,1]-y0[nsteps,0])
x=xa;y[0]=ya;y[1]=astar
for i in range(0,nsteps+1):
ystar[i]=y[0]
k0=h*f74(x,y);k1=h*f74(x+h/2.0,y+k0/2.0)
k2=h*f74(x+h/2.0,y+k1/2.0);k3=h*f74(x+h,y+k2)
y=y+(k0+2.0*k1+2.0*k2+k3)/6.0;x=x+h
if (abs(ystar[nsteps]-yb)/yb)<tol:
print(' x              y')
for i in range(0,nsteps+1):
print('{:9.5e}'.format(xa+i*h),end='  ')
print('{:9.5e}'.format(ystar[i]))
print('迭代到收敛次数',iters)
break
if (ystar[nsteps]-yb)*(y0[nsteps,0]-yb)>0:
y0[:,0]=ystar;a0[0]=astar
else:
y0[:,1]=ystar;a0[1]=astar


终端输出结果如下


展开全文
• ## 二阶线性微分方程

千次阅读 2019-02-27 23:02:30
二阶线性微分方程 一. 认识二阶线性微分方程 二阶线性微分方程定义：二阶线性微分方程定义：二阶线性微分方程定义： 形如： y′′+P(x)y′+Q(x)y=f(x)y&amp;#x27;&amp;#x27; + P(x)y&amp;#x27; + Q(x)...
二阶线性微分方程
一. 认识二阶线性微分方程

$二阶线性微分方程定义：$
形如： $y'' + P(x)y' + Q(x)y = f(x)$的方程称为二阶线性微分方程
当 $f(x)=0$恒成立时，称该方程为二阶线性齐次方程；
当 $f(x)\neq0$时，称该方程为二阶线性非齐次方程。

$定理：$
$若y_1，y_2是二阶线性齐次方程y'' + P(x)y' + Q(x)y = 0 的解，则y=c_1y_1+c_2y_2（c_1,c_2 \in R)仍是它的解。$

二.  二阶线性微分方程求解思路
$【观察发现】y=c_1y_1+c_2y_2（c_1,c_2 \in R)$ $在形式上存在两个常数，符合高阶微分方程通解的规律。$ $（即n阶微分方程的通解中存在n个常数）$
$【提出问题(一）】$$是否能够认为对任意y_1,y_2，存在y=c_1y_1+c_2y_2（c_1,c_2 \in R)为$y’’ + P(x)y’ + Q(x)y = 0$的通解?$
$【找到反例】 当y_1=x, y_2=kx 满足y'' + P(x)y' + Q(x)y = 0 时，$
$发现y=c_1y_1+c_2y_2=c(x+kx) = cx 中，只存在一个常数，$
$不再符合高阶微分方程通解的规律。$
$\Longrightarrow$ $对任意y_1,y_2，存在y=c_1y_1+c_2y_2（c_1,c_2 \in R)为y'' + P(x)y' + Q(x)y = 0的通解假设错误$
$【提出问题(二）】$ $当y_1,y_2满足什么关系是，能够使y=c_1y_1+c_2y_2（c_1,c_2 \in R)为y'' + P(x)y' + Q(x)y = 0的通解成立？$

$函数组的线性相关性:$
$设有函数组y_1,y_2....y_n,（其中y是关于x的函数） \forall x\in I,$$如果存在一组不全为零的常数k_1,k_2...k_n,$$使得k_1y_1+k_2y_2+...+k_ny_n=0 ,$ $则称函数组y_1,y_2....y_n在区间I上时线性相关的;$
$如果只有当k_1=k_2=...k_n=0时成立，$$则称函数组y_1,y_2....y_n在区间I上时线性无关的。$

$【观察发现】当y_1,y_2线性无关时y=c_1y_1+c_2y_2始终存在两个常数，$$满足高阶微分方程通解的规律。$
$【提出问题(三）】如何找到二阶线性齐次方程y'' + P(x)y' + Q(x)y = 0 的两个线性无关的解？$

$线性无关的判定方法：$
$(1) y_1,y_2是一个函数组，若存在k \in R，满足y_1=ky_2,$
$则y_1,y_2线性相关，否则线性无关。$
$(2) y_1,y_2....y_n是一个函数组，若存在I=1，2...n,y_i=0,$ $则函数组y_1,y_2....y_n线性相关。$
$(3)函数组：部分相关\rightarrow 整体相关$  ;  $整体不相关\rightarrow 部分不相关$.

$【提出问题(四）】若已知二阶线性齐次方程y'' + P(x)y' + Q(x)y = 0的一个解，能否找到与其线性无关的另一个解？$
（使用与推导一阶线性非齐次方程相似的常数变易法进行求解）
$假设 :y_1 是y'' + P(x)y' + Q(x)y = 0的一个解，$
$y_2=C_{(x)}y_1为y'' + P(x)y' + Q(x)y = 0的另一个解$(在求证过程中，始终认为C是关于x的函数
$\Rightarrow$       $y_2'=C'y_1+Cy_1'$
$y_2''=C''y_1+2C'y'+Cy''$       $代入y'' + P(x)y' + Q(x)y = 0$
$\Rightarrow$       $C''y_1+[ 2y' + P(x)y ]C'=0$
$令u= C' ,$         $u'=C''$
$\Rightarrow$       $u'y_1+[ 2y' + P(x)y ]u=0$               $(分离变量)$
$\Rightarrow$       $\int \frac{1}{u}du = -\int \frac{2y_1+P(x)y_1}{y_1}dx$
$lnu=ln\frac{1}{y_1^2}-\int P(x)dx +lnC_1$
$又\because 只需求得y'' + P(x)y' + Q(x)y = 0的一个与y_1线性无关的特解，$                  $可以令C_1=1$
$\Rightarrow$       $u=\frac{1}{y_1^2}e^{-\int P(x)dx }$
$\Rightarrow$       $C=\int \frac{1}{y_1^2}e^{-\int P(x)dx} dx+C2$
$令C_2=0$
$\Rightarrow$      $\frac{y_1}{y_2}=\int \frac{1}{y_1^2}e^{-\int P(x)dx} dx$
$\therefore$      $y_2=y_1\int \frac{1}{y_1^2}e^{-\int P(x)dx} dx$

【刘维尔公式】
$若y_1 是y'' + P(x)y' + Q(x)y = 0的一个解，$ $则方程另一个与y_1线性无关的特解:$
$y_2=y_1\int \frac{1}{y_1^2}e^{-\int P(x)dx} dx$


展开全文
• 具体方程解法和背景不在赘述，见https://blog.csdn.net/Mezikov/article/details/107461970 1 代码 import math import numpy as np import matplotlib.pyplot as plt from math import e from numpy
• 如果y是二阶方程的一个解，那么y和v就是上面一阶系统的解 The yv-plan is called the phase plane . Plotting y and v versus t is the composite plot . General Solutions to Linear, Homogeneous ...
• 基于微分方程组理论和矩阵理论,采用按列比较方法和待定矩阵方法,给出了非齐次项为二次多项式与指数函数乘积的一类三维二阶常系数线性微分方程组的特解公式。对特殊情况进行了讨论,并通过算例验证了微分方程组特解...
• 基于微分方程组理论和矩阵理论，采用待定矩阵方法和按列比较方法，给出了非齐次项为三角函数与指数函数乘积的一类三维二阶常系数线性微分方程组的特解公式，对3种特殊情况进行了讨论，并通过算例验证了微分方程组特...
• 基于变分原理,将二阶线性常微分方程的两点边值问题转化为等价的变分问题(即泛函极值问题),利用两点三次Hermite插值构造一个逼近可行函数的近似函数,从而将问题转化为一个多元单目标优化问题,最后运用粒子群优化算法...
• 二阶常系数微分方程的通解 (一.) 二阶常系数微分方程的通解的组成： 其对应二阶常系数微分方程的通解 + 二阶常系数微分方程的特解 (二.) 构造二阶常系数微分方程的特解 形如：y′′+py′+qy=Pm(x)eαxy&amp;...
• 二阶常系数非齐次微分方程的复数解法二阶常系数非齐次微分方程的复数解法二阶常系数非齐次微分方程的复数解法二阶常系数非齐次微分方程的复数解法
• matlab 常微分方程数值解法 源程序代码所属分类：其他开发工具：matlab文件大小：16KB下载次数：41上传日期：2019-02-13 11:03:29上 传 者：XWLYF说明：11.1 Euler方法 38011.1.1 Euler公式的推导 38011.1.2 Euler...
• 一、线性微分方程的解的结构 1.1 二阶齐次线性方程 y′′+P(x)y′+Q(x)y=0(1) y''+P(x)y'+Q(x)y=0 \tag{1} y′′+P(x)y′+Q(x)y=0(1) 定理1：如果函数y1(x)y_1(x)y1​(x)与y2(x)y_2(x)y2​(x)是方程（1）的两个解，...
• 1、二阶常系数齐次线性微分方程解法 　y''+py'+qy = 0（其中p，q为常数）的方程称为二阶常系数齐次线性微分方程，求解步骤： 　（1）特征方程：λ2+pλ+q = 0; 　（2）根据特征方程的根分为以下三种情形： ...
• ## 常微分方程的解法 (四): Matlab 解法

万次阅读 多人点赞 2019-04-30 10:33:01
常微分方程解法求解系列博文： 常微分方程解法 (一): 常微分方程的离散化 :差商近似导数、数值积分方法、Taylor 多项式近似 常微分方程解法 (二): 欧拉（Euler）方法 常微分方程解法 (三): 龙格—库塔...
• 边值问题Matlab可用BVP4C命令，但感觉比较麻烦，下面用1stOpt求解，很简单快捷：CODE:Constant Pey=9.73, Nox=8.05, uxuy=3, bd=1, cx1e=2.3,b1=309.7,b2=2832.5, a1=27.8,a2=2.15,a3=-0.84,a4=0.935;...
• 实现了一些常见的带初值的常微分方程的算法。 /// <summary> /// 欧拉迭代公式,求出区间(x0,x]中每隔步长h的精度为e的近似值 /// </summary> /// <param name="fun">fun为x的函数即 dy/...
• ## 微分方程解法总结

万次阅读 多人点赞 2019-06-19 17:59:45
1，微分方程的概念 ...2.1 常微分方程与偏微分方程 常微分方程的未知数是单一变量的函数。表达通式为： f(x,y,y′,y′′,...,y(n))=0,f(x, y, y&#x27;, y&#x27;&#x27;, ..., y^{(n)})=0,f(x,y,y′,y...
• ## 常见的常微分方程的一般解法

千次阅读 多人点赞 2020-04-30 13:41:50
本文归纳常见的常微分方程的一般解法常微分方程，我们一般可以将其归纳为如下n类： 可分离变量的微分方程（一阶） 一阶其次（非齐次）线性微分方程（一阶） 伯努利方程（一阶） 二阶常系数微分方程（二阶） 高阶...
• 二阶常系数线性微分方程一般形式 y'' +p y' + qy = f(x) ① (下面用到r1、r2、y1、y2、C1、C2) 一、二阶常系数齐次线性方程 其一般形式 y'' + py' + qy = 0...
• 中值法简介 在惯性导航以及VIO等实际问题中利用IMU...[常微分方程的数值解法系列一] 常微分方程 [常微分方程的数值解法系列二] 欧拉法 [常微分方程的数值解法系列三] 中值法 [常微分方程的数值解法系列四] 龙格-库塔(R
• 本节叙述常微分方程的基本理论，一阶、二阶线性常微分方程解法，以及常见的其他典型问题。
• 微分方程_00_复系数微分方程解法及其相图 ...举例：求解复系数二阶齐次常微分方程y''-3iy'-2y=0利用特征方程t^2-3i*t-2=0得两个解为t(1)=i=0+i,t(2)=2i=0+2i所以微分方程的复解为y(1)=e^0(cosx+i*sinx)=cosx+i*si...
• 高阶线性微分方程-常微分方程 这里讨论常微分方程常微分方程的阶数就是函数求导的最高次数。这里以二阶线性微分方程为例。 形如方程5的称为二阶线性微分方程。   线性的概念定义为：   下面讨论 二阶...
• 在数学物理方法中常见的几种偏微分方程在柱坐标系或球坐标下分离变量时会出现二阶线性齐次常微分方程，为了求解这类常微分方程，常用级数解法．该方法的核心问题就是找解函数级数的系数递推公式，本文推荐一个比较...
• 龙格-库塔法简介 在惯性导航以及VIO等实际问题中利用IMU...[常微分方程的数值解法系列一] 常微分方程 [常微分方程的数值解法系列二] 欧拉法 [常微分方程的数值解法系列三] 中值法 [常微分方程的数值解法系列四] 龙格-库

...