matlab用solve解方程错误提示,用matlab的solve函数解方程/方程组的程序运行出错

用2010a版本matlab的solve函数解方程,方程系数随给定变化,用的num2str()实现系数传递,但是换成方程组就不行了。而我的主要目的还是想解变系数的方程组,现在是假设给定系数传递到方程组中加以验证两段程序如下:解一个未知量的方程程序:

nw=2;

d=17;

x1=4;

z1=3;

syms u real

u1=solve(['(',num2str(nw),'^2*',num2str(d),'^2+',num2str(nw),'^2*u^2-u^2)*(',num2str(x1),'-u)^2-(',num2str(z1),'*u)^2=0'],'u')

运行结果和直接将系数代入是一样的,说明正确。

而如果换成下面方程组就出问题了,程序如下:

syms k u

clc;

clear;

nw=2;

ng=1;

d=17;

x1=4;

z1=3;

h=1;

[k,u]=solve(['',num2str(nw),'^2/',num2str(ng),'^2+',num2str(h),'^2/',num2str(ng),'^2*(k-u)^2-',num2str(z1),'^2/((',num2str(x1),'-k)^2)-1=0','(',num2str(ng),'^2*(',num2str(d),'^2+u^2)-u^2)*(k-u)^2-(',num2str(h),'*u)^2=0'],'k','u')

运行结果:

arning: 1 equations in 2 variables. New variables might be introduced.

Warning: Could not extract individual solutions. Returning a MuPAD set

object.

> In solve>assignOutputs at 104

In solve at 87

In Untitled2 at 23

k =

solvelib::Union({matrix([[z1], [x]]) | z1 in RootOf(z^4 - z^3*(2*x + 8) + z^2*(16*x + 2*x^2 + 19) - z*(32*x + 16*x^2 + 24) + 32*x^2 + 39, z)}, x, R_)

u =

[]

而我如果直接将系数代入方程组却是有结果的如下

[u,k]=solve('4+1/(k-u)^2-9/(4-k)^2-1=0','((17^2+u^2)-u^2)*(k-u)^2-u^2=0','u','k')

u =

4.7984129169991595687249419320395

3.401503416769899328935248503063

4.7157135906116105117222193261033

3.453751018098001328107450582844

k =

5.0983137243116070417702508027919

3.6140973803180180369937015345044

4.4537295022442988166265404746531

3.2618759615370012543237033282415

所以想把系数通过参数传递到方程组的方式没法实现,看过论坛里也有类似的情况,不过用num2str()来实现变系数的没发现。请高人指教,或者用其他方法能实现将变化的系数传递到方程组也行。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值