声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2564|回复: 15

[编程技巧] 解一个微分方程的程序怎么改成解一个微分方程组!

[复制链接]
发表于 2006-8-10 17:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
function xEulerpro
clear all;clc
[x,y]=eulerpro(@fun,0,1,1,0.1)
plot(x,y)
function f=fun(x,y)
f=y+x+1
%------------------------
function [x,y]=eulerpro(fun,x0,xf,y0,h)
n=fix((xf-x0)/h);x(1)=x0;y(1)=y0
for i=1:(n-1)
    x(i+1)=x0+i*h; a=y(i)+h*feval(fun,x(i),y(i))
    b=y(i)+h*feval(fun,x(i+1),a);y(i+1)=(a+b)/2
end
以上是解一个微分方程的程序

请问怎么改动能将上面的程序变成能解一个微分方程组阿

新人,谢谢关心
回复
分享到:

使用道具 举报

 楼主| 发表于 2006-8-10 18:46 | 显示全部楼层
自己顶一下

放假了,人气不足啊
 楼主| 发表于 2006-8-11 16:28 | 显示全部楼层
请各位大虾帮帮忙

我要解的微分方程组有60个方程

由于不知道调整ode命令中的步长所以解起来比较费力

想自己编一个自己控制步长

看程序的运算效率是不是会高一些

当然能告诉我怎么改变ode命令中的步长也行

新人感激不尽阿

谢谢啦
发表于 2006-8-11 21:04 | 显示全部楼层
你的方程是不是非线性的
 楼主| 发表于 2006-8-12 15:41 | 显示全部楼层
我的是线性方程

谢谢关心
发表于 2006-8-12 15:47 | 显示全部楼层
定步长rk法
http://forum.vibunion.com/forum/viewthread.php?tid=17615

[ 本帖最后由 eight 于 2007-3-3 14:34 编辑 ]
 楼主| 发表于 2006-8-14 15:52 | 显示全部楼层
谢谢楼上的热心阿
 楼主| 发表于 2006-8-15 11:01 | 显示全部楼层
我还是说说实际困难吧

就是我要解的微分方程组由60个常微分方程构成

用ode命令计算的时间还是较长

在调试过程中比较繁琐

希望其速度能够加快

所以想自己编写一个方程,自己调整步长

满足我所需要的步长就够了

希望大家提供好的建议

谢谢
发表于 2006-8-15 11:06 | 显示全部楼层
原帖由 lc622503 于 2006-8-15 11:01 发表
我还是说说实际困难吧

就是我要解的微分方程组由60个常微分方程构成

用ode命令计算的时间还是较长

在调试过程中比较繁琐

希望其速度能够加快

所以想自己编写一个方程,自己调整步长

满足我所需 ...



最好的办法,换成fortran和c,matlab的计算效率让人不敢恭维
发表于 2006-8-15 17:31 | 显示全部楼层
同意楼上的,我现在也很少用matlab做数值分析了
 楼主| 发表于 2006-8-15 19:34 | 显示全部楼层
谢谢楼上的建议阿

我本来就是学环境的,原来没学过编程

现在要我模拟污水处理工艺

听人家说matlab有现成的命令解微分方程组

就用了他,确实还是比较简单,容易上手

如果用其他语言编的话,还要现学阿

不换语言还有其他办法吗

我还要做一个界面,将来!
发表于 2006-8-17 18:51 | 显示全部楼层
原帖由 lc622503 于 2006-8-15 19:34 发表
谢谢楼上的建议阿

我本来就是学环境的,原来没学过编程

现在要我模拟污水处理工艺

听人家说matlab有现成的命令解微分方程组

就用了他,确实还是比较简单,容易上手

如果用其他语言编的话,还要现学 ...



其实这些常规的算法不管什么语言基本都有现成
 楼主| 发表于 2006-8-18 16:12 | 显示全部楼层
我的想法也和楼上的一样啊

但是要到哪里去找阿

如果教授有的话

给我发一份

lc622503@163.com

谢谢了
发表于 2006-8-18 16:16 | 显示全部楼层
原帖由 lc622503 于 2006-8-18 16:12 发表
我的想法也和楼上的一样啊

但是要到哪里去找阿

如果教授有的话

给我发一份

lc622503@163.com

谢谢了



什么语言的?如果是fortran就免了

fortran自己的库里就带了好多

c的话可以参考C语言程序集
 楼主| 发表于 2006-8-20 16:41 | 显示全部楼层
就是matlab的程序阿

就是自己编写的比ode命令效率高就行

谢谢阿

现在要我去学习其它的语言编写也没时间

还有很多其它的工作要做
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-25 07:16 , Processed in 0.067217 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表