24小时热门版块排行榜    

查看: 3465  |  回复: 2

会飞的泡123

铜虫 (小有名气)

[求助] matlab解一元一次方程的问题已有1人参与

matlab解一元一次方程的时候,用到fzero这个命令,但是一元一次方程中我有一个矩阵,matlab总是提示错误,但是当我把矩阵中的每一个值依次手动带入进去算就会出结果。。。这怎么解决呢。。。如果矩阵就几个值还可以手动挨个带入算,这要是几百个我会累死哒。。。。。

比方已知矩阵c=[0.1        0.2        0.3        0.4        0.5        0.6        0.7        0.8        0.9        1        2        3        4        5        6        7        8        9        10        20        30        40        50        60        70        80        90        100];
用fzero解下面这个方程,零点大概位置都在1000附近,

Q=fzero('x./(sqrt(x.^2+c(1,1))).*besselj(-1,x*1.75*10^-3).*besseli(0,1.75*10^-3.*sqrt(c(1,1)+x.^2))-besselj(0,x*1.75*10^-3).*besseli(-1,sqrt(c(1,1)+x.^2)*1.75*10^-3)',1000);
这样解matlab就报错。。。:
??? Error using ==> fzero at 307
FZERO cannot continue because user supplied expression ==>
x./(sqrt(x.^2+c(1,1))).*besselj(-1,x*1.75*10^-3).*besseli(0,1.75*10^-3.*sqrt(c(1,1)+x.^2))-besselj(0,x*1.75*10^-3).*besseli(-1,sqrt(c(1,1)+x.^2)*1.75*10^-3)
failed with the error below.

Error in inline expression ==>
x./(sqrt(x.^2+c(1,1))).*besselj(-1,x*1.75*10^-3).*besseli(0,1.75*10^-3.*sqrt(c(1,1)+x.^2))-besselj(0,x*1.75*10^-3).*besseli(-1,sqrt(c(1,1)+x.^2)*1.75*10^-3)
Undefined function or method 'c' for input arguments of type 'double'.


如果我把c(1,1)带入就没问题,就出结果了:
Q=fzero('x./(sqrt(x.^2+0.1)).*besselj(-1,x*1.75*10^-3).*besseli(0,1.75*10^-3.*sqrt(0.1+x.^2))-besselj(0,x*1.75*10^-3).*besseli(-1,sqrt(0.1+x.^2)*1.75*10^-3)',1000)
这样就木有问题。。



我想问下怎样才能不挨个代数进去。。。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

whyjackeyson

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
会飞的泡123: 金币+20, ★★★★★最佳答案 2015-11-09 21:20:09
fzero函数使用错误,对于存在符号变量的求解使用fzero可以采用句柄方式代入,或者外部定义函数。
求解可使用循环语句。
c = [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 2 3 4 5 6 7 8 9 10 20 30 40 50 60 70 80 90 100];
for i = 1:28
    Q(i) = fzero(@(x)x./(sqrt(x.^2+c(i))).*besselj(-1,x*1.75*10^-3).*besseli(0,1.75*10^-3.*sqrt(c(i)+x.^2))-besselj(0,x*1.75*10^-3).*besseli(-1,sqrt(c(i)+x.^2)*1.75*10^-3),1000);
end
2楼2015-11-09 18:31:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

会飞的泡123

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by whyjackeyson at 2015-11-09 18:31:07
fzero函数使用错误,对于存在符号变量的求解使用fzero可以采用句柄方式代入,或者外部定义函数。
求解可使用循环语句。
c = ;
for i = 1:28
    Q(i) = fzero(@(x)x./(sqrt(x.^2+c(i))).*besselj(-1,x*1.75*10^ ...

thank you ~~~
3楼2015-11-09 21:19:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 会飞的泡123 的主题更新
信息提示
请填处理意见