我怎样才能实现一个(两个?)进一步循环(s)找到所有“sum1”根据输入参数β和γ吗?

2视图(30天)
嘿,伙计们!你在这里看到的代码工作。最后根据输入参数得到“sum1”。我感兴趣的所有值“sum1”贝塔和γ在0和1之间。
我可以手动改变γ= 0.2,γ= 0.3等,找出给定值,“sum1”到目前为止. .一切工作。
但是我怎么能实现循环或两个循环,这样的程序会自动给我sum1(βγ)?因此我想要一个矩阵,商店所有“sum1”值取决于假设所有β的值在0和1之间和伽马在0和1之间。
谢谢你的帮助!
清晰的
关闭所有
%输入参数
S = 200;
N = 110000;
s0 = 1;
i0 = 10 / N;
r0 = 0;
γ= 0.2;
β= 0.6;
h = 2;
%预定义结果数组
s_res = 0(年代,1);
i_res = 0(年代,1);
r_res = 0(年代,1);
i_new = 0(年代,1);
jj = 1:年代;
s1 = s0 + h *(β* s0 * i0);
i1 = i0 + h *(β* s0 * i0 -γ* i0);
r1 = r0 + h *(γ* i0);
i1_new = i0 + h *(β* s0 * i0);
s0 = s1;
i0 = i1;
r0 = r1;
s_res (jj, 1) = s1;
i_res (jj, 1) = i1;
r_res (jj, 1) = r1;
i_new (jj, 1) = i1_new;
结束
=[0,4、5、3、7日20日,32岁的41岁,35岁,54岁,45105114103120100年,87年,81年,94年,73年,60岁,69年,48岁,33岁,34岁,25日,18日,15日,20日,21日,14日,11日,9日,7日,8日5、5、3、2、6、2、2、3、2、0、5、3、7、6、9、7、1、7、4、1、7、6、3、3、3、7、4、3、1、4、2、5、1、2];
B = ';
慕尼黑= B;
慕尼黑(71年代)= 0;
i_new_tot = N * i_new;
剩余=慕尼黑- i_new_tot;
residual2 =剩余。^ 2;
sum1 =总和(residual2)
1评论
里克
里克 2017年3月21日
使用两个for循环linspace将工作,但将是极其缓慢的。
beta_list = linspace (0, 1, 10);
gamma_list = linspace (0, 1, 10);
idx_beta = 1:长度(beta_list)
β= beta_list (idx_beta);
idx_gamma = 1:长度(gamma_list)
γ= gamma_list (idx_gamma);
%的代码
结束
结束
你应该总是试图用矩阵代替循环。有一个调查meshgrid。可以减少你最终得到的三个循环(如果你使用我的解决方案)到1甚至可以删除所有循环。

登录置评。

答案(0)

社区寻宝

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

开始狩猎!