24小时热门版块排行榜    

CyRhmU.jpeg
查看: 840  |  回复: 10
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

dxyhn1979

银虫 (小有名气)

[交流] 【求助】如何循环解方程

求教:
      在一个M文件中求得的一个符号表达式,如何载入到另一个M文件中定义为一个可以数值求解的函数,并在前一个M文件中调用此函数并对其求解?
自己编的具体的程序如下:请各位路过的大内高手给修改一下啊。

M文件一。
clear
syms x   m   n   h   alpha_m     beta_m    alpha_n    beta_n    alpha_h    beta_h... Gna   Gk    Gl    Ena     Ek    El   I ;%定义的符号变量

alpha_m=0.1*(x+40)/(1-exp(-(x+40)/10));    %================
alpha_n=0.01*(x+55)/(1-exp(-(x+55)/10));   %
alpha_h=0.07*exp(-(x+65)/20);                     %
                                                                       %
beta_m=4*exp(-(x+65)/18);                          %
beta_n=0.125*exp(-(x+65)/80);                    %九个符号表达式
beta_h=1/(1+exp(-(x+35)/10));   
                                                                       %
m=alpha_m/(alpha_m+beta_m);                    %
n=alpha_n/(alpha_n+beta_n);                        %
h=alpha_h/(alpha_h+beta_h);                        % ===================

f=I-Gna*m^3*h*(x-Ena)-Gk*n^4*(x-Ek)-Gl*(x-El); %  最终的符号表达式
I=[1:100];   
for i=1:100  
  d=I(i);
  g(i)=subs(f,{Gna  Gk  Gl  Ena  Ek  El  I},[120 36 0.3 57 -77 -54.4 d]);
          % g(i)中的Gna    Gk    Gl    Ena   Ek   El     I是符号常量,用具体的数值替代
  save g;%每次循环得到的g(i)都保存下来,用以载入到M文件二中,并在此文件中
             %调用求解
   [x,F]=fsolve('HHfsolve',-50)   %解非线性方程,x的初值取-50,求其零点及其
                                                % 在零点的函数值
end
以上程序每个循环求出一个g。

M文件二。建立函数
function F=HHfsolve(x)    %定义的函数F,这是另外建的一个M文件。
load g;        
F=g(i);    %使用的g(i)是M文件一中每次循环求得的g(i)
载入的是符号方程,此function 是不接受的,如何叫其接受?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

岸芷汀兰-

铁虫 (小有名气)


nono2009(金币+1):鼓励。 2010-03-26 18:18
引用回帖:
Originally posted by 岸芷汀兰- at 2010-03-26 16:09:59:


你好,刚才请教cosh(x).*cos(x)+1零解问题,我级别低不让我发短消息了。呵呵。
解这个方程,用solve可以得到所有的零解吗?具体的数值。
我扩大了x的范围好像也是六个解。

哦  我算错了,呵呵,是有无穷个解。
可以截取前六个的数值吗?
11楼2010-03-26 16:13:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 11 个回答

change0618

铁杆木虫 (著名写手)

方丈大师

★ ★ ★ ★ ★
dxyhn1979(金币+3,VIP+0):您太负责了,感谢 10-16 08:42
nono2009(金币+2,VIP+0):谢谢热心帮助。欢迎常来交流。 10-16 10:42
function uuuu
clear all
clc

I=1:100;
x=zeros(length(I),1);
fval=zeros(length(I),1);
exitflag=zeros(length(I),1);
for i=1:length(I)
    [x(i),fval(i),exitflag(i)]=fsolve(@(x)myfun(x,I(i)),-50);   %解非线性方程
    clc
end
fprintf('\tI值\t\t\tx\t\t\t\tF函数值\t\t\t退出标志\n')
for i=1:length(I)
fprintf('\t%3d\t\t%.6f\t\t%18.15f\t\t%d\n',I(i),x(i),fval(i),exitflag(i))
end

function F = myfun(x,I)
Gna = 120;
Gk = 36;
Gl = 0.3;
Ena = 57;
Ek = -77;
El = -54.4;
alpha_m=0.1*(x+40)/(1-exp(-(x+40)/10));
alpha_n=0.01*(x+55)/(1-exp(-(x+55)/10));
alpha_h=0.07*exp(-(x+65)/20);

beta_m=4*exp(-(x+65)/18);
beta_n=0.125*exp(-(x+65)/80);
beta_h=1/(1+exp(-(x+35)/10));

m=alpha_m/(alpha_m+beta_m);
n=alpha_n/(alpha_n+beta_n);
h=alpha_h/(alpha_h+beta_h);
F = I-Gna*m^3*h*(x-Ena)-Gk*n^4*(x-Ek)-Gl*(x-El);
2楼2009-10-15 21:50:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

