首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地块坡度场给定微分方程

地块坡度场给定微分方程
EN

Code Golf用户
提问于 2022-05-04 00:43:35
回答 2查看 311关注 0票数 6

斜率场或方向场,是标量函数一阶微分方程解的图解表示。斜率场表示微分方程在笛卡尔平面上的某些垂直和水平间隔处的斜率,可用于确定曲线上某一点的近似切线斜率,其中曲线是微分方程的一些解。例如,考虑微分方程:

\frac{dy}{dx} = \frac{y-4x}{x-y}

相应的斜率字段如下所示:

这个微分方程的另一个例子是:

\frac{dy}{dx} = \frac{x-y}{x-2y}

您的任务是在控制台中生成这样的带有文本字符的斜率字段。您要为每个坐标对打印以下内容:

  • /,如果在(x, y)点处计算的微分方程是正的。
  • \,如果在(x, y)点处求出的微分方程为负值。
  • -,如果微分方程在(x, y) = 0点处计算。
  • |,如果在(x, y)点处计算的微分方程未定义。

输入是一个字符串,由以下数字组成:

  • 可以计算的表达式字符串(如果有必要,可以解析)。
  • 一个数字,它从(0, 0)中勾勒出图形的半径。

表达式字符串可以使用任何内置的数学函数,并且只能将xy作为变量。任何对数、(逆和/或双曲)三角函数或像sqrt(), pow(), exp(), abs()这样的函数的组合都可以在表达式中使用。图形半径也可以是0,这意味着只打印一个字符,其中包含原点的斜率。示例输入可能类似于:

代码语言:javascript
复制
plotRadius = 10
expression = "(x - y) / (x - 2 * y)"

请注意这两个地块的边界是如何遵循的:-\text{plotRadius} \leq x, y \leq \text{plotRadius}。这将显示以下斜率字段:

代码语言:javascript
复制
/ / / / / / / / / / / / / / / / / / / / — 
/ / / / / / / / / / / / / / / / / / / — \ 
/ / / / / / / / / / / / / / / / / / — \ \ 
/ / / / / / / / / / / / / / / / / — \ \ \ 
/ / / / / / / / / / / / / / / / — \ \ \ \ 
/ / / / / / / / / / / / / / / — \ \ \ \ | 
/ / / / / / / / / / / / / / — \ \ \ | / / 
/ / / / / / / / / / / / / — \ \ | / / / / 
/ / / / / / / / / / / / — \ | / / / / / / 
/ / / / / / / / / / / — | / / / / / / / / 
/ / / / / / / / / / | / / / / / / / / / / 
/ / / / / / / / | — / / / / / / / / / / / 
/ / / / / / | \ — / / / / / / / / / / / / 
/ / / / | \ \ — / / / / / / / / / / / / / 
/ / | \ \ \ — / / / / / / / / / / / / / / 
| \ \ \ \ — / / / / / / / / / / / / / / / 
\ \ \ \ — / / / / / / / / / / / / / / / / 
\ \ \ — / / / / / / / / / / / / / / / / / 
\ \ — / / / / / / / / / / / / / / / / / / 
\ — / / / / / / / / / / / / / / / / / / / 
— / / / / / / / / / / / / / / / / / / / /

请用空格分隔每一点。

EN

回答 2

Code Golf用户

发布于 2022-05-04 10:10:40

朱莉娅1.0,90字节

代码语言:javascript
复制
N\~=-(r=-N:N).|>y->println(join(r.|>x->abs(x~y)<Inf ? "\\-/"[Int(sign(x~y))+2] : "|"," "))

在网上试试!

获取plotRadius\df,其中df是一个黑匣子函数,并打印绘图。

票数 1
EN

Code Golf用户

发布于 2022-07-12 01:54:47

Python 2,122个字节

代码语言:javascript
复制
def g(r,e):
 q=range(-r,r+1)
 for x in q:
    l=""
    for y in q:
     try:l+="-/\\"[cmp(e(-x,y),0)]+" "
     except:l+="| "
    print l

在网上试试!

以一个整数和一个函数作为输入,打印结果。

票数 0
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/246872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档