小编Dav*_*ing的帖子

用python(NumPy)求解热方程

我解决了金属棒的热方程,一端保持在100°C,另一端保持在0°C

在此输入图像描述

import numpy as np
import matplotlib.pyplot as plt

dt = 0.0005
dy = 0.0005
k = 10**(-4)
y_max = 0.04
t_max = 1
T0 = 100

def FTCS(dt,dy,t_max,y_max,k,T0):
    s = k*dt/dy**2
    y = np.arange(0,y_max+dy,dy) 
    t = np.arange(0,t_max+dt,dt)
    r = len(t)
    c = len(y)
    T = np.zeros([r,c])
    T[:,0] = T0
    for n in range(0,r-1):
        for j in range(1,c-1):
            T[n+1,j] = T[n,j] + s*(T[n,j-1] - 2*T[n,j] + T[n,j+1]) 
    return y,T,r,s

y,T,r,s = FTCS(dt,dy,t_max,y_max,k,T0)

plot_times = np.arange(0.01,1.0,0.01)
for t in plot_times:
    plt.plot(y,T[t/dt,:]) …
Run Code Online (Sandbox Code Playgroud)

python numpy numerical-methods

4
推荐指数
1
解决办法
4441
查看次数

避免使用带有虚方法的空基类构造函数

我有一个带有虚函数的空基类。有什么办法可以避免手动实现Derived的构造函数以便对其进行初始化?

struct Base
{
    virtual int f(int) const = 0;
    virtual ~Base() = 0; 
};

Base::~Base() {}

struct Derived: public Base
{
    int v;

    int f(int) const override{ return v;};
};

int main() 
{
    return Derived{5}.f(3);
}
Run Code Online (Sandbox Code Playgroud)

c++ inheritance constructor initialization c++17

4
推荐指数
1
解决办法
102
查看次数

静态常量成员变量与非类型模板参数相同吗?

我有一个 N 维数组的类模板:

template<typename T, std::size_t... Shape>
class ndarray { ... };
Run Code Online (Sandbox Code Playgroud)

这种模板设计的一个结果是,如果您愿意,就会有一个额外的“隐式”模板参数:std::size_t Size, 中所有参数的乘积Shape。我一直在使用 C++17 折叠表达式 ( ),如果它不依赖于,(1 * ... * Shape)我通常会使用它,但我想知道添加以下“别名”是否会导致编译的程序集出现任何细微的差异:SizeShape

template<typename T, std::size_t... Shape>
class ndarray {
    static constinit std::size_t Size = (1 * ... * Shape);
    ...
};
Run Code Online (Sandbox Code Playgroud)

有趣的是,ISO C++20 标准没有说明是否constinit暗示inlineconstexprconsteval我认为 的语义constinit(尤其是与constexpr变量相关的)只有在变量也是 的情况下才真正有意义inline,但它在标准中的遗漏让我对这个结论持谨慎态度。

c++ language-lawyer c++20

4
推荐指数
2
解决办法
508
查看次数

是否可以在另一个模板参数的模板参数中声明模板参数?

我正在尝试创建一个以 anstd::array作为模板参数的类模板。目前,声明如下:

template<typename T, std::size_t N, std::array<std::size_t, N> A>
class Foo {
    ...
}
Run Code Online (Sandbox Code Playgroud)

然而,这是非常不幸的,因为我通常会A使用初始值设定项列表进行初始化,这使得需要指定N繁琐且多余的操作:

// Current
Foo<int, 3, {5, 3, 4}> bar;

// Preferred
Foo<int, {5, 3, 4}> baz;
Run Code Online (Sandbox Code Playgroud)

我尝试过使用类似于模板模板参数的东西但无济于事:

template<typename T, template<std::size_t N> std::array<std::size_t, N> A>
Run Code Online (Sandbox Code Playgroud)

有没有办法完成我想要做的事情,或者N通过将其放在A参数列表中的后面来“隐藏”?

c++ arrays templates c++20

3
推荐指数
1
解决办法
144
查看次数

为什么curl(由自制软件推出)查找.nix-profile?

前阵子我已经安装了尼克斯,但我已删除它,但是现在,当我尝试安装threadscope我得到的follwowing错误:

Henriks-MBP:trial henke$ brew install homebrew/gui/Threadscope
==> Installing threadscope from homebrew/gui
==> Installing dependencies for homebrew/gui/threadscope: libpng, freetype, fontconfig, pixman, gettext, libffi, glib, cairo, ghc, jpeg, libtiff, gobject-introspection, gdk-p
==> Installing homebrew/gui/threadscope dependency: libpng
    ==> Downloading https://homebrew.bintray.com/bottles/libpng-1.6.21.el_capitan.bottle.tar.gz

    curl: (77) SSL: can't load CA certificate file /Users/henke/.nix-profile/etc/ssl/certs/ca-bundle.crt
    Error: Failed to download resource "libpng"
    Download failed: https://homebrew.bintray.com/bottles/libpng-1.6.21.el_capitan.bottle.tar.gz
    Warning: Bottle installation failed: building from source.
    ==> Downloading ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.21.tar.xz

    curl: (19) Given file does not exist
    Trying a mirror...
    ==> Downloading https://dl.bintray.com/homebrew/mirror/libpng-1.6.21.tar.xz

    curl: (77) …
