我正在处理一个问题,该问题使用了以下形式的许多方程:
其中q_i(x)是唯一未知的,c_i,C_j,P_j总是正的。我们有两种情况,第一种是c_i,C_j,P_j是整数,还有它们是真实的情况。 C_j<所有j的P_j
我正在做的是q_i(x) - c_i(x)必须等于整数的总和。所以我正在对q_i(x)进行详尽的搜索,以满足等式的两端。显然,这在计算上是详尽无遗的。
更多信息: 这些公式来自论文"将抢占阈值集成到固定优先级DVS调度算法"杨和林。
由于
答案 0 :(得分:0)
总和是阶梯函数。您可以通过计算楼层函数跳转到下一个值的位置来离散化问题;这是每个j的周期性。然后你叠加N'节奏'''' (每个都有自己的速度由Pj指定)并获得总和跳跃的所有位置。每个段可以与qi(x)精确地具有0或1个交点。您应该直观地理解问题,如下所示:
f = @(q) 2 + (floor(q/3)*0.5 + floor(q/4)*3 + floor(q/2)*.3);
xx = -10:0.01:10;
plot(xx,f(xx),xx,xx)
对于每个步骤,可以分析检查是否存在交叉点。
jumps = unique([0:3:10,0:4:10,0:2:10]); % Vector with position of jumps
lBounds = jumps(1:end-1); % Vector with lower bounds of stairs
uBounds = jumps(2:end); % Vector with upper bounds of stairs
middle = (lBounds+uBounds)/2; % center of each stair
fStep = f(middle); % height of the stairs
intersection = fStep; % Solution of linear function q=fStep
% Check if intersection is within the bounds of the specific step
solutions = intersection(intersection>=lBounds & intersection<uBounds)
2.3000 6.9000
答案 1 :(得分:0)
您可以使用bisection method以数字方式查找几乎所有行为良好函数的零。
x: f(x)=0
。 就是这样!或者可能是......
f(x)
不是一个行为良好的函数,因此很难解决。