gpt4 book ai didi

matlab - 如何找到 norm(a,2)==c 的唯一解;当 c 是标量且 a=[x abs(1/x);x+1 1/x]

转载 作者:太空宇宙 更新时间:2023-11-03 20:03:24 26 4
gpt4 key购买 nike

我正在尝试使用 Matlab 找到以下方程的唯一解

               norm(a,2)=0.11

x 是一个变量并且 a=[x abs(1/x);x+1 1/x]bnorm(a,2) 的精确公式,我得到了:

syms x
a=[x abs(1/x);x+1 1/x];
b = norm(a,2)

b = max(abs(2*x + x*abs(x)^2 + 2*x*abs(x)^4 + abs(x)^4 + x^2*abs(x)^2 - (4*x*abs(x)^5 + 2*x*abs(x)^6 + 4*x*abs(x)^8 + abs(x)^8 + 8*x^2*abs(x)^3 + x^2*abs(x)^4 + 4*x^3*abs(x)^3 + 2*x^3*abs(x)^4 + 6*x^2*abs(x)^6 + x^4*abs(x)^4 + 4*x^3*abs(x)^6 + 4*x^2*abs(x)^8 + 4*x^2)^(1/2))/(2*abs(x)^3), abs(2*x + x*abs(x)^2 + 2*x*abs(x)^4 + abs(x)^4 + x^2*abs(x)^2 + (4*x*abs(x)^5 + 2*x*abs(x)^6 + 4*x*abs(x)^8 + abs(x)^8 + 8*x^2*abs(x)^3 + x^2*abs(x)^4 + 4*x^3*abs(x)^3 + 2*x^3*abs(x)^4 + 6*x^2*abs(x)^6 + x^4*abs(x)^4 + 4*x^3*abs(x)^6 + 4*x^2*abs(x)^8 + 4*x^2)^(1/2))/(2*abs(x)^3))^(1/2)

我试过 solve() 结果如下:

solve(b==0.11,x) 
Warning: Cannot find explicit solution.

答案=空符号:0×1

任何有关求解上述方程的合适方法的帮助将不胜感激。

最佳答案

据我所知

norm(a) = max(svd(a))

max 是这个方程中的一个问题,这就是为什么我会分别为两个 svd 结果找到并求解符号方程:

syms x
a=[x abs(1/x);x+1 1/x];

s = svd(a);

% svd 1
solve(s(1)==0.11,x)

% svd 2
solve(s(2)==0.11,x)

svd 1 的返回值:

Warning: Cannot solve symbolically. Returning a numeric approximation instead. 

ans = -12.84595601211006224344551434882

svd 2 的返回值:

Warning: Cannot find explicit solution. 

ans = Empty sym: 0-by-1

所以答案是

ans = -12.84595601211006224344551434882

如果我们对每个 svd 部分都有一个解决方案,我们可以找到它们的 max()。

这是两个 svd 函数的绘图:

enter image description here

更新

正如我们在上面看到的,求解器切换到数值求解器并且只找到一个解,尽管该图向我们展示了至少两个可能的解。

要找到所有解(实际上可能有两个以上),我会直接使用数值求解器 vpasolve 并输入初始猜测值或让求解器随机找到解:

vpasolve(s(1)==0.11,x,2) % input initial guess as 2

它返回第二个解决方案:

ans = 2.2626424161863046178372248086765

或者使用随机猜测:

for n = 1:10 
vpasolve(s(1)==0.11,x,'Random',true) % use random guess
end

它返回所有找到的解决方案:

ans = -12.84595601211006224344551434882 
ans = -12.84595601211006224344551434882
ans = -12.84595601211006224344551434882
ans = -12.84595601211006224344551434882
ans = 2.2626424161863046178372248086765 %!!!
ans = -12.84595601211006224344551434882
ans = -12.84595601211006224344551434882
ans = -12.84595601211006224344551434882
ans = -12.84595601211006224344551434882
ans = -12.84595601211006224344551434882

关于matlab - 如何找到 norm(a,2)==c 的唯一解;当 c 是标量且 a=[x abs(1/x);x+1 1/x],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54999931/

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