I值                        x                                           F函数值                   退出标志
          1                -64.124710                -0.000000000626284                1
          2                -63.406532                -0.000000000014806                1
          3                -62.761205                -0.000000038429155                1
          4                -62.174730                -0.000000004618033                1
          5                -61.636734                -0.000000000457350                1
          6                -61.139344                -0.000000336767181                1
          7                -60.676457                -0.000000088322634                1
          8                -60.243252                -0.000000000002829                1
          9                -59.835857                -0.000000000000636                1
         10                -59.451120                -0.000000000000164                1
         11                -59.086440                -0.000000000000071                1
         12                -58.739645                -0.000000260019326                1
         13                -58.408906                -0.000000101991687                1
         14                -58.092664                -0.000000038832987                1
         15                -57.789585                -0.000000014318209                1
         16                -57.498511                -0.000000005086874                1
         17                -57.218439                -0.000000001738415                1
         18                -56.948486                -0.000000000563920                1
         19                -56.687878                -0.000000000174877                1
         20                -56.435927                -0.000000000050592                1
         21                -56.192021                -0.000000000014172                1
         22                -55.955613                -0.000000000004258                1
         23                -55.726212                -0.000000000001374                1
         24                -55.503376                -0.000000000000131                1
         25                -55.286703                -0.000000000000632                1
         26                -55.075831                 0.000000000000932                1
         27                -54.870427                -0.000000171568804                1
         28                -54.670190                -0.000000050532913                1
         29                -54.474841                -0.000000012184084                1
         30                -54.284127                -0.000000002222327                1
         31                -54.097813                -0.000000000267222                1
         32                -53.915682                -0.000000000028871                1
         33                -53.737535                -0.000000000011636                1
         34                -53.563184                -0.000000000004674                1
         35                -53.392458                -0.000000000001683                1
         36                -53.225196                -0.000000000000867                1
         37                -53.061249                -0.000000000000377                1
         38                -52.900475                -0.000000000000168                1
         39                -52.742745                -0.000000000000110                1
         40                -52.587936                -0.000000000000016                1
         41                -52.435931                -0.000000000000016                1
         42                -52.286624                -0.000000098508126                1
         43                -52.139911                -0.000000038503932                1
         44                -51.995698                -0.000000013468217                1
         45                -51.853892                -0.000000004064594                1
         46                -51.714409                -0.000000001009519                1
         47                -51.577167                -0.000000000193678                1
         48                -51.442090                -0.000000000025346                1
         49                -51.309103                -0.000000000001720                1
         50                -51.178140                -0.000000000000152                1
         51                -51.049133                -0.000000019765672                1
         52                -50.922020                -0.000000007223862                1
         53                -50.796743                -0.000000002311422                1
         54                -50.673243                -0.000000000619430                1
         55                -50.551467                -0.000000000130497                1
         56                -50.431364                -0.000000000020393                1
         57                -50.312885                -0.000000000002138                1
         58                -50.195981                -0.000000000000068                1
         59                -50.080609                -0.000000066465205                1
         60                -49.966725                -0.000000001976755                1
         61                -49.854288                 0.000000000000025                1
         62                -49.743258                -0.000000000000459                1
         63                -49.633598                -0.000000000007092                1
         64                -49.525271                -0.000000000048448                1
         65                -49.418241                -0.000000000244035                1
         66                -49.312476                -0.000000000926503                1
         67                -49.207943                -0.000000002914672                1
         68                -49.104611                -0.000000007835369                1
         69                -49.002450                -0.000000000000226                1
         70                -48.901431                -0.000000000000004                1
         71                -48.801527                -0.000000000000036                1
         72                -48.702710                -0.000000000001719                1
         73                -48.604955                -0.000000000012070                1
         74                -48.508238                -0.000000000061102                1
         75                -48.412533                -0.000000000253589                1
         76                -48.317818                -0.000000000835056                1
         77                -48.224070                -0.000000002343272                1
         78                -48.131267                -0.000000005828925                1
         79                -48.039390                -0.000000013175330                1
         80                -47.948416                -0.000000027489009                1
         81                -47.858328                -0.000000053554788                1
         82                -47.769105                 0.000000000000010                1
         83                -47.680729                -0.000000000000063                1
         84                -47.593183                 0.000000000000007                1
         85                -47.506449                -0.000000000000075                1
         86                -47.420511                 0.000000000000071                1
         87                -47.335351                -0.000000000000149                1
         88                -47.250955                -0.000000000000077                1
         89                -47.167308                -0.000000000000067                1
         90                -47.084393                -0.000000000000148                1
         91                -47.002198                -0.000000000000373                1
         92                -46.920707                -0.000000000000667                1
         93                -46.839908                -0.000000000000860                1
         94                -46.759787                -0.000000000000716                1
         95                -46.680331                 0.000000000000061                1
         96                -46.601527                 0.000000000000025                1
         97                -46.523365                -0.000000000550386                1
         98                -46.445831                -0.000000015615780                1
         99                -46.368914                -0.000000000000045                1
        100                -46.292603                -0.000000000000184                1
3楼2009-10-15 21:51:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dxyhn1979

银虫 (小有名气)

再次请教

谢谢高手帮我改的程序啊,但是有几个问题还需请教。
问题1:
我运行你的程序,为什么显示:
??? Error: File: D:\MATLAB6p1\work\uuuu.m Line: 10 Column: 40
"identifier" expected, "(" found.
我用的是Matlab6.1的版本。我把@改成  ‘  ’也不行。是版本的问题么?怎么修改?
问题二:
为什么要设置退出标志exitflag?
问题三:
[x(i),fval(i),exitflag(i)]=fsolve(@(x)myfun(x,I(i)),-50)这行中@后面紧跟的(x)是什么意思?(x)与后面的函数名myfun是什么关系?@后面不是应该跟函数名么?
4楼2009-10-16 08:40:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见