24小时热门版块排行榜    

查看: 4207  |  回复: 7

微尘、梦想

木虫 (知名作家)

[求助] 隐式欧拉法求解一阶常微分方程

算法:


MATLAB程序:
CODE:
Format long;
N=(b-a)/h;
y=zeros(N+1,1);
y(1)=y0;
x=a:h:b;
var=findsym(f);
for i=2:N+1
   fx=Funval(f,var(1),x(i));
   gx=y(i-1)+h*fx-varvec(2);
   y(i)=NewtonRoot(gx,-10,10,eps);%用牛顿法得出下步的迭代值
end
format short;

其中,Funval是求函数f在点(var(1),x(i))处的值

PS:显示法求解常微分方程的算法都用C语言实现,但隐式法不知道怎么实现,主要是不知道如何求后一个点的导数值,希望高人给指点一下,呵呵……
回复此楼
任风云变幻,我笑对人生!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
余泽成(金币+1): 谢谢参与应助! 2012-02-25 04:34:01
微尘、梦想(金币+30): ★★★★★最佳答案 谢谢,sudo教会了我很多东西呀,呵呵…… 2012-02-27 13:57:13
隐式欧拉法迭代式右边f(x[n+1], y[n+1])里面的y[n+1],其实也只是用估计的方法得出来的

一般可以用欧拉法(或者牛顿法和其他别的什么方法)得到它的估计值,所以这个过程实际上是:
CODE:
yt[n+1] = y[n] + h * f(x[n], y[n]);
y[n+1] = y[n] + h * f(x[n+1], yt[n+1]);

梯形法什么的类似,迭代式中f里面的y[n+1],无论怎样都是需要某种方法先估计出来的
2楼2012-02-23 13:25:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

恩,如果不要求通用的方法,只需要针对特定函数的话,也可以先化简迭代式,或者可能可以直接导出y[n+1]的公式什么的~
3楼2012-02-23 13:29:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

微尘、梦想

木虫 (知名作家)

引用回帖:
3楼: Originally posted by sudo at 2012-02-23 13:29:11:
恩,如果不要求通用的方法,只需要针对特定函数的话,也可以先化简迭代式,或者可能可以直接导出y[n+1]的公式什么的~

那个MATLAB程序就是用牛顿法得到的下一个值,不过,不知道牛顿法的算法是什么呀,我只知道用牛顿法解方程的公式:
x[n+1]=x[n]-f(x[n])/f`(x[n])
这是一种切线法,从一端向一个方向逼近方程的根,可是跟这个联系不到一块呀
任风云变幻,我笑对人生!
4楼2012-02-23 13:38:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

余泽成(金币+2): 谢谢参与应助! 2012-02-25 04:34:19
引用回帖:
4楼: Originally posted by 微尘、梦想 at 2012-02-23 13:38:29:
那个MATLAB程序就是用牛顿法得到的下一个值,不过,不知道牛顿法的算法是什么呀,我只知道用牛顿法解方程的公式:
x[n+1]=x[n]-f(x[n])/f`(x[n])
这是一种切线法,从一端向一个方向逼近方程的根,可是跟这个联 ...

牛顿法是用来做什么的呢?一般是用来求非线性方程的根的:

