24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2269  |  回复: 10
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

zhenzhen5516

金虫 (小有名气)

[求助] 求助三元函数二阶偏微分C语言写法

求助三元函数二阶偏微分C语言写法,例如F=f(x,y,z),求 d2F/dxdy, d2F/dydz, d2F/dzdx之类的,步长可以简单的设为1。希望会的同学帮下忙,谢谢~~
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)

★ ★ ★
余泽成(金币+3): 谢谢参与应助! 2011-09-01 15:42:56
引用回帖:
5楼: Originally posted by zhenzhen5516 at 2011-09-01 10:07:43:
哦,可能是我没说清楚。函数是u1=u1(x,y,z), K 是常量,u只是x y z的函数,下三角是二次微分算子,具体的我另上传了一个附件,可供参考~谢谢,等待您的回复

我大概知道你的困难了,你看是不是这样:
混合偏导数的定义式df/dxdy = d(df/dy)/dx,df/dy部分返回一个函数,而C语言没有直接支持返回带参函数的机制。
如果是这样的话,你可以自己实现闭包函数即可。比如说返回3x+4,一般情况下,需要先定义函数:
CODE:
double func(double a, double b, double x){
    return a*x+b;
}

如果需要返回这样一个函数,那等于说要返回这个:func(3, 4, x),如果用C++就有很明显的解决方法,C的解决方案也很简单,就是自己捆绑数据:
CODE:
typedef struct{
    double a, b;
    double (*func)(double a, double b, double x);
} CFunc;
CFunc *factory(double a, double b){
    CFunc *f = malloc(sizeof(CFunc));
    f->a = a;
    f->b = b;
    f->func = func;
    return f;
}
double caller(CFunc *fc, double x){
    return fc->func(fc->a, fc->b, x);
}

实现混合偏微分就是将偏微分实现为函数,df/dy返回一个CFunc,df/dxdy也返回一个CFunc即可。
漩涡的中心有一块空地,空空的。
6楼2011-09-01 10:45:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 11 个回答

huycwork

金虫 (著名写手)

你把算法直观地说一遍,我帮你写C语言要的不?

» 本帖已获得的红花(最新10朵)

漩涡的中心有一块空地,空空的。
2楼2011-08-31 12:59:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhenzhen5516

金虫 (小有名气)

送鲜花一朵
引用回帖:
2楼: Originally posted by huycwork at 2011-08-31 12:59:59:
你把算法直观地说一遍,我帮你写C语言要的不?

非常感谢!为了您方便看,我把算法上传到附件里了,麻烦您下载一下!只要您写出一项我应该就能明白了~
3楼2011-08-31 16:01:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)


余泽成(金币+1): 2011-09-01 15:42:43
引用回帖:
3楼: Originally posted by zhenzhen5516 at 2011-08-31 16:01:08:
非常感谢!为了您方便看,我把算法上传到附件里了,麻烦您下载一下!只要您写出一项我应该就能明白了~

呃,你太客气了……
我记得偏微分好像是常规微分在各个方向上微分之和,但你给出的符号都是啥意思呃?哪些是函数,哪些是变量,k是什么意思,各个函数跟哪些相关变量相关,那个下三角的意思又是什么呢?中括号括起来的参数xyz又是什么意思?这些还是要说清楚的嘛!
漩涡的中心有一块空地,空空的。
4楼2011-09-01 09:12:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见