MATLAB中的线性方程:如何在k个未知数上求解k-1个方程组?

问题描述

我正在尝试解决分配多边形Q作为输入和输出多边形P的任务,以使Q的2D坐标点成为多边形P的中点。

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

  • q1是p1和p2的中点

  • q2是p2和p3的中点

  • ...

  • qk是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为偶数,则将k − 1排名。因此,如果k为奇数,则可以构造上述矩阵并求解 问题。如果k为偶数,那么即使有解决方案,Matlab也将不允许您这样做。而是 您必须(a)丢掉一个方程式; (b)求解k中剩余的k − 1个方程组 未知数(c)检查找到的解是否满足最后一个方程式

请,您能告诉我这个提示的真正含义吗?谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)