char *name = malloc(strlen(args[1]) + 6);
strcpy(name, args[1]);
printf("%zu\n", strlen(name);
所以我有四阶runge kutta方法编码,但我试图适应的部分是问题说如果[2t]是偶数则V_in(t)= 1或如果[2t]是奇数则为-1。
另外,我不确定我是否想要返回这个等式: 返回1 / RC *(V_in - V_out)
问题在于:
如果你帮助我,我将不胜感激!
答案 0 :(得分:1)
所以我对四阶runge kutta方法进行了编码,但我试图适应的部分是问题,如果[2t]是偶数,则V_in(t)= 1,如果[2t]是,则为-1奇
您将V_in
视为常量。问题在于它是一个功能。所以一个解决方案就是让它成为一个功能!这是一个非常简单的函数:
def dV_out_dt(V_out, t) :
return (V_in(t) - V_out)/RC
def V_in(t) :
if math.floor(2.0*t) % 2 == 0 :
return 1
else :
return -1
您在if
的定义中不需要或不需要V_in(t)
声明。循环内部的分支很昂贵,并且这个函数将在循环内多次调用。有一种简单的方法可以避免使用if语句。
def V_in(t) :
return 1 - 2*(math.floor(2.0*t) % 2)
此功能非常小,您可以将其折叠为衍生函数:
def dV_out_dt(V_out, t) :
return ((1 - 2*(math.floor(2.0*t) % 2)) - V_out)/RC
答案 1 :(得分:0)
该功能应如下所示:
def f(x,t):
V_out = x
n = floor(2*t)
V_in = (1==n%2)? -1 : 1
return 1/RC * (V_in - V_out)