您好,欢迎来到爱站旅游。
搜索
您的当前位置:首页微分方程

微分方程

来源:爱站旅游

5.20 微分方程

微分方程数值解:不求出具体解析式,只求出数值映射

变化率相关问题

未知函数y,未知函数的导数,自变量组成的方程

微分方程的解是 函数

通解:解中含任意常数,常数个数等于阶数

特解:通过初始条件确定了常数值

  • 可分离变量的一阶微分方程

g(y) dy = f(x) dx

  • 齐次方程

dy / dx = f(y / x)

  • 一阶线性微分方程

dy / dx + P(x) y = Q(x)

Q(x) = 0时:

Q(x) != 0时:

常数变易法:C换成未知函数u(x), y = u(x) e (- S P(x) dx)

=》 积分因子法(凑微分乘法)

用python求解微分方程

求 :通解形式

from sympy import *

sym: symbol --> 符号计算库:高精度计算,模式匹配,绘图,解方程,微积分,组合数学,概率统计…

from sympy import *

x = symbols('x')
f = symbols('f', cls=Function)

# 描述微分方程: f'(x) = x ^ 2 + x
diffeq = Eq(f(x).diff(x), x**2 + x)

# 二阶导数
diffeq2 = Eq(f(x).diff(x, x), x**2 + x)

# 三阶导数
diffeq3 = Eq(f(x).diff(x, 3), x**2 + x)

print(dsolve(diffeq, f(x)))
print(dsolve(diffeq2, f(x)))
print(dsolve(diffeq3, f(x)))

欧拉方法 ???

很多微分方程无法求解析解:

泰勒公式

# y' = x, x0 = -2, y0 = 3

import numpy as np
import matplotlib.pyplot as plt

a = -2
b = 2
x0 = -2
y0 = 3
n = 500

h = (b - a) / n
y = []
y.append(y0)

x = np.arange(a, b, h)

for i in x:
    tmpy = y0 + i * h
    y.append(tmpy)
    y0 = tmpy

x1 = np.arange(a, b + h, h)
y1 = 0.5 * x1**2 + 1
print(x1.shape)

plt.plot(x1, y, lw=3, label="euler_value")
plt.plot(x1, y1,lw=3, label="exact_value")
plt.legend()
plt.show()

龙格-库塔法 runge-kutta

欧拉法: 单步迭代,只用了端点信息

二元泰勒展开

python 内置求常微分方程数值求解方法

# 求常微分方程的数值解
from scipy.integrate import odeint

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- azee.cn 版权所有 赣ICP备2024042794号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务