- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 C++ 中生成以下 2D 阶跃函数。
U 是 X 和 Y 的函数。X 从 0 到 2。Y 从 0 到 2
U(x,y) =2 for 0.5<= x <= 1 and 0.5<=y<=1
U(x,y) = 1 for everywhere else
基本上,它是一个 2 x 2 的正方形,在 (0.5<=x<=1; 0.5<=y<=1) 范围内弹出一个较小的正方形。这就是我所拥有的:(Nx、Ny 分别是 X、Y 中的点数)。(Y、X为空间坐标)
for (int j = 0; j<=ny; j++){
y[j] = j*dy;
for (int i = 0; i <=nx;i++){
x[i] = i*dx;
if(x[i]>=0.5 && x[i]<=1 && y[j]>=0.5 && y[j] <=1){
u0[j][i] = 2.0;
}
else{
u0[j][i] = 1.0;
}
}
}
显然,这是不正确的,因为这是我在绘图后得到的 2d step function
我希望我的 If 语句不正确。谁能帮帮我?
非常感谢。
更新:对于造成的困惑,我们深表歉意。 X 和 Y 只是坐标的计数器。下面是代码(直到我需要问的)所以希望所有变量都在那里。我应该在一开始就这样做。对不起
//Declaring variables
int nx = 5; //x steps
int ny = 5; // y steps
int nt = 10; //time steps
int c = 1; //constant
double dx = 2/double(nx-1);
double dy = 2/double(ny-1);
double sigma = 0.2;
double dt = sigma*dx;
double x[nx], y[ny]; //spatial vectors X and Y
double u[ny][nx]; //solution matrix
double u0[ny][nx]; //initial matrix
//Setting up initial conditions
for (int j = 0; j<=ny; j++){
y[j] = j*dy;
for (int i = 0; i <=nx;i++){
x[i] = i*dx;
if((x[i]>=0.5 && x[i]<=1) && (y[j]>=0.5 && y[j] <=1)){
u0[j][i] = 2.0;
}
else{
u0[j][i] = 1.0;
}
}
}
声明的很多变量稍后会用到,所以我不会在这里粘贴整个程序。感兴趣的变量是 X、Y、Nx、Ny、Dx、Dy 和 U0。所有定义的变量(Nx、Ny、Dx、Dy)都被正确定义并且没有问题(比如带小数位的整数)。
最佳答案
结果是由于 dx 和 dy 的步长太大(各 0.5)。在您的绘图中,每个“像素”都根据其左侧和底部的极值进行评估。
考虑当 i = 2
和 j = 2
时,您的 if
将成功 x[i] = 1
和 y[i] = 1
。你应该做的是让你的间隔在它们的右侧“打开”:
if((x[i]>=0.5 && x[i] < 1) && (y[j]>=0.5 && y[j] < 1)) {
// ^^^ ^^^
但即便如此,由于浮点运算不精确,您可能会遇到非常特殊的情况,即像素未按预期绘制。这就是为什么您应该使用较小的 dx
和 dy
,或者等效地使用更大的 nx
和 ny
。
您的代码中的另一个问题不是此异常的根源,但肯定需要更正,您正在越界访问数组。为避免这种情况:
for (int j = 0; j < ny; j++) { // <-- not <=
// ... ^^^
for (int i = 0; i < nx; i++) { // <-- not <=
// ^^^
关于c++ - C++ 不等式中的逻辑。 If Else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43894028/
这个问题在这里已经有了答案: Does an else if statement exist? (2 个答案) 关闭 4 年前。 相信大家在学习C的时候,都学过这样的语法: if (conditio
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
Java 11.6 在这个 BMI 计算器中,它将输入人的体重、高度并计算 BMI。 BMI 计算正确,但是在分类 BMI 方法中,程序会跳过 if 和 else if 检查,只打印出每次测试的“肥胖
我有以下代码,它根据 url 参数更改,然后隐藏表单上的选择选项。即 www.example.com?type=images 最终会有 20 多个不同的参数。我想知道比拥有大量 if else 更好的
在WikiPedia Binary Search 的文章中有一个名为Deferred detection of equality 的部分,其中介绍了二进制搜索的某种“优化”版本,如下所示: int b
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我在下面的代码中遇到错误。尝试了 if 和 elseif 的所有组合,但无法使其工作。 错误:未捕获的语法错误:意外的标记其他 if(disableAd == 0 && disableWeather
我是 Java 初学者,我正在做一些练习题来提高我的 Java 技能。 编写一个名为 season 的方法,该方法接受两个整数作为代表月份和日期的参数,并返回一个指示该月份和日期的季节的字符串。假设月
有没有可能在 JavaScript 中做这样的事情? if (name == 'foo') { exampleFunction('some_arg'); } else if (name ==
我有一段简单的代码来检查一些条件,我希望每个条件都产生一个唯一的输出,但如果没有满足条件,则产生另一个唯一的输出。 有什么方法可以创建仅在所有先前的 if 语句都失败时才触发的 else 吗?我知道下
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 8 年前。 Improv
我发现自己经常使用这样的模式: if (a > b) { foo(); } elseif (c > d) { bar(); } else { baz(); } 这里的要点是第二
Hive 使用 IF(条件,表达式,表达式),所以当我想做 if/else if/else if/else 时,我必须这样做: IF(a, 1, IF(b, 2, IF(c, 3, 4))) 有没有更
直到 if 和 else 具有共同的作用域: if (int x = foo()) { // .... } else if (int x = bar()) { // ... } else {
是否可以保证 if-else if-else if-else block 中的 ifs 会按照编写顺序进行测试。 我问这个是因为我经常尝试通过将最常见的情况放在首位来优化我的代码,我想知道编译器所做的
我有一个方法可以检查某些事情并根据这些检查返回一个 bool 值。它涉及一个单独的分支 If 部分,该部分按顺序检查大约 5 个条件。如果这些条件中的任何一个返回真,则该方法将返回真;。如果没有任何条
这个问题在这里已经有了答案: Yet Another Conditional Operator Nesting Question (2 个回答) Why is the conditional oper
有没有一种方法可以从一个事件运行多个 if else 语句?例如,尝试运行此命令,但它仅对类为“two”的元素执行第一个 if else,而不是对类为“三”的第二个元素执行。 $(".hamburge
我有一个类似这样的查询: SELECT SUM(`table`.points) AS total_points FROM table 这将返回类似这样的内容 | **points** |
我正在尝试对单选按钮组运行“存在检查”,以确定如果在组中选择了 2 个单选按钮中的 1 个(if 语句),如果选择了 2 个单选按钮中的另一个(否则 if语句)或者如果两者都没有选择(else 语句)
我是一名优秀的程序员,十分优秀!