问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用Mathmatica求矩阵外积?

发布网友 发布时间:2023-07-04 11:40

我来回答

2个回答

热心网友 时间:2024-01-04 18:57

1.分号

教材给出的程序中,有的语句后加了分号,有的没有加,分号的作用究竟是什么?在scilab中,分号的作用有两个:一是禁止输出变量的值;二是在括号内作为矩阵中一行的分隔符。明白了这一点,就能够理解在下列程序中加不加分号的异同了。
s=0
for i=1:1:1000
s=s+i;
end
此程序最终的执行结果是
s=
0.
原因就是由于在语句s=s+i;中有分号,禁止了s值的输出。如果去掉了分号,则输出结果就不一样了。当然,对于这道题,为了看到最终结果,建议在执行完成后输入s,以显示s的值。或者在源程序的最后添加输出语句:print(%io(2),s);或s都可以显示出最后的结果。

3x-y=13

x+y=-1

对于分号的第二个作用,在课本中出现的不多,主要是利用高斯算法求解方程组的问题时使用过。
比如求解方程组

需要设计的程序如下:
a=[1,1;3,-1]; ---------;作为系数的分隔符。
b=[-1;13];

linsolve(a,-b)

执行后输出:
ans =
3.
-4.

2.逗号

学过c语言的知道逗号在c语言里面是作为一个运算符使用的,在很多情况下,往往作为多条表达式的分隔符,以起到求解多条表达式的作用。在scilab中,逗号的作用和c语言中的功能类似,起分割scilab指令的作用。
例如在求解立方和不大于1000的程序内,就可以使用逗号分割两条指令。
i=1;
while i*i*i<1000
i,i=i+1; ------------------逗号分割两条指令,显示第一个i的值,而不显示i=i+1的值。
end
而在另一个程序里,求立方和不超过1000的最大值。有的人将程序编写如下:
i=1;
while i*i*i<1000, i=i+1; end
i=i-1;
i

在此程序内,逗号的作用依然是作为指令分隔符。只是使用逗号将循环体放在了判断的条件内,因此在该程序中,没有循环体,或者说循环体为空语句。它相当于下列程序:
i=1; -----------------------循环控制变量赋初值
while i*i*i<1000 ――――――――――循环条件
i=i+1; ――――――――――循环体。循环体中必须有改变循环控制变量的值的语句,
end ―――――――――――并且能够使循环趋向于结束。
i=i-1;
i
通过这一道例题,大家也可以看到while语句的三个要素。

另外,逗号用在函数内部可以用作参数分隔符。

二、三个重点函数解析

1. sqrt函数

此函数的功能是求解一个数的平方根的,它的英文全称为square root,意为平方根。它的参数只有一个。调用方式为y=sqrt(x),这里需要注意只要是函数,函数名后面必然有(),这是函数的标志,不能省略。引用此函数时,参数必须是正值,否则会引起程序错误。如果需要求一个以上的数的平方根,可以使用下列形式:
sqrt([2,4])
输出结果为:
ans =
1.4142136 2

教材中使用此函数求三角形的面积,实际授课时,可以求一个直角三角形的斜边或直角边。

2. linsolve函数

2y+3x-5=0

6x+12y=11

2y+3x=5

7x-y=18

英文全称为linear equation solver,用于线性方程求解。它的功能是求解所有适合Ax+B=0的线性方程解。在编写程序时需要注意x,y,z的系数需要对应起来,如果源方程为Ax=B的形式,则代换时必须使用-B。(具体解法为高斯解法,教材中有详细介绍,这里从略)此函数常常用来求方程组的解。只要注意出-即可。在授课时,教师可以补充两道练习,看学生是否真正掌握此函数。

调用此函数之后,如果语句后没有加分号,程序会自动的输出
ans =
一行。给出方程的根。
3.print
调用方式:
print(‘文件名’,x1[,x2,x3…,xn])
功能描述:
用默认的格式将文件内的所有指定变量输出,例如,scilab自定义的输出格式,所有类型的变量都可以输出。
注意:xi必须都是已经定义的变量,表达式中变量的值不能显示。
print(%io(2),…)的含义是将内容输出到显示器上,使用此语句可以显示任意个变量的值。
与此功能相同的一个函数是disp,它只能显示字符串的值,功能是显示其参数中的字符串。
如:disp(“not found”);则显示not found。

三、赋值语句

