楼主: lxlx96
1300 3

[问答] 龙格库塔算法 [推广有奖]

  • 0关注
  • 0粉丝

小学生

57%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
342 点
帖子
7
精华
0
在线时间
2 小时
注册时间
2016-5-6
最后登录
2016-5-12

楼主
lxlx96 发表于 2016-5-8 04:11:11 |AI写论文
10论坛币
全部家当了,有了还可以追加,求大神拉一把 TT 1.PNG 2.PNG

沙发
马甲1号 发表于 2016-5-8 04:11:12

  1. ##runge-kutta

  2. Runge_Kutta <- function(f,b,c,A,y0,x0,h,N){
  3.     stopifnot( length(c)== nrow(A))
  4.     x=x0
  5.     y=y0
  6.     message(sprintf( 'initial condition, x=%f, y=%f',x,y))
  7.     for(n in 1:N){
  8.                                         #cal k1
  9.         K=h*f(x,y)
  10.                                         #cal k2...kN
  11.         for(s in 2:length(c)){
  12.             k= h*f(x+c[s]*h, y+ A[s, 1:(s-1) ]*K )
  13.             K=c(K,k)
  14.         }

  15.                                         #update x,y
  16.         y=y+ sum(b*k)
  17.         x=x+ h
  18.         message(sprintf( 'iteration %d, x=%f, y=%f',n,x,y))

  19.     }
  20.     yN=y

  21.     return(yN)
  22. }


  23. b= c(1/6,1/3,1/3,1/6)
  24. c= c(0, 1/2,1/2,1)
  25. A= matrix(c(0,0,0,0,1/2,0,0,0,0,1/2,0,0,0,0,1,0), nrow=4,ncol=4,byrow=T)
  26. f=function(x,y){-2*y*x^2}

  27. yN=Runge_Kutta(f,b,c,A,y0=1,x0=0,h=.001,N=1000)

  28. yE=exp(-2/3* 1^3)
  29. message(sprintf('Runge_Kutta method result at  x=1 is %f; exactly result is %f.',yN,yE))
复制代码

藤椅
马甲1号 发表于 2016-5-10 13:43:04
发重了,删了吧~

板凳
lxlx96 发表于 2016-5-12 05:55:50
马甲1号 发表于 2016-5-10 13:43
发重了,删了吧~
谢谢大神[cry]

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-3-27 09:14