首页 > 解决方案 > MATLAB中的线性方程组:如何求解k个未知数上的k-1个方程组?

问题描述

我正在尝试解决我的作业的问题,即多边形 Q 作为输入并输出多边形 P,使得 Q 的二维坐标点是多边形 P 的中点。

也就是说,给定平面 q1...qk 中的 k 个点的序列,找到一个序列 p1...pk 使得

我在 Matlab 中编写了处理奇数 k 点场景的函数。但是,它不适用于偶数个 k 点。

function [P,FOUND] = InvertMidpoints(Q)
C=zeros(length(Q));
P=zeros(2,length(Q));
FOUND=false;
k=1;
x=[Q(1,:)]';
y=[Q(2,:)]';
if mod(length(Q),2)==0
    disp('Did not solve for even number of points')
else
    for i=1:(length(Q)-1)
        C(i,k)=1/2;
        C(i,k+1)=1/2;
        k=k+1;
        i=i+1;
    end
    C(length(Q),1)=1/2;
    C(length(Q),length(Q))=1/2;
    a=linsolve(C,x);
    b=linsolve(C,y);
    P(1,:)=a;
    P(2,:)=b;
    FOUND=true;
end
end

基本上,它用 C 系数矩阵求解线性方程。

我的教授给了我以下提示,但我真的没有得到它:

如果 k 是奇数,则矩阵 C 的秩总是 k,如果 k 是偶数,则矩阵 C 的秩总是 k-1。因此,如果 k 是奇数,那么您可以构造上述矩阵并解决问题。如果 k 是偶数,那么即使有解决方案,Matlab 也不会允许您这样做。相反,您必须(a)抛出其中一个方程式;(b) 在 k 个未知数中求解剩余的 k-1 个方程组;(c) 检查你找到的解是否满足最后一个方程

拜托,你能向我解释一下这个提示的真正含义吗?谢谢!

标签: matlabmatrixlinear-algebralinear-equation

解决方案


推荐阅读