麻烦看一下这个matlab写的程序错在哪里除了A及其波动率σA,其他量均为已知.因为该方程组为非线性方程,在matlab中采用迭代的方法进行求解A及其波动率σA.function[x,y]=Solvequation(a,DB,sigma,r,tau)%%%%%

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 04:45:16
麻烦看一下这个matlab写的程序错在哪里除了A及其波动率σA,其他量均为已知.因为该方程组为非线性方程,在matlab中采用迭代的方法进行求解A及其波动率σA.function[x,y]=Solvequation(a,DB,sigma,r,tau)%%%%%

麻烦看一下这个matlab写的程序错在哪里除了A及其波动率σA,其他量均为已知.因为该方程组为非线性方程,在matlab中采用迭代的方法进行求解A及其波动率σA.function[x,y]=Solvequation(a,DB,sigma,r,tau)%%%%%
麻烦看一下这个matlab写的程序错在哪里

除了A及其波动率σA,其他量均为已知.因为该方程组为非线性方程,在matlab中采用迭代的方法进行求解A及其波动率σA.

function[x,y]=Solvequation(a,DB,sigma,r,tau)
%%%%%%%
isigma C>=DB
a=C;
else
a=DB;
end
y=a/2;w=a/10;eye=a/1000;N=50;
h1=0;h2=1e+5;
max=w*N+y;
while w>=eye
J=0;
whilemax>=y 
J=J+1;
 %equation 1 
x1=sigmasolve(@(x)x*y*quadl('exp(-t.^2/2)/sqrt(2*pi)',0,(log(y/DB)+x.^2*tau/2+r*tau
)/(x.*tau^0.5))-C*sigma,0.2,optimset('display','osigmasigma'));
%equation 2
x2=sigmasolve(@(x)DB*exp(-r*tau)*quadl('exp(-t.^2/2)/sqrt(2*pi)',0,(log(y/DB)-x.^2*
tau/2+r*tau)/(x*tau^0.5))-y*quadl('exp(-t.^2/2)/sqrt(2*pi)',0,(log(y/DB)+x.^2*tau/2
+r*tau)/(x*tau^0.5))+C,0.2,optimset('display','osigmasigma'));
 %optimization y
 isigma abs(h1-h2)>abs(x1-x2)
 h1=x1;h2=x2;l=y;M=J;
 end
 y=y+w;
end
isigma M<=1
sigmaprintsigma('oversigmalow!Too large.');break
else
isigma M>=N
sigmaprintsigma('oversigmalow!Too small.');break
end
end
y=l-w;max=y+2*w;w=w/10;
end
x=(h1+h2)/2;y=l;
 
将σE 、E、τ(/tau/)、r、B的值带入经迭代得出
(1)σE=1.03402127,E=6852804951,r=3.25%,τ=1,B=195162000
(2)σE =0.43666672,E=2503241663,r=3.25%,τ=1,B=3155000000
两种情况

麻烦看一下这个matlab写的程序错在哪里除了A及其波动率σA,其他量均为已知.因为该方程组为非线性方程,在matlab中采用迭代的方法进行求解A及其波动率σA.function[x,y]=Solvequation(a,DB,sigma,r,tau)%%%%%
问题分析
 
你的这段程序问题太多了,条件说的也不够清楚,所以,分析很大程度上靠猜测:
1、程序中有多处sigma应为字母f(出现在12处,共计16个),例如:
      isigma-->  if(4处)
      sigmaprintsigma  --> fprintf (2处)
      osigmasigma-->  off (2处)
     sigmasolve  --> fsolve (2处)
      oversigmalow  -->  overflow (2处)
我感到非常奇怪,为什么会出现这样的错误?
 
2、函数开始处:
function[x,y]=Solvequation(a,DB,sigma,r,tau)
if C>=DB
    a=C;
else
    a=DB;
end
 存在两个问题:
(1)C被使用但未定义;
(2)被传入的参数a根本没有用到.
怀疑被传入的第一个参数应该是C而不是a,即函数定义应为
function[x,y]=Solvequation(C,DB,sigma,r,tau)
 
3、调用函数的数据没说清楚.按照你所给的数据:
      σE=1.03402127,E=6852804951,r=3.25%,τ=1,B=195162000
      σE =0.43666672,E=2503241663,r=3.25%,τ=1,B=3155000000
这些符号与函数Solvequation的输入参数(C,DB,sigma,r,tau)并不能很清晰地对应.猜测可能按照下面的对应关系:
      σE  -->  sigma
      E  -->  C
      r  -->  r
      τ  -->  tau
      B  -->  DB
 
如果按照这样对应关系调用函数,得到的结果分别是:
(1)第一组数据
overflow!Too small.
x =
    0.2880

y =
  3.7690e+010
