Matlab 版 (精华区)

发信人: hahn (有奇☆闭关造文中), 信区: Matlab
标  题: [合集]  请教一个solve的问题
发信站: 哈工大紫丁香 (Tue Nov 14 07:34:59 2006), 站内

────────────────────────────────────────
  fxyz (星星的故乡)                于  (Tue Jun  6 12:39:25 2006)  说道:

下面这个程序是已知三个点,想画出它们的外接圆

但是在计算圆心时总是有错误

请教一下solve可不可以这么用?

计算圆心是根据圆心总是两条边的中垂线的交点

xx=[2 6 8];yy=[3 7 1];
coorpoin=[xx;yy];
dian=xx+i*yy;
poi=plot(dian,'*');
midx1=0.5*(coorpoin(:,1)+coorpoin(:,2));%%计算1 2点构成的边的中点
midx2=0.5*(coorpoin(:,3)+coorpoin(:,2));%%计算2 3点构成的边的中点
mi1=midx1',mi2=midx2',
[x y]=solve('([x y]-mi1)*(midx1-coorpoin(:,1))=0',...
'([x y]-mi2)*(midx2-coorpoin(:,2))=0')  %根据向量垂直构建了两个方程
r0=x+i*y;
r=abs(dian(1)-r0);
for t=0:0.01:2*pi
    cir=plot(r*exp(i*t)+r0);
end

但是在解方程的时候总是有问题,提示:([x y]-mi1)*(midx1-coorpoin(:,1))=0 ' is n
ot a valid expression or equation.
请问改如何解决



────────────────────────────────────────
  feifeifool (爱芳)                于  (Tue Jun  6 12:55:45 2006)  说道:

试试把方程的写法改成显式的,也就是具体的表达式.
【 在 fxyz (星星的故乡) 的大作中提到: 】
: 下面这个程序是已知三个点,想画出它们的外接圆
: 但是在计算圆心时总是有错误
: 请教一下solve可不可以这么用?
: ...................



────────────────────────────────────────
  hahn (有奇&&Gemini&&Sar)         于  (Tue Jun  6 13:36:25 2006)  说道:

   solve中好像不支持矩阵运算
   我试了都不行
   [x y]不能识别...

   矩阵的引用比如:coorpoin(:,1)也不支持的

   可能因为equation是 string吧
   
   

   

【 在 fxyz (星星的故乡) 的大作中提到: 】
: 下面这个程序是已知三个点,想画出它们的外接圆
: 但是在计算圆心时总是有错误
: 请教一下solve可不可以这么用?
: ...................



────────────────────────────────────────
  hahn (有奇&&Gemini&&Sar)         于  (Tue Jun  6 13:42:30 2006)  说道:

   
   似乎只能把矩阵中的每个量用单独的变量表示了
  
   可能string属性在编译的时候
   只能当每个变量字符只是代表一个不是矩阵的单变量值
   

【 在 fxyz (星星的故乡) 的大作中提到: 】
: 下面这个程序是已知三个点,想画出它们的外接圆
: 但是在计算圆心时总是有错误
: 请教一下solve可不可以这么用?
: ...................



────────────────────────────────────────
  fxyz (星星的故乡)                于  (Tue Jun  6 16:15:49 2006)  说道:


【 在 hahn (有奇&&Gemini&&Sar) 的大作中提到: 】
:    solve中好像不支持矩阵运算
:    我试了都不行
:    [x y]不能识别...
:    矩阵的引用比如:coorpoin(:,1)也不支持的
:    可能因为equation是 string吧
:    
我改成
xx=[2 6 8];yy=[3 7 1]; 
coorpoin=[xx;yy]; 
dian=xx+i*yy; 
poi=plot(dian,'*'); 
midx1=0.5*(coorpoin(:,1)+coorpoin(:,2));%%计算1 2点构成的边的中点 
midx2=0.5*(coorpoin(:,3)+coorpoin(:,2));%%计算2 3点构成的边的中点 
mi1=midx1';mi2=midx2';
syms x y
f1=([x y]-mi1)*(midx1-coorpoin(:,1))
f2=([x y]-mi2)*(midx2-coorpoin(:,2))
[x y]=solve('f1=0','f2=0') 
r0=x+i*y; 
r=abs(dian(1)-r0); 
for t=0:0.01:2*pi 
    cir=plot(r*exp(i*t)+r0); 
end 

看f1和f2的输出已经是一个方程了
但是还是不行


────────────────────────────────────────
  hahn (有奇&&Gemini&&Sar)         于  (Tue Jun  6 16:35:09 2006)  说道:

   我的意思是你把矩阵的每个元素用单独符号表示

   solve的equ的string对矩阵操作不支持...
   不能使用[x y] 及角标引用的coorpoin(:,1)
   也不能使用矩阵乘法

   全部分开表示...

【 在 fxyz (星星的故乡) 的大作中提到: 】
: 我改成
: xx=[2 6 8];yy=[3 7 1]; 
: coorpoin=[xx;yy]; 
: ...................



────────────────────────────────────────
  fxyz (星星的故乡)                于  (Tue Jun  6 23:10:56 2006)  说道:


【 在 hahn (有奇&&Gemini&&Sar) 的大作中提到: 】
:    我的意思是你把矩阵的每个元素用单独符号表示
:    solve的equ的string对矩阵操作不支持...
:    不能使用[x y] 及角标引用的coorpoin(:,1)
:    也不能使用矩阵乘法
:    全部分开表示...


谢谢你
那这个方程要是想解的话,该怎么做?
我想了很久也不知道该怎样把圆心求出来
这是一个程序中的一部分,我把他简化成这个了,其实三角形的顶点是变化的,每次都不
一样??
可不可已帮我想想?


────────────────────────────────────────
  hahn (有奇&&Gemini&&Sar)         于  (Wed Jun  7 12:20:34 2006)  说道:

 好的,我试着写一下

【 在 fxyz (星星的故乡) 的大作中提到: 】
: 谢谢你
: 那这个方程要是想解的话,该怎么做?
: 我想了很久也不知道该怎样把圆心求出来
: ...................



────────────────────────────────────────
  hahn (有奇&&Gemini&&Sar)         于  (Wed Jun  7 13:10:30 2006)  说道:

   程序我已经发给你了
   请查收...

   solve 对矩阵运算支持太差,
   我迫不得已用公式了
   你看看合不合用...

【 在 fxyz (星星的故乡) 的大作中提到: 】
: 谢谢你
: 那这个方程要是想解的话,该怎么做?
: 我想了很久也不知道该怎样把圆心求出来
: ...................



────────────────────────────────────────
  fxyz (星星的故乡)                于  (Wed Jun  7 17:27:11 2006)  说道:


【 在 hahn (有奇&&Gemini&&Sar) 的大作中提到: 】
:    程序我已经发给你了
:    请查收...
:    solve 对矩阵运算支持太差,
:    我迫不得已用公式了
:    你看看合不合用...


程序已收到
太感谢你了
只要是能算出来圆心就可以了

太谢谢您了


[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.442毫秒