找回密码
 注册
Simdroid-非首页
查看: 60|回复: 5

[问题讨论] 只用ansys能否解超越方程

[复制链接]
发表于 2010-12-13 20:39:27 | 显示全部楼层 |阅读模式 来自 德国
我在建模时遇到了一个超越方程y=a*x+b*sinx,其中a和b是常数已知,现在知道y=0.9*i,i=0到36,需要依次求出x,然后根据xy坐标画点。

如果我必须只用ansys求解,不能借助matlab等其他软件的话,ansys能做到吗?
发表于 2010-12-13 21:23:00 | 显示全部楼层 来自 瑞典
Simdroid开发平台
APDL,没问题
回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-13 22:13:46 | 显示全部楼层 来自 德国
2# pfsr

不过像下面这种普通的循环语句好像ansys不能求出x
a=
b=
*do,i,0,36
a*x+b*sin(x)=0.9*i
kp,,x,y
*enddo

我应该怎么改进呢,谢谢
回复 不支持

使用道具 举报

发表于 2010-12-13 22:47:56 | 显示全部楼层 来自 湖北武汉
求解可能需要编程,还是借助其他的语言来实现比较好
不过可以离散  x  ,然后代入求 y 值

a=
b=
*do,i,0,36
x=.....
y=a*x+b*sin(x)
kp,,x,y
*enddo
回复 不支持

使用道具 举报

发表于 2010-12-22 11:02:36 | 显示全部楼层 来自 天津河西区
应该是这样吧:
a=1
b=1
*do,i,0,36
x=i
y=a*x+b*sin(x)
k,,x,y
*enddo
但这也不能算是解方程啊,概念不太对吧,我认为这只能算是循环赋值啊。
回复 不支持

使用道具 举报

发表于 2010-12-22 21:33:29 | 显示全部楼层 来自 北京
如果是精度不高的数值解,可以尝试如下,不过手头没有程序 无法测试 可能语法也会有小错 只是提供个思路 result 为输出结果,如果result=1234567 那么计算没有获得结果。


!i=1   i=1情况
i=1
a=1
b=1
num=100000   
max=1000
err=1e-3        !控制精度
result=1234567
*dim,x,array,num
*dim,y,array,num

*do,ii,1,num
x(ii)=ii-num/2
y(ii)=a*x(ii)+b*sin(ii)
*enddo

*do,ii,2,num
*if,(y(ii)-0.9*i)*(y(ii-1)-0.9*i),le,0,then
val1=y(ii)
val2=y(ii-1)
*endif
*enddo

*do,ii,1,max
*if,abs(val1-val2),le,err,then
result=val1
*else
val3=min(val1,val2)+abs(val1-val2)/2
        *if,(val1-0.9*i)*(val3-0.9*i),le,0,then
        val2=val3
        *else
        val1=val3
        *endif
*endif
*enddo
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-28 09:31 , Processed in 0.040054 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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