gpt4 book ai didi

matlab - 只更新一个矩阵元素进行迭代计算

转载 作者:行者123 更新时间:2023-12-04 05:31:45 25 4
gpt4 key购买 nike

我有一个 3x3 矩阵 A。我还计算了一个值 g,作为 A 的最大特征值。我试图以 0.10 的增量将所有值的元素 A(3,3) = 0 从 0 更改为 1,并且然后为每个值更新 g。我希望所有其他矩阵元素保持不变。

我认为 for 循环将是执行此操作的方法,但我不知道如何仅更新矩阵中的一个元素而不将此更新存储为一个越来越大的矩阵。如果我调用 A(3,3) = p 处的元素(从而创建一个新矩阵 Atry),我能够(如下)获得我想要的从 0 到 1 的所有值。我不知道如何更新 Atry 以获得我想要的所有 g 值。正如预期的那样,代码的状态现在将为所有迭代提供相同的 g 值,因为我不知道如何使用不同的 p 值更新 Atry,然后计算 g 的值。

任何有关如何执行此操作的建议或对我进行网络搜索的行话或短语的建议将不胜感激。

A = [1 1 1; 2 2 2; 3 3 0];  
g = max(eig(A));

% This below is what I attempted to achieve my solution
clear all
p(1) = 0;
Atry = [1 1 1; 2 2 2; 3 3 p];
g(1) = max(eig(Atry));

for i=1:100;
p(i+1) = p(i)+ 0.01;
% this makes a one giant matrix, not many
%Atry(:,i+1) = Atry(:,i);
g(i+1) = max(eig(Atry));
end

最佳答案

这也将完成您想要做的事情:

A = @(x) [1 1 1; 2 2 2; 3 3 x];
p = 0:0.01:1;
g = arrayfun(@(x) eigs(A(x),1), p);

分割:
  • 定义 A作为匿名函数。这意味着命令 A(x)将返回您的矩阵 A(3,3)元素等于 x .
  • 定义你想在向量中采取的所有步骤 p
  • 然后“循环”遍历 p 中的所有元素通过使用 arrayfun而不是实际的循环。

  • 该函数被 arrayfun 循环不是 max(eig(A))但是 eigs(A,1) ,即 1最大特征值。结果将是相同的,但 eigs 使用的算法更适合您的问题类型——而不是计算所有特征值然后只使用最大值,您只计算最大值。不用说,这要快得多。

    关于matlab - 只更新一个矩阵元素进行迭代计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12488005/

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