- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 566739 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175245
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
; f7 y+ F& j6 {% s- F【数学建模】数据处理问题
9 C' ?1 Q! I; l9 C一、插值与拟合 {$ z+ U# W% x4 I
& y; E0 n# @2 @1 Q6 _3 e常用于数据的补全以及趋势分析
P: X8 ]' F1 D( s {6 j% j8 P1 r
6 y8 ]5 V1 V1 \9 ?1、插值5 z" p; r' W/ V* Z- v9 C
" J" L; j8 n) N4 `3 b- ?. P- L
总的思想,就是利用函数f (x)若干已知点的函数值,求出适当的特定函数g(x)。这样f(x)其他未知点上的值,就可以用g(x)在这一点的值来近似。这种通过已知求未知的方法称为-----插值。
# f4 O7 N A' i8 E- x
& a6 x9 K0 B1 ]1 j* x插值方法有很多,个人感觉样条插值spline最常用吧。。。其他感觉要么复杂要么不靠谱。
/ r s1 X, ^; [6 {. k/ _/ s
- f9 F! e5 p' t( u- m) g( n对了,二维散乱插值有个方法叫v4,效果不错,拿来用就是了。。。! f. n/ y0 G; l
8 ~: Z7 o) y$ K( L2 W" [1 Q8 Q基本内容:* F5 y2 e3 B( j
* V8 C) g& M2 N7 g' X% A0 T
一维插值
9 a% o$ G; P+ X! C3 U$ A9 j8 i4 ?* y二维有序插值
8 ?" q6 R3 {! S% ^" h9 {二维散乱插值
0 v* E; w/ K! w, S) Y1 a基本语法:y = interp1(x0,y0,x,'spline'); %一维插值
6 t7 o' Z, f; ^9 g, w- W%x0必须单调;x要落在x0区间范围内;x指的是待求的值
7 z0 t0 U* b# o1 }, c& `
/ {+ w: p& A! h6 E. Z# S H% u2 I%示例
! `- D! z- C1 y+ c2 Qhours=1:12;9 z& e3 H% t2 C
temps=[5 8 9 15 25 29 31 30 22 25 27 24];! t' z/ X4 [9 j4 g: T( b. J
h=1:0.1:12;
: | x5 U) n# {( }% ct=interp1(hours,temps,h,'spline'); ) g. j; G5 Q' P( G k9 J i$ K6 x
. v( O: N8 O1 {" a
* @1 m, v" j7 ^# I' }9 ~' ny = interp2(x0,y0,z0,x,y,'spline'); %二维插值--规则点9 |! g. Y# J$ P3 r% v1 ]6 s
%x0,y0必须单调;x,y是一个是行向量一个是列向量;x,y要落在x0,y0区间范围内;(x,y)指的是待求的坐标- ?% g& U. v6 ]- E/ @) I3 H
' p- C K' [4 w3 l# C
%示例& f3 J% S1 p: r5 s3 s1 ]
x=1:5;% t, r$ M5 S; }7 P: l. f$ J0 j
y=1:3;
4 v0 Y, q5 q$ n! y Ctemps=[82 81 80 82 84;79 63 61 65 81;84 84 82 85 86];
' Y/ s3 `- m4 }! W1 m$ Txi=1:0.2:5;
* Q* F( [5 o! w, t$ }yi=1:0.2:3;
3 {2 ^) o( H/ v8 v% Y6 E* kzi=interp2(x,y,temps,xi',yi,'spline');
% ]" \) q5 r8 d+ j3 H% d
3 o9 T' ~" ?1 r. ^, ~" G- o
) c! ?1 U( r5 z+ H
2 F4 t% B+ ~& M2 \. c+ fy = interp2(x0,y0,z0,x,y,'v4'); %二维插值--散乱点
1 ]7 @, p% X- N/ ]5 B) Y8 g3 e# T
) P* b) N- B& M4 @" J" V%示例9 \4 N* z k1 s
x=[129.0 140.0 103.5 88.0 185.5 195.0 105.5 157.5 107.5 77.0 81.0 162.0 162.0 117.5 ];
& y W& o/ }3 b" R4 |! R( {& @y=[ 7.5 141.5 23.0 147.0 22.5 137.5 85.5 -6.5 -81 3.0 56.5 -66.5 84.0 -33.5 ];
/ E- H) q: y% J7 P% Lz=[ 4 8 6 8 6 8 8 9 9 8 8 9 4 9 ];" c; ?: ^% J1 o6 i) T
x1=75:1:200;
8 [5 a$ \& m6 cy1=-50:1:150;
- x% v# o: ^5 D. l+ m- p[x1,y1]=meshgrid(x1,y1);
: H$ H7 v- h; f% h$ O" I( H" {- gz1=griddata(x,y,z,x1,y1,'v4');" s. I! \: N4 w7 z
- w# Q9 W0 b4 V- n
& ^/ u! A2 u1 v2 p7 j2、拟合:9 E# G" ~, B) A% N. S1 S
! Y' i9 k0 C8 v& P总的的说,已知一组已知数据,寻求一个函数y = f (x),使 f (x)在某种准则下与所有数据点最为接近,即曲线拟合得最好。
( @- b+ y1 w4 g' _! ^# Q5 J按照函数的不同,可以将拟合问题进行分类。1 p" s% D- H) N
感觉多项式拟合比线性最小二乘法实用多了,就合并了吧23333# Y9 s) \8 Q- E7 l9 h0 m6 g& z$ e
6 U$ G3 Z+ @" j1 b
基本内容:$ X' r3 O: ]( n6 x
a=polyfit(x0,y0,m) %多项式拟合,线性最小二乘法就是使m=1* s' R/ z- C* G4 J0 W! [, \
%m是最高次项系数,a返回m+1维向量(还有一个常数项系数)
) J) o3 \" ?1 }1 r, Y- v8 z, I* v; I9 n# O+ h! s9 @$ T: C! z
%示例:
$ y4 k$ N5 h) C7 |9 r, Cx=[1 2 3 4 5 6 7 8 9];
, F# l! x; H& _+ L! _# dy=[9 7 6 3 -1 2 5 7 20];
; Y* G" u7 @9 t1 A8 ?, u0 Q7 mP=polyfit(x,y,3)
7 c. J5 R& A. T
; b0 f7 Y; K N1 o' j' l0 M( E) R
%指定函数拟合---看着头晕,贴一段代码要用直接调参就行" p: ]/ i2 ^6 ]3 `- F2 T' p- M
syms t;
" H( T- [( k: t" E; p# yx=[0 0.4 1.2 2 2.8 3.6 4.4 5.2 6 7.2 8 9.2 10.4 11.6 12.4 13.6 14.4 15];3 _- v6 @- H3 c; A" b$ u
y=[1 0.85 0.29 -0.27 -0.53 -0.4 -0.12 0.17 0.28 0.15 -0.03 -0.15 -0.071 0.059 0.08 0.032 -0.015 -0.02];
0 h( S# G* z5 G; R: if=fittype('a*cos(k*t)*exp(w*t)','independent','t','coefficients',{'a','k','w'}); %输入要拟合的函数,以及参数,自变量等,自定义拟合函数* i/ R4 t6 _1 l+ t. w
cfun=fit(x',y',f) %显示拟合后的结果
0 V7 p' f6 ^3 T o `' @* | u$ vxi=0:.1:20;
& G( @/ N2 N3 Myi=cfun(xi);
5 r" P; M' l. W3 w, v$ }/ E6 ^plot(x',y','r*',xi,yi,'b--');
- T% ^4 C7 u' `
" D; D+ j" I6 P; v- t1 X6 |( D7 o! N
区别:
% p) F/ `) f3 m) [* S/ `9 L1 C插值一般经过所有数据点,拟合不一定经过所有数据点$ }. Y7 ~6 c. H6 T
插值不一定得到近似函数的表达形式,仅找到未知点对应值。拟合要求得到一个具体的近似函数表达式。' j- Y2 J( B# P% r
通常建议:数据比较准确,用插值;数据误差较大,用拟合
$ U/ D$ G, g/ e7 c2 X# x. G* i参考资料:
3 H4 k' h+ s: h! x4 a3 c+ W7 v7 I& E. |, v
数学建模之拟合插值方法! g' [9 l% L3 N
数学建模-插值与拟合模型# H" d- ^6 T% _
数学建模常规算法:插值和拟合
9 m% z) N" ]7 g) R6 O4 k6 F. F# z7 A# v, {7 u+ @6 g
二、K-means聚类与高斯混合聚类
) W* e* `/ [% b1 w: Q; q1 @* n
/ t0 a- j4 ~$ J9 V常用于数据异常值诊断与剔除。
' N G7 R2 m- y通过聚类检测离群点,进而进行删除
: X/ b9 ~! z# `' k5 z' z0 }- l
; M8 S" H+ y: `. c1、 K-means聚类
! c/ x% H4 Y3 J+ t8 T p7 C7 V9 V& G) |- Y9 I5 Z& B
2、高斯混合聚类4 g7 T2 L+ i' Q; M7 n @
2 h' d u# [3 p- K7 n- S涉及到聚类的知识,怪复杂的,等学到聚类再写吧。。。% `7 i8 F* b9 Y# k8 |" q
三、主成分分析
3 o7 |. e" c2 _7 D
2 }, Q( f- I3 _: t3 T' f7 N常用于多维数据的降维,减少数据的冗余
3 b# c0 _) s. [, q) r; X% F, }* {8 s5 X
2 }+ G2 m( t% [' H主成分分析(PCA), 用于将多个变量通过线性变换以选出较少个数重要变量。' A x7 J& N) F2 s" G
d3 z4 C5 c+ ^$ x$ _' u. c; P4 p( E主成分与原始变量之间的关系:
8 X( J; G. M" R+ z8 Q7 o2 _2 o3 j: P8 |* |, o' D+ S$ a, k9 \2 M0 d
(1)主成分保留了原始变量绝大多数信息。
) a; T2 p O& s: z
/ N% b9 P0 _4 r4 v. L! i (2)主成分的个数大大少于原始变量的数目。
4 S5 F0 b, k8 Y! F$ I/ {
" Z# }9 b$ H# F0 m! j+ O( R7 { (3)每个主成分都是原始变量的线性组合。" X/ C" G. ]4 r7 c' C
9 _9 G, m) |# D4 [- ~, h
(4)每个主成分的贡献率不同。
- C* v: @, j9 @, x6 }( s* ^6 z! M. M9 `) E
(5)各个主成分之间互不相关。
+ p! H2 B4 U4 n: G# n4 k- f- {0 J% A) A; u
处理步骤:
3 w, V, x* l; H+ q. }( g
2 ?8 y( N) k. ~, x2 D9 l& @数据标准化
% }. b* ^( W' Q计算相关系数矩阵
! y7 ^+ [- h+ H( g/ [" a8 p( n计算特征值与特征向量
) [1 ]# O- u% ~6 }, c0 w求出贡献率与累计贡献率(一般累计贡献率达到85%即可)9 e# x7 l0 r Q
计算主成分载荷(即线性系数)与主成分得分7 D4 ]! _- h+ U a( u
代码:
0 |" D/ a p$ i, y+ i9 X2 c, L%示例:%示例:
" v1 O8 a: k1 ~+ T4 uda=xlsread('data.xlsx');' b- G/ a* E' \/ W
%%标准化矩阵
6 J: e M2 m8 v0 F. \' @da=zscore(da);) h2 t, z4 ~$ b9 O. v8 z6 _
fprintf('相关系数矩阵:\n') & Y. F6 p* \7 W
std=corrcoef(da) %计算相关系数矩阵
* k. V3 w- e& N% G9 k& e! {[vec,val]=eig(std); %求特征值(val)及特征向量(vec) 7 H; {( c* `1 _% e, `1 A/ c0 C
newval=diag(val) ;
r1 Q8 D) t4 S9 a[y,i]=sort(newval) ; %对特征根进行排序,y 为排序结果,i 为索引 7 w, |# q( P! b/ F7 L( I8 ~9 T
fprintf('特征根排序:\n')( _: l+ Z$ d' ]' p
for z=1:length(y) 5 ?" U- y3 N, j* R
newy(z)=y(length(y)+1-z); - |6 R2 D3 d2 I! p2 c; I1 S0 C1 g/ A
end R1 O4 P/ q- d6 C' J; X# x
fprintf('%g\n',newy) %%显示特征根
9 i: l( c( w0 K; V- |1 Zrate=y/sum(y); 9 k# t" c$ f6 s) x6 ?9 o
fprintf('贡献率:\n') & S( o% J6 P# a: X; Q# z3 Z* V
newrate=newy/sum(newy) ! K* ?6 A- e/ w4 l& E3 l8 x
sumrate=0; 9 i: h# c1 w V' A
newi=[]; & O( s0 R* E ~& m- n/ B* g
for k=length(y):-1:1 * B' b+ x g0 R1 X& T
sumrate=sumrate+rate(k);
1 Z7 K& u. u* ^# @ newi(length(y)+1-k)=i(k); 3 I! Q3 t. n) k8 R+ l7 x2 J
if sumrate>0.85 %记下累积贡献率大于85%的特征值的序号放入 newi 中
( e7 e m* c& n2 n6 a break;
) d! A1 H9 Z8 w; l( k# `" h end1 x1 P3 o& }+ m9 {
end
9 F! E0 b7 W- A3 `9 c/ ffprintf('主成分数:%g\n\n',length(newi)); ' s" O' _1 t& B" {3 `
for p=1:length(newi) 5 X+ Y) {' a+ E* S
for q=1:length(y) # G+ k- `3 A6 H1 k3 J$ l! d
vector2(q,p)=sqrt(newval(newi(p)))*vec(q,newi(p));%%%主成分载荷 6 \9 s# K# G7 e3 H* W
end: S1 J- w5 h7 d( s% d" i
end
" n9 t5 i& v* Rfprintf('显示载荷:\n');
$ v; H6 o/ V& ?0 hdisp(vector2); %显示载荷 %%%求各主成分得分 % @# e6 [/ p/ _1 s
sco=da*vector2; % L% d8 @4 K* e' f& o1 [8 j
csum=sum(sco,2);
- _& y& D. B/ ? I! x9 d[newcsum,i]=sort(-1*csum);
- R$ q/ i4 Y1 \! N2 X1 s[newi,j]=sort(i);
7 h# L* {2 v+ U9 H' B, Z" Z# ]3 Gfprintf('计算得分:\n') %得分矩阵:sco 为各主成分得分;csum 为综合得分;j 为排序结果
7 g# y) t% F! ?, E' ?' _4 sscore=[sco,csum,j]7 `4 O7 p) Q% j1 x2 `' p9 d
. r; s6 P9 R- k3 U4 G6 O参考资料:
" N, R. j) s5 m7 N3 |1 F! P关于主成分分析matlab代码实现的总结
; O3 O! x$ i9 x# \3 x数学建模算法笔记(2)——主成分分析( K: c+ \4 P# @) _7 W; \) v
数学建模之主成分分析matlab3 p* m2 W9 ^* F* C
数学建模之主成分分析法
3 ?0 A8 D# t) d5 Y# Z, R
, d# [4 E! z8 o, E* E四、方差分析与协方差分析
& K$ b& n" g- e* o# G( g% A' R% t3 r5 A1 L
常用于数据截取与特征选择。通俗的来说,就是判断某个特征对结果对影响是否显著。
& v% J4 c" z- W1 z2 E' s* c
' l( Z6 n1 x" T% c3 W1、方差分析5 P2 l; ` {/ S" Q4 D, S
! x/ e' z1 w; H4 C- H0 H(1)单因素方差分析$ Q) p; d+ y, u) x2 [# P- J
: V/ Q% @1 g+ _& J* j
维持其他因素保持不变,仅仅对一个因素进行考虑并计算方差,这称为单因素方差分析。. k! J* N: M; z1 A; w$ M; G& r2 f
% d& \" V4 y# i" {" f数据集分为均衡数据(各组数据个数相等)与非均衡数据(各组数据个数不等)。1 H" D: U/ d ?. o$ s
%均衡数据
; s0 w4 L5 a7 F; |) [" K# `) Mp=anova1(x) %p是一个概率;x每一行代表不同样本,每一列代表特征中的不同序号
# D! d/ k5 ~1 x( l; {3 G0 r
, {/ r8 U( K& s6 m0 {3 i9 t, n; ^%示例3 J9 w# [! c+ M7 X
x=[162 158 146 1508 g2 Z& y V+ S- l: k9 ?
167 160 154 155
+ \' [0 X7 n% ~# v5 C+ t. c9 V6 c170 164 162 1618 n# x; ^% C4 M8 J
175 172 168 180];
7 P. O/ n9 `5 B/ e# g' j9 P5 x' H$ l! N; a; y) ?
p=anova1(x)
! E7 p4 M1 S3 P0 Q
7 |( v4 b% k4 V H2 @3 U' p4 S9 X: D; a* l
: D* D, J0 e; t% M5 Y' x求得 p=0.1109>0.05,所以几种工艺制成的灯泡寿命没有显著差异
2 c. X7 r/ d; i1 z
, X9 l5 \) k, V9 v4 A' e; ^; R5 B%非均衡数据
2 a6 e1 Q/ W" K2 ?p=anova1(x,group) %x为向量,从第1组到第r组数据依次排列;roup为与x同长度的向量,标志x中数据的组别(在于x第i组数据相对应的位置出输入整数i)
! e: P+ W [4 r+ M" I P( W( Q T& k8 Z2 T
%示例 a `! q% r" N6 T2 H7 d
x=[1620 1580 1460 1500
0 L4 m( P+ u B2 ?; k1670 1600 1540 1550
: \' s: k; m1 s% E1700 1640 1620 1610 j3 c8 y- Y" Q! g/ D3 Q
1750 1720 1680 1800];3 O; i0 r+ o+ n4 t7 T, A9 N" D
x=[x(1:4),x(16),x(5:8),x(9:11),x(12:15)];/ w6 d- W3 `- v0 ]
g=[ones(1,5),2*ones(1,4),3*ones(1,3),4*ones(1,4)];
9 Z4 Y8 Q) i1 _! q4 a6 wp=anova1(x,g)
1 F8 W+ k; o& b3 f# z8 N
6 Q% m+ H7 u7 F0 a( u/ s# a
q3 \" J; F! v求得 0.01<p=0.0331<0.05,所以几种工艺制成的灯泡寿命有显著差异 单因素方差分析结果对应一般如下(单因素显著性水平取0.05):
* w- U% r% ^( w! h* Q$ |# q$ ^6 n' ]) x& r6 P
p值结果
" `9 X1 z! @" o% V4 o- [p<0.01非常显著% P0 _1 H0 I# U7 s G x/ b' L
0.01<p<0.05显著
! D* y( V% e: R1 K8 xp>0.05不显著
# `' l2 ]% e4 T r(2)双因素方差分析
9 U; q( u, ~0 h
' O W8 r8 j G' d. u2 d0 x与单因素方差分析类似,这次我们探究两个因素。对两个因素的实验可能进行一次,或者很多次。& y. s% ]9 s$ M! L O+ a
! X& O: x' | s, N单一观测值:8 X* V6 P+ P: n( E+ B* [
p=anova2(x) %x不同列的数据表示单一因素的变化情况,不同行中的数据表示另一因素的变化情况
" L; Q! G6 n. \3 I8 G1 D$ x4 j. t) p
?# t! P* H V3 j. w3 I- p7 R%示例6 V/ D% I$ K7 d! r3 ]+ F
x=[58.2 56.2 65.3
& `" |% P" U5 r' i49.1 54.1 51.6
5 h- S2 @0 h$ a60.1 70.9 39.27 C; F V7 g3 [$ b
75.8 58.2 48.7];1 \7 }# F7 H4 [
[p,t,st]=anova2(x)7 p4 b& h0 u {
& o7 z( J" @# N7 A+ y* f
2 E' U/ u) l6 ?求得p=0.4491 0.7387,均>0.10,表明两个特征不同数据之间的差异对于结果无显著影响。6 C; W5 V9 r: U& j' v9 ~% ~& G- K( Z
7 [ G9 T0 j& @# o
多观测值:/ P# Z9 [/ j: n3 A( q4 C$ [
p=anova2(x,reps) %如果每一“单元”有不止一个观测值,则用参数reps来表明每个“单元”多个观测值的不同标号,即reps给出重复试验的次数t( j, c* h0 g4 U( |& X0 g1 P
( ^( R( O( m/ k( i3 A3 ?/ {' N
%示例7 M+ ]( P# \1 g ^6 F0 ?6 Q! I
x0=[58.2 52.6 56.2 41.2 65.3 60.8
( u7 g6 @" s1 k6 k0 @9 ~" D49.1 42.8 54.1 50.5 51.6 48.4! K) h% `% L3 t7 L/ M, {% R
60.1 58.3 70.9 73.2 39.2 40.7
2 A& C; v/ n; U6 ~# i+ O+ v75.8 71.5 58.2 51.0 48.7 41.4];9 J+ }! S3 T* X, `4 s
x=x0';
0 v4 c) @6 `- ~# V0 _8 m L[p,t,st]=anova2(x,2)
( i0 f! s& ^ k' X8 A1 b& s
( u) B2 {2 D4 v& y
0 M* L& q4 j/ v$ A0 G1 c5 q求得p = 0.0035 0.0260 0.0001,其中第三个参数表明两个特征联合作用下对结果的影响。结果表明,这两个特征的影响均是显著的。
3 _* M4 `; O* C9 a
. e& B- Q8 w) P. A g8 H值得注意的是,上式使用转置,保证x的形式如下图所示(需要注意行列分别代表的含义):8 S+ \4 ?; k1 F/ {
![]()
K1 o( Q! n) @, T8 F其中,一二维代表特征维,第三维代表样本维。( G5 P$ e* C, i$ Y$ K. X7 G) W0 z
2 J) g& `( O7 E& m3 E3 g/ a
(3)多因素方差分析
" M/ h% e% Z; N3 Q5 S
C7 H2 @7 w+ Y6 I) j4 _这里用到了正交表的处理方法,我们直接使用anovan函数:* V. o) Q6 g, {4 i* H2 o6 H
7 V7 A/ K& T* {2 |0 h3 z0 f![]()
$ [ Y6 ^) S4 R& j: c其中,特征样本不同的取值用特征水平1,2,3…来替代。+ j" e) A: u" h! G6 [
j4 ?+ P* M) a0 ^/ J/ ?! b/ q @
最后,双因素与多因素方差分析结果对应一般如下(双因素与多因素显著性水平取0.10):
* d7 {* B! _6 {% v( H' fp值结果
2 O/ A4 Y- S/ J3 gp<0.01非常显著/ |4 x. M9 R3 D$ d8 S( ^+ q
0.01<p<0.10显著% ^9 j, ~+ F9 M3 j. T
p>0.10不显著' c3 ^) u' K) W+ m! c; m
) E3 X$ q% P* z4 S2、协方差分析
6 O6 H& @: H* o' |& W
+ ~% n6 B! h9 D, h( x对于特定的特征,为了寻找那些样本之间差异较大,运用协方差分析。7 `6 P* D% k, X
s- c8 f1 n3 @. \& k% B& w
在进行完方差分析的基础上,进行协方差分析。
$ Q9 I- V/ B: W%分析列
" E1 Y+ ~4 i( Q A+ k ]COMPARISON = multcompare(st,'alpha',0.05, 'estimate','column'), |1 f ]; I* I, {' J& E/ I$ g
%分析行
6 G3 y1 B8 w! ?COMPARISON = multcompare(st,'alpha',0.05, 'estimate','row')
; ?2 F, e0 c) ^- Y: U+ M/ \6 O' [# ]! _4 l* u
" Z( f( _ @- r$ Q# x/ E" ]
参考资料:
! f+ |* w3 A- m3 d数学建模常用模型19 :方差分析2 v0 f/ l1 l: W3 R4 W; X' _
数学建模之方差分析
+ U' v- x `; r% s————————————————7 ~+ D# l! i- h4 F; y8 o6 {- g
原文链接:https://blog.csdn.net/soviet1941/article/details/104120359
- G& `. I/ j2 c2 [5 P! q. G3 r3 r, Z* ?. c
4 p3 c" K+ ?4 d9 D# f |
zan
|