(2)第二组数据
x =
    0.2000

y =
  1.0932e+010
参考代码
修改后的函数以及调用代码如下(可保存在一个M文件中运行):
function zd918361556824217139
sigma=1.03402127;
C=6852804951;
r=3.25;
tau=1;
DB=195162000;
[x,y]=Solvequation(C,DB,sigma,r,tau)
sigma =0.43666672;
C=2503241663;
r=3.25;
tau=1;
DB=3155000000;
[x,y]=Solvequation(C,DB,sigma,r,tau)

function[x,y]=Solvequation(C,DB,sigma,r,tau)
if C>=DB
    a=C;
else
    a=DB;
end
y=a/2;w=a/10;eye=a/1000;N=50;
h1=0;h2=1e+5;
max=w*N+y;
while w>=eye
    J=0;
    while max>=y
        J=J+1;
        %equation 1
        x1=fsolve(@(x)x*y*quadl('exp(-t.^2/2)/sqrt(2*pi)',0,(log(y/DB)+x.^2*tau/2+r*tau)/(x.*tau^0.5))-C*sigma,0.2,optimset('display','off'));
        %equation 2
        x2=fsolve(@(x)DB*exp(-r*tau)*quadl('exp(-t.^2/2)/sqrt(2*pi)',0,(log(y/DB)-x.^2*tau/2+r*tau)/(x*tau^0.5))-y*quadl('exp(-t.^2/2)/sqrt(2*pi)',0,(log(y/DB)+x.^2*tau/2+r*tau)/(x*tau^0.5))+C,0.2,optimset('display','off'));
        %optimization y
        if abs(h1-h2)>abs(x1-x2)
            h1=x1;h2=x2;l=y;M=J;
        end
        y=y+w;
    end
    if M<=1
        fprintf('overflow!Too large.');break
    else
        if M>=N
            fprintf('overflow!Too small.');break
        end
    end
    y=l-w;max=y+2*w;w=w/10;
end
x=(h1+h2)/2;y=l;

麻烦看一下这个matlab写的程序错在哪里除了A及其波动率σA,其他量均为已知.因为该方程组为非线性方程,在matlab中采用迭代的方法进行求解A及其波动率σA.function[x,y]=Solvequation(a,DB,sigma,r,tau)%%%%% Matlab中Int函数的使用求这个函数在Matlab中,在[0,1]上的定积分麻烦把整个程序都写出来啊~万分感激! 这个公式的MATLAB程序该怎么写 请问如何利用matlab提取一幅图像的所有灰度值,并计算均值,方差,CV 麻烦写一下具体程序,我一点不懂 求给做一下这下面这个matlab题目……把这个函数画图的程序写出来,拜托啦…… 谁能帮我看一下这个程序哪里错了? 麻烦帮我看一下,不要看我写的. 高手看一下我的matlab程序哪里错了function y=rrp(x) % % Input paramenters % % x(1)=theta-1 % x(2)=the 问一下这个matlab语句的意思randn('seed',14);这个matlab语句是放在程序最前面定义某些东西紧跟之后的语句为w=sqrt(Q)*randn(1,Bushu);其中Q和Bushu都已知 求matlab高手帮忙看下我这个程序.帮我看下为什么我这个程序在样本仿真那里是错的.clc p1=[1.53 0.58 1.15 0.27 1.35 0.72 0.28 1.32 1.57];t1=[45.32 -68.43 27.76 48.68 72.48 -6.12 48.04 64.85 51.9];p=p1';t=t1';%归一化[pn,m (麻烦看一下我有写的对不对 麻烦看一下写的对吗……谢谢 再问你个问题呗,在matlab中怎么建立y=b(1)*[x-b(2)]这个模型的M函数,代码怎么写啊?呵呵 那个我知道了 不过还有个问题想麻烦您。我编的这个程序clear all;x=1:0.5:4.5;y=[3.3 5.2 8.4 13.5 22 35.9 58.6 96];beta= 麻烦帮我看一下C++的三个数输出最大值的程序错在哪里?#includeint main(){int a,b,c ,m;scanf(d%,d%,d%,&a,&b,&c);m=a;if(m 麻烦师傅们给耐心的讲解一下下面这个程序, matlab里面,A是一个矩阵,A(:在看一个matlab的程序,里面有一个语句是Ih_b = min(IhO(:)):max(IhO(:));IhO是一个矩阵,那么这个语句是什么意思呢? 关于程序算法语句的一个问题(新课改高中数学必修3第一单元)麻烦看一下啦!编写程序时,输出语句和输入语句中的等号必须要写吗?例下图其中输入语句INPUT x=;x中的=可以省略吗?我在课 这个matlab公式怎么写啊|R(r)|r从0到N-1求和,所得的结果在除以N.程序越详细越好