matlab 自定义对象,面向对象:MATLAB的自定义类 [MATLAB]

这几天刚刚开始学习MATLAB的面向对象编程。以前做的事情都是用MATLAB写一些简单的脚本或者函数,这方面MATLAB成熟的函数和直截了当的矩阵运算方法和语法都很容易上手,方便人专注于算法本身。前几天写代码的时候想到,在实际用MATLAB进行数值计算时,将数据和函数用一些方法组织起来也会带来很大的便利,否则零散的数据和函数总归看着不舒服。比如,我恰好最近想在MATLAB里面写一点代码让应力张量相关的计算变得简洁一些。

一、应力张量示例的物理背景

在弹性力学里,应力张量是描述弹性体内部某一点的应力状况的;它和过该点且法向量为 $\hat{n}$ 的面上的应力(矢量)关系是:$$\boldsymbol{t}=\boldsymbol{T}\cdot \hat{n}=\hat{n}\cdot \boldsymbol{T}$$  这里粗写的 $\boldsymbol{t}$ 是应力矢量;粗写的 $\boldsymbol{T}$ 是应力张量,是一个二阶张量,可以表示为一个三维矩阵。应力张量显然不是一个可以直接观测/测量的量,对于一般理解来说,应力矢量显然是一个更为直观、物理意义更加明确的物理量,因此已知应力张量求应力矢量应当是一个很基本的操作。

已知应力张量,求某一个面上的正应力和剪应力大小的方法是:$$\sigma_n=\hat{n}\cdot \boldsymbol{T}\cdot \hat{n},\quad \tau_n=\sqrt{|\boldsymbol{t}|^2-\sigma_n^2}$$  正应力就是应力矢量和面的法向量再做一次内积,也可以看成是应力张量和法向量的二次内积。剪应力和正应力方向正交,其矢量和为应力矢量,因此用勾股定理就能得到其大小。在弹性材料中,剪应力往往是非常重要的一个物理量,因为许多材料(比如岩石等)都有抗压不抗剪的特点,剪应力的大小将直接决定这些材料是否会发生破裂、如何(沿哪个方向)发生破裂。所以已知应力张量求正应力和剪应力也是很基本的一个操作。

此外,弹性体中的应力张量总是可以改写成主轴坐标系的形式,其物理意义是总是存在三个正交的主应力方向,以这三个主应力方向为坐标轴表示,则应力张量剪切分量均为零;其数学意义是应力张量总是可以对角化。在主应力坐标轴下表示有特别的简洁性,从而有一些好处,因此求出应力张量的主应力方向和主应力大小都具有重要的意义。

现在,我有了三个想要实现的操作。当然,因为MATLAB直观人性化的矩阵运算语法,这三个操作在脚本里都很容易实现。比如,我现在有一个应力张量 T,三个操作分别可以用以下的代码实现:

% 求应力矢量,要求为行向量

t = (T * n).‘; % 若n为列向量

t = n * T; % 若n为行向量

% 求正应力

sigma = n.‘ * T * n; % 若n为列向量

sigma = n * T * n.‘; % 若n为行向量

% 求剪应力

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值