单位立方体各个面上的法向量,向量场以及每个面上的通量

单位立方体各个面上的法向量,向量场 F = ( x , y , z ) \mathbf{F} = (x, y, z) F=(x,y,z) 以及每个面上的通量

flyfish
假设我们有一个单位立方体,向量场 F = ( x , y , z ) \mathbf{F} = (x, y, z) F=(x,y,z) 在该立方体上。

  1. 法向量 :单位立方体的每个面都有一个法向量。例如:
  • x = 1 x = 1 x=1 的面上,法向量为 n = ( 1 , 0 , 0 ) \mathbf{n} = (1, 0, 0) n=(1,0,0)

  • y = 1 y = 1 y=1 的面上,法向量为 n = ( 0 , 1 , 0 ) \mathbf{n} = (0, 1, 0) n=(0,1,0)

  • z = 1 z = 1 z=1 的面上,法向量为 n = ( 0 , 0 , 1 ) \mathbf{n} = (0, 0, 1) n=(0,0,1)

  1. 通量 :计算向量场 F \mathbf{F} F 穿过每个面的通量:
  • x = 1 x = 1 x=1 的面上,通量为:
    ∬ 面  x = 1 F ⋅ d S = ∬ 面  x = 1 ( 1 , y , z ) ⋅ ( 1 , 0 , 0 )   d y   d z = ∬ 面  x = 1 1   d y   d z = 1 \iint_{\text{面 } x=1} \mathbf{F} \cdot d\mathbf{S} = \iint_{\text{面 } x=1} (1, y, z) \cdot (1, 0, 0) \, dy \, dz = \iint_{\text{面 } x=1} 1 \, dy \, dz = 1  x=1FdS= x=1(1,y,z)(1,0,0)dydz= x=11dydz=1

类似地,在其他面上计算得到的通量分别为1,总的通量为6(因为单位立方体有6个面,每个面上的通量为1)
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
from matplotlib.animation import FuncAnimation, PillowWriter

# 创建单位立方体的顶点
vertices = np.array([[0, 0, 0],
                     [1, 0, 0],
                     [1, 1, 0],
                     [0, 1, 0],
                     [0, 0, 1],
                     [1, 0, 1],
                     [1, 1, 1],
                     [0, 1, 1]])

# 定义单位立方体的各个面
faces = [[vertices[j] for j in [0, 1, 2, 3]],  # z=0
         [vertices[j] for j in [4, 5, 6, 7]],  # z=1
         [vertices[j] for j in [0, 3, 7, 4]],  # y=0
         [vertices[j] for j in [1, 2, 6, 5]],  # y=1
         [vertices[j] for j in [0, 1, 5, 4]],  # x=0
         [vertices[j] for j in [2, 3, 7, 6]]]  # x=1

# 定义单位立方体各个面的法向量
normals = np.array([[0, 0, -1],
                    [0, 0, 1],
                    [0, -1, 0],
                    [0, 1, 0],
                    [-1, 0, 0],
                    [1, 0, 0]])

# 定义向量场 F = (x, y, z)
def vector_field(x, y, z):
    return np.array([x, y, z])

# 创建动画
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.set_xlim(-0.5, 1.5)
ax.set_ylim(-0.5, 1.5)
ax.set_zlim(-0.5, 1.5)

