永发信息网

matlab求解非线性方程

答案:3  悬赏:30  手机版
解决时间 2021-04-04 04:19
  • 提问者网友:贪了杯
  • 2021-04-03 15:24
matlab求解非线性方程
最佳答案
  • 五星知识达人网友:愁杀梦里人
  • 2021-04-03 16:44
如果你有n个未知数n个方程,就定义一个输入输出都是n*1列向量的函数,然后用fsolve解。比如你想解方程组
x1^2+x2=7
x2^3+exp(x1)=100
就定义一个函数
func1=@(x)[x(1)^2+x(2)-7;x(2)^3+exp(x(1))-100];
x=fsolve(func1,[1;1])
全部回答
  • 1楼网友:春色三分
  • 2021-04-03 17:37
得不出解析解,除非有A和B的值:
clear all;clc;
A=3;
B=2;
syms x
solve(eval((x+A)*cos(x)-sin(x)-B))

ans =

.77394808752697357508109385553800追问带三角函数的方程一般都是周期的超越方程,解的个数较多,我相求在0.5附近的解,A=0.0777,B=0.0681追答没错,是的,一般都是超越方程,但你给的A、B值好像得不出0.5附近的解:
clear all;clc;
A=0.0777;
B=0.0681;
syms x
solve(eval((x+A)*cos(x)-sin(x)-B))

ans =

.27290224875451941210255630541994追问》fzero('((x+0.0777)*cos(x)-sin(x)-0.0681)',0.5)
ans =
0.2729
但是A,B值怎样才能自动带入,再解。
fzero('eval((x+)*cos(x)-sin(x)-B)',0.5)这样就报错了追答不知怎么回答不了了,放评论里了
  • 2楼网友:雪起风沙痕
  • 2021-04-03 17:10
fun=@(x)(x+0.0777)*cos(x)-sin(x)-0.0681;
>> fzero(fun,0.5)
ans =
0.2729
可以用求零点函数解
A=0.0777;
>> B=0.0681;
>> fun=@(x)(x+A)*cos(x)-sin(x)-B;
>> fzero(fun)
就可以编程求解追问不可以啊
A=0.0777;
B=0.0681;
fun=@(x)(x+A)*cos(x)-sin(x)-B;
fzero(fun)
??? Error using ==> fzero at 118
The input should be either a structure with valid fields or
at least two arguments to FZERO.追答因为是超越方程,有无数个解,你要给出所要的解的大致范围
fzero(fun,m),其中m是你要的在m附近的解
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