微分方程数值解法(实际应用的改进)

探讨了一个人行走过程中速度随时间变化的数学模型,该模型中速度为时间的函数,利用微分方程解析法求解位移与时间的关系,并通过数值解法验证解析解的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

微分方程数值解法(实际应用的改进)
延伸上面的问题
假设有这样一种情况,关于人行走的,从A到B地,行走速度越来越慢,速度是关于时间A/

(t+B)+C的函数,现在求当s和时间t的关系;
从微分的角度看,v=s'=A/(t+B)+C
采用分离变量法有:
d(s)/d(t)=A/(t+B)+C
Go
d(s)=d(t)*{A/(t+B)+C}
Go
s=A*In (t+B)+C*t+D
假设A=10,另外再假设B=1,C=2,D=100,
这样有s(0)=100;
下面看数值解法和公式解法的差异;

下面写程序来证明:
(setq  a  10)
(setq  b  1)
(setq  c  2)
(setq  d  100)


(defun pow (num count)
(if (or (> count 1) (eq  count  1) )
      (* num
         (pow num
              (- count 1) ) )
      1))

(defun slayer ( count)
(if (or (> count 1) (eq  count  1) )
      (* count
         (slayer 
              (- count 1) ) )
      1))

(defun slayerex (num count)
(if (or (> count 1) (eq  count  1) )
      (* num
         (slayerex
              (-  num  1)
              (- count 1) ) )
      1))


注意这里是关于x1的函数

(defun  expr (x1 y1 )
(+  y1
    (*  0.1
        (+ C
           (/ A
              (+  B
                  x1))))))

(defun  calc (n x)
(if  (eq  n  0)
       1.0
    (+ (calc (1- n)
             x)
       (*  (pow  x 
                 n)
           (/    1
                 (slayer n))))))
     
(defun  mysqrt (x)
(calc  10
       (*  1/2
           (log x))))

(defun  formula  (x)
(+  (*   A
         (log  (+  x
                   B)))
    (*   C
         x)
    D))


(defun  exprhelp (x1 )
(if (< (abs (-  x1  0))
       0.1)
        (formula  0)
    (expr  x1 
           (exprhelp  (-  x1 
                          0.1)))))                 

(defun  test (n)
(if (> n 99)
  (progn
       (print (exprhelp n))
       (print  'compare)
       (print (formula n))     
       (test (- n 0.1)))
  (print 'over)))

[32]> (test  100)

345.65558
COMPARE
346.15118
345.44568
COMPARE
345.94128
345.23578
COMPARE
345.73138
345.02585
COMPARE
345.52148
344.81592
COMPARE
345.31152
344.606
COMPARE
345.1016
344.39603
COMPARE
344.89163
344.18607
COMPARE
344.68167
343.9761
COMPARE
344.4717
343.7661
COMPARE
344.26172
343.55612
COMPARE
344.05173
OVER
OVER
两者的值也是非常的接近,不过这里线性关系已经占主要部分了;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值