matlab - MATLAB中的线性方程组:如何求解k个未知数上的k-1个方程组?
问题描述
我正在尝试解决我的作业的问题,即多边形 Q 作为输入并输出多边形 P,使得 Q 的二维坐标点是多边形 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 是偶数,则矩阵 C 的秩总是 k-1。因此,如果 k 是奇数,那么您可以构造上述矩阵并解决问题。如果 k 是偶数,那么即使有解决方案,Matlab 也不会允许您这样做。相反,您必须(a)抛出其中一个方程式;(b) 在 k 个未知数中求解剩余的 k-1 个方程组;(c) 检查你找到的解是否满足最后一个方程
拜托,你能向我解释一下这个提示的真正含义吗?谢谢!
解决方案
推荐阅读
- linux - 从文件名中删除开头 4 个字母和结尾 4 个字母
- csv - 如何减少在 Julia 中打开大型 csv 文件所需的时间(使用 CSV 和 DataFrames)?
- indexing - Google Sheets - 使用 API 获取工作簿中的 gid 列表
- c# - 在实体接口(EF Core)中声明要忽略的属性
- react-admin - 找出何时调用刷新
- javascript - 如何使用js或php将填写类名的表作为html文件保存在我的本地磁盘中?
- proxy - elixir+hex - 获取 ranch_proxy_protocol ssl 的 hex 错误:ssl_accept 3 deprecated
- android - 如何在 Recycler View 中添加整数值
- angular - 您如何实现自动生成的不同数量的选项卡?
- r - ddply with which.max 函数