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毫秒