三方演化博弈复制动态方程matlab仿真(输入参数较多时)——matlab2016a版本
生活随笔
收集整理的這篇文章主要介紹了
三方演化博弈复制动态方程matlab仿真(输入参数较多时)——matlab2016a版本
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
%作者:應該就我叫測差
%鏈接:https://zhuanlan.zhihu.com/p/363605531
%來源:知乎
%著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
1、function函數聲明
function dydt=yaopin(t,y,rp,cph,cpl,cp,bt,fp,mp,ct,ft,mt,cg,tg) dydt=zeros(3,1); dydt(1)=y(1)*(y(1)-1)*(cph-cpl-cp-bt-y(2)*(rp-bt)-y(3)*(fp+mp)); dydt(2)=y(2)*(y(2)-1)*((1-y(1))*(bt-mt)-(ft+mt)*y(3)-ct); dydt(3)=y(3)*(y(3)-1)*(cg-fp-ft-tg+(mp+fp+tg)*y(1)+(mt+ft+tg)*y(2)-tg*y(1)*y(2)); end保存為yaopi.m文件
2.新建腳本文件
%作者:應該就我叫測差 %鏈接:https://zhuanlan.zhihu.com/p/363605531 %來源:知乎 %著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。%% 畫圖1中大圖案“紅+”的線 rp=100; cph=85,cpl=0,cp=10,bt=40,fp=40,mp=20,ct=10,ft=20,mt=15,cg=15,tg=40; %參數設置(輸入):function dydt=yaopin(t,y,rp,cph,cpl,cp,bt,fp,mp,ct,ft,mt,cg,tg) for i=0.2figure(1)%set(0,'defaultfigurecolor','w') %將圖1的背景色設置為白色,此處試驗過,背景色沒有改變。因此更改為whitebg('blac')whitebg('black') %自己不需要可以修改成white[t,y]=ode45(@(t,y) yaopin(t,y,rp,cph,cpl,cp,bt,fp,mp,ct,ft,mt,cg,tg),[0 50],[i 0.2 0.2]);%ode45():求解微分方程的函數;@(t,y) yaopin(t,y,rp,cph,cpl,cp,bt,fp,mp,ct,ft,mt,cg,tg):函數句柄調用;[0 50]:表示t的范圍;[i 0.2 0.2]:i指的是x,第一個0.2指的是y的值,第二個0.2指的是z的值plot3(y(:,1),y(:,2),y(:,3),'r+','linewidth',1);hold on end %% 畫圖1中“藍-”的線 rp=150; cph=85,cpl=0,cp=10,bt=40,fp=40,mp=20,ct=10,ft=20,mt=15,cg=15,tg=40; for j=0.2[t,y]=ode45(@(t,y) yaopin(t,y,rp,cph,cpl,cp,bt,fp,mp,ct,ft,mt,cg,tg),[0 50],[0.2 j 0.2]);plot3(y(:,1),y(:,2),y(:,3),'b-','linewidth',1);hold on end %% 畫圖1中“綠--”的線 rp=200; cph=85,cpl=0,cp=10,bt=40,fp=40,mp=20,ct=10,ft=20,mt=15,cg=15,tg=40; for k=0.2[t,y]=ode45(@(t,y) yaopin(t,y,rp,cph,cpl,cp,bt,fp,mp,ct,ft,mt,cg,tg),[0 50],[0.2 0.2 k]);plot3(y(:,1),y(:,2),y(:,3),'g--','linewidth',1);axis([0 1 0 1 0 1]) %坐標軸x,y,z的控制范圍set(gca,'XTick',[0:0.2:1],'YTick',[0:0.2:1],'ZTick',[0:0.2:1])xlabel('x');ylabel('y');zlabel('z','Rotation',360,'position',[-0.1 1 1.1]);grid onhold on legend({'Rp=100','Rp=150','Rp=200'},'location','northeast');title('圖 5 藥品銷售收入的影響','FontWeight','bold','position',[0 0 -0.2]); end%% 畫圖1中小圖案的線 axes('position',[0.13 0.32 0.2 0.2]); %axis off grid on hold on rp=100,cph=85,cpl=0,cp=10,bt=40,fp=40,mp=20,ct=10,ft=20,mt=15,cg=15,tg=40; for i=0.2figure(1)set(0,'defaultfigurecolor','w')[t,y]=ode45(@(t,y) yaopin(t,y,rp,cph,cpl,cp,bt,fp,mp,ct,ft,mt,cg,tg),[0 50],[i 0.2 0.2]);plot3(y(:,1),y(:,2),y(:,3),'r+','linewidth',1);hold on end rp=150,cph=85,cpl=0,cp=10,bt=40,fp=40,mp=20,ct=10,ft=20,mt=15,cg=15,tg=40; for j=0.2[t,y]=ode45(@(t,y) yaopin(t,y,rp,cph,cpl,cp,bt,fp,mp,ct,ft,mt,cg,tg),[0 50],[0.2 j 0.2]);plot3(y(:,1),y(:,2),y(:,3),'b-','linewidth',1);hold on end rp=200,cph=85,cpl=0,cp=10,bt=40,fp=40,mp=20,ct=10,ft=20,mt=15,cg=15,tg=40; for k=0.2[t,y]=ode45(@(t,y) yaopin(t,y,rp,cph,cpl,cp,bt,fp,mp,ct,ft,mt,cg,tg),[0 50],[0.2 0.2 k]);plot3(y(:,1),y(:,2),y(:,3),'g--','linewidth',1);axis([0 1 0 1 0 1])set(gca,'XTick',[0:0.2:1],'YTick',[0:0.2:1],'ZTick',[0:0.2:1])xlabel('x');ylabel('y');zlabel('z','Rotation',360);grid onhold on end view([0 0]); xlim([0 1]);ylim([0 1]); set(gca,'XTickLabel','','YTickLabel','','ZTickLabel','') xlabel('x','position',[0.8 0.4 0.3]) %ylabel('y','position',[0.8 0.4 0.3],'Rotation',360) zlabel('z','position',[0.1 0.8 0.8],'Rotation',360) hold on %% 3D圖 clear; rp=150,cph=85,cpl=0,cp=10,bt=40,fp=40,mp=20,ct=10,ft=20,mt=15,cg=15,tg=40; for i=0.1:0.2:1for j=0.1:0.2:1for k=0.1:0.2:1 [t,y]=ode45(@(t,y) yaopin(t,y,rp,cph,cpl,cp,bt,fp,mp,ct,ft,mt,cg,tg),[0 50],[i j k]);figure(2)grid onplot3(y(:,1),y(:,2),y(:,3),'linewidth',1);set(gca,'XTick',[0:0.2:1],'YTick',[0:0.2:1],'ZTick',[0:0.2:1])hold onaxis([0 1 0 1 0 1])view([45 10])endend end xlabel('x','Rotation',0); ylabel('y','Rotation',0); zlabel('z','Rotation',360,'position',[0 0 1.05]); title('圖 11 數組1演化50次結果','FontWeight','bold','position',[1 0 -0.13]);保存為yaopinsanshitu.m文件
3、run出圖形
總結
以上是生活随笔為你收集整理的三方演化博弈复制动态方程matlab仿真(输入参数较多时)——matlab2016a版本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(3086):vue+eleme
- 下一篇: Taro+react开发(10)--多行