clc;clear all;close all;
SimulationYear=50;
% ========================SIMULATION===========================%
%UNIT: million
%SimulationYear :Year of simulation
transEvaSet={'High','Medium','Low'};
[High,Medium,Low]=deal(0.0075,0.0025,0.00025);%Evalusiton of transptation rate
languageSet={'MandarinChinese','Spanish','English','Hindustani','Arabic',...
'Bengali','Portuguese','Russian','Punjabi','Japanese'};%nameOfLanguage accoding to table given
n=length(languageSet);%Number of language
[MandarinChinese,Spanish,English,Hindustani,Arabic,...%Number the languageSet
Bengali,Portuguese,Russian,Punjabi,Japanese] = deal(1,2,3,4,5,6,7,8,9,10);
% populationCurrentNative=
LocalNative=zeros(1,n);
populationCurrentNative=zeros(1,n);
transLink=zeros(n);%relation Matrix . if j->i have transprot action then link(i,j) = transport rate
% Initial population of each Group of countries of speific language
% MandarinChinese,Spanish,English,Hindustani,Arabic,...%Number the languageSet
% Bengali,Portuguese,Russian,Punjabi,Japanese
populationCurrentNative(MandarinChinese)=897;%1
populationCurrentNative(Spanish)=436;%
populationCurrentNative(English)=371;%
populationCurrentNative(Hindustani)=329;%
populationCurrentNative(Arabic)=290;%
populationCurrentNative(Bengali)=242;%
populationCurrentNative(Portuguese)=218;%
populationCurrentNative(Russian)=153;%
populationCurrentNative(Punjabi)=148;%
populationCurrentNative(Japanese)=128;%
%local Native
LocalNative(MandarinChinese)=897;%1
LocalNative(Spanish)=436;%
LocalNative(English)=371;%
LocalNative(Hindustani)=329;%
LocalNative(Arabic)=290;%
LocalNative(Bengali)=242;%
LocalNative(Portuguese)=218;%
LocalNative(Russian)=153;%
LocalNative(Punjabi)=148;%
LocalNative(Japanese)=128;%
totalofCurrentSecond=zeros(1,n);
transLink=zeros(n);%relation Matrix . if j->i have transprot action then link(i,j) = transport rate
% score=[-0.719128356 0.99805652 2.082675032 -1.465381896 0.53591776 -1.437504508 0.380073372 0.093263772 -1.2217907 0.753816752]
% Initial population of each Group of countries of speific language
% MandarinChinese,Spanish,English,Hindustani,Arabic,...%Number the languageSet
% Bengali,Portuguese,Russian,Punjabi,Japanese
totalofCurrentSecond(MandarinChinese)=193;%1
totalofCurrentSecond(Spanish)=91;%
totalofCurrentSecond(English)=611;%
totalofCurrentSecond(Hindustani)=215;%
totalofCurrentSecond(Arabic)=132;%
totalofCurrentSecond(Bengali)=19;%
totalofCurrentSecond(Portuguese)=11;%
totalofCurrentSecond(Russian)=113;%
totalofCurrentSecond(Punjabi)=1;%% . 2nd number is unknown denoted by '?' we adapt the minmum
totalofCurrentSecond(Japanese)=1;%
%record the pupulation through simulation
localSecondLanguage=zeros(n,n);
%allocate 2nd language speaker among local 1st languagespeakers
for i=1:n
for j=1:n
if j~=i
localSecondLanguage(i,j)=totalofCurrentSecond(i)./9;
end
end
end
localFromNativecomponent=zeros(n);%the peopole doesn't speak local language
weightMetrixRoll=[0.472307908 0.639361068 4.294087807 -1.726419304 -0.653245534 -1.941783449 -0.093117608 -0.370103972 -1.758408929 1.137336683];
% weightMetrixRoll=[0.472307908 0.639361068 4.294087807 -1.626419304 -0.653245534 -1.621783449 -0.093117608 -0.370103972 -1.628408929 1.137336683];
% weightMetrixRoll=(weightMetrixRoll-min(weightMetrixRoll))./(max(weightMetrixRoll)-min(weightMetrixRoll));
% weightMetrixRoll=weightMetrixRoll./sum(weightMetrixRoll);
weightMetrixRoll=weightMetrixRoll+2;
[corrMetrix,afterNorm,afterDisc]=computecorr(weightMetrixRoll,[0.1 0.75],[0.0002 0.0004 0.0006]);
% translink=afterDisc;
ssave=LocalNative;
translink=1./corrMetrix./10000;
RecordLanguagespeaker=zeros(n,SimulationYear);%记录所有语言使用者的变化
% translink=[1:10];
%
% populationCurrent=[LocalNative,totalofCurrentSecond];
populationRecorder=[];%record the change of population
finalYearCount=zeros(n,n);%used to draw the stacked bar
glanceofWhole=zeros(n,n);
birthrate=0.005;%统一的生育率
deathrate=0.001;%统一的死亡率
localnativeBuff=[];
% . BEGINSIMULATION:
RECORDNativeSpeaker=[];
distribution=zeros(n);
%==================
REClocalFromNativecomponent=zeros(SimulationYear);
%===================
for y=1:SimulationYear
LocalNative
for i=1:n%update . i->j
for j=i+1:n
proportion=( LocalNative(i)-sum(localSecondLanguage(:,i)))./LocalNative(i);%只会本土语言de比例
LocalNative(i)=LocalNative(i)-LocalNative(i).*translink(i,j);%decress Localnative
%upadte two type data sheet
%j 外来的其它母语
localFromNativecomponent(j,i)=localFromNativecomponent(j,i)+LocalNative(i).*translink(i,j);%对方本地说i母语的 ---对方(包括只会,都会)
%i 第二语言 减去去了j地区
% if localSecondLanguage(i,j)>10
localSecondLanguage(i,j)=localSecondLanguage(i,j)-proportion.*LocalNative(i).*translink(i,j);%本地掌握第二语言的人才流失
% end
%由于新人到了 j 学习了 j的新语言
totalofCurrentSecond(j)=totalofCurrentSecond(j)+(1-proportion).*LocalNative(i).*translink(i,j);%原来只会第一语言的 出去又掌握了新的第二语言
%i掌握第二语言(j)的人才流失
localSecondLanguage(j,i)=localSecondLanguage(j,i)+proportion.*LocalNative(i).*translink(i,j);
%new operation . ======operation 2
% 学习
proportion=( LocalNative(i)-sum(localSecondLanguage(:,i)))./LocalNative(i);%只会本土语言de比例
localSecondLanguage(i,j)=localSecondLanguage(i,j)+proportion.*LocalNative(i).*translink(i,j)*1.5;%学习的比出去的多
% %死亡
% localFromNativecomponent(j,i)=localFromNativecomponent(j,i).*(1-deathrate);%在一个国家说其他母语的人死去
% %生育
% LocalNative(i)=LocalNative(i)+(LocalNative(i)+sum(localSecondLanguage(i,:)).*birthrate);%本国人和外来人在本地产生新的Native Speaker
% % RECORDNativeSpeaker=[RECORDNativeSpeaker LocalNative(i)];
end
end
% ==============================Down==============
for i=1:n%update . i->j
if i~=1
for j=1:i-1
% tionLocalNative(i).*translink(i,j);%原来只会第一语言的 出去又掌握了新的第二语言
proportion=( LocalNative(i)-sum(localSecondLanguage(:,i)))./LocalNative(i);%只会本土语言de比例
LocalNative(i)=LocalNative(i)-LocalNative(i).*translink(i,j);%decress Localnative
%upadte two type data sheet
localFromNativecomponent(j,i)=localFromNativecomponent(j,i)+LocalNative(i).*translink(i,j);%对方本地说i母语的 ---对方(包括只会,都会)
% if localSecondLanguage(i,j)>0.1
localSecondLanguage(i,j)=localSecondLanguage(i,j)-proportion.*LocalNative(i).*translink(i,j);%本地掌握第二语言的人才流失
% end
totalofCurrentSecond(j)=totalofCurrentSecond(j)+(1-proportion).*LocalNative(i).*translink(i,j);%原来只会第一语言的 出去又掌握了新的第二语言
%本地掌握第二语言的人才流失
localSecondLanguage(j,i)=localSecondLanguage(j,i)+proportion.*LocalNative(i).*translink(i,j);
% 学习
proportion=( LocalNative(i)-sum(localSecondLanguage(:,i)))./LocalNative(i);%只会本土语言de比例
localSecondLanguage(i,j)=localSecondLanguage(i,j)+proportion.*LocalNative(i).*translink(i,j)*1.5;%学习的比出去的多
% %+++
% %学习
% proportion=( LocalNative(i)-sum(localSecondLanguage(:,i)))./LocalNative(i);%只会本土语言de比例
% localSecondLanguage(i,j)=localSecondLanguage(i,j)+proportion.*LocalNative(i).*translink(i,j)*1.5;%学习的比出去的多
% %死亡
% localFromNativecomponent(j,i)=localFromNativecomponent(j,i).*(1-deathrate);%在一个国家说其他母语的人死去
% %生育
% LocalNative(i)=LocalNative(i)+(LocalNative(i)+sum(localSecondLanguage(i,:)).*birthrate);%本国人和外来人在本地产生新的Native Speaker
% % RECORDNativeSpeaker=[RECORDNativeSpeaker LocalNative(i)];
end
end
end
for iiii=1:n
RecordLanguagespeaker(iiii,y)=LocalNative(iiii)+sum(localFromNativecomponent(iiii,:));
end
% localSecondLanguage
% populationCurrent=[populationLocalNative,totalofCurrentSecond];
% populationRecorder=[populationRecorder;populationCurrent];
end
plot(RecordLanguagespeaker(1,:),'-o','Linewidth',2);hold on;
plot(RecordLanguagespeaker(2,:),'-+','Linewidth',2);hold on;
plot(RecordLanguagespeaker(3,:),'-s','Linewidth',2);hold on;
plot(RecordLanguagespeaker(4,:),'-d','Linewidth',2);hold on;
plot(RecordLanguagespeaker(5,:),'-^','Linewidth',2);hold on;
plot(RecordLanguagespeaker(6,:),'-p','Linewidth',2);hold on;
plot(RecordLanguagespeaker(7,:),'-h','Linewidth',2);hold on;
plot(RecordLanguagespeaker(8,:),'-.','Linewidth',2);hold on;
plot(RecordLanguagespeaker(9,:),'-x','Linewidth',2);hold on;
plot(RecordLanguagespeaker(10,:),'-*','Linewidth',2);
hold on;
legend('Mandarin Chinese','Spanish','English','Hindustani','Arabic',...
'Bengali','Portuguese','Russian','Punjabi','Japanese');
xlabel('Year after 2018');
ylabel('Population/million');
grid on;
% bar(LocalNative)
% plot(RECORDLocalNative);
%stachbar . foreigner
% bar( (localFromNativecomponent),'stacked')
% xlabel('Region Number');
% ylabel('Population/million');
% legend('MandarinChinese','Spanish','English','Hindustani','Arabic',...
% 'Bengali','Portuguese','Russian','Punjabi','Japanese')
%
% {'MandarinChinese','Spanish','English','Hindustani','Arabic',...
% 'Bengali','Portuguese','Russian','Punjabi','Japanese'};
%
% for ii=1:n
% for jj=1:n
% glanceofWhole(ii,ii)=populationLocalNative(ii);
% glanceofWhole(ii,jj)=totalofCurrentSecond(jj);
% end
% end
% untitled3;
MCM2018_partial_Coding_B_H
猜你喜欢
转载自blog.csdn.net/weixin_39257042/article/details/80265202
今日推荐
周排行