对于f(x)=0
迭代式x[n+1] = x[n] - f(x[n])/f`(x[n])
迭代的结果就是f(x)=0的数值解

=============================================

对于y[n+1] = y[n] + h * f(x[n+1], y[n+1])
CODE:
   fx=Funval(f,var(1),x(i)); %里面的x(i)就相当于x[n+1],var(1)是一个符号变量(其实是等下要求解的y[n+1]),把它们代入到f中之后,得到一个符号表达式
   gx=y(i-1)+h*fx-varvec(2); %其实这里就是方程g(x)=0左边的g(x),就是y[n] + h*fx - y[n+1] = 0这个方程,里面y[n]是上一步知道的值,fx是含有变量y[n+1]的式子,外面的y[n+1]也视为变量
   y(i)=NewtonRoot(gx,-10,10,eps); %这就是用牛顿法来解非线性方程了

也就是说,这段MATLAB程序里面涉及了符号的运算
5楼2012-02-23 15:34:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

余泽成(金币+1): 鼓励交流! 2012-02-25 04:34:33
如果它的方法要通用的话,在NewtonRoot还必须对gx进行一次符号求导(用diff函数),所以这个方法其实比较蛋疼

还不如直接用前向欧拉给估计了...
6楼2012-02-23 15:41:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

微尘、梦想

木虫 (知名作家)

引用回帖:
6楼: Originally posted by sudo at 2012-02-23 15:41:38:
如果它的方法要通用的话,在NewtonRoot还必须对gx进行一次符号求导(用diff函数),所以这个方法其实比较蛋疼

还不如直接用前向欧拉给估计了...

嗯,我也就是想把它搞明白它到底是如何工作的,解常微分方程的显示解法,我都搞明白了,从最简单的欧拉法到四阶龙格-库塔法,不过我在网上找到一篇关于算法分析的文章,结论是隐式算法的稳定性普遍比显式算法高,且只有隐式欧拉方法才是绝对稳定的。
也没仔细看,反正用四阶龙格-库塔法的精度已经非常高了,呵呵……
这是文章的地址:
http://wenku.baidu.com/view/8bcb52492e3f5727a4e96207.html
任风云变幻,我笑对人生!
7楼2012-02-23 16:50:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

余泽成(金币+1): 鼓励讨论! 2012-02-25 04:34:54
引用回帖:
7楼: Originally posted by 微尘、梦想 at 2012-02-23 16:50:00:
嗯,我也就是想把它搞明白它到底是如何工作的,解常微分方程的显示解法,我都搞明白了,从最简单的欧拉法到四阶龙格-库塔法,不过我在网上找到一篇关于算法分析的文章,结论是隐式算法的稳定性普遍比显式算法高, ...

嗯,隐式欧拉的确是有它的意义的。。。不过你好像误会了我的意思我说的是估计y[n+1]那里不用牛顿法而用显式欧拉法来做会方便点
8楼2012-02-23 17:19:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 微尘、梦想 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿东华大学化学070300,求调剂 +7 2117205181 2026-03-21 8/400 2026-03-22 22:55 by chixmc
[考研] 317求调剂 +12 申子申申 2026-03-19 18/900 2026-03-22 22:23 by luoyongfeng
[考研] 一志愿上海交大生物与医药专硕324分,求调剂 +3 jiajunX 2026-03-22 3/150 2026-03-22 19:32 by brblmd
[考研] 一志愿华中农业071010,总分320求调剂 +5 困困困困坤坤 2026-03-20 6/300 2026-03-22 17:41 by hxsm
[考研] 303求调剂 +5 安忆灵 2026-03-22 6/300 2026-03-22 12:46 by 素颜倾城1988
[考研] 求调剂 +7 Auroracx 2026-03-22 7/350 2026-03-22 12:38 by 素颜倾城1988
[考研] 考研调剂 +4 来好运来来来 2026-03-21 4/200 2026-03-22 12:15 by 星空星月
[考研] 286求调剂 +10 Faune 2026-03-21 10/500 2026-03-21 23:34 by 314126402
[考研] 资源与环境 调剂申请(333分) +5 holy J 2026-03-21 5/250 2026-03-21 22:42 by Catalysis25
[考研] 广西大学材料导师推荐 +3 夏夏夏小正 2026-03-17 5/250 2026-03-21 22:20 by 金昊ML
[考研] 一志愿东华大学控制学硕320求调剂 +3 Grand777 2026-03-21 3/150 2026-03-21 19:23 by 简之-
[考研] 0703化学297求调剂 +3 Daisy☆ 2026-03-20 3/150 2026-03-21 17:45 by ColorlessPI
[考研] 279分求调剂 一志愿211 +14 chaojifeixia 2026-03-19 15/750 2026-03-21 13:24 by zhukairuo
[考研] 材料学学硕080502 337求调剂-一志愿华中科技大学 +4 顺顺顺mr 2026-03-18 5/250 2026-03-21 10:22 by luoyongfeng
[考研] 085700资源与环境308求调剂 +12 墨墨漠 2026-03-18 13/650 2026-03-21 01:42 by JourneyLucky
[考研] 308求调剂 +3 阿姐阿姐家啊 2026-03-18 3/150 2026-03-20 23:24 by JourneyLucky
[考研] 一志愿中海洋材料工程专硕330分求调剂 +8 小材化本科 2026-03-18 8/400 2026-03-20 23:16 by JourneyLucky
[考研] 求调剂,一志愿:南京航空航天大学大学 ,080500材料科学与工程学硕,总分289分 +4 @taotao 2026-03-19 4/200 2026-03-20 22:14 by JourneyLucky
[考研] 一志愿吉林大学材料学硕321求调剂 +11 Ymlll 2026-03-18 15/750 2026-03-20 19:40 by 丁丁*
[考研] 261求B区调剂,科研经历丰富 +3 牛奶很忙 2026-03-20 4/200 2026-03-20 19:34 by JourneyLucky
信息提示
请填处理意见