def update(frame):
    ax.clear()
    ax.set_xlim(-0.5, 1.5)
    ax.set_ylim(-0.5, 1.5)
    ax.set_zlim(-0.5, 1.5)
    
    face = faces[frame]
    normal = normals[frame]
    poly3d = [[face[0], face[1], face[2], face[3]]]
    ax.add_collection3d(Poly3DCollection(poly3d, alpha=0.5, color='cyan'))
    
    center = np.mean(face, axis=0)
    ax.quiver(center[0], center[1], center[2], normal[0], normal[1], normal[2], color='red', length=0.5)
    
    # 绘制向量场
    X, Y, Z = np.meshgrid(np.linspace(0, 1, 2), np.linspace(0, 1, 2), np.linspace(0, 1, 2))
    U, V, W = vector_field(X, Y, Z)
    ax.quiver(X, Y, Z, U, V, W, color='blue', alpha=0.3)
    
    ax.text2D(0.05, 0.95, f"Face {frame+1} with Normal Vector", transform=ax.transAxes)
    ax.text2D(0.05, 0.90, "Red Arrow: Normal Vector", transform=ax.transAxes, color='red')
    ax.text2D(0.05, 0.85, "Blue Arrows: Vector Field F = (x, y, z)", transform=ax.transAxes, color='blue')
    ax.text2D(0.05, 0.80, f"Flux through face: {np.dot(vector_field(center[0], center[1], center[2]), normal)}", transform=ax.transAxes)
    
    ax.set_xlabel('X')
    ax.set_ylabel('Y')
    ax.set_zlabel('Z')

ani = FuncAnimation(fig, update, frames=len(faces), repeat=True,interval=1000)
writer = PillowWriter(fps=1)
ani.save('unit_cube_normals_flux.gif', writer=writer)

plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/774841.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中霖教育:二建报名成功后怎么审核?

【中霖教育怎么样】【中霖教育靠谱吗】 在成功完成二级建造师资格考试的报名流程后,需要准备后续的审核阶段,审核是否通过关乎考生是否能顺利参加考试,审核的方式包括:现场审核、网络审核以及考试后的审核。 某些地区会要求考生…

空间数据获取与预处理指南:生产与科研应用

1.空间数据简介 2.免费的国外GIS数据下载方法 3.免费的国内GIS数据下载方法 4.遥感云平台数据的获取方法 5.专题数据的获取及预处理示例 (1)行政区划数据 (2)气象数据 (3)土壤数据 (4)遥感产品数据 (5)统计数据 (6)…… 原文链接https://mp.weixin.qq.com/s?__bizMz…

实验三 图像增强—灰度变换

一、实验目的: 1、了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学理论知识。 2、学会对图像直方图的分析。 3、掌握直接灰度变换的图像增强方法。 二、实验原理及知识点 术语‘空间域’指的是图像平面本身,在空…

【MySQL系列】隐式转换

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

构建Android studio版的CarSystemUI工程时因为包名一致导致BuildConfig问题

项目场景: 公司计划开发杰发AC8025-Android 12版本车载平台,前期预研需要构建Android studio版的CarSystemUI工程 问题描述 AAOS车载项目里面的CarSystemUI源码默认无Android studio版本,为了后期快速开发调试需要构建Android studio能直接…

python多线程与多进程开发实践及填坑记(1)

1. 需求分析 1.1. 概述 基于Flask、Pika、Multiprocessing、Thread搭建一个架构,完成多线程、多进程工作。具体需求如下: 并行计算任务:使用multiprocessing模块实现并行计算任务,提高计算效率、计算能力。消息侦听任务&#x…

大厂都在加急招人的大模型LLM,到底怎么学?

大模型如何入坑? 想要完全了解大模型,你首先要了解市面上的LLM大模型现状,学习Python语言、Prompt提示工程,然后深入理解Function Calling、RAG、LangChain 、Agents等 很多人不知道想要自学大模型,要按什么路线学&a…

电脑刚删除的文件怎么恢复?可使用这几种恢复方法!

在日常生活和工作中,我们时常会在电脑上进行各种文件操作,包括删除不需要的文件。然而,有时候我们可能会误删一些重要的文件,或者在删除后立刻意识到这些文件的重要性。 那么,电脑刚删除的东西怎么恢复呢?本…

神领物流项目第一天

文章目录 聚焦快递领域首先第一个是验证码模块流程登录接口权限管家 聚焦快递领域 首先第一个是验证码模块流程 首先生成验证码的流程 可以使用工具类去生成验证码 LineCaptcha lineCaptcha CaptchaUtil.createLineCaptcha(160, 60, 4, 26);// 获取值然后存入redis中 strin…

