解决方程组与任意的参数值

16个视图(30天)
我有以下方程组:
信谊x0 y0₀E0 Pm0
% x0, y0₀E0变量
% Pm0是一个参数
假设((x0 y0₀E0),“真实”的);
assumeAlso (x0 * x0 + y0 * y0 = = 1);
%我想解决以下方程组变量
%由Pm0参数化。然后对Pm0代不同的值
为每金宝搏官方网站个Pm0值%的解决方案。
eqn1 = y0 *₀+ x0 * (1-x0 * x0-y0 * y0) = = 0;
eqn2 = x0 *₀+ y0 * (1-x0 * x0-y0 * y0) = = 0;
eqn3 = -3.33 * E0 * y0 - 0.66 *₀+ 3.33 * Pm0 = = 0;
eqn4 = 0.5 * x0 - E0 + 0.5 = = 0;
%注意:我需要计算成千上万的溶液参数值。
我已经尝试:
%的创建一个向量方程给解决();
eqn_final = [eqn1 eqn2、eqn3 eqn4);
%变量创建一个向量求解
variable_final = (x0, y0,₀E0);
解决方案=解决(eqn_final variable_final,“ReturnConditions”,真正的);
存在的问题:
这给了我一个“解决方案”结构。参数和条件。
我怎么解释这些,最后用不同的值代替Pm0解决上述方程组参数的不同值吗?金宝搏官方网站

接受的答案

