微分方程的可分离变量方程(象征性的)
20视图(30天)
显示旧的评论
你好,我是新Matlab,所以我有这样的问题:
我的教授说我需要编写代码来解决微分方程的
可分离变量方程的方法。
该脚本需要以下步骤:
- 进入方程
- 识别可分离变量方程的方程作为一个可以解决的方法
- 调用一个类,方法,子程序(我还知道它叫matlab)包含可分离变量方程的算法
- 一个变量的方程的一边(由matlab命令或方法)和另一个在另一边。
- 提取双方与f = lh ()和g = rhs ()
- 集成两个所以F = int (F)和G = int (G)
- 结合在一个方程做减法= = 0
- 如果不明确,解决依赖变量(或分离)。
现在,我解决(脚本)步骤5到8。第一步我相信我需要问用户输入Matlab中的微分方程,所以软件可以处理它。第三步我调查但我敢肯定这不是困难的。为研究步骤2和4。
数学说diff eqn由可分离变量方程可解的形式之一
f (x, y) = p (x) h (y)
或
p (x) + h (y) = 0。
所以,我不知道如果有一个命令matlab检查该选项或如果我需要学习更多的方程是否有一些数学方法识别它们所以我可以转换成一个算法。
第四步是另一个挑战。我调查了matlab的文档,我不觉得一个命令要求程序这样做。隔离工作如果只有y '(或dy在其他符号),但如果我有,例如,
y ' + 2 xy = 0
或
dx和dy + 2 xy = 0
,孤立只能处理
dy
或
y
当时,不是两个。在这一步的问题是,有一个方法和matlab ?如果是这样,如何?在上面的示例中我需要matlab来:
y / y = 2
x或
dy x / y = 2 dx
(或在matlab所使用的符号:
diff (y, x) / y = = 2 x
所以我可以
f = lh ()
和
g = rhs ()。
我忘了说,我已经知道的
dsolve ()
和我爱它。一般的方法是和一个更好的方法来解决任何微分方程。但是我不能使用它,我认为我的教授要我们代码的方式解决它在纸上,但我有困难,因为我提到的原因。提前谢谢和对不起长问题。
我也是这个论坛,所以如果我违反了规则或有任何反馈,所以我可以改善我的未来的问题,让我知道。
答案(1)
沃尔特·罗伯森
2023年2月6日
数学说diff eqn解决由可分离变量方程的形式f (x, y) = p (x) h p (y)或(x) + h (y) = 0
第一,如果你多项式系数(f, x,‘所有’),那么系数中的每个条目必须包括y,包括没有非零常数项。
第二种形式,如果多项式系数(f, x,“所有”)然后每个系数x必须
不
包括y,除了相对应的系数x ^ 0, x而言的“常数”。
(我想说,在把其余的每个元素必须包含y,但我意识到这是错误的:p (x) = 2 * x + 5 h (y) = 7 * y + 9, p (x) + h (y) = 2 * x + 7 * y + 14,你不能告诉只有这些信息如何分区之间的14 p (x)和h (y)]
分离变量,您可以首先使用symvars()来验证这两个变量存在;如果不是那么你不能隔离不同侧面的两个变量。接下来,扩大()方程。然后使用isSymType与‘+’(),以确定你是否正在与一笔至少一个面扩展方程;如果不是那么的一个变量只出现乘以另一个。
现在,您已经有了一个总结,
ch =孩子(TheSummation);
cellfun (@ (E) findSymType (E,“symfunDependingOn”,x)、ch、“统一”,0)
非空的任何条目包含一个未解决的x的函数如p (x)或差异(p, x)和相应的孩子可以移动到一边。任何条目的findSymType空应该进一步检查symvar()是否它包含变量
不
一个函数调用的形式。例如q =差异(p) + p ^ 2 + 5 + x的差异(p)和p ^ 2条目将非空symfunDependingOn但findSymType的5和x的结果将是空的,所以你需要检查他们symvar()来确定变量出现。任何表达式的变量出现应该搬到一边。
嗯,事实上,而不是上面的方法你可以
ch =孩子(TheSummation);
cellfun (@ (E)相交(symvar (E), x),孩子(q),“统一”,0)
空条目没有引用x
这种方法不会对p (x) * h (y):我不清楚,你
可以
隔离x和y与形成不同侧面。