WEB04MyBatis

Mybatis mybatis查询 准备 准备工作 在目前的数据库中添加一张数据表emp 将资料中提供的day04-01-mybatis导入的目前的工程中 修改配置文件中的数据库的账户和密码 观察实体类中的属性和数据表中的字段的对应关系 查询结果封装 查询所有 SQL语句 select * from emp; …

基于Oauth2.0的OpenFeign远程调用

目录 前言 1.引入openfeign相关依赖 2.开启openFeign远程调用,在启动类头加上注解即可 3. 提供远程调用接口,接口名称必须与controler名称保持一致 4.远程调用关键代码 4.1 注入restTemplate 4.2 配置拦截器 4.3 设置请求头 4.4 获取请求结果 4.5 远…

两次叛国投敌,没有祸及子孙反而家族长盛不衰的传奇

这个人就是韩国国王韩王信,汉朝八大异姓王之一。 第一次叛国投敌,发生在楚汉争霸时期。有一次他的军队被项羽包围,于是选择了投降。不过,这是权宜之计,不久就借机回到刘邦阵营。 第二次叛国投敌,发生在西…

openssl交叉编译-移植ARM

OpenSSL是一个开源的密码学工具包,提供了一组用于网络安全的加密和解密算法、协议以及相关工具的库,它通过提供多种加密算法、协议和工具,为网络通信和数据存储提供了强大的安全保障。 主要功能 加密和解密: OpenSSL提供了多种对…

字节码编程javassist之结合hotswap在运行期动态修改方法返回值

写在前面 本文看下如何通过javassist结合hotswap在运行期动态修改方法的返回值。 1:代码 要修改的代码 public class ApiTest {public String m1(String info) {return "info is: " info;} }javasssit代码 package com.dahuyou.javassist.huohuo;im…

娱乐圈新瓜《庆余年》二皇子刘端端被曝“深夜秘事”

《庆余年》外,二皇子刘端端的“深夜冒险”网友笑称:权谋剧外更有戏话说《庆余年》里的二皇子李承泽, 那可是权谋与颜值并存的典范,但戏外的刘端端, 最近却成了“深夜冒险家”,让一众吃瓜群众笑中带惊&…

CNN文献综述

卷积神经网络(Convolutional Neural Networks,简称CNN)是深度学习领域中的一种重要模型,主要用于图像识别和计算机视觉任务。其设计灵感来自于生物学中视觉皮层的工作原理,能够高效地处理图像和语音等数据。 基本原理…

JVM专题之性能优化

运行时优化 方法内联 > 方法内联,是指 **JVM在运行时将调用次数达到一定阈值的方法调用替换为方法体本身** ,从而消除调用成本,并为接下来进一步的代码性能优化提供基础,是JVM的一个重要优化手段之一。 > > **注:** > > * **C++的inline属于编译后内联,…

特殊用途二极管+二极管故障检测+三极管(BJT)的工作原理+定时器的使用(小灯定时闪烁实现)

2024-7-5,星期五,17:27,天气:晴,心情:晴。今天没有什么特殊的事情发生,继续学习啦,加油加油!!! 今日完成模电自选教材第二章内容的学习&#xff…

Linux-C语言实现一个进度条小项目

如何在linux中用C语言写一个项目来实现进度条?(如下图所示) 我们知道\r是回车,\n是换行(且会刷新) 我们可以用 \r 将光标移回行首,重新打印一样格式的内容,覆盖旧的内容,…

二重积分 - 包括计算方法和可视化

二重积分 - 包括计算方法和可视化 flyfish 计算在矩形区域 R [ 0 , 1 ] [ 0 , 2 ] R [0, 1] \times [0, 2] R[0,1][0,2] 下,函数 z 8 x 6 y z 8x 6y z8x6y 的二重积分。这相当于计算曲面 z 8 x 6 y z 8x 6y z8x6y 与 xy 平面之间的体积。 二重积分…