约翰D 'Errico
约翰D 'Errico 2021年9月8日
编辑:约翰D 'Errico 2021年9月8日
位看看什么是回来了。
解决方案=解决(eqn_final variable_final,“ReturnConditions”,真的);
解决方案
解决方案=
结构体字段:
x0: [3×1信谊]
y0: [3×1信谊]
₀:[3×1信谊]
E0: [3×1信谊]
参数:[1×1信谊]
条件:[3×1信谊]
所以有可能发现三个不同的解决方案。金宝搏官方网站
solution.x0
ans =
1
1
2 * x - 1
所以x0是一个未知数。在前两个解决方案,这是一个固定值。金宝搏官方网站
查看返回的条件,我们看到为什么。
solution.conditions
ans =
Pm0 = = 0
Pm0 = = 0
在(x,“真实”的)& Pm0 ~ = 0 & Pm0 x ^ ^ 2 + 4 * 4 = = 4 * x ^ 3 & ((Pm0,“真实”的x = = 0) | | x = = 1)
啊,当Pm0就是零,减少的问题。但MATLAB并不知道Pm0不会是零。当Pm0是零,问题就变得相当简单了。
所以当pm0一些非零值的时候会发生什么?除了零。然后我们有解决方案3号,你会关心。
所以看起来很简单。选择解决方案# 2,substiture Pm0的价值。但这是简单的吗?你的问题有一个解决方案吗?
solution.x0 (3)
ans =
2 * x - 1
solution.y0 (3)
ans =
(4 * (- x ^ 3 + x ^ 2)) / Pm0
solution.omega0 (3)
ans =
0
solution.E0 (3)
ans =
x
这告诉我们,对于任何Pm0的价值,有无限多的解决方案。金宝搏官方网站我们可以任意选择一些实数为x, x是什么?x恰好是E0的价值。看来你可以任意选择E0的值。
我们可以看到,这些方程的一些简单的操作吗?它变得复杂,因为当我们试试这个:
简化(eqn2 - eqn1)
ans =
0 x0 + y0 = = |ω= = 0
这告诉我们解决方案要么ω= = 0,或者减少到一个简单的线性方程x0, y0。如果₀是非零的,那么会发生什么?现在我们有一个问题。不存在简单的解决方案,因为我们必须x0 = = y0。
这意味着我们可以假设₀必须是零。然后方程1和2两个有效减少一个单位圆的参数x0, y0,因此,方程
x0 ^ 2 + y0 ^ 2 = = 1
所以一个圆中心在原点,半径1。
但是我们有eqn4,这给了我们x0 E0的函数。和eqn3,这使我们能够计算y0, Pm0和E0。
潜艇(eqn3₀0)
ans =
(333 * Pm0) / 100 - (333 * E0 * y0) / 100 = = 0
实际上,这让我们解决为y0
y0 = = Pm0 / E0
同样,eqn 4让我们为x0解决
x0 = 2 * E0 - 1
但是因为我们已经知道x0, y0必须躺在单位圆,我们必须有
潜艇(x0 ^ 2 + y0 ^ 2 = = 1, (x0, y0) (2 * E0-1 Pm0 / E0))
ans =
(2 * E0 - 1) ^ 2 + Pm0 ^ 2 / E0 ^ 2 = = 1
乘以E0 ^ 2,
简化(潜艇(x0 ^ 2 + y0 ^ 2 = = 1, (x0, y0) (2 * E0-1 Pm0 / E0)) * E0 ^ 2)
ans =
4 * E0 ^ 4 + Pm0 E0 ^ ^ 2 = = 4 * 3 | E0 = = 0
只要E0 non-zer0,似乎有四个解决方案,有效E0 4日多项式。金宝搏官方网站当然一些解决方案可能是复杂的金宝搏官方网站。这将取决于Pm0的价值。Pm0的一些值,任何解决方案都将存在。为例。当Pm0是1,我们将多项式:
fplot(潜艇(4 * E0 ^ 4 + Pm0 ^ 2 - 4 * E0 ^ 3, Pm0, 1))
你可以看到这个函数从未穿过零。因此E0没有真正的解决方案,当Pm0是1,问题从来金宝搏官方网站没有一个解决方案。但当Pm0有不同的价值,可能多项式有解决方案吗?
4 * E0 ^ 4 + Pm0 ^ 2 - 4 * E0 ^ 3 = = 0
事实证明,由于Pm0平方,这个函数的常数项总是非负的。最极端的例子就是Pm0是0,然后我们将有一个三根E0 = = 0,和一个根E0 = = 1。
Pm0对于一些其他情况下,当Pm0 0和1之间的值,然后我们将完全2 E0真正的解决方案。金宝搏官方网站
解决(潜艇(4 * E0 ^ 4 + Pm0 ^ 2 - 4 * E0 ^ 3, Pm0, 5),“maxdegree”4)
ans =
1/2
1 / (9 * ((11 ^ ^ (1/2)* 1728 (1/2))/ 1728 + 19/216)^ (1/3))+ ((11 ^ ^ (1/2)* 1728 (1/2))/ 1728 + 19/216)^ (1/3)+ 1/6
vpa (ans)
ans =
0.5
0.91964337760708056627592628232664
所以你的方程组取决于Pm0的价值,但是解决方案的数量会有所不同。金宝搏官方网站
3评论
atharva aalok
atharva aalok 2021年9月10日
我取得了一些进步,这最后一个问题是:
我将试着很快解释简短的问题,然后再次提出这个问题。
%创建符号变量
% x0 y0₀E0物理量
% Pm0通常是一个参数的区间[0 1]
信谊x0 y0₀E0 Pm0
假设((x0 y0₀E0),“真实”的);
假设(Pm0 ~ = 0);
% x0, y0是相关的
assumeAlso (x0 * x0 + y0 * y0 = = 1);
%为动力系统方程,(相当于0找到平衡
%点)
eqn1 = y0 *₀+ x0 * (1-x0 * x0-y0 * y0) = = 0;
eqn2 = x0 *₀+ y0 * (1-x0 * x0-y0 * y0) = = 0;
eqn3 = -3.33 * E0 * y0 - 0.66 *₀+ 3.33 * Pm0 = = 0;
eqn4 = 0.5 * x0 - E0 + 0.5 = = 0;
%解的方程
eqn_final = [eqn1 eqn2、eqn3 eqn4);
variable_final = (x0, y0,₀E0);
=解决(eqn_final variable_final,“ReturnConditions”,真正的);
% PmSol是一个向量参数Pm0包含不同的值
PmSol = linspace (0.2, 5, 100);
%为每个值的Pm0 PmSol我们需要解决方程和发现
%平衡分。
%,那么我们需要存储解决方案x0 E0为每个点的值金宝搏官方网站。
%为每个点创建矢量定点位置的val PmSol
Fixed_points_locations = 1(2、长度(PmSol) * 4) * 0;
%为每个点我们会得到两个解或没有价值的解决方案金宝搏官方网站
%如果我们得到2解决方案我们金宝搏官方网站将存储一个向量:
% (x0_1 y0_1 omega0_1 E0_1;x0_1, y0_1 omega0_1 E0_1]矩阵之上。如果
%没有解决金宝搏官方网站方案,然后我们将0(2×4)存储在上面矩阵。
%的问题:
%的目标:我们的目标是使从现在开始的步骤一样快
%。这将会是一个更大的问题需要的一部分
%闪电快!
一个
一个=结构体字段:
x0: [1×1 sym] y0: [1×1 sym]₀: [1×1 sym] E0: [1×1 sym]参数:[1×1 sym]条件:[1×1 sym]
a.parameters
ans =
x
a.conditions
ans =
Pm_val = PmSol;
%替代所有点值一次。条件方程
%的参数
subs_new =潜艇(a。条件、Pm0 Pm_val);
subs_new (1, 1)
ans =
%现在我们需要做的就是解决subs_new(每个每个方程
%看起来像上图)得到参数值,与Pm_val相结合
%和代表达式x0 E0得到平衡
%的点值
%的问题:这个进行向量化吗?(以下为循环)
j = 1:长度(PmSol)
%在subs_new解决每个方程参数
parameter_val =解决(subs_new (j));
%的向量维度一样参数vals与值
% Pm_val (j)
Pm_new = parameter_val * 0 + Pm_val (j);
%替代parameter_val和Pm_new平衡点
T1 = {[parameter_val], [Pm_new]};
T2 = {。参数,Pm0};
xFP =潜艇(a。x0, T2, T1);
yFP =潜艇(a。y0, T2, T1);
omegaFP =潜艇(a。₀,T2, T1);
EFP =潜艇(a。E0, T2, T1);
(行,关口)=大小([xFP、omegaFP EFP]);
%如果没有解决方金宝搏官方网站案添加一个零矩阵的平衡点的位置
如果行= = 0
Fixed_points_locations (1:2, 3 * (j - 1) + 1:3 * (j - 1) + 3) = 1 (2、3) * 0;
继续;
结束
Fixed_points_locations (1:2, 3 * (j - 1) + 1:3 * (j - 1) + 3) = (xFP、omegaFP EFP);
结束