Run Code Online (Sandbox Code Playgroud)

macos homebrew curl osx-elcapitan

2
推荐指数
1
解决办法
268
查看次数

从Yosemite升级到High Sierra后出现pycurl链接错误

我刚从Yosemite升级到High Sierra,效果很好,唯一的例外是我在pycurl中有一个bug.

    import pycurl
ImportError: No module named pycurl
Run Code Online (Sandbox Code Playgroud)

所以我做了

pip uninstall pycurl
Run Code Online (Sandbox Code Playgroud)

pip install --no-cache-dir --compile pycurl
Run Code Online (Sandbox Code Playgroud)

但现在它导致了一个铿锵声

    clang -bundle -undefined dynamic_lookup build/temp.macosx-10.10-x86_64-2.7/src/docstrings.o build/temp.macosx-10.10-x86_64-2.7/src/easy.o build/temp.macosx-10.10-x86_64-2.7/src/module.o build/temp.macosx-10.10-x86_64-2.7/src/multi.o build/temp.macosx-10.10-x86_64-2.7/src/oscompat.o build/temp.macosx-10.10-x86_64-2.7/src/pythoncompat.o build/temp.macosx-10.10-x86_64-2.7/src/share.o build/temp.macosx-10.10-x86_64-2.7/src/stringcompat.o build/temp.macosx-10.10-x86_64-2.7/src/threadsupport.o -L/usr/local/lib -L/usr/local/opt/openssl/lib -L/usr/local/opt/sqlite/lib -lssl3 -lcurl -o build/lib.macosx-10.10-x86_64-2.7/pycurl.so
ld: library not found for -lssl3
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'clang' failed with exit status 1

----------------------------------------
Command "/usr/local/opt/python/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/5h/h0hwdpps0cd_v2k_m652wwzm0000gq/T/pip-build-1rx5q1/pycurl/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, …
Run Code Online (Sandbox Code Playgroud)

python linker-errors

1
推荐指数
1
解决办法
808
查看次数

字符串中带前导零的填充在Solaris中有效,但在RHEL中则无效

该程序在一个平台上打印带有前导0的字符串,而不是另一个平台.

#include <stdio.h>
#include <string.h>

int main(void)
{
   char test[20];
   char a[4]="a12";
   sprintf(test,"%019s\n",a);
   printf("%s\n",test);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

Solaris : 0000000000000000a12
RHEL    :                 a12 (left padding with spaces)
Run Code Online (Sandbox Code Playgroud)

如何在两个平台上获得前导零?

c linux string printf solaris

1
推荐指数
1
解决办法
108
查看次数

为函数应用于分数时显示的负数指定的错误.为什么?

我正在尝试学习Haskell,并且我定义了以下简单的递归函数来计算阶乘.

fact n | n < 0 = error "fact only valid for non-negative integers"
       | n == 0 = 1
       | n > 0 = n * fact(n-1)
Run Code Online (Sandbox Code Playgroud)

它适用于正整数,并且正如预期的那样,当使用负整数调用时,它会抛出我指定的错误.

问题是什么?:当我尝试将它应用于Fractional时,它给了我同样的错误("事实只对非负整数有效"),例如fact 10.5.为什么它给了我同样的错误,我明确指出应该只适用于n <0的情况.

recursion haskell

0
推荐指数
1
解决办法
51
查看次数

排序数组并返回已排序数组的原始索引

给定一个numpy数组,如何在其中找到索引序列,以便对结果进行排序?

例如,给定x=[4,2,6],结果将是[1,0,2],因为[x[1],x[0],x[2]]是排序的.

我知道有很多可用的Python函数argsort()可以完成这项工作,但我需要自己实现这个排序功能.有什么建议?

python sorting permutation

0
推荐指数
1
解决办法
1913
查看次数

SFINAE - 如果参数是可复制构造的,则启用一个函数,否则启用另一个函数

如果参数是可复制构造的,我希望调用一个函数和另一个函数(类似于前面的但有额外的代码)。我发现 std::is_copy_constructible 没有按预期工作

#include <iostream>

using namespace std;


struct NoCopy {
    int n;
    NoCopy(const NoCopy&) = delete;
};


template <typename T, 
         typename U, 
         std::enable_if_t<!std::is_copy_constructible_v<U>, int> = 0>
void log_debug(T&& t, U&& u)
{
    
 std::cout<<"\n"<<typeid(U).name()<<" does not have copy constructor; ";  
}
   
   
template <typename T, 
            typename U, 
            std::enable_if_t<std::is_copy_constructible_v<U>, int> = 0>
void log_debug(T&& t, U&& u)
{
    
 std::cout<<"\n"<<typeid(U).name()<<" has copy constructor; ";  
}

int main()
{
    NoCopy a{2};
    log_debug("value is ", a);
    
    std::cout<<"\nstd::is_nothrow_copy_constructible_v  "<<std::is_copy_constructible_v<NoCopy>;  //returns 0 as expected

    return 0;
} …
Run Code Online (Sandbox Code Playgroud)

c++ templates copy-constructor c++17

0
推荐指数
1
解决办法
39
查看次数