matlab如何求解带在matlab中求解参数方程程

这里讨论的计算方法指的是利用現有的MATLAB函数来求解而不是根据具体的数值计算方法来编写相应程序。目前最新版的2009a有关于一般区域二重积分的计算函数quad2d但没有一般区域三重积分的计算函数,而NIT工具箱似乎也没有一般区域三重积分的计算函数

本贴的目的是介绍一种在7.X版本MATLAB(不一定是2009a)里求解一般区域②重三重积分的思路方法。需要说明的是在MATLAB的dblquad帮助文档里已经讨论了一种求解一般区域二重三重积分的思路方法,就是将被积函数“延拓”到矩形或者长方体区域但是这种方法不可避免引入很多乘0运算浪费时间。因此新的思路将避免这些。由于是调用已有的MATLAB函数求解在求一般区域二重积分时,效率和2009a的quad2d相比有一些差距但是相对于"延拓"函数的做法,效率大大提高了下面结合一些简单例子说明下计算方法。譬如二元函数f(x,y) = x*yy从sin(x)积分到cos(x),x从1积分到2这个积分可以很容易用符号积分算出结果


如果你用的是2009a,你可以用

如果用的不是2009a那么你鈳以利用NIT工具箱里的quad2dggen函数。那么我们如果既没有NIT工具箱用的也不是2009a怎么办呢?答案是我们可以利用两次quadl函数注意到quadl函数要求积分表达式必须写成向量化形式,所以我们构造的函数必须能接受向量输入见如下代码


myfun1函数就是构造的原始被积函数对y积分后的函数,这时候是關于

x的函数要能接受向量形式的x输入,所以构造这个函数的时候考虑到x是向量的情况利用arrayfun函数(7.X后的版本都有这个函数,不了解这个函数的朋友可以查看帮助文档或者百度搜索arrayfun)可以将IntDemo函数精简成一句代码:

上面这行代码体现了用MATLAB7.X求一般区域二重积分的一般方法。可鉯这么理解这句代码:
定义了一个关于x的匿名函数供quadl调用求最外重(x从1到2的)积分,这时候x对于
定义的是对于给定的xx,求xx*y关于y的积分函數,这就相当于数学上积完第一重y的积分后得到一个关于xx的函数
加了一个循环的壳保证“积完第一重y的积分后得到一个关于xx的函数”能夠接受向量化的xx的输入,从而能够被quadl调用

有了这个模板,我们可以方便求其他一般积分区域(上下限是函数)形式的二重积分例如被積函数=

可见上述方法在2009a以外的版本中不失为一种方法,起码效率高于dblquad帮助文档里推荐的做法更重要的是,这给我们求解一般区域三重积汾提供了一种途径
}

三维空间中以点为圆心、以向量为法向量、半径为 r 的圆(见下图),

其中分别对应单位向量,它们既垂直于又互相垂直;随着从0变化到

,通过在matlab中求解参数方程程可以得到圆上每一个点的坐标是满足既垂直于,又互相垂直的任意单位向量怎么样快速得到满足条件的呢?这时候应该充分利用叉乘运算的特点因为两个向量的叉乘结果只要不为零,叉乘结果总是垂直于原来的这两个向量具体如下:

的方法:叉乘坐标向量。如果叉乘结果不为零那么它必然垂直于,把它单位化后就得到;如果叉乘结果恰好为零再用叉乘剩下两个坐标向量中任意一个,单位化叉乘结果得到

的方法:叉乘上一步得到的叉乘结果必然垂直于,单位化叉乘结果就得到

}

你用的是2009的版本吗听说与360冲突嘚

装最新的360试试,360的工作人员说是解决了问题实在不行卸360

如果是7.0较早的版本的话应该没问题,关了再进去运行看看

上面是我用7.1运行得的結果

}

我要回帖

更多关于 在matlab中求解参数方程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信