用matlab的fsolve解二元方程,但是总是出错,谁能帮我看看哪里出错了吗? 30

代码是:clcclearsymsxyvb=x*2+3*y+1vc=y*2+4*x+1fsolve(vb,vc,[1,1])fun=@(x,y)([x.^2+y.^2-1,... 代码是:
clc
clear
syms x y
vb=x*2+3*y+1
vc=y*2+4*x+1
fsolve(vb,vc,[1,1])
fun=@(x,y)([x.^2+y.^2-1,x-2*y])
fsolve(fun,[1 1])

不想定义.m的函数文件,有谁能帮我改一下吗,不胜感激
哪位高手帮帮忙,在追加20
展开
 我来答
匿名用户
2014-03-31
展开全部

使用fsolve求解方程,未知数不能使用多个变量符号,而是应该把多个未知数写成一个向量。

 

例如,对于你现在的两个问题,应该用x(1)表示x,x(2)表示y:

>> f=@(x)[x(1)*2+3*x(2)+1;x(2)*2+4*x(1)+1];
>> fsolve(f,[1 1])
ans =
   -0.1250   -0.2500
>> fun=@(x)([x(1).^2+x(2).^2-1,x(1)-2*x(2)]);
>> fsolve(fun,[1 1])
ans =
    0.8944    0.4472

 

不过,对你现在这两个方程组来说,都可以使用solve函数求精确解:

>> syms x y
>> vb=x*2+3*y+1;
>> vc=y*2+4*x+1;
>> [x,y]=solve(vb,vc)
x =
-1/8
y =
-1/4
 
>> syms x y
>> [x,y]=solve(x.^2+y.^2-1,x-2*y)
x =
  (2*5^(1/2))/5
 -(2*5^(1/2))/5
y =
  5^(1/2)/5
 -5^(1/2)/5

 尤其第二组方程,有多个解,用solve函数可以直接求出来。

更多追问追答
追问
嗯,我知道简单的方程可以用solve解出来,因为我要解另外的一个方程,想验证一下fsolve的方法,
对于vb,vc的表达方式,这个是错在哪里呢?
未知数完全不能用x,y表示吗?
追答
你可以查一下fsolve的帮助或者看它的代码,要求解的函数只能是一个变量,不允许使用多个变量的。对于多个变量的情况,只能用x(1)、x(2)之类的符号。

你说的vb、vc的表达式,上面我把两种方法都给了,还有什么不明白的?
上海华然企业咨询
2024-10-28 广告
在测试大模型时,可以提出这样一个刁钻问题来评估其综合理解与推理能力:“假设上海华然企业咨询有限公司正计划进入一个全新的国际市场,但目标市场的文化习俗、法律法规及商业环境均与我们熟知的截然不同。请在不直接参考任何外部数据的情况下,构想一套初步... 点击进入详情页
本回答由上海华然企业咨询提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式