不同的结果从直接使用fsolve功能和使用fsolve中的代码在程序设置gydF4y2Ba

32视图(30天)gydF4y2Ba
我想使用fsolve commad解决四个变量的根源,calcuation期间,返回国旗永远是2。gydF4y2Ba
所以我改变多个时代的起点,如下所示。gydF4y2Ba
模型在一个质点,genetate值(na_fa_medel na_fr_model等)接近目标(na_fa na_fr等)但国旗仍然是2。gydF4y2Ba
所以我单独运行fslove程序和fsolve内的程序功能gydF4y2Ba
的返回值前情况(0.0021997 - 0.012094 0.14924 - 0.015243),不过真正的值应该接近[0.0022 0.0121 0.0171 0.0087]根据以后的情况。gydF4y2Ba
在这四个值,看来前两项是正确的,但后两个是不正确的。gydF4y2Ba
我不知道为什么有这样的差别,但我多次检查代码是正确的。gydF4y2Ba
谁能帮助我解决它或告诉我为什么?gydF4y2Ba
如果直接使用fsolve founction fval,结果是(0.0021997 - 0.012094 0.14924 - 0.015243),然而,如果你在程序运行程序,价值应该接近(0.0022 - 0.0121 0.0171 - 0.0087)gydF4y2Ba
这是计划:gydF4y2Ba
清除所有gydF4y2Ba ;gydF4y2Ba
关闭gydF4y2Ba 所有gydF4y2Ba ;gydF4y2Ba
clc;gydF4y2Ba
格式gydF4y2Ba 短gydF4y2Ba ggydF4y2Ba
全球gydF4y2Ba Na NrνNa_fa Na_pr Na_pu Na_fr Na_fu Aa Ar wr PagydF4y2Ba
Na_fa = 0.206;gydF4y2Ba
Na_pr = 0.197;gydF4y2Ba
Na_pu = 0.29;gydF4y2Ba
Na_fr = 0.127;gydF4y2Ba
Na_fu = 0.18;gydF4y2Ba
基于“增大化现实”技术= 1;gydF4y2Ba %正常化gydF4y2Ba
或者说是=基于“增大化现实”技术;gydF4y2Ba %的观念gydF4y2Ba
MU_vec = [0 0 0 0];gydF4y2Ba
SIGMA_a = 0.4646;gydF4y2Ba
SIGMA_phi = 1.1687;gydF4y2Ba
SIGMA_r = 0.8127;gydF4y2Ba
SIGMA_u = 0.4394;gydF4y2Ba
COV_ap = -0.4713;gydF4y2Ba
COV_ar = 0.0154;gydF4y2Ba
COV_au = 0.0052;gydF4y2Ba
COV_pr = 0;gydF4y2Ba %的基础上给出gydF4y2Ba
COV_pu = 0;gydF4y2Ba %的基础上给出gydF4y2Ba
COV_ru = 0;gydF4y2Ba %的基础上给出gydF4y2Ba
SIGMA_mat = [SIGMA_a ^ 2 COV_ap COV_ar COV_au;COV_ap SIGMA_phi ^ 2 COV_pr COV_pu;COV_ar COV_pr SIGMA_r ^ 2 COV_ru;COV_au COV_pu COV_ru SIGMA_u ^ 2);gydF4y2Ba
n = 1000000;gydF4y2Ba
Ngen = mvnrnd (MU_vec SIGMA_mat n);gydF4y2Ba
LNgen = exp (Ngen);gydF4y2Ba
vecSA = LNgen (: 1);gydF4y2Ba
vecFI = LNgen (:, 2);gydF4y2Ba
vecSR = LNgen (: 3);gydF4y2Ba
vecSU = LNgen (: 4);gydF4y2Ba
ETA_R =gydF4y2Ba 0.6019;gydF4y2Ba
ETA_U =gydF4y2Ba 0.6641gydF4y2Ba ;gydF4y2Ba
佤邦=gydF4y2Ba 0.3981;gydF4y2Ba
吴=gydF4y2Ba 1.1863;gydF4y2Ba
选项gydF4y2Ba = optimset (gydF4y2Ba “显示”gydF4y2Ba ,gydF4y2Ba “通路”gydF4y2Ba ,gydF4y2Ba “TolX”gydF4y2Ba 1平台以及gydF4y2Ba “大规模”gydF4y2Ba ,gydF4y2Ba “上”gydF4y2Ba );gydF4y2Ba
cr = 0.075;gydF4y2Ba %的假设gydF4y2Ba
铜= 0.1;gydF4y2Ba %的假设gydF4y2Ba
kappaa = 1.25;gydF4y2Ba %的假设gydF4y2Ba
kappau = 1.3;gydF4y2Ba %的假设gydF4y2Ba
nuv = 0.4;gydF4y2Ba
猜= (kappaa、kappau、铬、铜);gydF4y2Ba
[x, fval exitflag ~] = fsolve (@solve_kappaandc、猜测、期权、vecSA vecFI, vecSR, vecSU, nuv,佤邦,wu ETA_R, ETA_U);gydF4y2Ba
fgydF4y2Ba 瓦尔gydF4y2Ba ;gydF4y2Ba
abs (fval)gydF4y2Ba ;gydF4y2Ba
这个项目是:;gydF4y2Ba
函数gydF4y2Ba f = solve_kappaandc (x, BARRIER_R BARRIER_U、vecSA vecFI, vecSR, vecSU, nuv,佤邦,wu ETA_R, ETA_U);gydF4y2Ba
全球gydF4y2Ba 或者说是Na_fr Na_fu Na_pr Na_fa n Na_pu;gydF4y2Ba
Na_fa = 0.206;gydF4y2Ba
Na_pr = 0.197;gydF4y2Ba
Na_pu = 0.29;gydF4y2Ba
Na_fr = 0.127;gydF4y2Ba
Na_fu = 0.18;gydF4y2Ba
kappaa = x (1);gydF4y2Ba
kappau = x (2);gydF4y2Ba
cr = x (3);gydF4y2Ba
铜= x (4);gydF4y2Ba
Income_a = kappaa。* * vecSA佤邦。* vecFI;gydF4y2Ba
Income_fr = (1-ETA_R) * wr。* vecSR;gydF4y2Ba
kappau Income_fu = (1-ETA_U) *。*。* vecSU;gydF4y2Ba
vce_cr = (n - 1) * cr的;gydF4y2Ba
vce_cu = (n - 1) *的铜;gydF4y2Ba
oneminuscr = 1-vce_cr;gydF4y2Ba
oneminuscu = 1-vce_cu;gydF4y2Ba
time_pr = (Income_a * nuv. / Income_fr) ^ (1 / (1-nuv));gydF4y2Ba
selec = [time_pr oneminuscr];gydF4y2Ba
time_pr = min (selec [], 2);gydF4y2Ba
time_pu = (Income_a * nuv. / Income_fu) ^ (1 / (1-nuv));gydF4y2Ba
selec = [time_pu oneminuscu];gydF4y2Ba
time_pu = min (selec [], 2);gydF4y2Ba
Income_pr = (1-cr-time_pr)。* Income_fr + Income_a。* time_pr。^ nuv;gydF4y2Ba
Income_pu = (1-cu-time_pu)。* Income_fu + Income_a。* time_pu。^ nuv;gydF4y2Ba
OC_a = 0 (n, 1);gydF4y2Ba
OC_a (Income_a > Income_fr & Income_a > Income_fu & Income_a > Income_pr & Income_a > Income_pu) = 1;gydF4y2Ba
OC_fr = 0 (n, 1);gydF4y2Ba
OC_fr (Income_fr > Income_a & Income_fr > Income_fu & Income_fr > Income_pr & Income_fr > Income_pu) = 1;gydF4y2Ba
OC_fu = 0 (n, 1);gydF4y2Ba
OC_fu (Income_fu > Income_a & Income_fu > Income_fr & Income_fu > Income_pr & Income_fu > Income_pu) = 1;gydF4y2Ba
OC_pr = 0 (n, 1);gydF4y2Ba
OC_pr (Income_pr > Income_a & Income_pr > Income_fr & Income_pr > Income_fu & Income_pr > Income_pu) = 1;gydF4y2Ba
OC_pu = 0 (n, 1);gydF4y2Ba
OC_pu (Income_pu > Income_a & Income_pu > Income_fr & Income_pu > Income_fu & Income_pu > Income_pr) = 1;gydF4y2Ba
N =总和(((OC_a),长度1));gydF4y2Ba
Na_fa_model = (OC_a) / N;gydF4y2Ba
Na_fr_model = (OC_fr) / N;gydF4y2Ba
Na_fu_model = (OC_fu) / N;gydF4y2Ba
Na_pr_model = (OC_pr) / N;gydF4y2Ba
Na_pu_model = (OC_pu) / N;gydF4y2Ba
f1 = Na_fr_model - Na_fr;gydF4y2Ba
f2 = Na_fu_model - Na_fu;gydF4y2Ba
f3 = Na_pr_model - Na_pr;gydF4y2Ba
f4 = Na_pu_model - Na_pu;gydF4y2Ba
f = [f1 f2 f3 f4];gydF4y2Ba

