我在编写方程时遇到问题。
r = 25,k = 2,R = 50:25:600,DR = 0.5:0.5:4.0
h = r * [1-cos(asin((sqrt(2 * R * DR + DR ^ 2))+ r * sin(acos(rk)/ r)/ r))] - k
但是作为一个冲锋我得到了这个:h = 1.9118e + 001 + 1.7545e + 002i。
我刚开始使用Matlab。感谢
答案 0 :(得分:2)
我从你所写的内容中获得的实际上是
??? Error using ==> mtimes
Inner matrix dimensions must agree.
这是正确的,因为你试图将两个行向量相互相乘。你能告诉我们你使用的实际代码吗?
无论如何,假设以某种方式处理,它看起来好像你正在向asin
提供比1大得多的东西。这会给你复杂的结果。你传递给asin
的东西或许意味着除以R^2
或DR^2
或类似的东西?稍后您对acos
的参数有类似的问题。
我还怀疑您的部分*
和^
以及/
运算符实际上应该是元素.*
,.^
,./
答案 1 :(得分:0)
编辑:公式略有调整(包围)以反映评论的成功。
当你说你想要一张桌子时,我想它是一张R
到DR
的桌子(因为你需要不同长度的向量)。为此,您需要使用R
作为列向量(下面为R'
)并与*
(不是.*
)相乘。如果R
未出现在ones(size(R))
(或使用repmat
)中,则会将DR显示为正确的形状。要按元素平方DR
,您需要DR.^2
。 acos
似乎有一个错位的括号,在r
之前你肯定会除以acos
。必须在r
中使用asin
之类的内容进行划分(不是r^2
,因为您已经使用了sqrt
)。最后,r
的最后一次除法是书面的冗余,因为你在之前的同一级别乘以r
。无论如何,如果我做以下事情:
h= r*(1-cos(asin((sqrt(2*R'*DR+ones(size(R))'*DR.^2)/r)+sin(acos((r-k)/r)))))-k
我通过R
表获得DR
。小R,DR
的结果是真实的;由于第一个R,DR
的参数为> 1,因此较高asin
较为复杂。根据需要,表格中的第一个条目是4.56。
答案 2 :(得分:0)
如果你想按照你说的那样做:
所以在第一个等式中我使用R = 50,DR = 0.5,r = 25,k = 2,我需要得到h。在第二个等式中,我使用R = 75, DR = 1.0,r = 25,k = 2 ......为最后一个 我使用的等式 R = 600,DR = 4.0,R = 25,K = 2。
DR和R需要相同的长度......所以如果R以25为增量在50到600之间,DR应该从0.5到 12.5 增量为0.5或0.5至4.0,增量为 0.1522 ......
一旦弄明白,请确保在每次矩阵乘法运算之前添加一个句点(例如*或^)