教材中给出了使用赋值语句的四点注意事项,却没有给出为什么这样规定的原因。这直接导致了学生只能通过死记硬背来解决这一难点。教参上用存储地址与存储空间来解释这一问题,部分数学教师依然看不懂。这里给出笔者的一点看法。
计算机中所有的变量都是存放在内存中的,内存就像一座座的小房子,有自己的地址编号,就像宾馆内的房间号码一样。当运行诸如a=3的语句时,实际上在程序执行之前,为变量a分配一定的存储空间,执行时,根据a的地址编号找到a的存储空间,将其置为3(二进制)。这样当解释a=a+1;时就容易了。同时3=a为什么不对的问题也容易解决了,因为数值3不是在内存中,它的存在是瞬间的,没有存放的内存空间,故所有的赋值语句的左侧只能是单个变量,而不能是常量。

四、教学建议

讲解此部分的内容时,教师应避免将精力放在具体的程序设计上,而应渗透算法的思想和计算机解决问题的特点,特别是三种基本逻辑结构上。学过程序设计语言的人都知道,要想在短时间内学会一门具体的语言是困难的,但如果先掌握算法的内涵,则在学习一门计算机语言时就能够变得轻松,因为大多数程序设计语言都是由三种基本结构构成的(比如c语言)。因此,在备课时,教师应在如何引导学生深入理解计算机如何工作及三种基本逻辑结构上下功夫,并同时利用scilab软件进行上机练习,从而加深学生对这两方面的认识。

算法初步是适应新时代的发展而新增的一章,需要引起数学教师的重视,为学生将来学习计算机编程打好基础。同时,应注意语言的准确与科学性,比如任何语言都提供了输入输出语句这句话就不对,因为我们熟知的c语言就没有输入输出语句,而是采用输入输出函数实现输入输出的功能。因此这句话应改为任何程序设计语言都提供了输入输出的功能。教师在授课时必须注意语言的准确性,避免给学生造成一些错误观念,同时尽可能利用相关的术语,让学生了解计算机语言并乐于使用计算机语言。
参考资料:http://www.ygblog.com/user1/3020/archives/2006/11449.html

热心网友 时间:2024-01-04 18:58

矩阵的外积运算与矩阵的Dot运算一样,可有矩阵之间,矩阵与向量之间外积运算,Mathematica用Outer命令执行外积运算,

你用的命令"MatrixForm[Outer[Times, a, b]]
",是想将外积的结果表示成矩阵结构,这是不允许的,因为矩阵外积的结果不是一个矩阵,而是一个张量.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
蚂蚁泡酒适合哪些人喝 蚂蚁酒的功效与禁忌蚂蚁酒的功效与作用 热血无赖卡怎么办 了解这两方面内容 益生菌孕妇 孕妇能喝益生菌吗 羽毛球双打底线是内线还是外线 为什么泰国两位尊者有不死之身 秦始皇活了多少岁?当了几年皇帝? DELL电脑D630.PP18L2手机。才用了4个多月。多少钱我可以买呢,麻烦谁说... dellpp18l现在买多少钱 狗咬的伤口什么样 cheeky devil什么意思 Cheeky 冒失无礼;顽皮 cheeky monkey cheeky boom是什么意思? 财神的生日是几年几月几日 怎么破魔百和网络机顶盒 天马防盗门护锁器坏了能更换吗 梦见死人进自己的屋里的预兆 搜索用户不存在怎么回事 搜索显示用户不存在是为什么 搜索显示用户不存在是为什么 搜索一个人的对方显示该用户不存在是怎么回事? 搜索显示用户不存在 搜索用户不存在怎么回事 请问吃饱饭要过多长时间才能吃水果? 搜索用户不存在怎么回事 300帕的风机风速是多少 我自学油画,问我买的铅带装的颜料,画时用兑水吗?画笔用什么清洗... 通化比较有特色的餐馆 瀛座和大渔铁板烧哪个好 二维图可以算球度吗 papersplease怎么查指纹 艾叶水泡脚的好处 怎么查自己的指纹信息电子版 骁龙8+gen1处理器和天玑9000哪个好 中国有哪些报时台 昆山仁宝黑名单可以进昆山世硕吗 昆山仁宝厂把员工拉入黑名单是谁觉定的 华为输入法怎么恢复默认设置? 我的德牧四个月了 才23斤, 正常吗?它以后是不是就长不大了? 四个月大的德牧幼犬多高 三个月德牧体长多少正常 四个月草黄色德牧什么样 一剑断万古一古一轮回是什么意思 Re-use星路达油性笔如何清洗 我自学油画,问我买的铅带装的颜料,画时用兑水吗?画笔用什么清洗(用洗衣... 孙悟空的哥哥是 七龙珠悟空的弟弟是谁 七龙珠悟天的弟弟 立秋钓鱼记住几条爆护策略,鱼获满满