如何求解非常系数的微分方程?

时间:2017-06-12 09:14:48

标签: matlab differential-equations

我有一个这样的等式:

dy/dx = a(x)*y + b

其中a(x)是非常量(a=1/x),b是向量(10000行)。

我该如何解决这个等式?

2 个答案:

答案 0 :(得分:0)

让我假设您想为dy / dx = a(x)* y + b编写通用数值解算器。然后,您可以将函数a(x)作为参数传递给其中一个ODE求解器的右侧函数。 e.g。

a = @(x) 1/x;
xdomain = [1 10];
b = rand(10000,1);
y0 = ones(10000,1);
[x,y] = ode45(@(x,y,a,b)a(x)*y + b,xdomain,y0,[],a,b);
plot(x,y)

在此,我已将x的域名指定为xdomain,将y的值指定为x的下限为y0

答案 1 :(得分:0)

从我的评论中,你可以在没有MATLAB的情况下解决这个问题。假设非零x,您可以使用integrating factor获得10000 x 1的解决方案y(x)

y_i(x) = b_i*x*ln(x) + c_i*x

具有10000乘1的常量向量c,其中y_i(x)b_ic_ii个{{1}的条目分别是},y(x)b。常量向量c可以在某个点c确定为

x0
相关问题