分段符号函数的最大化符号函数

3次浏览(过去30天)
mfreysch
mfreysch 2021年8月19日
回答: 沃尔特·罗伯森 2021年8月21日
你好,
我有以下代码:
信谊R K L ext_mon
T = 100;
%的公司
Gamma = 0.03;
A_0 = 100;
债务= 0;
symfun(ext_mon*1.03^T,ext_mon);
%的保险公司
Ai_0 = 200;
Li_0 = 100;
mu_L = 0.02;
mu_A = 0.03;
sigma_L = 0.002;
sigma_A = 0.001;
prem = symfun(R+K,[R K]);
A_T = symfun((1+gamma)*(A_0+prem),[R K]);
expAI = symfun (prem (R, K) (AI_0 +) * exp ((mu_A + (sigma_A ^ 2/2)) * T), [R K]);
expi_tilde = LI_0*exp((mu_L + (sigma_L^2/2))*T);
X = symfun(分段(L < R, L, R < = L < = K, R, L > K, R + L-K) [R K]);
Y = symfun(分段(L < R, 0, R < = L L > < = K,唐森,K, K-R), (R K));
D = symfun(分段((Y (R、K) - expAI (R、K) - expLI_tilde) > 0, Y (R、K) - expAI (R、K) - expLI_tilde, 0), [R K]);
S_T = symfun(A_T - debt - L - X - D,[R K]);
投资= symfun(S_T(R,K) + ext_mon,[R K]);
GrossReturn = symfun(投资(R,K)*1.03^T,[R K]);
利润= symfun(GrossReturn(R,K) -投资(R,K) - ext_cost(ext_mon),[R K ext_mon]);
我现在想在R,K和ext_mon下最大化“利润”。
当我使用fminsearch(-利润,[0 10 0]),我得到了错误
fminsearch(-利润,[0 10 0])
使用symfun/subsref错误(第189行)
位置2的参数无效。符号函数期望3个输入参数,但收到了1个。

fminsearch错误(第201行)
Fv (:,1) = funfcn(x,varargin{:});
使用symfun/subsref时出错
位置2的参数无效。符号函数期望3个输入参数,但收到了1个。
fminsearch错误(第200行)
我已经尝试用matlabFunction转换符号函数,但在那里我得到了错误
无法生成用于匿名函数的分段代码。
谁能帮我一下,我怎样才能最大化符号功能?
最好的

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2021年8月21日
信谊R K L ext_mon
T = 100;
%的公司
Gamma = 0.03;
A_0 = 100;
债务= 0;
symfun(ext_mon*1.03^T,ext_mon);
%的保险公司
Ai_0 = 200;
Li_0 = 100;
mu_L = 0.02;
mu_A = 0.03;
sigma_L = 0.002;
sigma_A = 0.001;
prem = symfun(R+K,[R K]);
A_T = symfun((1+gamma)*(A_0+prem),[R K]);
expAI = symfun (prem (R, K) (AI_0 +) * exp ((mu_A + (sigma_A ^ 2/2)) * T), [R K]);
expi_tilde = LI_0*exp((mu_L + (sigma_L^2/2))*T);
X = symfun(分段(L < R, L, R < = L < = K, R, L > K, R + L-K) [R K]);
Y = symfun(分段(L < R, 0, R < = L L > < = K,唐森,K, K-R), (R K));
D = symfun(分段((Y (R、K) - expAI (R、K) - expLI_tilde) > 0, Y (R、K) - expAI (R、K) - expLI_tilde, 0), [R K]);
S_T = symfun(A_T - debt - L - X - D,[R K]);
投资= symfun(S_T(R,K) + ext_mon,[R K]);
GrossReturn = symfun(投资(R,K)*1.03^T,[R K]);
利润= symfun(GrossReturn(R,K) -投资(R,K) - ext_cost(ext_mon),[R K ext_mon]);
利润
Profit(R, K, ext_mon) =
negProfit = -利润
negProfit(R, K, ext_mon) =
Tn = tempname +“m”;
negProfitfun = matlabFunction“var”, {[R, K, ext_mon, L]},“文件”tn,“优化”假)
negProfitfun =Function_handle with value:
@tpa9357521_4971_4509_a300_405e8eb79603
Ph = fileparts(tn);
目录(ph)
Opts = optimset(@fminsearch);
选择。MaxFunEvals = 1e5;
选择。MaxIter = 1e5;
[bestvars, negprofit] = fminsearch(negProfitfun, [0 1 0 0], opts);
退出:已超过函数计算的最大数量-增加MaxFunEvals选项。当前函数值:-Inf
利润= -negprofit;
流(利润% g (R = % g、K = % g, ext_mon = % g L = % g \ n ',利润,bestvars);
R = 9.89433e+303, K = 1.04843e+307, ext_mon = 8.42195e+303, L = -3.44808e+304处利润无穷大

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!