wolfram-mathematica - 使用 Mathematica 求解这个微分方程
问题描述
我想用以下形式的微分方程来描述化学反应的动力学和我对反应模型的想法(简化):
y1'(t)=y1(t)+y2(t)
其中 y1 是实验测量的反应物浓度,y2 是随时间变化的产物浓度。微分方程具有以下边界条件:
y1(0) = A
y2(0) = 0
现在我无法自己求解方程,因此,我尝试使用 Mathematica,但在应用第二个边界条件时总是出错:
In: DSolve[{y'[t] == k*y[t] + k2*y2[t], y[0] == A, y2[0] == 0}, y[t], t]
Out: DSolve::deqx: Supplied equations are not differential equations of the given functions.
这是否意味着这个微分方程没有解析解?有人有想法吗?
提前致谢!
最好的问候曼努埃尔
解决方案
你只有一个方程来求解联立方程。
例如,这有效: -
vars = {x[t], y[t]};
eqns = {x'[t] == y[t], y'[t] == x[t]};
inits = {x[0] == 1, y[0] == 0};
DSolve[eqns, vars, t] // Simplify
sol = vars /. DSolve[Join[eqns, inits], vars, t][[1]]
Plot[sol, {t, 0, 2}]
但是你的联立方程是不确定的。
vars = {y[t], y2[t]};
eqns = {y'[t] == k*y[t] + k2*y2[t]};
inits = {y[0] == A, y2[0] == 0};
DSolve[eqns, vars, t] // Simplify
DSolve:因变量比方程多,因此系统是欠定的。
推荐阅读
- tensorflow - 二进制分类模型无法训练和 auc/accuracy 0.5
- android - 导航动画:slide_in_left 不起作用
- angular - 有角度,Storybook 抛出错误“Zone.js 检测到 ZoneAwarePromise `(window|global).Promise` 已被覆盖。”
- python - 如何在不使用任何第三方库的情况下绘制图案以及输入顺序
- node.js - 使用ejs模板化一个ts文件,类似于generator-jhipster
- redis - 如何在 Debian 上配置多个 Redis 实例
- python - 为什么我得到 -215:Assertion failed 错误消息
- python - 如何通过 ADC 策略阻止赛门铁克端点保护中的哈希并使用 python 创建新规则
- java - 如何修复单元测试缺少方法调用异常?
- java - 尝试在空对象上调用虚拟方法“void android.widget.Button.setVisibility(int)”