WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Multiple Regression eines Schädigungsmodells

 

MatlabNewbie2022
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.10.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2022, 17:43     Titel: Multiple Regression eines Schädigungsmodells
  Antworten mit Zitat      
Hi zusammen,

Ich habe einen Datensatz, bestehend aus zwei Variablen (Temperatur, Oberflächendehnung), in Abhängigkeit derer sich in Versuchen unterschiedlichen Lebensdauern ergeben haben.
Für diese Abhängigkeiten gibt es bereits jeweils ein Schädigungsmodell (Temperatur -> Arrhenius, Dehnung -> Basquin), die ich nun superpositioniere.

Für die Regression dieses superpositionierten Modells müssen nun 4 Koeffizienten bestimmt werden.
Der folgende Code erlaubt bereits die Approximation, allerdings ergeben sich höhere Lebensdauern, als im Datensatz vorgegeben. Anscheinend läuft bei meinem Fit noch irgendwas falsch...

Hat jemand von Euch eine Idee, wo der Fehler liegen könnte?

Vielen Dank schon mal Smile
Gruß Seb

Code:
clc, clear, close
%% Data

T = [358.15; 233.15; 358.15; 295.65; 233.15; 358.15];       % temperature vector
S = [500; 500; 750; 750; 1000; 1000];                       % surface strain
N = [10000000; 7000000; 6000000; 4000000; 100000; 2000000]; % lifetime
kB = 8.617 * 1e-5;                                          % Boltzmann constant (in eV/K)

%% Model Approximation

% Function to solve
fun = @(x) sum((x(3) .* S.^(x(4)) + x(1) .* exp(-x(2)/kB ./T) - N).^2);    % equations of Basquin + Arrhenius

% Linearized fit for initial guesses x0
% "polyfit" is called for the linearized equation and gives good initial guesses for the parameters.

P_temp = polyfit(1./(-kB*T),log(N),1);      % Linearization of Arrhenius (temperature)
A1_guess = exp(P_temp(2));
EA_guess = P_temp(1);

P_strain = polyfit(log10(S),log10(N),1);    % Linearization of Basquin (surface strain)
C_guess = 10^P_strain(2);
b_guess = P_strain(1);

x0 = [A1_guess,EA_guess,C_guess,b_guess];   % initial values

% Solve
[p, fval] = fminunc(fun,x0);

% Optimised parameter values
A1 = p(1);
EA = p(2);
C = p(3);
b = p(4);

T = 233 : 1 : 360;                   % temperature vector for plot
S = 500 : 1 : 1000;                  % strain vector for plot

for i = 1:length(T)
    for j = 1:length(S)
        cycles(i,j) = C * S(j).^(b) + A1 * exp(-EA/ kB / T(i));
    end
end

%% Plot

figure
surf(S,T,cycles)
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.