【求教】for循环中Find()求解方程--附源程序
mathcad吧
全部回复
仅看楼主
level 2
443499915 楼主
程序地址 网盘链接
方程只有一个变量θ。
目的:要求解不同B,x0,y0对应方程中的θ值,每个B对应50组(x0,y0),一共250组解。
确定一组B,x0,y0时,可以求解;进入for循环提示错误。
截图如下:
程序地址 网盘链接
2018年02月27日 11点02分 1
level 15
1。find()函数不能直接用在程序板中,只能在程序板前面自定义一个函数,然后在程序板中引用。
2。按您那样写,B、x0和y0各有51个,所以有51*51=2601个解。
2018年02月27日 13点02分 2
感谢您的指导,范围的错误已经更正。晚上回去我试着先求出θ的表达式,定义函数后,再用循环求解,希望能成功[哈哈]
2018年02月27日 13点02分
要求theta的解析解,恐怕不容易。
2018年02月27日 14点02分
level 15
2018年02月27日 13点02分 3
感谢老师!您的模板不光完美地了我的程序问题,还给我提供了一种技巧——把相应字符添加到矩阵中,可以方便直观地看到计算结果。关于stack命令,我还有一个小小的问题,您的程序中将字符“B”等赋给矩阵第一行,之后stack就从第二行开始赋值。这是否说明stack默认从新一行(保留原有数据)开始赋值呢?
2018年02月28日 06点02分
MathCAD的帮助文件叙述如下——stack(A , B, C, ...) 返回一个从上到下,以 A、B、C、... 排列而成的数组。
2018年02月28日 06点02分
level 15
按您的原意,只需要theta值的矩阵,那么程序板就写成:
2018年02月27日 14点02分 5
level 15
对于stack(),可以理解为列数相同的行向量的一层一层的地堆积。
3楼,首先给Fd赋值,一行4列的字符串行向量。然后,在for循环中,每产生一次数据,就以一行4列的行向量的形式添加在已有矩阵Fd的下面。这样,一层一层地就把矩阵Fd生成了。
如果把stack()中的Fd和行向量(B x y a(B,x,y,0))的位置互换,就是在已有矩阵Fd的上面而不是下面添加新的行向量。
对于augment(),也可以如此理解,只是“堆积"的方向是横向的,一层层"堆积"的是列向量。横向不宜用“堆积”这个词了。
2018年02月28日 08点02分 6
谢谢您,我大致理解这两个的用法了。过几天回学校后,我用stack()和augment()命令进行练习,慢慢建立自己的学习笔记,到时再请您斧正[玫瑰]
2018年02月28日 09点02分
1