我解决了金属棒的热方程,一端保持在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) 我有一个带有虚函数的空基类。有什么办法可以避免手动实现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) 我有一个 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暗示inline和constexpr。consteval我认为 的语义constinit(尤其是与constexpr变量相关的)只有在变量也是 的情况下才真正有意义inline,但它在标准中的遗漏让我对这个结论持谨慎态度。
我正在尝试创建一个以 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参数列表中的后面来“隐藏”?
前阵子我已经安装了尼克斯,但我已删除它,但是现在,当我尝试安装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) 我刚从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) 该程序在一个平台上打印带有前导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)
如何在两个平台上获得前导零?
我正在尝试学习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的情况.
给定一个numpy数组,如何在其中找到索引序列,以便对结果进行排序?
例如,给定x=[4,2,6],结果将是[1,0,2],因为[x[1],x[0],x[2]]是排序的.
我知道有很多可用的Python函数argsort()可以完成这项工作,但我需要自己实现这个排序功能.有什么建议?
如果参数是可复制构造的,我希望调用一个函数和另一个函数(类似于前面的但有额外的代码)。我发现 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)