编程题汇总1

1.推导最小二乘法公式,并且通过几何来解释意义。

最小二乘公式寻找一条线性直线,该直线使得观测到的残差平方和最小。设 (xi,yi)D , D 是样本集,设样本集大小为n,则想寻找a和b使得
Loss=12ni=1(yi(axi+b))2 ——(1)
最小,则让 Loss a b求偏导有
Lossa=0 ——(2)
Lossb=0 ——(3)
代入loss有
ni=1(yi(axi+b))xi=0 ——(4)
ni=1(yi(axi+b))=0 ——(5)
由(5)式可得,( ni=1 简化为 )
b=yiaxin ——(6)
(6)式带回(4)式得到
yixi(axi+b)xi=0
yixiax2ibxi=0
yixiax2iyiaxinxi=0
nyixianx2i(yiaxi)xi=0
nyixianx2iyixiaxixi=0
a=nxiyiyixinx2i(xi)2 ——(7)
(7)式带回(6)式
b=1n(yinxiyiyixinx2i(xi)2xi)
b=1n(nyix2iyi(xi)2nxiyixi+yi(xi)2nx2i(xi)2)
b=(yix2ixiyixinx2i(xi)2) ——(8)
几何意义,见下图
这里写图片描述
几何解释就是求一条直线,使得 y 方向的偏差和最小


2.动态规划问题. 青蛙爬井问题(1):已知一个井高10米,青蛙可以选择跳1米或者跳3米。
1)问一共有多少种跳法
f(n)函数为青蛙面对一个n米高的井的跳法总数。则
f(n)=f(n1)+f(n3) ——(1)

f(1)=1
f(2)=1
f(3)=2
以此类推
f(4)=f(1)+f(3)=3
f(5)=f(2)+f(4)=4
f(6)=f(3)+f(5)=6
f(7)=f(4)+f(6)=9
f(8)=f(5)+f(7)=13
f(9)=f(6)+f(8)=19
f(10)=f(7)+f(9)=28
2) 求通项公式
可以将递推公式(1)写成
f(n)=f(n1)+f(n3)
[f(n),f(n1),f(n2)]=110001100f(n1)f(n2)f(n3) ——(2)

A=110001100

[f(n),f(n1),f(n2)]=An3f(3)f(2)f(1)=An3211 ——(3)
把矩阵 A 对角化有
A=VDV1 ——(4)
[f(n),f(n1),f(n2)]=VDn3V1211 ——(5)
这一步太难算了,我用matlab偷懒了一下

[V, D] = eig(A)

D =

1.4656 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i -0.2328 + 0.7926i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i -0.2328 - 0.7926i
V =

-0.7710 + 0.0000i 0.3916 + 0.2518i 0.3916 - 0.2518i
-0.5261 + 0.0000i 0.1588 - 0.5408i 0.1588 + 0.5408i
-0.3589 + 0.0000i -0.6823 + 0.0000i -0.6823 + 0.0000i
验证 n=10事是否正确。 A7=VD7V1=
9.0000 - 0.0000i 4.0000 + 0.0000i 6.0000 + 0.0000i
6.0000 + 0.0000i 3.0000 - 0.0000i 4.0000 + 0.0000i
4.0000 - 0.0000i 2.0000 + 0.0000i 3.0000 - 0.0000i

f(n)=9×2+4×1+6×1=28


3.动态规划问题. 青蛙爬井问题(2)已知一个井高n米,青蛙可以选择跳1米或者跳2米。(题目几乎一样)
f(n)=f(n1)+f(n2)
f(2)=2
f(1)=1

这类似是斐波那契数列了
特征方程为
x2=x+1
特征根为
x1=1+52
x2=152

f(x)=c1xn1+c2xn2 ——(1)

f(2)=2
f(1)=1
得到
c1=12(1+15)
c2=12(115)
c1 , c2 , x1 , x2 带回(1)式即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值