0
我需要在matlab中求解一個非線性方程。有關詳細信息,請參閱代碼。在Matlab中使用求解函數
sigma = .25;
beta = 2;
alpha = .1;
eta = .025;
syms x
phi = sqrt(2.*sigma.^2 + beta.^2);
kappa = (beta + phi)./(beta - phi);
w = .5;
D is imported data;
A = @(t) exp((alpha*(beta+phi).*t)./sigma.^2).*...
((1-kappa)./(1-kappa.*exp(phi.*t))).^(2.*alpha./sigma.^2);
B = @(t) (beta - phi)./sigma.^2 + 2.*phi./(sigma.^2.*(1-kappa.*exp(phi.*t)));
C = @(t) exp(eta^2.*t^3/6);
G = @(t) (alpha./phi).*(exp(phi.*t)-1).*exp(alpha.*(beta+phi).*t./sigma^2).*...
((1-kappa)./(1-kappa.*exp(phi.*t))).^((2.*alpha./sigma^2) + 1);
H = @(t) exp((alpha.*(beta+phi) + phi.*sigma^2)./sigma^2).*...
((1-kappa)./(1-kappa.*exp(phi.*t))).^((2.*alpha./sigma^2) + 2);
spread_prot_portion = @(i,j,t) exp(B(t).*x).*D(i,j).*(G(t) + H(t).*x);
spread_fee_portion = @(i,j,t) A(t).*exp(B(t).*x).*D(i,j);
t = (.5:.5:10);
j = (1 :1 :20);
k = 1:20
solve('cds(1)- w*sum(spread_prot_portion(1,j(k),t(k)))/sum(spread_fee_portion(1,j(k),t(k))) = 0')
請注意,cds是加載數據。我需要爲x解決。這就是爲什麼它是syms中唯一的變量,並且給出了所有其他變量。不幸的是,我不能只寫出一個表達式。一些幫助將不勝感激
你確定解決方法是正確的嗎?我記得fsolve和其他人。 – berkay
當您給出一個不會運行的示例時,我們很難提供幫助,因爲它基於導入的數據。另外,您是否在尋找'x'的分析/符號解決方案,即等式?還是數字解決方案,即實際數量?如果它是後者,那麼@berkay已經指出了,並且你正在使用錯誤的工具來完成這項工作,並且不應該使用符號數學,而是'fsolve'和浮點數。 – horchler