gpt4 book ai didi

matlab - 使用matlab获得矢量场和矢量场在闭合曲线上形成的角度?

转载 作者:行者123 更新时间:2023-12-01 15:39:00 27 4
gpt4 key购买 nike

这是我想要绘制并获得向量场以及它们与 x 轴形成的角度的给定系统。我想找到闭合曲线的索引。

The system

The system

The closed curve

我知道如何从理论上通过选择方便的点来做到这一点,然后看看向量在那个点的样子。我也可以随时使用

angles

计算角度。但是,我在尝试对其进行编码时遇到了麻烦。如果问题不清楚,请不要标记我。我是按照我理解的方式问它的。我是matlab的新手。有人可以指出我正确的方向吗?

最佳答案

对于刚接触 matlab 的人来说,这是一个相当艰巨的挑战,我建议先接受一些较小的挑战,让您习惯 matlab 的约定。

也就是说,Matlab 是关于数值解的,所以除非你想走符号数学路线(在那种情况下我可能会选择 Mathematica),你的首要任务是决定模拟空间的限制和粒度,然后定义它们,以便您可以将方程组应用于它。

有很多方法可以做到这一点 - 一些更有效 - 但为了便于理解,我建议这样做:

首先分别定义轴

xpts = -10:0.1:10;
ypts = -10:0.1:10;
tpts = 0:0.01:10;

a:b:c 语法为您提供下限 (a)、上限 (c) 和间距 (b),因此 x 将获得 201 分。您可以使用 linspace如果表示法更适合您,请键入 doc linspace 进行查找。进入matlab控制台。

现在您可以创建坐标点的网格。你实际上最终得到了三个 3d 矩阵,一个保存空间的 x 坐标,另一个保存 y 和 t。它们看起来多余,但值得,因为您可以对它们使用矩阵运算。
[XX, YY, TT] = meshgrid(xpts, ypts, tpts);

从这里开始,您可以对这些矩阵执行您喜欢的任何操作。所以要计算 x^2.y 你可以做
x2y = XX.^2 .* YY;

请记住,您将从中获得一个 3d 矩阵,并且第三维(对应于 t)中的所有切片都将相同。

一些笔记

Matlab 有一个很好的内置帮助系统。您可以输入“help functionname”以在控制台中获得快速提醒,或者输入“doc functionname”以打开帮助浏览器以获取详细信息和示例。他们真的非常好,他们会提供很大帮助。

我使用 XX 和 YY 因为这只是我的偏好,但作为一般规则,我避免使用单字母变量名称。你不必。

矩阵乘法是默认的,所以如果你尝试做 XX*YY你不会得到你期望的答案!要进行逐元素乘法,请使用 .*运营商代替。这将做 a11 = b11*c11, a12 = b12*c12, ...

将矩阵的每个元素提升到给定的功率使用 .^而不是 ^出于类似的原因。同样是 split 。

您必须确保您的矩阵大小适合您的操作。要对矩阵进行元素操作,它们必须具有相同的大小。要进行矩阵运算,他们必须遵循有关大小的矩阵规则,输出也是如此。您会找到 size()方便调试的功能。

可以使用 quiver 绘制矢量场.要单独绘制组件,您有更多选择: surf , contour和别的。查找帮助文档,它们将链接到类似的类型。 plot family 主要是关于线条的,所以如果没有创造性地使用标记、颜色和 alpha,它们对字段没有太大帮助。

要绘制曲线或任何其他轮廓,您不必测试矩阵的值 - 由于粒度,无论如何它都不会很好地工作 - 您可以使用 contour绘制具有特定轮廓值的图。

求解动力学方程组是完全可能的,但您将进行数值模拟,并且您的结果将再次受制于网格的粒度。如果你有封闭形式的解决方案,比如你的 phi 表达式,它们在概念上可能更容易使用,但在 matlab 中更难使用。

这种问题在 matlab 中是可以解决的,但它涉及一些非基本用途,除非您了解 Matlab 的语法,否则很难理解这些用途。我建议从二维网格开始
[XX, YY] = meshgrid(xpts, ypts);

并计算一些函数,如 x^2.y 或 x^2 - y^2。习惯于使用 quiver 绘制它们或在强度图或曲面中单独绘制坐标。

关于matlab - 使用matlab获得矢量场和矢量场在闭合曲线上形成的角度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29831914/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com