登录置评。

更多的答案(2)

atharva aalok
atharva aalok 2021年9月8日
我取得了一些进步,这最后一个问题是:
我将试着很快解释简短的问题,然后再次提出这个问题。
%创建符号变量
% x0 y0₀E0物理量
% Pm0通常是一个参数的区间[0 1]
信谊x0 y0₀E0 Pm0
假设((x0 y0₀E0),“真实”的);
假设(Pm0 ~ = 0);
% x0, y0是相关的
assumeAlso (x0 * x0 + y0 * y0 = = 1);
%为动力系统方程,(相当于0找到平衡
%点)
eqn1 = y0 *₀+ x0 * (1-x0 * x0-y0 * y0) = = 0;
eqn2 = x0 *₀+ y0 * (1-x0 * x0-y0 * y0) = = 0;
eqn3 = -3.33 * E0 * y0 - 0.66 *₀+ 3.33 * Pm0 = = 0;
eqn4 = 0.5 * x0 - E0 + 0.5 = = 0;
%解的方程
eqn_final = [eqn1 eqn2、eqn3 eqn4);
variable_final = (x0, y0,₀E0);
=解决(eqn_final variable_final,“ReturnConditions”,真正的);
% PmSol是一个向量参数Pm0包含不同的值
PmSol = linspace (0.2, 5, 100);
%为每个值的Pm0 PmSol我们需要解决方程和发现
%平衡分。
%,那么我们需要存储解决方案x0 E0为每个点的值金宝搏官方网站。
%为每个点创建矢量定点位置的val PmSol
Fixed_points_locations = 1(2、长度(PmSol) * 4) * 0;
%为每个点我们会得到两个解或没有价值的解决方案金宝搏官方网站
%如果我们得到2解决方案我们金宝搏官方网站将存储一个向量:
% (x0_1 y0_1 omega0_1 E0_1;x0_1, y0_1 omega0_1 E0_1]矩阵之上。如果
%没有解决金宝搏官方网站方案,然后我们将0(2×4)存储在上面矩阵。
%的问题:
%的目标:我们的目标是使从现在开始的步骤一样快
%。这将会是一个更大的问题需要的一部分
%闪电快!
一个
一个=结构体字段:
x0: [1×1 sym] y0: [1×1 sym]₀: [1×1 sym] E0: [1×1 sym]参数:[1×1 sym]条件:[1×1 sym]
a.parameters
ans =
x
a.conditions
ans =
Pm_val = PmSol;
%替代所有点值一次。条件方程
%的参数
subs_new =潜艇(a。条件、Pm0 Pm_val);
subs_new (1, 1)
ans =
%现在我们需要做的就是解决subs_new(每个每个方程
%看起来像上图)得到参数值,与Pm_val相结合
%和代表达式x0 E0得到平衡
%的点值
%的问题:这个进行向量化吗?(以下为循环)
j = 1:长度(PmSol)
%在subs_new解决每个方程参数
parameter_val =解决(subs_new (j));
%的向量维度一样参数vals与值
% Pm_val (j)
Pm_new = parameter_val * 0 + Pm_val (j);
%替代parameter_val和Pm_new平衡点
T1 = {[parameter_val], [Pm_new]};
T2 = {。参数,Pm0};
xFP =潜艇(a。x0, T2, T1);
yFP =潜艇(a。y0, T2, T1);
omegaFP =潜艇(a。₀,T2, T1);
EFP =潜艇(a。E0, T2, T1);
(行,关口)=大小([xFP、omegaFP EFP]);
%如果没有解决方金宝搏官方网站案添加一个零矩阵的平衡点的位置
如果行= = 0
Fixed_points_locations (1:2, 3 * (j - 1) + 1:3 * (j - 1) + 3) = 1 (2、3) * 0;
继续;
结束
Fixed_points_locations (1:2, 3 * (j - 1) + 1:3 * (j - 1) + 3) = (xFP、omegaFP EFP);
结束

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!