常微分方程式を勉強する 目次
- 作者: 柳田英二,栄伸一郎
- 出版社/メーカー: 朝倉書店
- 発売日: 2002/01/01
- メディア: 単行本
- クリック: 7回
- この商品を含むブログ (3件) を見る
常微分方程式を勉強する 2
- こちら(コーシーの定理)から
- 『リプシッツ条件が満たされていなくても、fが領域D上で連続であれば初期値問題には解が少なくとも一つ存在するが、一意とは限らない』
- fがD上で連続で、かつリプシッツ条件を満たしているとすると、解が存在して一意である』
- 優級数定理
- 一様収束やこちら
- 数学的帰納法
- 逐次近似法
- お絵かき(リプシッツ条件)
library(rgl) v1<-c(0,0,0) v2<-c(1,0,0) v3<-c(1,1,0) v4<-c(0,1,0) alpha<-0.3 beta1<-0.2 beta2<-0.7 v5<-c(alpha,beta1,0) v6<-c(alpha,beta2,0) L<-1.5 v7<-c(alpha,beta2,L) Vs<-rbind(v1,v2,v3,v4,v5,v6,v7) plot3d(Vs,xlim=c(-0.5,1.5),ylim=c(-0.5,1.5),zlim=c(-0.5,1.5)) segments3d(Vs[c(1,2,2,3,3,4,4,1,5,6,6,7,7,5),1],Vs[c(1,2,2,3,3,4,4,1,5,6,6,7,7,5),2],Vs[c(1,2,2,3,3,4,4,1,5,6,6,7,7,5),3],col=2) Ntri<-20 for(i in 1:Ntri){ tmpalpha<-runif(1) tmpbeta1<-runif(1) tmpbeta2<-runif(1) tmpbeta1.2<-min(tmpbeta1,tmpbeta2) tmpbeta2.2<-max(tmpbeta1,tmpbeta2) tmpL<-runif(1)*L tmpv5<-c(tmpalpha,tmpbeta1.2,0) tmpv6<-c(tmpalpha,tmpbeta2.2,0) tmpv7<-c(tmpalpha,tmpbeta2.2,tmpL) tri<-rbind(tmpv5,tmpv6,tmpv7) triangles3d(tri) }
常微分方程式を勉強する
- 作者: 柳田英二,栄伸一郎
- 出版社/メーカー: 朝倉書店
- 発売日: 2002/01/01
- メディア: 単行本
- クリック: 7回
- この商品を含むブログ (3件) を見る
- 勉強会の目次
- 常微分方程式。正規系で表せる常微分方程式最高次の導関数はそれより次数の低い導関数と元の関数と変数そのもので決まる。今が変化の仕方を決めるというルール。
- 参考→こちら
- 常微分方程式などの既知解の検索サイト→EqWorldについて
- Rの常微分方程式パッケージ deSolove(こちら)
- 常微分方程式の現実世界のために「発散しない条件」を検討しよう→こちらとこちらとこちらと
- 常微分方程式 ordinary differential equation
- 一般解と特殊解と特異解
- 線型のそれ、非線形のそれ
- 初期値問題
- 境界値問題(2階以上だと、両端2か所に初期値を与えられる)
- 『初期値問題と境界値問題の違いってなんですか?』:→こちら
- 正規形の微分方程式
- リプシッツ連続(こちら)
- 連続より強い平滑条件
- コーシー・リプシッツの定理(初期値問題の解が一意に決まるときにリプシッツ条件が出てくる)→こちら
- EqWorldを使って、常微分方程式の厳密解を調べ、Rでプロットしてみよう
- はaの正負0の3通りに書き分けられる
-
- EqWorldのこの記事ではとなっているが、誤植だろう。aを変えてプロットしたときの移行のよさを考慮すれば
- はaの正負0の3通りに書き分けられる
- 導関数の動きを見よう
C1<-runif(1) C2<-runif(1) as<-seq(from=-1,to=1,length=11) xs<-seq(from=-10,to=10,length=101) # ys1,ys2は第1、第2導関数値 ys<-ys1<-ys2<-matrix(0,length(as),length(xs)) for(i in 1:length(ys[,1])){ a<-as[i] absa<-abs(a) if(a<0){ ys[i,]<-C1*sinh(xs*sqrt(absa))+C2*cosh(xs*sqrt(absa)) # 微分しよう dx<-deriv(~C1*sinh(xs*sqrt(absa))+C2*cosh(xs*sqrt(absa)),"xs") # 値の評価 ys1[i,]<-eval(dx) }else if(a>0){ ys[i,]<-C1*sin(xs*sqrt(absa))+C2*cos(xs*sqrt(absa)) dx<-deriv(~C1*sin(xs*sqrt(absa))+C2*cos(xs*sqrt(absa)),"xs") ys1[i,]<-eval(dx) }else{ #ys[i,]<-C1+C2*xs ys[i,]<-C1*xs+C2 dx<-deriv(~C1*xs+C2,"xs") ys1[i,]<-eval(dx) } ys2[i,]<-(-a)*ys[i,] } matplot(t(ys),type="l",ylim=range(ys[11,])*5) library(rgl) plot3d(xs,ys[1,],ys1[1,]) # a>0 の範囲では # ysとその第1導関数は周期が半周ずれていて、第2導関数の周期はもとに戻っている xys<-cbind(xs,ys[8,],ys1[8,],ys2[8,]) plot(as.data.frame(xys)) matplot(xys[,2:4],type="l") # a<0 の範囲では # 発散する xys<-cbind(xs,ys[3,],ys1[3,],ys2[3,]) plot(as.data.frame(xys)) matplot(xys[,2:4],type="l")
与えられた条件から、推定する〜信頼区間?〜
- 作者: 津崎晃一
- 出版社/メーカー: メディカルサイエンスインターナショナル
- 発売日: 2011/03/24
- メディア: 単行本
- 購入: 1人 クリック: 37回
- この商品を含むブログ (2件) を見る
p<- seq(0,1,0.00001) pp<- rep(0,length(p)) for(i in 1:length(p)){ pp[i]<- dbinom(4,15,p[i]) } plot(pp) #plot(pp/sum(pp),cex=0.1,axes=FALSE,ylim=c(0,0.0005), # xlab="Ratio of Red balls",ylab="Likelyhood") #axis(1, # c(0,which(pp==max(pp)),length(p)), # c(0,round(which(pp==max(pp))/length(p),3),1)) #axis(2) a<- pp/sum(pp) a_order<- order(a,decreasing=TRUE) a_ordered<-a[a_order] cumsum_a_ordered<-cumsum(a_ordered) plot(cumsum_a_ordered) closest<-which(abs(cumsum_a_ordered-0.95)==min(abs(cumsum_a_ordered-0.95))) abline(v=closest) abline(h=0.95) plot(pp,type="l") #abline(h=a[a_order[closest]]) thres<-a[a_order[closest]] mores<-which(a>thres) lessANDeq<-which(a<=thres) sum(a[mores]) sum(a[lessANDeq]) CI<-qbeta(c(1-0.95)/2,1-(1-cirange)/2),4+1,15-4+1) abline(v=CI*length(p),col=2) abline(v=a_order[closest]) abline(v=a_order[closest-1]) N<-15 k<-4 p<-seq(from=0,to=1,by=0.001) v<-dbeta(p,k+1,N-k+1) v<-v/sum(v) plot(p,v,type="l") abline(v=k/N) cirange<-0.95 ci1<-qbeta(c((1-cirange)/2,1-(1-cirange)/2),k+1,N-k+1) abline(v=ci,col=2) lesses<-which(p<ci1[1]) mores<-which(p>ci1[2]) a_order<- order(v,decreasing=TRUE) a_ordered<-v[a_order] cumsum_a_ordered<-cumsum(a_ordered) closest<-which(abs(cumsum_a_ordered-0.95)==min(abs(cumsum_a_ordered-0.95))) thres<-v[a_order[closest]] mores2<-which(v>thres) lesss2<-which(v<thres) col<-rep(0,length(p)) col[mores2]<-2 col[lesss2]<-3 par(new=TRUE) plot(p,v,col=col,cex=0.1) abline(h=thres,col=3) sum(v[c(lesses,mores)]) sum(v[-c(lesses,mores)]) sum(v[c(lesss2)]) sum(v[c(mores2)])
- dbinom()はp引数がベクトル対応なのでループがはしょれるらしい(こちら)
- for()は、好きかもしれない