文章18
标签11
分类5

我们搬家了!

请访问我们的新地址:New Blog

新博客采用静态框架Hugo,部署在Cloudflare Pages上,应该能有效提升服务质量。计划是把rhx0820.xyz, www.rhx0820.xyz变成个人主页。

关于数值积分方法为什么有时候被叫做“Quadrature”,大模型这么说

“Quadrature”(通常翻译成求积)并不完全等同于“Integral”这个术语在现代数学语言中的用法。以下是详细解释:

积分:这个概念指的是寻找曲线下的面积、表面下的体积,或者更广泛地,一个区间内数量的累积。Quadrature:这个术语与寻找一个正方形的面积历史上有关。"Quad"与“四”相关,平方某个数就是求其面积。在早期数学中,求解曲线下面积(积分的核心概念之一)涉及到用正方形或矩形来逼近,这个过程被称为求积。随着时间的推移,积分概念变得更加广泛,但“Quadrature”这个术语在某些情境下仍然保留下来:

数值求积(Numerical Quadrature):这指的是使用数值方法近似计算积分的特定技术,比如将曲线下的面积划分成矩形并求和它们的面积。因此,“Quadrature”更像是一种执行积分的特定方式(通过方块逼近),而不是整个概念的完美同义词。

在现代数学课程中,你可能会比“Quadrature”更频繁地遇到“Integral”。

原文:

"Quadrature" isn't quite a perfect synonym for "integral" in today's mathematical language. Here's the breakdown:
Integral: This refers to the general concept of finding the area under a curve, the volume under a surface, or more generally, the accumulation of a quantity over an interval. Quadrature: This term has a historical connection to finding the area of a square. "Quad" relates to "four," and squaring something is finding its area. In early mathematics, finding the area under a curve (a core concept of integration) involved approximating it with squares or rectangles. This process was called quadrature. Over time, the concept of integration became more general, but the term "quadrature" stuck around in some contexts:

Numerical Quadrature: This refers to specific techniques for approximating integrals using numerical methods like dividing the area under the curve into rectangles and summing their areas. So, "quadrature" is more like a specific way (approximation with squares) of performing integration, rather than a perfect synonym for the entire concept.

In modern mathematics courses, you'll likely encounter "integral" more frequently than "quadrature."

Python计算可以变得快一点点吗——Numpy

未完待续

rhx0820的LaTeX与Beamer实践(第二期)

一个用于编译LaTeX文档的小Makefile

# Makefile for XeLaTeX

# Set the name of your main LaTeX file (without the .tex extension)
MAIN_FILE = main-cn

# Set the name of the output PDF file
OUTPUT_FILE = ${MAIN_FILE}.pdf

# Set the XeLaTeX compiler command
XELATEX = xelatex
BIBTEX = bibtex
# Set any additional flags or options for the XeLaTeX compiler
XELATEX_FLAGS = -interaction=nonstopmode -f

# Default target
all: $(OUTPUT_FILE)

# Rule to compile the LaTeX document
$(OUTPUT_FILE): $(MAIN_FILE).tex
    echo "XeLaTeX Compiling"
    - $(XELATEX) $(XELATEX_FLAGS) $(MAIN_FILE).tex > /dev/null
    echo "Bibtex Compiling"
    $(BIBTEX) $(MAIN_FILE)
    echo "XeLaTeX Compiling"
    - $(XELATEX) $(XELATEX_FLAGS) $(MAIN_FILE).tex > /dev/null
    - $(XELATEX) $(XELATEX_FLAGS) $(MAIN_FILE).tex
# Clean up intermediate files
clean:
    rm -f $(OUTPUT_FILE) $(MAIN_FILE).aux $(MAIN_FILE).log $(MAIN_FILE).out $(MAIN_FILE).toc

一些小工具

生成LaTeX格式的表格
看到室友用的教材格式的模板

怎么在Linux下舒服地读Fortran代码

