编写方程的Matlab问题

时间:2011-04-09 14:06:12

标签: matlab

我在编写方程时遇到问题。

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。感谢

3 个答案:

答案 0 :(得分:2)

我从你所写的内容中获得的实际上是

??? Error using ==> mtimes
Inner matrix dimensions must agree.

这是正确的,因为你试图将两个行向量相互相乘。你能告诉我们你使用的实际代码吗?

无论如何,假设以某种方式处理,它看起来好像你正在向asin提供比1大得多的东西。这会给你复杂的结果。你传递给asin的东西或许意味着除以R^2DR^2或类似的东西?稍后您对acos的参数有类似的问题。

我还怀疑您的部分*^以及/运算符实际上应该是元素.*.^./

答案 1 :(得分:0)

编辑:公式略有调整(包围)以反映评论的成功。

当你说你想要一张桌子时,我想它是一张RDR的桌子(因为你需要不同长度的向量)。为此,您需要使用R作为列向量(下面为R')并与*(不是.*)相乘。如果R未出现在ones(size(R))(或使用repmat)中,则会将DR显示为正确的形状。要按元素平方DR,您需要DR.^2acos似乎有一个错位的括号,在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 ......

一旦弄明白,请确保在每次矩阵乘法运算之前添加一个句点(例如*或^)