在使用成人在线 处理二次规划问题时,特定条件下,成人在线 会持续运行(卡死)且无法退出(无论怎么按退出键都没用),请问这是什么原因?
% 投资组合优化示例 - 3个股票 + 储蓄% 基于Markowitz投资组合理论clear; clc; close all;%% 输入数据% 假设我们有3个股票的预期收益率(年化)expected_returns = [0.08; 0.23; 0.15]; % 股票1, 股票2, 股票3% 假设储蓄的无风险利率risk_free_rate = 0.03; % 3% 年化收益率% 协方差矩阵(反映股票间的风险关系)covariance_matrix = [0.04 0.01 0.02; % 股票1的方差和协方差0.01 0.09 0.03; % 股票20.02 0.03 0.16]; % 股票3%% 有效前沿计算n_assets = length(expected_returns);n_points = 100;% 生成不同的目标收益率target_returns = linspace(min(expected_returns), max(expected_returns), n_points);% 预分配存储空间portfolio_risks = zeros(n_points, 1);portfolio_weights = zeros(n_points, n_assets);% 计算有效前沿for i = 1:n_pointstarget_return = target_returns(i);% 使用二次规划求解最小风险组合H = 2 * covariance_matrix; % 二次项系数矩阵f = zeros(n_assets, 1); % 线性项系数向量% 约束条件:权重和为1,预期收益率等于目标值Aeq = [ones(1, n_assets); expected_returns'];beq = [1; target_return];% 边界条件:不允许卖空lb = zeros(n_assets, 1);ub = ones(n_assets, 1);% 求解二次规划问题options = optimoptions('quadprog', 'Display', 'off');[weights, ~, exitflag] = quadprog(H, f, [], [], Aeq, beq, lb, ub, [], options);if exitflag > 0portfolio_weights(i, :) = weights';portfolio_risks(i) = sqrt(weights' * covariance_matrix * weights);elseportfolio_risks(i) = NaN;endend%% 计算包含储蓄的最优组合(资本市场线)% 超额收益率excess_returns = expected_returns - risk_free_rate;% 计算切点组合tangent_weights = covariance_matrix \ excess_returns;tangent_weights = tangent_weights / sum(tangent_weights);% 切点组合的收益率和风险tangent_return = tangent_weights' * expected_returns;tangent_risk = sqrt(tangent_weights' * covariance_matrix * tangent_weights);% 资本市场线斜率cml_slope = (tangent_return - risk_free_rate) / tangent_risk;%% 可视化结果figure('Position', [100, 100, 1200, 500]);% 子图1:有效前沿和资本市场线subplot(1,2,1);plot(portfolio_risks, target_returns, 'b-', 'LineWidth', 2);hold on;% 绘制资本市场线cml_risks = linspace(0, max(portfolio_risks)*1.2, 100);cml_returns = risk_free_rate + cml_slope * cml_risks;plot(cml_risks, cml_returns, 'r--', 'LineWidth', 2);% 标记切点plot(tangent_risk, tangent_return, 'ro', 'MarkerSize', 8, 'MarkerFaceColor', 'red');% 标记无风险资产plot(0, risk_free_rate, 'go', 'MarkerSize', 8, 'MarkerFaceColor', 'green');xlabel('风险(标准差)');ylabel('预期收益率');title('有效前沿和资本市场线');legend('有效前沿', '资本市场线', '切点组合', '无风险资产', 'Location', 'southeast');grid on;% 子图2:切点组合权重subplot(1,2,2);bar(tangent_weights);xlabel('资产');ylabel('权重');title('切点组合权重分配');set(gca, 'XTickLabel', {'股票1', '股票2', '股票3'});grid on;%% 输出结果fprintf('=== 投资组合优化结果 ===\n');fprintf('无风险利率: %.2f%%\n', risk_free_rate*100);fprintf('\n各股票预期收益率:\n');for i = 1:n_assetsfprintf('股票%d: %.2f%%\n', i, expected_returns(i)*100);endfprintf('\n切点组合信息:\n');fprintf('预期收益率: %.2f%%\n', tangent_return*100);fprintf('风险(标准差): %.2f%%\n', tangent_risk*100);fprintf('夏普比率: %.4f\n', (tangent_return - risk_free_rate) / tangent_risk);fprintf('\n切点组合权重:\n');for i = 1:n_assetsfprintf('股票%d: %.2f%%\n', i, tangent_weights(i)*100);endfprintf('\n投资建议:\n');fprintf('投资者可以根据自己的风险偏好,在无风险资产和切点组合之间分配资金。\n');fprintf('风险厌恶型投资者可以增加储蓄比例,风险偏好型投资者可以增加股票组合比例。\n');%% 计算不同风险偏好下的最优组合fprintf('\n=== 不同风险偏好下的投资建议 ===\n');risk_tolerances = [0.1, 0.3, 0.5, 0.7, 0.9]; % 风险承受能力for i = 1:length(risk_tolerances)alpha = risk_tolerances(i); % 投资于切点组合的比例savings_weight = 1 - alpha; % 储蓄比例portfolio_return = savings_weight * risk_free_rate + alpha * tangent_return;portfolio_risk = alpha * tangent_risk;fprintf('\n风险承受能力 %.0f%%:\n', risk_tolerances(i)*100);fprintf(' 储蓄比例: %.1f%%\n', savings_weight*100);fprintf(' 股票组合比例: %.1f%%\n', alpha*100);fprintf(' 预期收益率: %.2f%%\n', portfolio_return*100);fprintf(' 预期风险: %.2f%%\n', portfolio_risk*100);end
Windows 4.2.1 版本在命令行窗口输入 hold、isnan、isinf 等直接闪退;LInux 4.2.1 版本在命令行窗口输入 isnan、isinf 等直接闪退。
contains(str, pat) 函数用于判断字符串 str 中是否包含 pat 子串,但在 Windows 4.2.1 版本中,contains 像是被一个用于几何包含的函数给覆盖了经过测试,该函数在 Linux 4.2.1 版本和 Windows 4.2.0 版本中都能正常运行。
版本为4.2.0,使用我的大学提供的授权许可证激活后,一些工具箱功能无法加载,提示“加载失败”;同时命令行提示“工具箱有新版本, 请联系运营商.”使用内置的快速提交模块,点击提交按钮无法提交
我正在使用 Deepin Linux 系统,安装了成人在线 的计算软件V4.2.0 版,成功安装,并能运行,很好!但有个问题,就是我运行软件自带的例子PDF Examples 解PDF使用有限元方法时,计算得太慢了。能否优化提速一下?我的电脑是联想工作站 i7 cpu , 32G 内存。但例子程序运行得很慢,就是网格化时,很耗时。谢谢!
您好,在使用过程中我发现成人在线 4.2.0 不支持在 if 语句的条件表达式后未换行的情况下再接其他语句,如
if true fprintf('test'); end在 MATLAB 中可正常运行,但在 Baltamatica 中报错
语法错误, 此处不应该输入 Identifier若改成
if true fprintf('test'); end则可正常运行,也许与 parser 有关。不知这是否是一个可以修复的问题。谢谢您!
您好,电脑:ThinkpadT14p,操作系统:win11,版本:成人在线 4.1.1问题:无法用鼠标拖拽来改变主窗口宽度,但是可以改变高度,即左右拖动不行,上下拖动可以,不知道是什么原因。
addnode函数与matlab返回结果不一致,目前是返回布尔值,matlab返回图对象,希望可以支持返回两种值,布尔值(保留速度提升和python用法一致)和图对象(兼容matlab)。
问题:win10环境下,使用成人在线 4.0.3版本。本人的windows的任务栏放置在桌面的顶部,此时成人在线 的菜单栏被任务栏遮挡,如图所示:这是任务栏放在底部时,成人在线 的菜单栏能正常显示:当windows任务栏置顶时,重新启动成人在线 ,菜单栏被任务栏遮挡:
test_Pretrainedgooglenet 是未定义的变量或暂未实现的函数。位于文件 D:\成人在线 \baltamatica\examples\toolbox\DeepLearning\test_Pretrained.m (第 11 行)[a1, a2, a3] = googlenet(Test)
您好,在使用成人在线 中目前有以下一些疑问。1.view函数使用视点确定视角的情况下,可能存在一些问题,如视点[-1,0,0]应为方位角-90度。2.pause函数使用会出现报错的情况。
软件的帮助文件反应慢,比如点击帮助文件的搜索框时,会有卡顿没有反应。比如选择某个命令查看他的用法时,会有卡顿没有反应。查看浏览器,可能因为js文件没有加载造成。