一些简单的MATLAB数学实验

本期简单分享一些简单的MATLAB数学实验,以便帮助大家更好地了解一些函数及其调用方式,也会分享一些进阶内容,帮助大家培养编程思维。

一、基础内容

1.分解因式,函数factor()

%% 分解因式

syms x;
y = x^5 - 1;
z = factor(y);
disp(z);

2.求1到10,以0.1为步长的所有数的平方以及倒数的和

%% a=[1.0...10]

x = 0;
y = 0;
for i = 1:0.1:10
    x = x + i^2; %平方的和
    y = y + 1 / i; %倒数的和
end
disp(x)
disp(y)

3.对某个数分解质因数,可以采用factor(A)函数,也可使用循环

使用函数

%% 分解质因数1916010104

n = 1916010104;
factor(n)

注意分解后得到的是一个向量。

使用循环

%% 分解质因数100

n = 100;
m=2;
disp([num2str(n),'=']);

while(1)
      if(~mod(n,m))
              k=m;
              if(n==k)
                    disp(num2str(n));
                    break;
              else
                    n=n/k;
                    m=1;
                    disp([num2str(k),'*']);
              end
      end
      m=m+1;                
end

这里注意,MATLAB中逻辑符号“非”用“~”而不是“!”。mod(A)是求余函数,num2str(k)是将数字转换为字符。

4.计算特定表达式的值

%% f1=,f2=,...
a = 8.7e15;
x = 4.3;
y = 2.1;
f1 = sqrt(a+x) - sqrt(a+y);
f2 = (x-y)/(sqrt(a+x) + sqrt(a+y));
disp(f1)
disp(f2)

如果要实现任意赋值,需要编写构造函数,此内容放在后续讲解。

5.用区间(0,1)内的随机数构造3阶方阵A并求上三角、下三角和对角阵,函数rand(n)、triu(A)、tril(A)、diag(A)

%% A[0,1],get utr\dtr\diag

A = rand(3);
disp(A)
utr = triu(A);
dtr = tril(A);
dia = diag(A);
disp(utr)
disp(dtr)
disp(dia)

注意,由于rand()函数本身就有很大的随机性,所以每次运行都基本上会产生不一样的结果。另外,diag(A)函数产生的并不是对角方阵,而是向量。如果要得到对角方阵,可以采用循环结构构造,此内容在进阶内容中讲解。

6.替换某表达式的参数并化简,函数subs(A,B,C)、simplify(Y)

%% x^2+2x+3

syms x;
y = x^2 + 2*x + 3;
z = subs(y,x,x-1);
Z = simplify(z);
disp(Z)

这里subs(A,B,C)是在用B表达A的表达式中,以C替换B,新的表达式要注意赋给一个新的变量!simplify(Y)函数同理。

7.对某矩阵所以有元素求和sum(A)、求逆inv(A)、求行列式det(A)、求二范数norm(A)

%% A = [1,2;3,4]
A = [1,2;3,4];
Sum = sum(sum(A));
DetA = det(A);
AN = inv(A);
NorA = norm(A);
disp(Sum)
disp(DetA)
disp(AN)
disp((NorA)

注意矩阵的阶数,几阶矩阵就要求几次和。

二、进阶内容

1.如何自主构造对角方阵,对于基础内容的问题5,我们做如下修改,即可得到对角方阵

%% A[0,1],get utr\dtr\diag

A = rand(3);
disp(A)
utr = triu(A);
dtr = tril(A);
middia = diag(A);
dia = zeros(3);
disp(utr)
disp(dtr)

for i = 1:3
    for j = 1:3
        if i == j
            dia(i,j) = middia(i);
        end
    end
end
disp(dia)

基本思想:构造等阶全零方阵,并给对角元素(行号等于列号作为判断条件)赋值。或者采取二次构造,即使用diag(A)将A向量构造为对角阵,如下

%% A[0,1],get utr\dtr\diag

A = rand(3);
disp(A)
utr = triu(A);
dtr = tril(A);
dia = diag(A,0);
disp(utr)
disp(dtr)
dia = diag(dia);
disp(dia)

2.方阵点乘法求元素平方和

%% a=[1.0...10]

a = 1:0.1:10;
x = sum(a.*a);
b = zeros(size(a));
for i = 1:size(a,2)
    b(i) = 1/a(i);
end
y = sum(b);
disp(x)
disp(y)

3.sum(A)与sum(A,B)介绍

sum(A)用来求行向量的值,如果是二维矩阵,可以两次采用sum,使用sum(A,2)则是求列向量的和。或采取sum((A(:))求和。当然,还有规定维度以及规定输出类型的调用方法,此内容本文暂不阐述。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值