首先,如果是在用Windows的话,那么最方便的方式无疑是Visual Studio+Intel oneAPI,毕竟是地表最强IDE加上x86下最适合科学计算的运行环境,代码高亮,悬停应该都是支持的,也就没有任何必要折腾。那么假如说你并不想在Windows下运行你的计算负载,直接说结论,大概是CLion和VS Code用起来各有各的不舒服。社区维护的Kate的话,我用我真用,问就不推荐。

Visual Studio Code

总体来说体验尚可,得益于Code首创的LSP协议,搭配Modern Fortran插件,可以实现在大部分变量上悬停显示类型,注释等信息。

但是有一个很致命的缺点:

      IF(gamma_only) THEN
!$omp parallel do collapse(3) default(shared) firstprivate(npol,nrxxs,nkqs, &
!$omp                ibnd_buff_start,ibnd_buff_end) private(ir,ibnd,ikq,ipol)
        DO ikq=1,SIZE(locbuff,3) 
          DO ibnd=1, x_nbnd_occ 
            DO ir=1,nrxxs*npol
              locbuff(ir,ibnd,ikq)=0.0_DP
            ENDDO
          ENDDO
        ENDDO
      ENDIF

Code对于Fortran语言,判断如何折叠代码的方法竟然是靠检测缩进,横亘中间的OpenMP语句就会影响折叠;最难绷的是,如果这句话只是一般的注释的话,他也会影响。。。

这是一个Open的Issue

综合评价:🌝🌝🌝🌚🌚

Kate

Kate是KDE自带的一款代码编辑器(定位类似于Sublime?),支持LSP,且能够对Fortran的循环等语句正常识别进行折叠,虽然我怎么调他的配色都没让我的眼睛变舒服;本来不出意外的话我就会一直用下去了,可是一次更新之后Kate和Fortran Language Server(也就是LSP的Provider)交流不畅,过一小会儿就会闪退,等这个bug修好再说吧。

综合评价:暂缺

中场休息

VS的定位是IDE,Kate是Code Editor,Code越来越像二者之间,似乎可以放在坐标轴上。下半场比赛,我们挑选了几个选手:EclipseCLionSublime Text

Eclipse

Java界有较强历史地位的IDE,有面向Fortran和MPI的版本,但是已经过气(划去),好在没过气太久,2023-09是包含Fortran支持的最后一个版本。

打开之后发现Eclipse确实对Fortran有IDE原生级别的支持,Build Debug一应俱全,可是里面的parser不认识CUDA Fortran语句,在有CUDA代码(静态语法检查)的文件里面根本没法正常解析语法,也就没法跳转至定义;此外,Eclipse只能折叠Fortran Module和Subroutine,不能折叠循环和IF,对于读代码来说有点鸡肋了。

综合评价:🌝🌝🌝🌝🌚(无CUDA)🌝🌝🌚🌚🌚(有CUDA)

CLion

JetBrains家的IDE,支持Fortran靠的是插件。高校学生可以直接认证获得License。好像蛮多人喜欢用JetBrains全家桶的。

但是插件确实还是有点瑕疵,查找变量定义偶尔找不到,打算哪天写C++时候试着认真用用。

综合评价:🌝🌝🌝🌚🌚

Sublime Text

收费,简陋,不好看,支持LSP,和VS Code有相同的折叠问题。

综合评价:🌝🌝🌚🌚🌚

加时赛

你们都打的挺难解难分的,那加时赛开始吧。

Code::Blocks

这货有原生的Fortran支持,但Code::Blocks用起来有点太古板了,折叠倒是支持,代码分析能力不怎么强,很多变量的定义都找不着,还会去非源代码的文件里面找变量。

Geany

名字第一眼看上去像是GTK项目衍生的东西,实际上确实用到了GTK,折叠没问题,找定义有点废。

怀念在Clangd+VS Code下面写C++的一天

封面引用自这里

">