Math 版 (精华区)
发信人: kaola (坚决不灌水的考拉熊), 信区: Math
标 题: [合集]请问计算数学的同学一个问题
发信站: 哈工大紫丁香 (2003年01月13日02:07:47 星期一), 站内信件
────────────────────────────────────────
han (擦网高手) 于 2002年09月29日18:43:17 星期天 说道:
对这种形式的方程用什么方法去解(数值方法):
y''+f(x)*y'+g(x)*(y^5-y^3)=0;也就是说没有微分项的,却出现了原函数的高次项,
一般用什么方法去处理?请教计算数学的同学,用matlab如何解决?谢谢了
────────────────────────────────────────
key (也许) 于 Mon Sep 30 10:18:56 2002) 说道:
【 在 han (擦网高手) 的大作中提到: 】
: 对这种形式的方程用什么方法去解(数值方法):
: y''+f(x)*y'+g(x)*(y^5-y^3)=0;也就是说没有微分项的,却出现了原函数的高次项 ..
: 一般用什么方法去处理?请教计算数学的同学,用matlab如何解决?谢谢了
微分方程的万能数值解法是:高阶--引入新变量→一阶方程组--欧拉,龙格库塔等方法→
解
比如这个问题可以化成
y'=z
z'=f(x,y,z)
只要有两个初始条件就可以逐步求数值解了。
欧拉或龙格库塔等方法你可以找本数值分析的书看看。
────────────────────────────────────────
zjliu (Robusting) 于 2002年09月30日15:37:27 星期一 说道:
这个微分方程是非线性的,你说的方法好像对线性的
高阶方程有效。
【 在 key (也许) 的大作中提到: 】
: 【 在 han (擦网高手) 的大作中提到: 】
: : 对这种形式的方程用什么方法去解(数值方法):
: : y''+f(x)*y'+g(x)*(y^5-y^3)=0;也就是说没有微分项的,却出现了原函数的高次项 ..
:
: : 一般用什么方法去处理?请教计算数学的同学,用matlab如何解决?谢谢了
: 微分方程的万能数值解法是:高阶--引入新变量→一阶方程组--欧拉,龙格库塔等方法→
: 解
: 比如这个问题可以化成
: y'=z
: z'=f(x,y,z)
: 只要有两个初始条件就可以逐步求数值解了。
────────────────────────────────────────
key (也许) 于 Mon Sep 30 16:14:26 2002) 说道:
【 在 zjliu (Robusting) 的大作中提到: 】
: 这个微分方程是非线性的,你说的方法好像对线性的
: 高阶方程有效。
: : : y''+f(x)*y'+g(x)*(y^5-y^3)=0;也就是说没有微分项的,却出现了原函数的高 ..
: : 比如这个问题可以化成
: : y'=z
: : z'=f(x,y,z)
: : 只要有两个初始条件就可以逐步求数值解了。
没有关系啊。f(x,y,z)没有特别限制。
有了x,y,z的数值能算出一个z'就好了。
其实本质和一阶微分方程一样的。
y'=f(x,y)并没有对f(x,y)进行限制的必要。
────────────────────────────────────────
zjliu (Robusting) 于 2002年09月30日16:24:07 星期一 说道:
在用龙格库塔求解的时候,对于非线性方程
而言得到的是非线性方程组,而求解非线性方程
组一般要用到迭代的解法,又要考虑到收敛的问
题,好像比较麻烦吧!
用龙格库塔解线性的方程就不用考虑这样的
问题了。
【 在 key (也许) 的大作中提到: 】
: 【 在 zjliu (Robusting) 的大作中提到: 】
: : 这个微分方程是非线性的,你说的方法好像对线性的
: : 高阶方程有效。
:
: 没有关系啊。f(x,y,z)没有特别限制。
: 有了x,y,z的数值能算出一个z'就好了。
────────────────────────────────────────
key (也许) 于 Mon Sep 30 16:54:32 2002) 说道:
【 在 zjliu (Robusting) 的大作中提到: 】
: 在用龙格库塔求解的时候,对于非线性方程
: 而言得到的是非线性方程组,而求解非线性方程
: 组一般要用到迭代的解法,又要考虑到收敛的问
: 题,好像比较麻烦吧!
: 用龙格库塔解线性的方程就不用考虑这样的
: 问题了。
这个本来就是要逐步求解的啊。
麻烦也许算麻烦,不过思想很简单啊。
有个初始y(x0)=y0
下面就y'(x0)=f(x0,y0)
y(x0+dx)=y(x0)+y'(x0,y0)*dx
...
数值求解就是这样啦。simple is best, heheh..
一定要线性的话原始问题也不敢简化成y'=f(x,y)这么普遍了。
────────────────────────────────────────
key (也许) 于 Mon Sep 30 17:05:45 2002) 说道:
【 在 zjliu (Robusting) 的大作中提到: 】
: 在用龙格库塔求解的时候,对于非线性方程
: 而言得到的是非线性方程组,而求解非线性方程
: 组一般要用到迭代的解法,又要考虑到收敛的问
: 题,好像比较麻烦吧!
: 用龙格库塔解线性的方程就不用考虑这样的
: 问题了。
现在的问题是:高阶微分方程->一阶微分方程组->求解
您是不是和龙老人家解决别的什么问题的方法给弄混了?
────────────────────────────────────────
zjliu (Robusting) 于 2002年09月30日18:12:14 星期一 说道:
不要这么说,我是不知道则怎么解非线性的类型,
其中有很多解情况存在。还是要谢谢你的解释。
【 在 key (也许) 的大作中提到: 】
: 【 在 zjliu (Robusting) 的大作中提到: 】
: 现在的问题是:高阶微分方程->一阶微分方程组->求解
: 您是不是和龙老人家解决别的什么问题的方法给弄混了?
────────────────────────────────────────
key (也许) 于 Tue Oct 1 10:41:16 2002) 说道:
【 在 zjliu (Robusting) 的大作中提到: 】
: 不要这么说,我是不知道则怎么解非线性的类型,
: 其中有很多解情况存在。还是要谢谢你的解释。
呵呵,越听越象把“一阶微分方程里面含有高次项”
和“高次非线性方程”给弄混了。
原来的那个问题化成
y'=z
z'=f(x,y,z)
之后,
就可以由初值
y'(x0)=z0
y(x0)=y0
a. 得到起点(x0,y0,z0)
b. 由坐标(x0,y0,z0)得到该点z'(x0)=f(x0,y0,z0)
-- 这里一个点(x1,y1,z1)只对应一个结果f(x1,y1,z1),
虽然不同的x,y,z可能对应相同的z',即f(x2,y2,z2)=f(x1,y1,z1)
不过没有关系,就当曲线在这两个点的切线平行(但不是重合)好了。
c. 由z0和z'(x0)求下一个z:z(x0+dx)=z0+f(x0,y0,z0)*dx
同时得到y'(x0+dx)=z(x0+dx) -- 这个留着计算再下一个点y(x0+2dx)时用
d. y(x0+dx)=y0+z0*dx
e. 起点变成(x0+dx,y(x0+dx),z(x0+dx)),重复a-d
以上是直接用微分相当差分近似的欧拉方法,计算精度不高。
龙格库塔则多用了前后几点,考虑了微分的变化进行补偿修正,
两者的想法都没有f(x,y,z)的形式限制。
如果说非线性的话,龙格库塔反倒正是加入了函数不是直线的考虑。
────────────────────────────────────────
han (擦网高手) 于 2002年10月09日11:48:18 星期三 说道:
好多天没来了,谢谢两位的讨论。原先的想法是先进行离散,得到一个关于求解变量的
相邻点的矩阵,但是发现如果方程里含有代求解变量的高次项,这个矩阵就不可以用
三角法、追赶法求解了,正象key所说的。刚开始就用差分方法离散,运用runge或则
eulor等方法也许可以求解,速度问题也许是个大问题。
【 在 key (也许) 的大作中提到: 】
: 【 在 zjliu (Robusting) 的大作中提到: 】
: : 不要这么说,我是不知道则怎么解非线性的类型,
: : 其中有很多解情况存在。还是要谢谢你的解释。
: 呵呵,越听越象把“一阶微分方程里面含有高次项”
: 和“高次非线性方程”给弄混了。
: 原来的那个问题化成
: y'=z
: z'=f(x,y,z)
: 之后,
: 就可以由初值
: y'(x0)=z0
────────────────────────────────────────
han (擦网高手) 于 2002年10月09日11:49:42 星期三 说道:
运用上述两个方法求解,对f(x,y)没有特殊的要求,只要出现待求解变量,都可以以离
散的形式得到差分方程。
【 在 han (擦网高手) 的大作中提到: 】
: 好多天没来了,谢谢两位的讨论。原先的想法是先进行离散,得到一个关于求解变量的
: 相邻点的矩阵,但是发现如果方程里含有代求解变量的高次项,这个矩阵就不可以用
: 三角法、追赶法求解了,正象key所说的。刚开始就用差分方法离散,运用runge或则
: eulor等方法也许可以求解,速度问题也许是个大问题。
: 【 在 key (也许) 的大作中提到: 】
: : 呵呵,越听越象把“一阶微分方程里面含有高次项”
: : 和“高次非线性方程”给弄混了。
: : 原来的那个问题化成
────────────────────────────────────────
han (擦网高手) 于 2002年10月09日11:51:14 星期三 说道:
还有一个问题,如果我不知道初始条件,对边界条件怎么处理?尤其是右边界。
刚开始循环的时候,一般需要两个点,缺少一个可以随便补上吗?会不会造成发散?
【 在 han (擦网高手) 的大作中提到: 】
: 好多天没来了,谢谢两位的讨论。原先的想法是先进行离散,得到一个关于求解变量的
: 相邻点的矩阵,但是发现如果方程里含有代求解变量的高次项,这个矩阵就不可以用
: 三角法、追赶法求解了,正象key所说的。刚开始就用差分方法离散,运用runge或则
: eulor等方法也许可以求解,速度问题也许是个大问题。
: 【 在 key (也许) 的大作中提到: 】
: : 呵呵,越听越象把“一阶微分方程里面含有高次项”
: : 和“高次非线性方程”给弄混了。
: : 原来的那个问题化成
────────────────────────────────────────
key (也许) 于 Wed Oct 9 14:38:14 2002) 说道:
【 在 han (擦网高手) 的大作中提到: 】
: 还有一个问题,如果我不知道初始条件,对边界条件怎么处理?尤其是右边界。
: 刚开始循环的时候,一般需要两个点,缺少一个可以随便补上吗?会不会造成发散?..
随便补上一个初始条件和结果发散没有必然联系。
不过初始条件决定了整个的解。
你随便补一个虽然能够得到一个解(一组数据y(x)),不过这有什么用呢?
好像你向前面抛出一把沙子,就当距离你脱手10cm处为初始状态好了。
你知道的是空间任意位置的运动趋势函数。
指定一颗沙粒的话,你可以由它的初始位置算出它下一步会到哪里,
再由下一个位置继续计算并重复,就可以得到这个沙粒的整个轨迹。
现在有人要你算个轨迹但不告诉你是哪个沙粒的,
你会不会要先问他一句:“你到底要干嘛?”
呵呵,开个玩笑
────────────────────────────────────────
han (擦网高手) 于 Thu Oct 10 08:43:57 2002) 说道:
很好的比喻,谢谢了
【 在 key (也许) 的大作中提到: 】
: 【 在 han (擦网高手) 的大作中提到: 】
: : 还有一个问题,如果我不知道初始条件,对边界条件怎么处理?尤其是右边界。
..
: : 刚开始循环的时候,一般需要两个点,缺少一个可以随便补上吗?会不会造成发?..
: 随便补上一个初始条件和结果发散没有必然联系。
: 不过初始条件决定了整个的解。
: 你随便补一个虽然能够得到一个解(一组数据y(x)),不过这有什么用呢?
:
: 好像你向前面抛出一把沙子,就当距离你脱手10cm处为初始状态好了。
: 你知道的是空间任意位置的运动趋势函数。
: 指定一颗沙粒的话,你可以由它的初始位置算出它下一步会到哪里,
: 再由下一个位置继续计算并重复,就可以得到这个沙粒的整个轨迹。
: 现在有人要你算个轨迹但不告诉你是哪个沙粒的,
: 你会不会要先问他一句:“你到底要干嘛?”
: 呵呵,开个玩笑
────────────────────────────────────────
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.325毫秒