VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 458|回复: 6

[求助] 分段函数编程

[复制链接]
55_avatar_middle
在线会员 bianchenghai 发表于 2018-4-26 10:46:34 | 显示全部楼层 |阅读模式
3驿站币
本帖最后由 Debug 于 2018-4-26 11:34 编辑

分段函数编程
  1. #pragma once
  2. #include <stdio.h>
  3. #include <math.h>
  4. #include "slv_c_utils.h"
  5. double A;
  6. adams_c_Cnfsub    Cnfsub;
  7. void Cnfsub(const struct sAdamsContactFriction* cnf, double time, const double* loci, const double* ni,
  8.         const double* locj, const double* nj, double gap, double gapdot, double gapdotdot,
  9.         double area, int dflag, int iflag, double* force)
  10. {
  11.         if (iflag);
  12.         else
  13.         {
  14.                 double K = *(cnf->PAR + 0);
  15.                 double E = *(cnf->PAR + 1);
  16.                 double C = *(cnf->PAR + 2);
  17.                 double v = *(cnf->PAR + 3);
  18.                 if (gap <= 0 && gapdot <= 0)
  19.                 {
  20.                         force[0] = max(0, K*pow(-gap, E));

  21.                         if (gapdot == 0)
  22.                         {
  23.                                 A = gap;
  24.                         }
  25.                 }
  26.                 if (gap <= 0 && gapdot > 0)
  27.                 {
  28.                         force[0] = max(0, pow(C, -2 * E)*K*pow(-gap + (1 - pow(C, 2))*A, E));
  29.                 }
  30.                 if (gap > 0)
  31.                 {
  32.                         force[0] = 0;
  33.                 }
  34.         }
  35. }
复制代码

(只需要关注if语句中的内容)这是一个过程,也就是说会先满足第一个if语句中的条件(gapdot>=0然后<0)我要在gapdot>0时使用gapdot==0时的结果,我程序中是把gapdot=0时的结果赋值给变量A,然后调用,但是好像不行,这是怎么回事,有大神吗?





上一篇:文件打开
下一篇:VC编辑框问题

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

81_avatar_middle
online_moderator Debug 发表于 2018-4-26 11:37:46 | 显示全部楼层
没明白楼主问的问题!
“也就是说会先满足第一个if语句中的条件(gapdot >=0 然后 < 0)”
第一个 if 条件是:if (gap <= 0 && gapdot <= 0) 代表 gapdot <= 0 也不是 gapdot >= 0 啊,我也迷糊了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

55_avatar_middle
ico_lz  楼主| bianchenghai 发表于 2018-4-26 14:49:31 | 显示全部楼层
Debug 发表于 2018-4-26 11:37
没明白楼主问的问题!
“也就是说会先满足第一个if语句中的条件(gapdot >=0 然后 < 0)”
第一个 if 条 ...

这个gapdot相当于速度,也就是速度回从>=0开始递减,然后会<0,这是一个运动过程,当速度减小为0时的位移(程序中的gap)就是我想要在后面那个一段(速度gapdot<0)用到的数据。不知道我说清楚没

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

55_avatar_middle
ico_lz  楼主| bianchenghai 发表于 2018-4-26 14:51:23 | 显示全部楼层
bianchenghai 发表于 2018-4-26 14:49
这个gapdot相当于速度,也就是速度回从>=0开始递减,然后会

相当于把一个运动分为两段(速度>=0和速度<0)

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

81_avatar_middle
online_moderator Debug 发表于 2018-4-26 15:38:53 | 显示全部楼层
bianchenghai 发表于 2018-4-26 14:51
相当于把一个运动分为两段(速度>=0和速度

说实话,你这个东西还是有点太具有专业性了
我还是没太明白,楼主只能先自己调试调试了!看看哪个条件没满足,为什么没进去

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

05_avatar_middle
在线会员 Ui_Bing 发表于 2018-6-13 10:01:42 | 显示全部楼层
你这是在弄PID控制么?  if (gap <= 0 && gapdot <= 0)这条语句成立后才有你说的 if (gapdot == 0),但是,并没有从这两条语句中并没有你所说的gapdot>=0

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

05_avatar_middle
在线会员 Ui_Bing 发表于 2018-6-13 10:06:31 | 显示全部楼层
Ui_Bing 发表于 2018-6-13 10:01
你这是在弄PID控制么?  if (gap

再看了一下,也就是说,你如果需要在程序只执行一次该函数就想两个地方都可以用到A的值,那是不可能的,只有在第二次进来的时候你才有可能得到一个你所述的新的A值,也就是gapdot<=0时候。A所改变的值

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-10-20 15:42

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表