MCM2018_partial_Coding_B_H

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;



猜你喜欢

转载自blog.csdn.net/weixin_39257042/article/details/80265202
今日推荐