解这个微分方程通解,谢谢

求各种微分方程的解法,谢谢? - 知乎2被浏览267分享邀请回答0添加评论分享收藏感谢收起只需一步,快速开始
扫一扫,访问微社区
查看: 117606|回复: 118|关注: 0
matlab求解微分方程——个人总结
Simulink 基础讨论版块优秀回答者
关注者: 228
其实不算是总结了,而是自己的初学笔记。这里是数值解法,不涉及解析解。
& && & 资料:help
建议:可以先看二楼例子。我刚开始看这一节,也是晕晕乎乎莫名其妙:D 。看的时候,至少也要把代码运行一下,亲自看看结果的结构
ODE部分--------ODE---&ordinary differential equations
先总述一下:D
1、ode的求解器ode
& && & ODE的求解器有很多,在help里可以查到。列出了每一种求解器的适应范围(stiff或者nonstiff)以及它采用的数学原理,比如Runge-Kutta,Adams,NDFs之类。(这个在数值分析课中会学到,可惜偶当时觉得很无聊,后悔中)。
& && &大家有时间多去了解了解,懂了来给大家分享分享:D 。
& && &如果不懂那么多理论,优先采用ode45,如果你发现它计算的效率特别低下或者是计算根本出不来,则考虑换ode15s。
& &&&sol是任意名字。对于怎么把要求解的方程写为function,2楼例子。所以你告诉求解器这三样东西(输入参数),它就可以为你求解出y。
& && && && && && && &&&sol = ode45(@yourfun,[tmin,tmax],[y0,y0'])
& && && && && && && && && && && && && && &你的公式& & 积分范围& & 初值
& && && && && && & sol=ode45(@vdp1,[0,20],[2,0]);
& && &把以上代码命令行里直接执行,这是matlab自带的一个例子。在workspace里你会看到多了一个变量叫sol.没错这就是求解器的返回值。它是一个1*1的结构体。双击它,你会看到它的内部组织,各个field以及它们的“形状”。每一个你都可以双击它,继续深入看它的结构。我现在关心的只有X,Y
================================================================================
2、求解计算完毕后,我们可以做什么
& && &首先,当然是得到结果。
& && &deval(sol,x,1)
& && & sol如上,写在求解等号左边的变量名字,是返回来的handles。x是一组向量,是你期望求值的点。数字1就表示你要y第一行的值(这个是在求解微分方程组的情况。不明白什么叫第一行,就去双击sol,再双击y),如果去掉1,则返回矩阵,也就是所有y的值。在matlab命令行运行以下代码:
& &&&sol=ode45(@vdp1,[0,20],[2,0]);
x=linspace(0,20,100);
y=deval(sol,x,1);
plot(x,y);
& && &此外,我们还可以扩展,matlab叫做odextend。扩展什么?
& && && &odextend(sol,odefun,tfinal)
& && & 看到最后一个变量名了吧,t_final 这样明显一点。也就是,我之前算过的微分方程组,原来算到t1,我现在要接着继续计算到新的t_final。默认以上次计算的y终值,作为此次计算的初值。
& && && &odextend(sol,odefun,tfinal,yinit)
& && &当然,如果你想重新给它赋初值,也可以加入参数yinit。(友情提示:获取上次计算的Y的终值:y=sol.y(:,end))
& && &sol=odextend(sol,@vdp1,20);
plot(sol.x,sol.y(1,:))
=====================================================================================& && &
3、求解器的参数设置& &也 就是option这个东西,既然是选项,则也可以不设置它,采用默认值。
& && &&&要设置的话,可以用odeset这个命令。怎么用?
& && & option=odeset('name1',value1,'name2',value2......) (matlab所有参数设置基本上都是这种形式)
& && && && && && &&&name自然就是属性名字。value就是你赋予它的值。求解器可以设置哪些参数,而设置了这些参数有什么影响,而这些参数应该则么设置。在命令行里输入 help odeset:D 。看到的绝对比我讲得详细。所以我不多说了。(友情提醒,如果使用ode15什么来着,可以为它设置Jacobian这个参数,以更快更准更好的求解。如何设置,不懂的话,偶过后会贴。)
& && &&&O=odeget(option,'name')
& && &&&编过GUI的话这两个命令再熟悉不过了:D
先吃饭去了,饿死了。
回来贴个例子
单凭文字有歧义,上代码,上截图,上模型
微信: Simulink
Simulink 基础讨论版块优秀回答者
关注者: 228
一般问题求解nonstiff
& & &&用ode系列可以求解Y的微分方程,数值解法,得到y的数值解。可以涉及多阶微分。
& && &1、函数形式:y‘=f(t,y)& &这种我叫它显性函数
& && && && && && && && & f(t,y,y')=0&&隐函数,这种用ode15i求解
& && && && &求解器可以求解线性和隐性
& && &2、对于求解微分问题都要为其指定初值
& && && && && && & 得到:&&y'=f(t,y)
& && && && && && && && && && && & y(t0)=y0
& && && && && & 所以告诉求解器如上的f(t,y),t0,y0,就可以解出y了。
& && &3、ode只能直接求解一阶微分,那我有多级微分怎么办呢?学过现代控制理论就知道怎么处理了:D
& && && && &不学也不影响,基本上就是把 一个N阶微分方程转化为N个一阶微分方程组。
& && && && && && && && &&&比如y'''=f(t,y,y',y'')
& && && && &将y ,y' ,y''设为y1,y2,y3,那么如上的三阶就可以表示为y3的一阶方程了。
& && && && &则原来的一个三阶方程变为如下的三个一阶方程组。
& && && && && && && && &&&y1'=y2
& && && && && && && && &&&y2'=y3
& && && && && && && && &&&y3'=f(t,y1,y2,y3)
基本例子Examples: Solving Explicit ODE Problems
附:如下的二阶微分方程。
38953.jpg (2.33 KB, 下载次数: 622)
17:25 上传
& && && &&&mu=1
& &&&1,转化为一阶阵,y,y' 分别设为y1 y2
& && && && &
46453.jpg (2.48 KB, 下载次数: 2687)
17:25 上传
& &&&2,写它的function&&
& &(dydt,dvp1都是随便取的代号。y1,y2则为待解y向量的元素,下面写做y(1),y(2)&&)
& && && && &&&
36718.jpg (5.9 KB, 下载次数: 2760)
17:25 上传
& && && && & 附:内容如此,形式可以多样
& && && && &&&比如dydt=zeros(2,1);
& && && && && && && & dydt(1)=…… %第一个
& && && && && && && & dydt(2)=…… %第二个
& && & 3,应用求解
& && && && && && &&&
14359.jpg (3.86 KB, 下载次数: 31)
17:25 上传
& && && && & 参数解释过了。@是告诉求解器要求解谁。[0.20]是积分范围。[2;0]是Y的初始值。
& && && && && && && && && && && && &(附:func2str, str2func真是个好东西)
& && && && & 返回:
& && && && && && && &&&t是返回的一系列积分点的横坐标。
& && && && && && && &&&y是返回的一系列积分点的结果,只不过这里是列向量的形式
& && && && && && & 附:左边也可以写为 suibian 一个符号。看返回什么,你可以只敲上面这一行在matlab命令行里运行。在workspace里双击你设置的变量。查看结果。
& && &&&另外,查看结果
& && && && && && &&&这里引用结果 y(:,1) & &注意与sol.y的引用区别& &&&
& && && && && && &&&
56500.jpg (34.71 KB, 下载次数: 3171)
17:46 上传
& && && & 看到它怎么打mu这个字母了吧?help里有关于这种特殊的字符或者样式的表。忘记在哪里了,我以后找找。:L
本例完& &隐式的以后再说:D
[ 本帖最后由 柚籽 于
19:39 编辑 ]
单凭文字有歧义,上代码,上截图,上模型
微信: Simulink
Simulink 基础讨论版块优秀回答者
关注者: 228
& && &简单的说就是你用ode45求解发现速度很慢或者解不出来的时候。有些书上把它翻译成刚性。我的理解是,梯度会发生剧变。
例2& & 以上的例子是将mu设置为1,用ode45求解顺顺当当,然后你再把mu改为1000,同样的步骤求解,试试看?
& && && &我是试过了,半天没反应(也可能是我电脑配置不够)。
& && &&&matlab称,ode45适用于求解一些nonstiff的问题。当用这类专求解nonstiff的求解器来求stiff问题时,就会非常低效。此时,则采用ode15s求解器。一下代码可以直接运行,vdp1000内置。可以试试把ode15s改为ode45[t,y] = ode15s(@vdp0],[2; 0]);
plot(t,y(:,1),'-');
title('Solution of van der Pol Equation, \mu = 1000');
xlabel('time t');
ylabel('solution y_1');复制代码附vdp1000的函数function dydt = vdp1000(t,y)
dydt = [y(2); 1000*(1-y(1)^2)*y(2)-y(1)];复制代码
可以对比这个例子和上一个例子的图形。====================================================================================
例三&&参数化方程
& && & 如果我的mu是作为一组变化的参数,要求解这一系列的微分方程,怎么办呢?一个方便的方法就是建一个function,将mu作为输入的参数,而ode求解器作为内置函数。so,
& && && &&&
19828.jpg (26.25 KB, 下载次数: 694)
19:40 上传
& && & 查看指定点的结果比如:
& && && && & x=1:5
& && && & deval(sol,x)&&(这个sol同上上上,要是ode函数的返回handles)
附:关于为ode15s &&的Jacobian 参数的设置
& && & 为了更块更好更准的求解,可以设置option的 Jacobian项。示例如下:
& && && && && && &option=odeset('Jacobian',@J);& &%生成option选项,J是你的雅可比式
& && && && && &&&[t,y]=ode15s(@f,tspan,yo,option);%向求解去输入option。别的参数同上上上
------------------------
& && && && && & function dfdy=J(t,y)
& && && && && && && && && &dfdy=[........
以上内容,命令行里输入edit vdpode复制代码总述完毕
[ 本帖最后由 柚籽 于
20:00 编辑 ]
单凭文字有歧义,上代码,上截图,上模型
微信: Simulink
Simulink 基础讨论版块优秀回答者
关注者: 228
关于隐式微分方程的解法
& &&&形式如
& && && && && && && && && && && && && && && && && && && && && && && & f(t,y,y')=0
& & 使用ode15i求解器
& && && && && && && && && && && && && && && && & [t,y]=ode15i(yourfun,tspan,y0,yp0,options)
& &&&yourfun-----&@你的函数名& &&&tspan-----&积分上下限,形式:[t0,tf]
& &&&y0-----&y的初值& && && && && && && & yp0---------&y'的初值& && && && && &option& &同上上,一些求解参数设置
& &&&附:输入的初始值,要能满足方程f(t0,y0,yt0)=0.
& && &但是这种有条件的初值怎么设呢?例子
41250.jpg (3.32 KB, 下载次数: 14)
17:41 上传
它的function:
& && && && && &function res = weissinger(t,y,yp)
& && && && && &res = t*y^2 * yp^3 - y^3 * yp^2 + t*(t^2 + 1)*yp - t^2 *
求初始条件:
41296.jpg (3.32 KB, 下载次数: 25)
17:41 上传
%先合理假设初值y0,yp0
55734.jpg (4.5 KB, 下载次数: 298)
17:41 上传
然后用这个公式,求出符合条件的y0,p0.
53093.jpg (4.71 KB, 下载次数: 298)
17:41 上传
单凭文字有歧义,上代码,上截图,上模型
微信: Simulink
<h1 style="color:# 麦片财富积分
入门, 积分 52, 距离下一级还需 448 积分
关注者: 27
呵呵,这么多,真长见识了,我平时只用到求解线性微分方程,也不用求图形解,一个dsolve函数就可以了,不知道釉籽有没尝试过,还是很简单的
Simulink 基础讨论版块优秀回答者
关注者: 228
:loveliness: 有时候要解的方程蛮复杂,符号解不出来,就只好用数值解法了。我也是要用才刚学它。
单凭文字有歧义,上代码,上截图,上模型
微信: Simulink
<h1 style="color:# 麦片财富积分
看过很有启发
你好看过了你的方法很有启发。不过不知道可以不可以请教个问题就是解个2阶微分方程~~如果可以请加QQ: 谢谢谢谢~~~:handshake :handshake :handshake
<h1 style="color:# 麦片财富积分
非常感谢!!!
很多不懂的东西都得到解决了!!:victory:
<h1 style="color:# 麦片财富积分
很实用,收到很大的启发,谢谢
<h1 style="color:# 麦片财富积分
然后慢慢看:victory:
站长推荐 /3
筑起功能安全的堡垒 - 基于模型设计的软件开发
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区帮忙解一下这个微分方程,谢谢!_百度知道
帮忙解一下这个微分方程,谢谢!
我有更好的答案
你好,答案见图
采纳率:47%
来自团队:
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。后使用快捷导航没有帐号?
查看: 2626|回复: 4
微分方程的通解是包含所有解还是大部分解?
一般战友, 积分 138, 距离下一级还需 362 积分
在线时间40 小时
主题帖子积分
一般战友, 积分 138, 距离下一级还需 362 积分
一般战友, 积分 138, 距离下一级还需 362 积分
同济的高数好像没有说这个问题,微分方程的通解是包含所有的解还是大部分的解?谢谢。
新手上路, 积分 39, 距离下一级还需 61 积分
在线时间8 小时
主题帖子积分
新手上路, 积分 39, 距离下一级还需 61 积分
新手上路, 积分 39, 距离下一级还需 61 积分
通解就是所有解,你可以通过线代那部分的线性方程组联系起来,齐次方程的解可以用 n-r的基础解析表示。 非齐次可以用n-r+1个基础解系表示,& &微分方程的话 书上有公式,
开国大老, 积分 8329, 距离下一级还需 7671 积分
K币7490 元
在线时间1794 小时
主题帖子积分
开国大老, 积分 8329, 距离下一级还需 7671 积分
开国大老, 积分 8329, 距离下一级还需 7671 积分
K币7490 元
通解不一定包含所有的解,比如(y')^2=4y,通解是y=(x+C)^2,不包含y=0这个解。
如果微分方程是线性方程且最高阶导数的系数是1,其通解一定包含所有的解。
一家之言,仅供参考
高级战友, 积分 5603, 距离下一级还需 2397 积分
K币5093 元
在线时间1067 小时
主题帖子积分
高级战友, 积分 5603, 距离下一级还需 2397 积分
高级战友, 积分 5603, 距离下一级还需 2397 积分
K币5093 元
你学啥专业的??感觉你的数学掌握的这么深入!!~~~你不会是老师吧?
高级战友, 积分 5603, 距离下一级还需 2397 积分
K币5093 元
在线时间1067 小时
主题帖子积分
高级战友, 积分 5603, 距离下一级还需 2397 积分
高级战友, 积分 5603, 距离下一级还需 2397 积分
K币5093 元
你应该是研究生吧!~
您还剩5次免费下载资料的机会哦~
扫描二维码下载资料
使用手机端考研帮,进入扫一扫在“我”中打开扫一扫,扫描二维码下载资料
Powered by Discuz!解这个微分方程,谢谢_百度知道
解这个微分方程,谢谢
我有更好的答案
采纳率:76%
来自团队:
为您推荐:
其他类似问题
您可能关注的内容
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 常微分方程解法 的文章

 

随机推荐