24小时热门版块排行榜    

查看: 1550  |  回复: 6

zhmdream

木虫 (正式写手)

[求助] 求助Matlab解方程问题

大家好,请大家一个Matlab解方程的问题,程序:
a=input('输入a:');
solve('a^2/(a+x)+a/(x-a)=9');
ans

运行结果:
输入a:5

ans =

(1/18*a+1/18+1/18*(a^2-34*a+361)^(1/2))*a
(1/18*a+1/18-1/18*(a^2-34*a+361)^(1/2))*a

我定义了a=5,但计算结果中a怎么是个字母啊?
是不是我没有定义a为数值?还是其他原因?
望大家帮忙,谢谢啦。
回复此楼

» 收录本帖的淘帖专辑推荐

第一性原理

» 猜你喜欢

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

人生如梦,岁月无情~~~
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

【答案】应助回帖

zhmdream(金币+10): 这样虽然可以,但是对于输入任意的a,还是手动改,比较麻烦 2011-10-10 10:19:02
zhmdream(金币+5): 谢谢 2011-10-10 11:05:26
zhmdream(金币+45): 谢谢啦!问题解决差不多了。我之后再翻翻书,消化消化。看来我还是对很多函数和命令理解太少了。呵呵 2011-10-10 18:31:10
SOLVE  Symbolic solution of algebraic equations.

solve是用来解出符号解的啦,所以solve里面字符串里面的a和你定义的a并不是同一个

你可以用subs函数
CODE:
A=solve('a^2/(a+x)+a/(x-a)=9');
subs(A, 5)

这样就把5“代入到符号表达式”中,求出数值解来了

PS:如果solve不能求出一些方程的解析解,那么应该考虑用其它数值方法
2楼2011-10-10 08:59:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

呼唤变通...
CODE:
a=input('输入a:');
A=solve('a^2/(a+x)+a/(x-a)=9');
subs(A, a)

你是不是想这样?
3楼2011-10-10 10:36:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhmdream

木虫 (正式写手)

引用回帖:
3楼: Originally posted by sudo at 2011-10-10 10:36:37:
呼唤变通...
CODE:
a=input('输入a:');
A=solve('a^2/(a+x)+a/(x-a)=9');
subs(A, a)

你是不是想这样?

谢谢啦!呵呵,其实我是想编一个这样的程序:

c=input('请输入c:')
a=x+1;
b=2*x+3;
A=solve('a*b+2*x+a-b=c');
subs(A,a);
subs(A,b);
subs(A,c);
ans

a、b包含了x,然后求解x。但是运行还是出现了以前的问题:

请输入c:2
c =2
ans =-1/2*a*b-1/2*a+1/2*b+1

呵呵,我是刚学Matlab,不是很懂,所以想一步一步弄明白。谢谢帮忙。帮我看看问题出在哪儿?剩下50金币全给你了。
人生如梦,岁月无情~~~
4楼2011-10-10 11:04:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
微尘、梦想(金币+5): 谢谢参与应助~ 2011-10-10 19:48:48
引用回帖:
4楼: Originally posted by zhmdream at 2011-10-10 11:04:43:
谢谢啦!呵呵,其实我是想编一个这样的程序:

c=input('请输入c:')
a=x+1;
b=2*x+3;
A=solve('a*b+2*x+a-b=c');
subs(A,a);
subs(A,b);
subs(A,c);
ans

a、b包含了x,然后求解x。但是运行还是出现了 ...

嗯,慢慢来吧
CODE:
c=input('请输入c:');
syms x;
a=x+1;
b=2*x+3;

f=a*b+2*x+a-b; %构造方程式的左边

%将方程式构造为字符串
equation = [char(f) ' = ' num2str(c,9)]; %num2str把数值转为字符串,第二个参数是有效数字

%计算符号解(经过上面的运算equation里面只有一个变量x)
A=solve(equation, 'x')

%输出数值解
double(A)

5楼2011-10-10 15:01:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)


jjdg(金币+1): 感谢参与 2011-10-12 04:53:36
其实只要注意solve接收的参数是字符串就好了
6楼2011-10-10 15:02:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wanyshenger

金虫 (正式写手)

引用回帖:
5楼: Originally posted by sudo at 2011-10-10 15:01:08
嗯,慢慢来吧


c=input('请输入c:');
syms x;
a=x+1;
b=2*x+3;

f=a*b+2*x+a-b; %构造方程式的左边

%将方程式构造为字符串
equation = ; %num2str把数值转为字符串,第二个参数是有效数字

%计算 ...

昨天捣鼓了好久,今天看到你的方法真是豁然开朗,太感谢了
USAwaitforme
7楼2015-07-01 23:05:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhmdream 的主题更新
信息提示
请填处理意见