作业帮 > 综合 > 作业

matlab函数中的参数求叉积:A=cross(m,n)

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 17:35:32
matlab函数中的参数求叉积:A=cross(m,n)
代码如下(很简单):
%%函数定义,求叉积
function B = fun1( x,y )
m=[x,y,x+y];
n=[x,2*y,2*x];
A=cross(m,n);
end;
%%主函数
a=quad( @(x) fun1(x,3),0,2 )
%%
如上,结果是在 A=cross(m,n); 这一行报错.
调用quad函数的时候,被积分的函数计算是向量化的,也就是说,匿名函数
@(x) fun1(x,3)
的输入参数x是向量.举例来说,x是一个1x7的向量,y=3是标量,这样m和n就会成为1x15的向量,而叉积只能对长度为3的向量进行,所以导致出错.
 
另外,函数fun1的输出参数是B,但是你在函数体中并未对B赋值,这一点从程序逻辑上来说是错误的,而且我也无法判断你要求解问题的本意,所以无法提供进一步的建议.
再问: 我明白你说的向量化,如果要求叉积的积分该怎么做呢?除了把叉积结果拆开一个个求还有什么方便一点办法吗?难道quad只能对标量用?
再答: 对向量函数的积分使用quadv:function zd574307059
a=quadv( @(x) fun1(x,3),0,2 )

function B = fun1( x,y )
y=y-0*x;
m=[x;y;x+y];
n=[x;2*y;2*x];
B=cross(m,n);保存到一个M文件运行即可。