我有一个这样的等式:
dy/dx = a(x)*y + b
其中a(x)
是非常量(a=1/x
),b
是向量(10000行)。
我该如何解决这个等式?
答案 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_i
和c_i
是i
个{{1}的条目分别是},y(x)
和b
。常量向量c
可以在某个点c
确定为
x0