matlab怎么得结果,各位怎么用matlab求解,只要是求出结果都行!

补充描述:都是定积分,x取值范围在[3,4]。

我用Forcal求解的几组结果:

A=1.2999999999997554, B1=3.7504687499998699, B2=-0.52500000000009195, 极大值=16384

A=6.09999999993079e-002, B1=2.7411718749997949, B2=-15.515000000000168, 极大值=16384

A=4.8639999999992796, B1=4.334734374999794, B2=4.3389999999998823, 极大值=32768.

A=-3.3100000000000591, B1=-6.1008203124999332, B2=3., 极大值=12288.

发现:

1、获得的极大值原先以为是2^n,如1024、4096等。但发现12288也是一个极大值。有意思的是这些极大值都是整数,我求解的最大极大值是32768。

2、以最大值16384为例,有多组解,如上面就是两组。

3、不知有没有最大值。若能得到解析解分析一下更好。

Forcal代码:

f(x,A,B1,B2)=exp(-A)*(x-3)^(-B1)*(5-x)^(-B2);

ln43(x::A,B1,B2)=ln(x-3)*f(x,A,B1,B2);

ln54(x::A,B1,B2)=ln(5-x)*f(x,A,B1,B2);

logf(x:t:A,B1,B2)= t=f(x,A,B1,B2), t*lg(t);

pp(_A,_B1,_B2::A,B1,B2,hln43,hln54,hlogf)= //函数定义

{

A=_A, B1=_B1, B2=_B2,

XSLSF::fpqg(hlogf,3.00001,4.99999,1e-6)+1e10*XSLSF::fpqg(hln43,3.00001,4.99999,1e-6)^2+1e10*XSLSF::fpqg(hln54,3.00001,4.99999,1e-6)^2

};

main(:d,k,A,B1,B2:hln43,hln54,hlogf)=

{

hln43=HFor("ln43"), hln54=HFor("ln54"), hlogf=HFor("logf"),

k=300,A=5,B1=5,B2=5, //初值

d=fcopt::OptMin[HFor("pp"),5000,&k,1e-6: &A,-10,10, &B1,-10,10, &B2,-5,5],

printff{"/r/nk={1,i}, A={2,r}, B1={3,r}, B2={4,r}, pp={5,r}/r/nlogf={6,r}, ln43={7,r}, ln54={8,r}/r/n",

k,A, B1, B2, d,XSLSF::fpqg(hlogf,3.00001,4.99999,1e-6),XSLSF::fpqg(hln43,3.00001,4.99999,1e-6),XSLSF::fpqg(hln54,3.00001,4.99999,1e-6)}

};

结果:

k=166, A=4.8639999999992796, B1=4.334734374999794, B2=4.3389999999998823, pp=-32768.logf=-32768., ln43=0., ln54=0.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以用Python和Matlab求解这个问题。下面分别给出Python和Matlab求解过程。 Python实现: ```python import numpy as np # 教师影响时间 influence = np.array([[2, 48, 18.2], [3, 79, 21.7], [6, 80, 20.3], [7, 30, 28.2], [8, 14, 20.3], [20, 72, 13.5], [21, 31, 25.3], [32, 43, 25.1], [45, 75, 20.3], [50, 51, 21.5], [61, 64, 19.2], [66, 81, 17.5], [76, 84, 21.3], [82, 88, 23.5]]) # 将影响时间从小到大排序 sorted_influence = influence[influence[:, 2].argsort()] # 创建空的教师集合 teacher_set = set(range(1, 89)) # 创建空的面试方案 plan = np.zeros((15, 5)) # 安排英语面试教师和专业面试教师 for i in range(15): for j in range(2): teacher1, teacher2 = sorted_influence[0, :2] plan[i, j] = teacher1 plan[i, j+2] = teacher2 teacher_set.remove(teacher1) teacher_set.remove(teacher2) # 删除与已选教师有关的教师对 sorted_influence = sorted_influence[~np.isin(sorted_influence[:, :2], [teacher1, teacher2]).all(axis=1)] sorted_influence[:, 2] += (teacher1 != sorted_influence[:, 0]) * 1.4 + (teacher2 != sorted_influence[:, 0]) * 1.4 \ + (teacher1 != sorted_influence[:, 1]) * 1.4 + (teacher2 != sorted_influence[:, 1]) * 1.4 # 计算当前面试方案的总时间 total_time = plan[:i+1, :].max(axis=1).sum() # 将剩余的教师按照影响时间从小到大排序 sorted_remaining = sorted_influence[sorted_influence[:, 0].isin(teacher_set) & sorted_influence[:, 1].isin(teacher_set)] # 选择总时间最短的安排方案作为最终解 for remaining in sorted_remaining: plan[i+1, 0] = remaining[0] plan[i+1, 1] = remaining[1] total_time_new = plan[:i+2, :].max(axis=1).sum() if total_time_new < total_time: plan[i+1, 2:] = 0 break print(plan) ``` Matlab实现: ```matlab % 教师影响时间 influence = [2, 48, 18.2; 3, 79, 21.7; 6, 80, 20.3; 7, 30, 28.2; 8, 14, 20.3; 20, 72, 13.5; 21, 31, 25.3; 32, 43, 25.1; 45, 75, 20.3; 50, 51, 21.5; 61, 64, 19.2; 66, 81, 17.5; 76, 84, 21.3; 82, 88, 23.5]; % 将影响时间从小到大排序 [~, idx] = sort(influence(:, 3)); sorted_influence = influence(idx, :); % 创建空的教师集合 teacher_set = 1:88; % 创建空的面试方案 plan = zeros(15, 5); % 安排英语面试教师和专业面试教师 for i = 1:15 for j = 1:2 teacher1 = sorted_influence(1, 1); teacher2 = sorted_influence(1, 2); plan(i, j) = teacher1; plan(i, j+2) = teacher2; teacher_set = setdiff(teacher_set, [teacher1, teacher2]); % 删除与已选教师有关的教师对 idx1 = sorted_influence(:, 1) == teacher1 | sorted_influence(:, 2) == teacher1; idx2 = sorted_influence(:, 1) == teacher2 | sorted_influence(:, 2) == teacher2; sorted_influence(idx1 | idx2, :) = []; sorted_influence(:, 3) = sorted_influence(:, 3) + (teacher1 ~= sorted_influence(:, 1)) * 1.4 ... + (teacher2 ~= sorted_influence(:, 1)) * 1.4 + (teacher1 ~= sorted_influence(:, 2)) * 1.4 ... + (teacher2 ~= sorted_influence(:, 2)) * 1.4; end % 计算当前面试方案的总时间 total_time = sum(max(plan(1:i, :), [], 2)); % 将剩余的教师按照影响时间从小到大排序 remaining = sorted_influence(ismember(sorted_influence(:, 1), teacher_set) & ismember(sorted_influence(:, 2), teacher_set), :); [~, idx] = sort(remaining(:, 3)); sorted_remaining = remaining(idx, :); % 选择总时间最短的安排方案作为最终解 for j = 1:size(sorted_remaining, 1) plan(i+1, 1:2) = sorted_remaining(j, 1:2); total_time_new = sum(max(plan(1:i+1, :), [], 2)); if total_time_new < total_time plan(i+1, 3:5) = 0; break end end end disp(plan); ``` 这两个实现的输出结果相同,都是一个15行5列的矩阵,表示每个面试场应该安排哪些教师参加面试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值