对于两个大小一样的数组(比如向量、矩阵或者更高维的数组),.*表示对应位置的元素相乘,./表示对应位置的元素相除,.^表示对应位置的元素乘方(如果有一个是单独的数,就相当于对数组里每一个元素用那个数做运算,比如1./[1,2]就等于[1,0.5])。这里要加.,应该是因为quad是数值积分,里面调用你提供的函数f时输入的是x的一个向量,加了.就相当于对这个向量里的每一个位置做同样的计算,即f(x)==[f(x_1),f(x_2),...,f(x_n)](x==[x_1,x_2,...x_n])。
刚刚忘说了:@表示匿名函数,括号里的x表示输入的变量,剩下的表达式说明如何计算输出的结果。你这里写成数学的形式就是f(x)=4/(1+x^2)。
关键知识点:./
指的是矩阵各元素分别计算
例如
a = [2 3];
b = 1./ab为[1/2
1/3],而1/a则表示a的逆。所以
x=1.╱(1+x.*x)就表示分别让x的每个元素都进行x(i)=1╱(1+x(i)*x(i))运算
例如
clc
clear all
close all
%--- 程序段1 ---%
x = [1 2 3];
x = 1./(1+x.*x);
disp(x);
%--------------%
%--- 程序段2 ---%
x1 = [1 2 3];
for i=1:length(x)
x1(i) = 1/(1+x1(i)*x1(i));
end
disp(x1);
%--------------%输出为
0.5000
0.2000
0.1000
0.5000
0.2000
0.1000
即程序段1和程序段2结果相同,但程序段1运行速度更快