2019年美国数学建模竞赛整理笔记

matplotlib,selenium库等

Posted by MetaNetworks on January 30, 2019
本页面总访问量

使用Matlab通过层次分析法求权重

Matlab代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
A=input('A=');
[n,n]=size(A);
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
m(1)=max(x(:,1));
y(:,1)=x(:,1);
x(:,2)=A*y(:,1);
m(2)=max(x(:,2));
y(:,2)=x(:,2)/m(2);
p=0.0001;i=2;k=abs(m(2)-m(1));
while  k>p
  i=i+1;
  x(:,i)=A*y(:,i-1);
  m(i)=max(x(:,i));
  y(:,i)=x(:,i)/m(i);
  k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
w=y(:,i)/a;
t=m(i);
disp(w);
CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 
1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];
CR=CI/RI(n);
if CR<0.10
    disp('CI=');disp(CI);
    disp('CR=');disp(CR);
end

Python的数学功能(numpy库)

导入python库

1
import numpy as np
  • np.array数组
  • np.mat矩阵

详细教程

使用Python实现Matlab中的plot等功能

导入python库

1
import matplotlib.pyplot as plt
  • 改变标签
1
2
3
plt.xlabel('x/m')
plt.ylabel('y/m')
plt.title('')
  • 图的绘制

    • 折线图,直线图

      • 1
        
        plt.plot(x,y)
        
    • 散点图

      • 1
        2
        
        plt.scatter(x,y,[c='',s=''])
        #c为颜色,s为半径(应该是),可以画实心圆
        

爬取网络工具产生的数据

想得到某种资源时,苦于没找到代码而无法本地运行,找到在线版工具又发现输入数据量太大…我们可以使用Python中的selenium测试库中的webdriver来自动调用浏览器(以Google Chrome为例),输入数据

在Python中导入相应的库(需要安装Chrome对应的ChromeDriver并配置环境变量,或在Chrome()括号中填写Driver位置

1
2
3
4
5
from selenium import webdriver
#调用Chrome
browser=webdriver.Chrome()
#让浏览器打开链接
browser.get(url)

导入后就可以正式进入自动操作啦~

  • 在网页中自动填写,获取输入输出数据

    • 通过查找页面中的xpath,调用find_elemnet_by_path.clear(),send_keys(),text,click()来清空,输入,获取内容,点击

      1
      
      browser.find_element_by_xpath('//*[@id="a0"]').xxx
      

其他参考:

  • Chrome WebDriver下载链接

  • Chrome新建一个新窗口

    • 调用脚本,通过浏览器的脚本打开

      1
      
      browser.execute_script('window.open("http://www.ambrsoft.com/TrigoCalc/Circles2/circle2intersection/CircleCircleIntersection.htm");')
      
  • Chrome切换测试窗口

    • 新建handle,通过handle是swith_to.window来实现

      1
      2
      
      handles=browser.window_handles
      browser.switch_to.window(handles[num])#num为浏览器第n个标签
      
  • Google地球可方便的作图,标记(太方便了!)