是否可以通过编程学习数学,还是应该学习编程数学?[关闭]


10

我在数学上不是最好的,也不是很恐怖,但是比一般人要低,我一直想提高自己的数学水平,但是学校和书本却没能做好,因为我觉得太无聊了。我唯一不会感到无聊的是编码和游戏,所以我认为如果编写一个解决数学问题的程序可以帮助我更好地理解数学,这些问题中的大多数是极限(微积分),函数,微分微积分和其他一些主题(我已经说的不太好)与前面提到的类似。

我的问题是:如果我进行一些特定的程序编码,我是否能够在数学上获得更好的知识,并且如果可能的话,物理学也可以这样做吗?还是我做错了,应该在编程之前学习数学以帮助改善编码?

PS:C ++是首选语言。


5
它对我来说反过来起作用。我学习了计算机编程,以帮助我更好地完成研究生水平的统计课。我发现我比编程更喜欢编程,并且改变了我的职业方向。
jfrankcarr 2012年



主席先生,没有通往数学的皇家之路。
卡尔,

Answers:


16

如果您实际使用编程来解决数学和物理问题,那么您只会从编程中学习数学或物理学,尽管像Haskell这样的功能语言中的概念非常“数学”。我建议去像Kahn AcademyEuler项目这样的网站。使用代码解决那里的问题,您将同时提高编码技能和数学技能。


5
两种资源+1。不过,我确实不得不说,我第一次讨厌微积分。也从来没有做得很好。自从学习Lisp以来,这才有意义。也很有趣。
杰森·刘易斯

1
如果您想尝试一下Haskell,可以阅读“ Haskell通往逻辑,数学和编程的道路”:这本书教Haskell做数学,并介绍了所有数学概念。但是,它侧重于数学逻辑,数论和一些基本代数。如果您设法完成所有其他工作,则只会在最后提到微积分。
Vincent Zoonekynd 2012年

我还建议使用特殊的CAS语言,例如Mathematica(价格昂贵!),Maxima或Axiom(免费)。一旦您有了术语重写,规则和策略的想法,整个数学就会变得有意义。
SK-logic

我个人发现可汗学院在填补我的数学知识方面非常有帮助。
jonners99

@Jason Lewis-如果您的问题是教学风格而不是教材,并且您想要完整的课程,那么我的MIT OpenCourseware课程非常适合许多数学主题,包括微积分和线性代数。但是,仅修改一个特定主题不切实际。我特别喜欢线性代数课程。MIT OpenCourseware当然对于某些计算机科学主题也非常有用-尤其是两个算法和数据结构课程。从来没有比现在更好的时机,以自己的步调来学习优质的免费教材。
2013年

5

显然,您应该通过编程学习数学。如果您尝试模拟物理对象,则需要学习各种物理和数学,并且会喜欢它。


4

这是我的看法

编程将帮助您测试知识

当我在高中和中学时,我会为计算器编程以为我做单调的数学。有人声称这是作弊行为,但我一直争辩说,如果我不真正理解数学,就无法编写程序。

例如,假设您要创建一个小程序来计算勾股定理中给定A和B的C值。我们该怎么做呢?好吧,我们知道:

A^2 + B^2 = C^2

因此,要解决C,我们有:

C = SQRT(A^2 + B^2)

因此,该程序可能类似于(假设适当的头文件,这是一个简单的示例):

cout << "Enter value for A: " 
cin << valA;
cout << "Enter value for B: "
cin << valB;

float valC = sqrt(pow(valA, 2) + pow(valB, 2))
cout << "C = " << valC << "\n";

然而...

您在哪里以及如何获得所说的知识?

在前面的示例中,我们需要知道如何在方程式中求解C A^2 + B^2 = C^2.如果我们不知道对两边都平方根就可以找到C,那么如何解决这个问题呢?

IMO,它可以归结为:编程不会绝对地教您数学,但会提高您掌握的技能。


是的,我理解了我的观点,根据你的回答,我将在解决编程问题时学习数学,但是如果没有知识,我将无法解决它们,因此我必须寻找解决方案,是什么会教我数学...
SAFAD 2012年

2

SICP本书对数学非常好的部分。但是我建议您至少尝试线性代数,离散数学和微积分,如果您仅从编写程序中学习,则您的学习可能会很深入,但不会很广泛。


2

我认为他们齐头并进。扎实的数学技术基础将为您提供编程方面的其他选择,同时,编程可以开辟有趣的数学学习途径。