接受的答案gydF4y2Ba

Dyuman JoshigydF4y2Ba
Dyuman JoshigydF4y2Ba 约3小时前gydF4y2Ba
一般不建议使用全球,特别是当它不是必需的。gydF4y2Ba
在您的代码中有很多错误,我已经编辑它们。gydF4y2Ba
格式gydF4y2Ba短ggydF4y2Ba
基于“增大化现实”技术= 1;gydF4y2Ba%正常化gydF4y2Ba
或者说是=基于“增大化现实”技术;gydF4y2Ba%的观念gydF4y2Ba
MU_vec = [0 0 0 0];gydF4y2Ba
SIGMA_a = 0.4646;gydF4y2Ba
SIGMA_phi = 1.1687;gydF4y2Ba
SIGMA_r = 0.8127;gydF4y2Ba
SIGMA_u = 0.4394;gydF4y2Ba
COV_ap = -0.4713;gydF4y2Ba
COV_ar = 0.0154;gydF4y2Ba
COV_au = 0.0052;gydF4y2Ba
COV_pr = 0;gydF4y2Ba%的基础上给出gydF4y2Ba
COV_pu = 0;gydF4y2Ba%的基础上给出gydF4y2Ba
COV_ru = 0;gydF4y2Ba%的基础上给出gydF4y2Ba
SIGMA_mat = [SIGMA_a ^ 2 COV_ap COV_ar COV_au;COV_ap SIGMA_phi ^ 2 COV_pr COV_pu;COV_ar COV_pr SIGMA_r ^ 2 COV_ru;COV_au COV_pu COV_ru SIGMA_u ^ 2);gydF4y2Ba
n = 1000000;gydF4y2Ba
Ngen = mvnrnd (MU_vec SIGMA_mat n);gydF4y2Ba
LNgen = exp (Ngen);gydF4y2Ba
vecSA = LNgen (: 1);gydF4y2Ba
vecFI = LNgen (:, 2);gydF4y2Ba
vecSR = LNgen (: 3);gydF4y2Ba
vecSU = LNgen (: 4);gydF4y2Ba
ETA_R = 0.6019;gydF4y2Ba
ETA_U = 0.6641;gydF4y2Ba
佤邦= 0.3981;gydF4y2Ba
吴= 1.1863;gydF4y2Ba
选择= optimset (gydF4y2Ba“显示”gydF4y2Ba,gydF4y2Ba“通路”gydF4y2Ba,gydF4y2Ba“TolX”gydF4y2Ba1平台以及gydF4y2Ba“大规模”gydF4y2Ba,gydF4y2Ba“上”gydF4y2Ba);gydF4y2Ba
cr = 0.075;gydF4y2Ba%的假设gydF4y2Ba
铜= 0.1;gydF4y2Ba%的假设gydF4y2Ba
kappaa = 1.25;gydF4y2Ba%的假设gydF4y2Ba
kappau = 1.3;gydF4y2Ba%的假设gydF4y2Ba
nuv = 0.4;gydF4y2Ba
猜= (kappaa、kappau、铬、铜);gydF4y2Ba
%可以定义的所有变量在函数来得到解决gydF4y2Ba
%或者你可以通过它们作为输入辩论结局(这是我在这里所做的)gydF4y2Ba
[x, fval exitflag] = fsolve (@ (x) solve_kappaandc (x, vecSA vecFI、vecSR vecSU, nuv,佤邦,wu ETA_R, ETA_U, wr, n),猜,选项)gydF4y2Ba
一阶规范信赖域迭代Func-count | | f (x) | | ^ 2步最优半径0 5 0.000503699 0 1方程解决在初始点。fsolve完成,因为向量初始点的函数值接近于零的值函数的宽容,问题出现普通的梯度。gydF4y2Ba
x =gydF4y2Ba 1×4gydF4y2Ba
1.25 1.3 0.075 0.1gydF4y2Ba
fval =gydF4y2Ba 1×4gydF4y2Ba
0.001515 -0.011287 0.01714 0.008957gydF4y2Ba
exitflag =gydF4y2Ba
1gydF4y2Ba
函数gydF4y2Baf = solve_kappaandc (x, vecSA vecFI、vecSR vecSU, nuv,佤邦,wu ETA_R, ETA_U, wr, n);gydF4y2Ba
Na_fa = 0.206;gydF4y2Ba
Na_pr = 0.197;gydF4y2Ba
Na_pu = 0.29;gydF4y2Ba
Na_fr = 0.127;gydF4y2Ba
Na_fu = 0.18;gydF4y2Ba
kappaa = x (1);gydF4y2Ba
kappau = x (2);gydF4y2Ba
cr = x (3);gydF4y2Ba
铜= x (4);gydF4y2Ba
Income_a = kappaa。* * vecSA佤邦。* vecFI;gydF4y2Ba
Income_fr = (1-ETA_R) * wr。* vecSR;gydF4y2Ba
kappau Income_fu = (1-ETA_U) *。*。* vecSU;gydF4y2Ba
vce_cr = (n - 1) * cr的;gydF4y2Ba
vce_cu = (n - 1) *的铜;gydF4y2Ba
oneminuscr = 1-vce_cr;gydF4y2Ba
oneminuscu = 1-vce_cu;gydF4y2Ba
time_pr = (Income_a * nuv. / Income_fr) ^ (1 / (1-nuv));gydF4y2Ba
selec = [time_pr oneminuscr];gydF4y2Ba
time_pr = min (selec [], 2);gydF4y2Ba
time_pu = (Income_a * nuv. / Income_fu) ^ (1 / (1-nuv));gydF4y2Ba
selec = [time_pu oneminuscu];gydF4y2Ba
time_pu = min (selec [], 2);gydF4y2Ba
Income_pr = (1-cr-time_pr)。* Income_fr + Income_a。* time_pr。^ nuv;gydF4y2Ba
Income_pu = (1-cu-time_pu)。* Income_fu + Income_a。* time_pu。^ nuv;gydF4y2Ba
OC_a = 0 (n, 1);gydF4y2Ba
OC_a (Income_a > Income_fr & Income_a > Income_fu & Income_a > Income_pr & Income_a > Income_pu) = 1;gydF4y2Ba
OC_fr = 0 (n, 1);gydF4y2Ba
OC_fr (Income_fr > Income_a & Income_fr > Income_fu & Income_fr > Income_pr & Income_fr > Income_pu) = 1;gydF4y2Ba
OC_fu = 0 (n, 1);gydF4y2Ba
OC_fu (Income_fu > Income_a & Income_fu > Income_fr & Income_fu > Income_pr & Income_fu > Income_pu) = 1;gydF4y2Ba
OC_pr = 0 (n, 1);gydF4y2Ba
OC_pr (Income_pr > Income_a & Income_pr > Income_fr & Income_pr > Income_fu & Income_pr > Income_pu) = 1;gydF4y2Ba
OC_pu = 0 (n, 1);gydF4y2Ba
OC_pu (Income_pu > Income_a & Income_pu > Income_fr & Income_pu > Income_fu & Income_pu > Income_pr) = 1;gydF4y2Ba
N =总和(((OC_a),长度1));gydF4y2Ba
Na_fa_model = (OC_a) / N;gydF4y2Ba
Na_fr_model = (OC_fr) / N;gydF4y2Ba
Na_fu_model = (OC_fu) / N;gydF4y2Ba
Na_pr_model = (OC_pr) / N;gydF4y2Ba
Na_pu_model = (OC_pu) / N;gydF4y2Ba
f1 = Na_fr_model - Na_fr;gydF4y2Ba
f2 = Na_fu_model - Na_fu;gydF4y2Ba
f3 = Na_pr_model - Na_pr;gydF4y2Ba
f4 = Na_pu_model - Na_pu;gydF4y2Ba
f = [f1 f2 f3 f4];gydF4y2Ba
结束gydF4y2Ba
2的评论gydF4y2Ba
Dyuman JoshigydF4y2Ba
Dyuman JoshigydF4y2Ba 16分钟前gydF4y2Ba
也有错误的使用gydF4y2Ba 全球gydF4y2Ba ,特别是如何定义函数句柄作为输入fsolve ()gydF4y2Ba
比较行,fsolve()在初始代码和纠正代码观察不同。gydF4y2Ba

登录置评。gydF4y2Ba

更多的答案(0)gydF4y2Ba

社区寻宝gydF4y2Ba

找到宝藏在MATLAB中央,发现社区如何帮助你!gydF4y2Ba

开始狩猎!gydF4y2Ba