最新31一阶微分方程初值问题数值解32猪的最佳销售时机汇总
- 格式:doc
- 大小:90.50 KB
- 文档页数:9
微分方程中的初值问题理论微分方程是数学领域中的重要分支,它描述了一种变量与其变化率之间的关系。
在实际问题中,经常会遇到需要确定微分方程的解的具体形式,并以给定的初值条件作为起点进行求解的情况,这就是初值问题。
初值问题理论是微分方程研究的基础之一,本文将介绍微分方程中初值问题的理论基础和解法。
一、初值问题的定义初值问题是指给定一个微分方程及其解空间上一点的值,通过求解微分方程,确定解空间上满足给定初值条件的特定解。
初值问题的一般形式可以表示为:̇= (, )= ₀= ₀其中,表示未知函数,是自变量,是因变量,表示关于和的函数关系。
是关于和的函数,是任意给定实数。
初值问题的目标是找到满足上述方程和初值条件的特定解。
二、初值问题的解法解决初值问题的方法有很多种,常见的有解析解法和数值解法。
1. 解析解法解析解法是通过一系列数学手段,直接求得微分方程的解的公式,从而得到满足初值条件的特定解。
这种方法适用于某些特定形式的微分方程,例如线性微分方程、可分离变量的微分方程等。
解析解法的优势在于可以得到精确的解析表达式,从而能够准确描述问题的性质和变化规律。
但是,对于一些复杂的非线性微分方程,往往无法找到解析解,这时需要采用数值解法。
2. 数值解法数值解法是通过近似计算,利用离散的数值方法求解微分方程并得到数值近似解。
这种方法的思路是将微分方程转化为差分方程,并利用离散的计算方法逼近微分方程的解。
数值解法的优势在于适用性广,能够处理各种类型的微分方程,并能够得到任意精度的解。
常见的数值解法包括欧拉法、龙格-库塔法、改进欧拉法等。
三、初值问题的存在唯一性定理对于一阶常微分方程,初值问题存在唯一性定理是指在一定条件下,初值问题的解是存在且唯一的。
存在性定理:设 (, ) 是微分方程 , µ区间上的解且在 µ上连续,则初值问题在 [a,b] 上存在解。
唯一性定理:设 (, ) 和 (, ) 是微分方程在一定区域上的两个解,如果对于 µ [a,b] 上的某个点 x₀, ̇ (x₀) = ̇ (x₀),那么在整个区域上µ, (x) = (x),这就是说,在初值问题存在的条件下,初值问题的解是唯一的。
一阶常微分方程解法总结第一章一阶微分方程的解法的小结⑴、可分离变量的方程: ①、形如)()(y g x f dxdy= 当0)(≠y g 时,得到dx x f y g dy)()(=,两边积分即可得到结果; 当0)(0=ηg 时,则0)(η=x y 也就是方程的解。
例1、1、xy dxdy= 解:当0≠y 时,有xdx ydy=,两边积分得到)(2ln 2为常数C C x y +=所以)(11212C x e C C eC y ±==为非零常数且0=y 显然就是原方程的解;综上所述,原方程的解为)(1212为常数C eC y x =②、形如0)()()()(=+dy y Q x P dx y N x M当0)()(≠y N x P 时,可有dy y N y Q dx x P x M )()()()(=,两边积分可得结果; 当0)(0=y N 时,0y y =为原方程的解,当0(0=)x P 时,0x x =为原方程的解。
例1、2、0)1()1(22=-+-dy x y dx y x 解:当0)1)(1(22≠--y x 时,有dx x xdy y y 1122-=-两边积分得到)0(ln 1ln 1ln 22≠=-+-C Cy x ,所以有)0()1)(1(22≠=--C Cy x ;当0)1)(1(22=--y x 时,也就是原方程的解; 综上所述,原方程的解为)()1)(1(22为常数C C y x =--。
⑵可化为变量可分离方程的方程:①、形如)(x yg dx dy = 解法:令x y u =,则udx xdu dy +=,代入得到)(u g u dxdux =+为变量可分离方程,得到)(0),,(为常数C C x u f =再把u 代入得到)(0),,(为常数C C x xyf =。
②、形如)0(),(≠+=ab by ax G dxdy解法:令by ax u +=,则b du adx dy +=,代入得到)(1u G badx du b =+为变量可分离方程,得到)(0),,(为常数C C x u f =再把u 代入得到)(0),,(为常数C C x by ax f =+。
微分方程中的初值问题理论微分方程是描述自然界中各种现象的重要数学工具,而初值问题则是微分方程应用中的一个重要概念。
初值问题是指给定微分方程在某一点的解函数值及其导数值,从而确定微分方程的解。
在初值问题中,通过给定初始条件,可以唯一确定微分方程的解。
初值问题理论在控制论、生物学、天文学等领域有着广泛的应用。
一、初值问题的定义在微分方程中,初值问题是指给定微分方程的解函数在一点的函数值及其导数值,从而唯一确定微分方程的解。
一般来说,初值问题可表示为:$\frac{dy}{dx} = f(x, y)$$y(x_0) = y_0$其中,$\frac{dy}{dx} = f(x, y)$是微分方程,$y(x_0) = y_0$是给定的初始条件。
通过这个条件,可以确定微分方程在点$(x_0, y_0)$处的解。
二、初值问题的解存在唯一性对于初值问题,一个最重要的性质就是解的存在唯一性。
即在给定的初始条件下,微分方程的解是唯一的。
这个性质在许多实际问题中都是非常重要的。
通过初值问题的解存在唯一性,可以确保问题的可解性,并帮助我们更好地理解问题的本质。
三、初值问题的数值解法对于一些复杂的微分方程,往往无法通过解析方法求出其解析解。
这时候就需要借助数值方法来求解初值问题。
常用的数值方法包括欧拉法、改进的欧拉法、龙格-库塔法等。
这些数值方法可以通过离散化微分方程,逐步逼近解函数的值,并得到初值问题的近似解。
四、初值问题的应用初值问题在现代科学和工程中有着广泛的应用。
在控制论中,通过初值问题可以确定系统的初始状态,从而设计合适的控制策略。
在生物学中,通过初值问题可以模拟生物体在不同环境下的生长变化。
在天文学中,通过初值问题可以预测行星的运动轨迹。
综上所述,初值问题理论是微分方程理论中的重要组成部分,具有重要的理论意义和实际应用意义。
通过初值问题的研究,我们可以更好地理解微分方程的解的存在唯一性,同时也能够通过数值方法求解复杂的微分方程,为实际问题的应用提供有力支持。
第六章一階微分方程式初值問題所謂一階微分方程式初值問題, 即求滿足下列微分方程式的解x'(t) = f(t, x), x(a) = x0一般分為單一點(single step)計算與多點 (multi-step)計算的方法.本章的m-file 如下:1. taylor4.m2. rk4.m3. adbh.m (Adams-Bashforth)4. milne.m5. trapzoidnw.m6. eulerdynamic.m將須要的m-file之檔案夾加入搜尋路徑中path('d:\numerical', path)註1: 如果你有安裝Matlab Notebook 要執行下列input cells (綠色指令敘述)之前必須先執行上面的cell –[path (…) ]藍色的內容是Matlab [output cells]註2: 如果 m-file之內有定義函數, 請記得改寫你要執行的 .1. taylor4.m –顯示taylor4.m的內容type taylor4.mfunction y=taylor4(x0,a,b,m)%to return the approximation values of x(t)%by Taylor series method of order 4, x0 is the initial%t is in [a,b]y=[];n=1;t=a ;x=x0 ;h=(b-a)/m ;% fprintf('taylor4\n')% fprintf(' n t x\n')for k=1:m%For given x'(t)= f(t,x)=1+x^2+t^3%compute derivatives of x', x'', x''' and x4 at td1=1+x^2+t^3 ; % d1 is x'd2=2*x*d1 + 3*t^2; % d2 is x''d3=2*x*d2 + 2*d1^2 + 6*t ; % d3 is x'''d4=2*x*d3 + 6*d1*d2+ 6 ; % d4 is x""%compute x(t+h)x=x+h*(d1+h*(d2+h*(d3+h*d4/4)/3)/2);t=t+h ;% fprintf('%3d %10.6f %10.6f\n',k ,t ,x)y=[y; k t x];end % for k2. rk4.m –顯示rk4.m的內容type rk4.mfunction rs= rk4(x0,a,b,m)%to return the approximation values of x(t)%by RK4 method, x0 is the initial%t is in[a,b]rs=[] ;K1=0 ; K2=0 ;K3=0 ; K4=0;t=a ;x=x0 ;x2=0 ;x3=x2; x4=x2 ;h=(b-a)/m ;% fprintf('rk4\n')% fprintf(' n t x\n')for k=1:m%compute K1,K2,K3and K4K1=fx(t,x);x2=x+1/2*h*K1;K2=fx(t+h/2,x2);x3=x+1/2*h*K2;K3=fx(t+h/2,x3);x4=x+h*K3;K4=fx(t+h,x4);%compute x(t+h)x=x+h*(K1+2*K2+2*K3+K4)/6;t=t+h ;% fprintf('%3d %10.6f %10.6f\n',k ,t ,x) rs=[rs; k t x];end % for k%function y=fx(t,x)%compute values of function f(t,x)%y= 1+x^2+t^3;例題 1:比較Taylor與 RK的方法解微分方程式x'(t)=1+x2 +t3 ; x(0)= -4 ; 1 ≦t ≦ 2 ty4rk4taylor vs rk4n t taylor rk41 1.050000 -3.246802 -3.2454932 1.100000 -2.696215 -2.6948043 1.150000 -2.268329 -2.2670534 1.200000 -1.918709 -1.9175955 1.250000 -1.620467 -1.6194946 1.300000 -1.356111 -1.3552517 1.350000 -1.113464 -1.1126928 1.400000 -0.883455 -0.8827499 1.450000 -0.658806 -0.65814710 1.500000 -0.433177 -0.43254811 1.550000 -0.200533 -0.19992012 1.600000 0.045423 0.04603713 1.650000 0.311871 0.31250514 1.700000 0.607684 0.60836015 1.750000 0.944645 0.94540016 1.800000 1.339492 1.34038217 1.850000 1.817615 1.81874918 1.900000 2.420402 2.42201019 1.950000 3.221294 3.22395420 2.000000 4.365734 4.371224Multi-step method例題 2:比較Adams-Bashforth與 Milne的方法解微分方程式x'(t)= -6x+ 6 ; x(0)= 2 ; 0 ≦t ≦ 13. Adams-Bashforth --顯示adbh.m的內容type adbh.mfunction rs= adbh(x0,a,b,m)%to return the approximation values of x(t)%by 4th-order Adams-Bashforth method, x0 is the initial%t is in[a,b]rs=[] ;x=zeros(m,1); t=x;h=(b-a)/m ;inl=[0 0 x0];%obtain the initials by rk4rs= rk4adbh(x0,a,a+3*h, 3);rs=[inl; rs] ;k=rs(:,1); t=rs(:,2); x=rs(:,3);% fprintf('rk4\n')% fprintf(' n t x\n')%compute x(t+h)for k=4:mx(k+1)= x(k)+h*(55*f(x(k))-59*f(x(k-1))+37*f(x(k-2))-9*f(x(k-3)))/24 ;t(k+1)=t(k)+h ;endext =inline(' 1+exp(-6*t)','t');xt=feval(ext,t) ;% for k=1:m+1% fprintf('%3d %10.6f %10.6f\n',k ,t(k) ,x(k))% endk=(1:m+1)';rs=[k t x xt];%function y=f(x)%compute values of function f(t,x)%y= -6.*x + 6;4. milne–顯示milne.m的內容type milne.mfunction rs= milne(x0,a,b,m)%to return the approximation values of x(t)%by 4th-order Milne's method, x0 is the initial%t is in[a,b]rs=[] ; x=zeros(m,1); t=x;h=(b-a)/m ;inl=[0 0 x0];%obtain the initials by rk4 using the same f(t,x) as%Adams-Bashforthrs= rk4adbh(x0,a,a+3*h, 3);rs=[inl; rs] ;k=rs(:,1); t=rs(:,2); x=rs(:,3);% fprintf('rk4\n')% fprintf(' n t x\n')%compute x(t+h)for k=4:mx(k+1)= x(k-3)+4*h*(2*f(x(k))-f(x(k-1))+2*f(x(k-2)))/3 ;t(k+1)=t(k)+h ;endext =inline(' 1+exp(-6*t)','t');xt=feval(ext,t) ;% for k=1:m+1% fprintf('%3d %10.6f %10.6f\n',k ,t(k) ,x(k))% endk=(1:m+1)';rs=[k t x xt];%function y=f(x)%compute values of function f(t,x)%y= -6.*x + 6;adbhmilneAdams-Bashforth vs Milnen t Adams-BF Milne exact solution1 0.000000 2.000000 2.000000 2.0000002 0.100000 1.549400 1.549400 1.5488123 0.200000 1.301840 1.301840 1.3011944 0.300000 1.165831 1.165831 1.1652995 0.400000 1.099833 1.097103 1.0907186 0.500000 1.051576 1.043756 1.0497877 0.600000 1.042433 1.044183 1.0273248 0.700000 1.005129 0.974780 1.0149969 0.800000 1.035419 1.102791 1.00823010 0.900000 0.966638 0.788422 1.00451711 1.000000 1.069557 1.505292 1.002479從上面數據顯示Adam-bashforth穩定度較好5. trapzoidnw.m–顯示trapzoidnw.m的內容type trapzoidnw.mfunction [msg, rs]= trapzoidnw(x0, a,b, m, tor)%to approximate the solution of x'=f(t,x)%t is in [a,b], x(a)=x0 by Trapezoidal with%Newton Iteration , iteration limit is 20rs=[] ;x=zeros(m,1); t=x;h=(b-a)/m ;x(1)=x0; t(1)=a;%compute x(t+h)for k=1:mc=x(k)+h*f(t(k),x(k))/2 ;w0=x(k) ; j=1; err = 1.0 ;th=t(k)+h ;while(j<=20 & err > tor)w=w0 -(w0-h/2*f(th,w0)-c)/(1-h/2*fy(th,w0)) ;err=abs(w- w0) ;if err<= tor %accept wt(k+1)=th; x(k+1)=w ;elsej=j+1 ;w0=w ;end ;end; %whileif (j>20)msg='Newton iteration fails';break ;elsemsg='Newton iteration success' ;end ; %ifend ; % for kext =inline('t-exp(-5*t)','t');xt=feval(ext,t) ;% for k=1:m+1% fprintf('%3d %10.6f %10.6f\n',k ,t(k) ,x(k)) % endrk=(1:m+1)' ;rs=[rk t x xt];function y=f(t,x)%compute values of function f(t,x)%y= 5*exp(5*t)*(x-t)^2+1;function y=fy(t,x)%compute values of function Df(t,x)/Dx%y= 10*exp(5*t)*(x-t);例題 3:利用隱性梯形法(Implicit Trapezoidal method)解微分方程式x'(t)= 5e5t(x-t)2 +1 ; x(0)= -1 ; 0 ≦t ≦ 1a=0; b= 1; x0= -1;m=10; tor = 10^-6 ;[msg, rs] = trapzoidnw(x0, a, b, m, tor) ;fprintf('----Trapezoidal with Newton iteration vs Exact solution----\n\n')fprintf(' n t Trapezoidal exactsolution\n')for k=1:m+1fprintf('%3d %10.4f %10.6f %10.6f\n',k,rs(k,2), rs(k,3), rs(k,4))end----Trapezoidal with Newton iteration vs Exact solution----n t Trapezoidal exact solution1 0.0000 -1.000000 -1.0000002 0.1000 -0.501080 -0.5065313 0.2000 -0.162742 -0.1678794 0.3000 0.080607 0.0768705 0.4000 0.267143 0.2646656 0.5000 0.419490 0.4179157 0.6000 0.551193 0.5502138 0.7000 0.670405 0.6698039 0.8000 0.782053 0.78168410 0.9000 0.889116 0.88889111 1.0000 0.993399 0.993262由於採用牛頓法須要計算函數的微分較為複雜,故我們利用Euler method 當做predcitor, Trapezodial method當做corrector, 得到下列結果 .a=0; b= 1; x0= -1; m=10;rs = trapzoidpc(x0, a, b, m) ;fprintf('----Trapezoidal(P-C) vs Exact solution----\n\n')fprintf(' n t Trapezoidal(P-C) exactsolution\n')for k=1:m+1fprintf('%3d %10.4f %10.6f %10.6f\n',k,rs(k,2), rs(k,3), rs(k,4))end----Trapezoidal(P-C) vs Exact solution----n t Trapezoidal(P-C) exact solution1 0.0000 -1.000000 -1.0000002 0.1000 -0.546955 -0.5065313 0.2000 -0.212491 -0.1678794 0.3000 0.039939 0.0768705 0.4000 0.237465 0.2646656 0.5000 0.399107 0.4179157 0.6000 0.537703 0.5502138 0.7000 0.661694 0.6698039 0.8000 0.776521 0.78168410 0.9000 0.885645 0.88889111 1.0000 0.991240 0.993262其誤差比上述之結果稍大. 同學請比較其他的方法 .6. eulerdynamic.m --雖然利用Euler的方法: w j+1 = w j+ h*f(t,w j) , j>=0, w0 = x0估算微分方程式的解 x'(t) = f(t, x), x(a) = x0精確度不佳, 但是我們利用此方法所產生之數據, 來觀察動態系統(dynamic system)在平衡狀態可能發生之現象:period doubling and chaos.例題 :微分方程式p'(t)=10 p (1-p) ; p(0)= 0.1顯示eulerdynamic.m的內容type eulerdynamic.m%to plot 30 approximation values of x(t)after 200 iterations by Euler's % method to demo the phenomena of period doubleing and chaos% of dynamical systemy=[] ;m=230 ;pos=[10 20 360 300] ;figure('Position', pos)hold onfor h=0.18 :0.001:0.3t=0 ; x=0.1 ;for k=1:m%For given x'(t)= f(t,x)=10 x (1-x)%compute x(t+h)x=(1+10*h)*x - (10*h)*x^2 ;t=t+h ;if k >200y= [y; k t x] ;if rem(k, 4) == 0plot(h, x, 'y.')elseif rem(k,4)== 1plot(h,x, 'r.')elseif rem(k,4)== 2plot(h, x, 'g.')elseplot(h, x, 'b.')endendend % for kend % hhold off執行eulerdynamic。