24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1029  |  回复: 7

luohubin

木虫 (正式写手)

[交流] 【求助】解方程组的错误已有5人参与

大家好,我刚接触matlab,想求两条曲线的公切线方程,写了代码如下
function s=comtan(p)
syms x1 x2;
a=p(1);
b=p(2);
c=p(3);
d=p(4);
e=p(5);
g=p(6);
h=p(7);
i=p(8);
j=p(9);
k=p(10);
f1=a+b*exp(c*x1^0.3333334)+d*exp(e*x1^0.3333334);
f2=g+h*exp(i*x2^0.3333334)+j*exp(k*x2^0.3333334);
df1=diff(f1,x1);
df2=diff(f2,x2);
A1=simplify((f2-f1)/(x2-x1)-df1);
A2=simplify(df2-df1);
[x1,x2]=solve(A1,A2);
s=[x1,x2];

但是总提示我Error: Unexpected MATLAB expression,找不到错误,请大家帮忙,如果有更好的求公切线方程的方法希望能指点一下
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

消愁无计对金樽
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ctgu_zheng

专家顾问 (著名写手)



nono2009(金币+1):鼓励应助。 2010-07-29 17:22:26
luohubin(金币+2):这些语句其实是要求出两条曲线f1,f2的两个公切点,结果是要得到两个点的横坐标x1,x2. 至于solve,应该没问题,用help solve可以找到范例,网上不少人也这样用。还是感谢! 2010-07-29 18:09:08
程序我看了会
公切线方程没太明白到底是什么方程;
符号运算 simplify好像用的不太多;
然后 solve命令也不对 如果是想求A1=0,A2=0的解的话
应该是这样的 [x1,x2]=solve('A1=0','A2=0');
2楼2010-07-29 16:15:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

icyspace

金虫 (小有名气)

luohubin(金币+2):啊?是吗?我用comtan(1:1:10)怎么没反应?不是这样输入吗? 2010-07-30 21:48:27
我运行了下,感觉挺正常的啊~我舍 p=1:1:10;可以得到结果的~
3楼2010-07-30 14:44:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
adu886886:专业版块请勿灌水,首次警告,下不为例! 2010-07-30 17:02:30
4楼2010-07-30 15:17:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

icyspace

金虫 (小有名气)


robert2020(金币+1):鼓励应助!欢迎常来仿真模拟版交流! 2010-08-03 00:53:48
luohubin(金币+1):谢谢 2010-08-04 09:12:51
试试这个

p=1:10;comtan(p);

[ Last edited by icyspace on 2010-7-31 at 13:23 ]
5楼2010-07-31 13:21:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

robert2020

银虫 (著名写手)

luohubin(金币+2): 2010-08-04 09:10:19
使用comtan(1:1:10)可以运行(matlab7.0),把*.m文件最后一句“s=[x1,x2];”中的“;”去掉就会出结果
引用回帖:
Originally posted by luohubin at 2010-07-29 14:54:19:
大家好,我刚接触matlab,想求两条曲线的公切线方程,写了代码如下
function s=comtan(p)
syms x1 x2;
a=p(1);
b=p(2);
c=p(3);
d=p(4);
e=p(5);
g=p(6);
h=p(7);
i=p(8);
j=p(9);
k=p(10);
f1=a+b* ...

Truthfulness,Compassion,Tolerance,Beauty
6楼2010-08-03 00:53:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

luohubin

木虫 (正式写手)

还是有问题

引用回帖:
Originally posted by robert2020 at 2010-08-03 00:53:00:
使用comtan(1:1:10)可以运行(matlab7.0),把*.m文件最后一句“s=[x1,x2];”中的“;”去掉就会出结果


版主,还是有问题啊,我是 R2010版本,看你说的做了,下面是出来的信息
Warning: Explicit solution could not be found.
> In solve at 81
  In comtan at 19

s =

[ empty sym ]


ans =

[ empty sym ]
这是哪里出问题了呢?
消愁无计对金樽
7楼2010-08-04 09:11:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

robert2020

银虫 (著名写手)

luohubin(金币+1):已经很感谢了,本来想多给金币,没想到不能增加,不好意思 2010-08-07 16:19:07
楼主,不好意思,偶没有装2010版的,不太清楚是何问题;
自己以前编过一个求半圆切线方程的程序,希望对楼主有所帮助。
引用回帖:
% 求两个半圆的公切线
clc;clear all;close all
syms x
y1=sqrt(1-x.^2);
y2=2-sqrt(1-x.^2);
% 求导
y11=diff(y1,x);
y22=diff(y2,x);
% 求切线斜率 k0 及切点坐标(x0,y0)
f1=y2-y1;
f2=y22-y11;
x0=solve(f1);
k0=solve(f2);
y0=subs(y1,x0);
y=k0*x+y0; % 切线方程
x1=-1:0.001:1; % 定义自变量
y=subs(y,x1,'r'); % 切线
y1=subs(y1,x1); % 半圆 1
y2=subs(y2,x1); % 半圆 2
% 绘图
plot(x1,y)
hold on
plot(x1,y1)
plot(x1,y2)
axis([-1 1 0 2])

引用回帖:
Originally posted by luohubin at 2010-08-04 09:11:58:

版主,还是有问题啊,我是 R2010版本,看你说的做了,下面是出来的信息
Warning: Explicit solution could not be found.
> In solve at 81
  In comtan at 19

s =

[ empty sym ]


ans =
...

Truthfulness,Compassion,Tolerance,Beauty
8楼2010-08-04 13:28:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 luohubin 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见