我最近开始使用wxMaxima,它是出色的开源Maxima计算机代数系统(又名CAS,如商业MapleMathematica系统)的漂亮图形前端。

它本身不会教给您任何关于数学的知识,但是它无疑会使玩数学变得更有趣和更有趣,这本身就可以鼓励您学习更多。


2

您不需要太多的数学知识即可进行“编程”。

您需要数学才能掌握“计算机科学”。

如果您打算对所有内容使用预先存在的库解决方案,那么您可能不在乎它们如何工作。但是,如果您打算制作自己的算法和数据结构,那么您将需要了解数学,因为CS很大程度上基于数学。


1

如果您对从事AI,数据处理,物理模拟或图形感兴趣,那么您需要数学。相反,如果您不是,那么我认为您不是。无论是使用它还是丢失它,如果您不想在法国生活,为什么还要学习法语?有很多问题域只需要条件逻辑。

话虽这么说,对数学的编程还是有一种自然的倾向,除了对它有所了解之外,它对您无济于事。


1

看一下matlab。它是一种设计用于在代码中执行数学功能的语言。

一种数值计算环境和第四代编程语言 ... MATLAB允许矩阵处理,函数和数据绘制,算法实现,用户界面创建以及与用其他语言编写的程序进行接口...

尽管MATLAB主要用于数值计算,但是可选工具箱使用MuPAD符号引擎,允许访问符号计算功能。Simulink附加软件包为动态和嵌入式系统添加了图形化多域仿真和基于模型的设计...


只有在程序员事先具有良好的数学知识并且仅限于一定的数学领域时,matlab才是有益的。
wirrbel

1

数学是一门具有广泛领域的科学。有不同种类的数学完全没有任何共同点(除了数学以外)。

现在,编程通常与数学相关联,因为计算机会进行计算和计算,最根本的是,它们会以离散步骤使用整数或浮点数据类型来执行此操作。

通过在程序中“近似”数学,您可以通过编程来学习数学领域。假设您研究微积分并计算小间隔的数值,从而“模拟”“纯”数学的极限。

编程的其他方面很容易映射到数学(可能不是您的中学数学课的一部分,但仍然是有价值的数学,而这并不是传统课程的一部分)。例如类型理论-或数学归纳法。

例如,推论代码“正确性”的唯一途径通常是数学归纳法。可以在功能语言(递归等)中看到这种推理。

也就是说,有许多方法可以在编程时学习数学,但是并不是所有的数学都可以在我们的计算机和编程语言的计算模型中轻松实现。


0

我找不到博客条目,但我想起了一个在泡沫破灭前的早期时代(“ 01-ish之前”)的设计师“类型”,他在博客中写道,通过成为网络开发人员发现对数学的热爱,并意识到自己是即使他在高中时总是惨败,并且认为自己不是一个会擅长数学,然后将自己钉为艺术风格的人,实际上他还是很擅长的。

不,不是我。我只是懒惰。我偶尔需要重新学习触发,仅此而已。

IMO,您可以在不具备大量数学知识的情况下编写许多体面的代码,直到基本上不能这样做为止。

但是,编程可以为对自己有一定兴趣的任何人做的事情,是帮助您摆脱关于自己是这种人还是那种人的想法,并为您提供所需的工具,让他们尝试一些东西找出自己的兴趣将使您在特定的研究领域走多远。

当然,我们正在做的所有事情都与数学紧密联系在一起,因此您可能会发现,当您做诸如了解反向求和的东西所涉及的一切之类的东西时,已经学到了比想象中要多的东西。


0

另一种选择是使用的编程到你的爱推动你的愿望,学习数学。如果您要解决特定问题并希望将其应用到任何事物上,那么几乎所有内容都将变得易于学习,数学也不例外。您只需要找出您感兴趣的数学繁重的编程问题,并将其用作学习相关数学的理由即可。学习线性代数,以便您可以玩图形游戏,或者图像处理/计算机视觉类型的东西的概率和统计信息。

我认为您的学习进度会有所不同,因为不同的人有不同的学习方法,但是坐下来以抽象的方式学习数学对我来说从来没有用过。


-2

好吧,您可以要求学生解决一些几何问题,例如用Scratch绘制正方形,五边形,六边形和圆形。挑战他们开发解决方案,不要回答他们如何编码的问题。让他们探索和测试解决方案。至少您可以问诸如多边形中的角度之和之类的问题。然后他们可以构建算法和自己的类别。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.